基于物聯(lián)網(wǎng)的智能購物車,使用RFID和NodeMCU
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我們都在購物中心等地方排隊(duì)付款,這是非常累人的,在計(jì)費(fèi)過程中浪費(fèi)了很多時(shí)間。今天我們將構(gòu)建一個(gè)帶有自動(dòng)計(jì)費(fèi)系統(tǒng)的智能購物車,它不僅減少了等待時(shí)間,而且使整個(gè)過程非常順利和容易。
在這里,我們使用RFID卡和RFID讀卡器與NodeMCU一起構(gòu)建智能購物車項(xiàng)目。購物車信息和總價(jià)值將顯示在網(wǎng)頁以及LCD上。每個(gè)RFID卡都與一個(gè)特定的產(chǎn)品相關(guān)聯(lián),購物車中安裝了一個(gè)RFID讀取器,讀取價(jià)格和產(chǎn)品詳細(xì)信息等產(chǎn)品詳細(xì)信息并將其發(fā)送到NodeMCU ESP8266。然后,NodeMCU處理購物車中的可用物品和總價(jià)值,并將它們發(fā)送到ESP8266網(wǎng)絡(luò)服務(wù)器,可以在世界任何地方的網(wǎng)絡(luò)瀏覽器上進(jìn)行監(jiān)控。Web服務(wù)器用于使用Web瀏覽器控制或監(jiān)控任何傳感器值,我們以前使用Arduino, ESP8266, NodeMCU, ESP32,樹莓派等創(chuàng)建了許多Web服務(wù)器。
所需的材料
?ESP8266 NodeMCU -1
?16*2字母數(shù)字液晶顯示屏
?I2C模塊用于16*2 LCD-1
?4針觸覺開關(guān)-1
?EM18 RFID閱讀器-1
EM18 RFID閱讀器,它正在工作
RFID是射頻識(shí)別的縮寫。它指的是一種技術(shù),將數(shù)字?jǐn)?shù)據(jù)編碼在RFID標(biāo)簽中,并由RFID讀取器使用無線電波解碼。RFID類似于條形碼,其中來自標(biāo)簽的數(shù)據(jù)由RFID讀取器設(shè)備解碼。RFID技術(shù)用于各種應(yīng)用,如庫存管理,考勤系統(tǒng),門鎖系統(tǒng),進(jìn)入限制區(qū)域等。
EM18閱讀器是一個(gè)非常流行的RFID模塊,可以讀取存儲(chǔ)在RFID標(biāo)簽中的ID信息。RFID標(biāo)簽存儲(chǔ)一個(gè)12位的唯一數(shù)字,當(dāng)標(biāo)簽進(jìn)入閱讀器的范圍時(shí),可以由EM18閱讀器模塊解碼。該模塊有一個(gè)內(nèi)置天線,工作頻率為125千赫,需要5v直流電源為其供電。
它提供串行數(shù)據(jù)輸出,范圍為8-12cm。串行通信參數(shù)為8位數(shù)據(jù)位,1位停止位,波特率為9600。
EM18 RFID讀寫器特點(diǎn):
?工作電壓:+4.5V ~ +5.5V DC
?當(dāng)前消費(fèi):50 ma
?工作頻率:125千赫
?工作溫度:0-80℃
?通信波特率:9600
?閱讀距離:8-12厘米
?天線:內(nèi)置
EM18 RFID閱讀器輸出:
EM18 RFID閱讀器引腳說明:
VCC: 4.5- 5V直流電壓輸入
GND:接地引腳
蜂鳴器:蜂鳴器或LED引腳
TX:用于RS232(輸出)的EM18的串行數(shù)據(jù)發(fā)射器引腳
SEL:使用RS232時(shí)必須為高電平(使用WEIGAND時(shí)為低電平)
數(shù)據(jù)0:權(quán)重?cái)?shù)據(jù)0
數(shù)據(jù)1:WEIGAND數(shù)據(jù)
基于物聯(lián)網(wǎng)的智能購物車電路圖
基于RFID的智能購物車系統(tǒng)的完整電路圖如下:
這就是整個(gè)設(shè)置在面包板上的樣子:
用Arduino IDE編程N(yùn)odeMCU
要使用Arduino IDE將代碼上傳到NodeMCU,請(qǐng)遵循以下步驟:
1. 打開Arduino IDE,然后進(jìn)入File - >Preferences - >Settings。
2. 在“附加板管理器URL”字段中鍵入,然后單擊“確定”。
3. 現(xiàn)在轉(zhuǎn)到Tools > Board > Boards Manager。在“單板管理器”窗口中,在搜索框中輸入ESP8266,選擇最新版本的單板,單擊“安裝”。
4. 安裝完成后,進(jìn)入“Tools ->Board ->”,選擇“NodeMCU 1.0(ESP-12E Module)”。現(xiàn)在您可以使用Arduino IDE對(duì)NodeMCU進(jìn)行編程。
找出RFID標(biāo)簽的唯一12位代碼
在為智能購物車項(xiàng)目編寫NodeMCU之前,首先,我們需要找出12位RFID標(biāo)簽的唯一代碼。如前所述,RFID標(biāo)簽包含一個(gè)12位的唯一代碼,可以通過使用RFID讀取器對(duì)其進(jìn)行解碼。當(dāng)RFID卡在閱讀器附近刷卡時(shí),當(dāng)閱讀器連接到NodeMCU時(shí),閱讀器將通過輸出串口給出唯一的代碼。首先,按照電路圖將NodeMCU連接到RFID讀取器,然后將下面的代碼上傳到NodeMCU。
上傳代碼成功后,打開串口監(jiān)視器,設(shè)置波特率為9600。然后在讀卡器附近刷卡,您現(xiàn)在可以在串行監(jiān)視器上看到12位數(shù)的代碼,如下面的快照所示。對(duì)所有使用過的RFID標(biāo)簽執(zhí)行此過程,并將其記錄下來以備將來參考。
代碼的解釋
在成功完成硬件設(shè)置之后,現(xiàn)在是時(shí)候?qū)odeMCU進(jìn)行編程了。這個(gè)基于RFID的智能小車項(xiàng)目的完整代碼以及視頻在本教程的末尾給出。下面給出了代碼的逐步描述。
通過在代碼中包含所有所需的庫文件來啟動(dòng)代碼,例如ESP8266WiFi.h用于ESP8266板,LiquidCrystal_I2C.h用于LCD, Wire.h用于SPI通信等。
然后使用名稱服務(wù)器和默認(rèn)端口號(hào)80創(chuàng)建ESP8266WebServer類對(duì)象。
現(xiàn)在,聲明網(wǎng)絡(luò)憑據(jù)——即SSID和密碼。需要將NodeMCU連接到互聯(lián)網(wǎng)。
對(duì)于16*2字母數(shù)字LCD使用I2C模塊,請(qǐng)使用LiquidCrystal_I2C類進(jìn)行配置。這里我們必須傳遞地址、行號(hào)和列號(hào),在我們的示例中分別是0x27、16和2。
在setup()中,聲明所有輸入引腳和輸出引腳。然后在LCD上打印歡迎信息,該信息將在項(xiàng)目初始化期間顯示。
然后,將NodeMCU連接到互聯(lián)網(wǎng),調(diào)用WiFi。開始并傳遞網(wǎng)絡(luò)SSID和密碼作為參數(shù)。使用WiFi.status()檢查網(wǎng)絡(luò)連接是否成功,連接成功后,在LCD上打印帶有IP地址的消息。
在下一步中,將創(chuàng)建如下所示的HTML頁面,其中包含一個(gè)HTML表,用于顯示購物車中的產(chǎn)品詳細(xì)信息和賬單信息。HTML頁面存儲(chǔ)在一個(gè)字符串變量中,以便在客戶端請(qǐng)求時(shí)使用server.send()函數(shù)發(fā)送回。
在loop()中,使用digitalRead()讀取連接按鈕的數(shù)字引腳,并將其存儲(chǔ)在整數(shù)變量中。這里我們使用一個(gè)按鈕從購物車中刪除產(chǎn)品。
現(xiàn)在在下面的代碼中,RFID標(biāo)簽的唯一12位數(shù)字代碼被解碼并存儲(chǔ)在數(shù)組中。然后,數(shù)組中的元素將與內(nèi)存中的Stored Tag編號(hào)進(jìn)行匹配,以獲得產(chǎn)品詳細(xì)信息。
這里,我們將接收到的數(shù)組與存儲(chǔ)的標(biāo)簽代碼進(jìn)行比較,如果沒有按下按鈕并且代碼匹配,則執(zhí)行下面的條件并將產(chǎn)品添加到購物車中。同樣的信息將顯示在LCD上。下面的代碼增加購物車中的產(chǎn)品編號(hào),并將價(jià)格添加到購物車總價(jià)值中。
現(xiàn)在,當(dāng)按下按鈕時(shí),將執(zhí)行下面的條件,并將RFID標(biāo)簽代碼與存儲(chǔ)的陣列匹配。這意味著我們必須從購物車中刪除此產(chǎn)品,并從購物車總價(jià)值中減去產(chǎn)品價(jià)格。
最后,產(chǎn)品的單項(xiàng)成本計(jì)算如下。這里選擇了一些隨機(jī)的成本值,您可以根據(jù)選擇更改這些值。
最后,調(diào)用server.handleClient()來處理新請(qǐng)求并檢查它們。
這就是使用射頻識(shí)別技術(shù)的智能購物車是如何制造出來的,并且可以在世界上任何地方的網(wǎng)頁上進(jìn)行監(jiān)控。
本文編譯自iotdesignpro