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