基于物聯(lián)網(wǎng)的智能貨幣計(jì)數(shù)器,使用NodeMCU和Arduino IDE
掃描二維碼
隨時(shí)隨地手機(jī)看文章
紙幣計(jì)數(shù)器是一種檢測(cè)不同面額紙幣并告訴其價(jià)值的機(jī)器。在這個(gè)物聯(lián)網(wǎng)項(xiàng)目中,我們使用顏色感應(yīng)技術(shù)來(lái)檢測(cè)音符值。因此,這里我們將使用帶有NodeMCU ESP8266的TCS230顏色傳感器來(lái)檢測(cè)貨幣價(jià)值,并在網(wǎng)頁(yè)和16x2 LCD上顯示相同的值。NodeMCU ESP8266是一個(gè)非常流行的Wi-Fi模塊,我們之前使用NodeMCU ESP8266構(gòu)建了許多物聯(lián)網(wǎng)項(xiàng)目。
在基于物聯(lián)網(wǎng)的應(yīng)用中,web服務(wù)器用于使用web瀏覽器控制或監(jiān)控任何傳感器值,我們以前使用Arduino, ESP8266, NodeMCU, ESP32,樹莓派等創(chuàng)建了許多web服務(wù)器。
所需的組件
?ESP8266 NodeMCU
?TCS230顏色傳感器
?紅外傳感器
?電路試驗(yàn)板
?電力供應(yīng)
?16*2字母數(shù)字液晶顯示
?I2C屏蔽16*2 LCD
?連接電線
TCS230顏色傳感器工作正常
TCS230顏色傳感器用于感應(yīng)各種顏色。該傳感器可用于產(chǎn)品的顏色分類、配色等。
這種傳感器使用一組帶有紅色、綠色和藍(lán)色濾光片的光電二極管以及一個(gè)透明濾光片。它還內(nèi)置了紅外線發(fā)光二極管,用來(lái)照亮被探測(cè)物體的顏色。這就保證了物體不會(huì)受到外界光線的影響。該傳感器讀取一個(gè)8*8陣列的光電二極管,該陣列包括16個(gè)帶紅色濾光片的光電二極管,16個(gè)帶藍(lán)色濾光片的光電二極管,16個(gè)帶綠色濾光片的光電二極管以及16個(gè)不帶彩色濾光片的光電二極管。
TCS230顏色傳感器的輸出信號(hào)是一個(gè)占空比為50%的方波,其頻率與所選濾波器的光強(qiáng)成正比。
Pin描述:
?VDD-傳感器的電壓供應(yīng)引腳。它由5V直流供電。
?GND-顏色傳感器的接地參考引腳
?S0, S1-輸出頻率縮放選擇輸入
?S2, S3-光電二極管類型選擇輸入
?OUT-顏色傳感器的輸出引腳
?輸出頻率使能引腳
貨幣柜臺(tái)機(jī)電路圖
編程的解釋
在成功完成硬件設(shè)置之后,現(xiàn)在是時(shí)候?qū)SP8266 NodeMCU進(jìn)行編程了。
要使用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)”?,F(xiàn)在您可以使用Arduino IDE對(duì)NodeMCU進(jìn)行編程。
然后使用名稱服務(wù)器和默認(rèn)端口號(hào)80創(chuàng)建ESP8266WebServer類對(duì)象。
現(xiàn)在,聲明網(wǎng)絡(luò)憑據(jù),即SSID和密碼。需要將NodeMCU連接到互聯(lián)網(wǎng)。
為了使用16*2字母數(shù)字LCD的I2C模塊,我們已經(jīng)使用LiquidCrystal_I2C類配置了它。在這里,我們必須傳遞地址0x27(在本例中)和行、列號(hào),在本例中為2和16。
在setup()中,在LCD上打印歡迎信息,然后定義本項(xiàng)目中使用的所有數(shù)字引腳的數(shù)據(jù)方向。然后,設(shè)置顏色傳感器的輸出頻率縮放。在我的情況下,它被設(shè)置為20%,這可以通過給高脈沖到0和低脈沖到S1來(lái)完成。
然后,將NodeMCU連接到互聯(lián)網(wǎng),調(diào)用WiFi。開始并傳遞網(wǎng)絡(luò)SSID和密碼作為參數(shù)。使用WiFi.status()檢查網(wǎng)絡(luò)連接是否成功,連接成功后,在LCD上打印帶有IP地址的消息。
然后,編寫HTML代碼以在網(wǎng)頁(yè)上顯示貨幣使用情況和總余額。然后使用server.on()將HTML代碼分配給String變量,然后在用戶使用IP地址請(qǐng)求時(shí)將其發(fā)送到客戶端。
要啟動(dòng)web服務(wù)器,請(qǐng)使用server.begin(),它將以默認(rèn)端口號(hào)啟動(dòng)服務(wù)器。
在infinite loop()中,首先,我們需要讀取來(lái)自傳感器的所有數(shù)據(jù)輸出。從紅外傳感器的輸出可以通過讀取A0引腳找到。在這里,紅外傳感器用于感知插槽內(nèi)貨幣的存在,如果有鈔票,那么顏色傳感器將檢測(cè)鈔票的顏色并將顏色值發(fā)送給NodeMCU。而NodeMCU則根據(jù)紙幣的顏色進(jìn)一步計(jì)算貨幣價(jià)值。然后可以通過調(diào)用red (), blue()和green()等單獨(dú)的函數(shù)來(lái)找到輸出的顏色頻率。
接下來(lái),用我們之前設(shè)置的參考頻率編寫檢查顏色傳感器輸出頻率的條件。如果匹配,則從錢包中扣除指定的金額。
寫這條語(yǔ)句是為了在液晶顯示器上顯示錢包中的可用余額。
下面的函數(shù)用于獲取貨幣中紅色內(nèi)容的輸出顏色頻率。類似地,我們可以編寫其他函數(shù)來(lái)獲取藍(lán)色和綠色內(nèi)容的值。
最后,要處理客戶機(jī)請(qǐng)求,調(diào)用server.handleClient()函數(shù)。它將處理新的請(qǐng)求并檢查它們。
注意:
?根據(jù)外部照明和傳感器設(shè)置,頻率輸出可能會(huì)有所不同。因此,建議檢查您的貨幣的輸出頻率,并設(shè)置相應(yīng)的參考值。
?在這里,我們只使用100和200盧比的紙幣。但我們也可以使用所有其他貨幣的顏色頻率輸出值。
物聯(lián)網(wǎng)貨幣傳感器-演示
最后,使用Arduino IDE在NodeMCU中上傳代碼,并開始交換任何紙幣來(lái)測(cè)試機(jī)器。該網(wǎng)頁(yè)將顯示當(dāng)前的紙幣價(jià)值和錢包中的剩余余額。
本文編譯自iotdesignpro