基于溫度的非接觸式考勤系統(tǒng),采用NodeMCU和MLX90614紅外測(cè)溫儀
新冠肺炎疫情爆發(fā)后,非接觸式測(cè)溫設(shè)備越來越受歡迎,大多數(shù)采用紅外溫度傳感器。這個(gè)裝置在沒有任何身體接觸的情況下測(cè)量人的體溫。今天我們還將使用NodeMCU和Arduino IDE來接口MLX90614紅外溫度傳感器。
因此,在本教程中,我們將使用NodeMCU, MLX90614紅外溫度計(jì),EM18 RFID讀取器和超聲波傳感器構(gòu)建基于物聯(lián)網(wǎng)的智能員工溫度篩選系統(tǒng)。它可以用非接觸式紅外溫度傳感器測(cè)量員工的體溫,并將員工的姓名和體溫發(fā)送到一個(gè)網(wǎng)頁上,該網(wǎng)頁可以通過互聯(lián)網(wǎng)從任何地方監(jiān)控。網(wǎng)頁將時(shí)間、人名和溫度存儲(chǔ)在一個(gè)表中。超聲波傳感器用于測(cè)量傳感器與人之間的距離,因此MLX90614傳感器可以在傳感器與人之間的距離小于20cm時(shí)測(cè)量溫度,以獲得更好的精度。
組件的要求
?NodeMCU ESP8266
?EM18 RFID模塊
?MLX90614紅外溫度計(jì)
?超聲波傳感器
?電路試驗(yàn)板
?跳線
EM18 RFID閱讀器模塊
EM18 RFID讀寫器模塊是一種低成本,低功耗,小尺寸和易于使用的設(shè)備,是開發(fā)RFID系統(tǒng)的理想選擇。該模塊用于讀取125 kHz標(biāo)簽,并通過UART和RS232轉(zhuǎn)換器直接連接到任何微控制器或PC。它可以通過UART/Wiegand26提供輸出。
閱讀器模塊帶有片上天線,可以通過5V電源供電。當(dāng)您掃描讀取模塊上的RFID卡時(shí),卡內(nèi)的應(yīng)答器將所有信息(例如以RF信號(hào)形式的特定ID)傳輸?shù)絉FID模塊。該讀卡器模塊還有一個(gè)BUZ引腳,可用于連接蜂鳴器以檢測(cè)有效的RFID卡。
我們以前使用相同的EM18 RFID模塊來構(gòu)建智能購物車。
MLX90614紅外溫度傳感器
在這里,我們與NodeMCU連接了一個(gè)名為MLX90614的非接觸式溫度傳感器。它是一種用于非接觸式溫度傳感的紅外溫度計(jì)。它出廠校準(zhǔn)了一個(gè)數(shù)字SM總線輸出,可以完全訪問在最高溫度范圍內(nèi)測(cè)量的溫度,分辨率為0.02°C,它可以用來測(cè)量特定物體的溫度,范圍從-70°C到382.2°C,在室溫下精度約為0.5C。
它內(nèi)嵌兩個(gè)器件,一個(gè)是紅外熱電堆探測(cè)器(傳感單元),另一個(gè)是信號(hào)調(diào)理應(yīng)用處理器。它的工作原理基于斯蒂芬-玻爾茲曼定律,該定律指出,任何不低于絕對(duì)零度(0°K)的物體都會(huì)在紅外光譜中發(fā)出與其溫度成正比的光。傳感器的傳感單元利用發(fā)射的光來測(cè)量物體的溫度。
線路圖
使用ESP8266 NodeMCU的紅外測(cè)溫儀電路圖如下:
如電路圖所示,連接非常簡(jiǎn)單,因?yàn)槲覀円呀?jīng)將它們用作模塊,我們可以直接在面包板上構(gòu)建它們。當(dāng)有人掃描標(biāo)簽時(shí),連接到EM18閱讀器模塊的BUZ引腳的LED會(huì)變高。RFID模塊以串行方式向控制器發(fā)送數(shù)據(jù);因此RFID模塊的發(fā)送端引腳連接到NodeMCU的接收端引腳。連接進(jìn)一步分類如下表所示:
編程N(yùn)odeMCU
這個(gè)紅外溫度篩選項(xiàng)目的完整代碼可以在頁面的末尾找到。這里將以小片段的形式解釋相同的程序。
NodeMCU代碼
這部分代碼將讀取超聲波傳感器、MLX90614和RFID模塊,并將這些數(shù)據(jù)發(fā)送到web服務(wù)器。在編寫NodeMCU之前,從給定的鏈接中安裝所需的庫:
Wire.h
Adafruit_MLX90614.h
通過包含所有必需的庫來啟動(dòng)代碼。這里Wire庫用于使用I2C協(xié)議進(jìn)行通信,Adafruit_MLX90614.h庫用于讀取MLX90614傳感器數(shù)據(jù)。
然后,輸入你的Wi-Fi名稱和密碼。
然后在接下來的幾行中,我們定義了連接超聲波傳感器的引腳。我們已經(jīng)將三角引腳連接到D5,回聲引腳連接到D6
之后,定義變量來存儲(chǔ)RFID模塊、超聲波傳感器和MLX90614傳感器數(shù)據(jù)和卡ID。
handleRoot()函數(shù)在我們使用NodeMCU IP地址在瀏覽器中打開網(wǎng)頁時(shí)執(zhí)行。
在void setup()函數(shù)內(nèi)部,使用begin()函數(shù)初始化波特率和MLX90614傳感器,并使用server.begin()函數(shù)初始化網(wǎng)頁。然后使用Wi-Fi名稱和密碼將模塊與Wi-Fi連接。另外,將三角和回聲引腳設(shè)置為輸出和輸入引腳。
要了解有關(guān)超聲波傳感器及其三角和回聲引腳的更多信息,請(qǐng)遵循我們之前基于超聲波傳感器的項(xiàng)目。
在void loop()函數(shù)內(nèi)部,計(jì)算人與傳感器之間的距離,如果距離小于或等于20cm,則調(diào)用reader()函數(shù)掃描標(biāo)簽。
當(dāng)距離小于20 CM時(shí),將調(diào)用void reader()函數(shù),在此函數(shù)中,我們將掃描的卡數(shù)據(jù)與預(yù)定義的標(biāo)簽ID進(jìn)行比較。如果標(biāo)簽ID與掃描的卡匹配,則讀取該人的體溫,并將該人的體溫和姓名發(fā)送給WebServer。
在temp_read()函數(shù)中,以攝氏度為單位讀取MLX90614傳感器數(shù)據(jù),并將其存儲(chǔ)在‘ TempReading ’變量中。
網(wǎng)頁的HTML代碼
標(biāo)簽用于告訴web瀏覽器我們正在使用哪個(gè)版本的html來編寫html代碼。
在標(biāo)簽之間編寫的代碼將被瀏覽器讀取。標(biāo)簽用于定義網(wǎng)頁的標(biāo)題、標(biāo)題行和樣式。中寫入的數(shù)據(jù)是瀏覽器中選項(xiàng)卡的名稱。標(biāo)簽用于給表格和標(biāo)題行設(shè)置樣式。
標(biāo)簽用于包含jQuery。jQuery是JavaScript庫。標(biāo)記中的getData函數(shù)用于從NodeMCU獲取數(shù)據(jù)并更新數(shù)據(jù)表。
XMLHttpRequestobject用于從web服務(wù)器請(qǐng)求數(shù)據(jù)。所有瀏覽器都有一個(gè)內(nèi)置的XMLHttpRequest對(duì)象,用于從服務(wù)器請(qǐng)求數(shù)據(jù)。使用XMLHttpRequest,我們可以在不重新加載頁面的情況下更新網(wǎng)頁,從服務(wù)器請(qǐng)求數(shù)據(jù),從服務(wù)器接收數(shù)據(jù),并可以向服務(wù)器發(fā)送數(shù)據(jù)。在這里,我們使用這個(gè)對(duì)象從NodeMCU獲取該人的溫度和姓名,并在不刷新網(wǎng)頁的情況下更新數(shù)據(jù)表。
XMLHttpRequest對(duì)象的open和send方法用于向服務(wù)器發(fā)送請(qǐng)求。xhttp的語法。開放如下:
測(cè)試紅外線溫度計(jì)
準(zhǔn)備好硬件和程序后,將程序上傳到NodeMCU?,F(xiàn)在打開波特率為9600的串行監(jiān)視器,獲得NodeMCU的IP地址。超聲波傳感器不斷計(jì)算距離。當(dāng)您與傳感器之間的計(jì)算距離小于20厘米時(shí),掃描您的卡,如果您的卡被授權(quán),MLX傳感器將讀取您的溫度。要檢查網(wǎng)頁上的數(shù)據(jù),在web瀏覽器中輸入您的IP地址,您的網(wǎng)頁將如下所示:
本文編譯自iotdesignpro