基于物聯(lián)網(wǎng)的運(yùn)動(dòng)檢測器
掃描二維碼
隨時(shí)隨地手機(jī)看文章
HC-SR501運(yùn)動(dòng)傳感器通常被稱為PIR傳感器,用于多種安全報(bào)警系統(tǒng)和運(yùn)動(dòng)探測器系統(tǒng)。它不是發(fā)射紅外信號(hào),而是吸收紅外信號(hào),這就是為什么它被稱為PIR(被動(dòng)紅外)傳感器。每個(gè)物體都以紅外射線的形式發(fā)出熱量,因此每當(dāng)PIR傳感器檢測到熱量的任何變化時(shí),其輸出引腳就會(huì)變?yōu)镠IGH。PIR傳感器的關(guān)鍵部件是熱釋電傳感器和運(yùn)動(dòng)檢測器IC BISS0001。BISS0001 IC從傳感器獲取數(shù)據(jù)并相應(yīng)地測量輸出引腳HIGH或LOW。
以前,我們使用Raspberry Pi的PIR傳感器來構(gòu)建安全系統(tǒng)。今天,我們將使用帶有NodeMCU的PIR傳感器來構(gòu)建物聯(lián)網(wǎng)運(yùn)動(dòng)檢測器系統(tǒng),該系統(tǒng)不僅在檢測到某些運(yùn)動(dòng)時(shí)發(fā)送電子郵件,而且還將其顯示在帶有時(shí)間和日期的網(wǎng)頁上。
組件的要求
?NodeMCU ESP8266
?運(yùn)動(dòng)傳感器HC-SR501 (PIR傳感器)
?蜂鳴器
?跳線
線路圖
物聯(lián)網(wǎng)運(yùn)動(dòng)傳感器電路的電路圖如下:
電路非常簡單,因?yàn)槲覀冎粚IR傳感器和蜂鳴器與NodeMCU連接。PIR Sensor的VCC和GND引腳接在NodeMCU的VIN和GND上,Data引腳接在NodeMCU的D1 (GPIO 5)引腳上。蜂鳴器的正極和GND引腳分別連接到NodeMCU的D5 (GPIO 14)和GND。
物聯(lián)網(wǎng)運(yùn)動(dòng)檢測器的IFTTT設(shè)置
IFTTT (If This Then That)是一個(gè)基于web的服務(wù),我們可以通過它創(chuàng)建條件語句鏈,稱為applet。使用這些小程序,我們可以發(fā)送電子郵件,Twitter, Facebook通知,短信等。我們已經(jīng)在許多基于物聯(lián)網(wǎng)的項(xiàng)目中使用了IFTTT,您可以通過以下鏈接找到所有這些項(xiàng)目。
要使用IFTTT,請(qǐng)登錄您的IFTTT帳戶(如果您已經(jīng)有一個(gè)或創(chuàng)建一個(gè))。
現(xiàn)在搜索“Webhooks”并點(diǎn)擊“服務(wù)中的Webhooks”部分。
現(xiàn)在在Webhooks窗口中,單擊右上角的“Documentation”以獲取私鑰。
復(fù)制這個(gè)密鑰。它將在程序中使用。
獲得私鑰后,現(xiàn)在使用Webhooks和Email服務(wù)創(chuàng)建一個(gè)applet。要?jiǎng)?chuàng)建applet,請(qǐng)單擊您的個(gè)人資料,然后單擊“創(chuàng)建”。
現(xiàn)在在下一個(gè)窗口中,單擊“This”圖標(biāo)。
現(xiàn)在在搜索欄中搜索Webhooks,然后點(diǎn)擊“Webhooks”。
現(xiàn)在選擇“Receive a Web Request”觸發(fā)器,在下一個(gè)窗口中,輸入事件名稱為motion_event,然后單擊“create trigger”。
在這之后,點(diǎn)擊“然后那個(gè)”,然后點(diǎn)擊電子郵件。
現(xiàn)在在電子郵件中,點(diǎn)擊“給我發(fā)一封電子郵件”,輸入電子郵件主題和正文,然后點(diǎn)擊創(chuàng)建動(dòng)作。
在最后一步中,單擊“Finish”完成Applet設(shè)置。
物聯(lián)網(wǎng)運(yùn)動(dòng)傳感器的NodeMCU編程
完整的代碼為運(yùn)動(dòng)檢測器系統(tǒng)可以在頁面的末尾找到。代碼可分為兩部分。第一部分用于讀取運(yùn)動(dòng)傳感器數(shù)據(jù)并執(zhí)行其他任務(wù),如發(fā)送電子郵件,第二部分是用于創(chuàng)建web服務(wù)器和可視化數(shù)據(jù)的HTML代碼。這里我們逐行解釋完整的代碼。
因此,開始編寫代碼時(shí)要包含所有必需的庫。ESP8266庫已預(yù)先安裝在Arduino IDE中。
之后,為Wi-Fi名稱、Wi-Fi密碼、IFTTT主機(jī)名和私鑰創(chuàng)建實(shí)例。輸入從IFTTT復(fù)制的IFTTT私鑰。
之后,定義連接PIR傳感器和蜂鳴器的引腳。
當(dāng)我們使用NodeMCU IP地址在瀏覽器中打開網(wǎng)頁時(shí),執(zhí)行handleRoot函數(shù)。
下一個(gè)函數(shù)是readData(),用于從PIR傳感器讀取數(shù)據(jù)并將其發(fā)送到網(wǎng)頁。在這個(gè)循環(huán)中,每當(dāng)PIR傳感器高時(shí),它就將消息存儲(chǔ)在字符串中,并在請(qǐng)求時(shí)將其發(fā)送給網(wǎng)頁。
在void setup()函數(shù)內(nèi)部,我們使用server.begin()函數(shù)初始化波特率和網(wǎng)頁,然后使用Wi-Fi名稱和密碼將模塊與Wi-Fi連接。另外,將PIR傳感器引腳定義為輸入,蜂鳴器引腳定義為輸出。
void loop()函數(shù)持續(xù)偵聽來自客戶端的HTTP請(qǐng)求。
HTML代碼說明
如上所述,HTML代碼用于創(chuàng)建一個(gè)網(wǎng)頁來顯示運(yùn)動(dòng)檢測的時(shí)間和日期。下面將解釋代碼的重要部分。
標(biāo)簽用于告訴web瀏覽器我們正在使用哪個(gè)版本的html來編寫html代碼。這個(gè)標(biāo)簽寫在頂部。此代碼中的所有內(nèi)容都可以在此之后編寫。
在標(biāo)簽之間編寫的代碼將被瀏覽器讀取。標(biāo)簽用于定義網(wǎng)頁的標(biāo)題、標(biāo)題行和樣式。中寫入的數(shù)據(jù)是瀏覽器中選項(xiàng)卡的名稱。標(biāo)簽用于給表格和標(biāo)題行設(shè)置樣式。
標(biāo)簽用于包含jQuery。jQuery是JavaScript庫。類中的getData()函數(shù)
XMLHttpRequest對(duì)象用于從web服務(wù)器請(qǐng)求數(shù)據(jù)。所有瀏覽器都有一個(gè)內(nèi)置的XMLHttpRequest對(duì)象,用于從服務(wù)器請(qǐng)求數(shù)據(jù)。使用XMLHttpRequest,我們可以在不重新加載網(wǎng)頁的情況下更新網(wǎng)頁。這里我們使用這個(gè)對(duì)象從NodeMCU獲取Date和Activity數(shù)據(jù),并在不刷新網(wǎng)頁的情況下更新數(shù)據(jù)表。
XMLHttpRequest對(duì)象的open()和send()方法用于向服務(wù)器發(fā)送請(qǐng)求。http.open()的語法如下所示:
地點(diǎn):
方法是請(qǐng)求的類型(GET或POST)。
URL是服務(wù)器位置
Async用于定義異步或同步,其中true為異步,false為同步。
測試設(shè)置
一旦你的硬件和代碼準(zhǔn)備好了,將NodeMCU連接到你的筆記本電腦上,并使用Arduino IDE上傳代碼。在NodeMCU上傳程序后,打開波特率為115200的串口監(jiān)視器,獲取NodeMCU的IP地址。在網(wǎng)絡(luò)瀏覽器中打開它,你會(huì)看到所有記錄運(yùn)動(dòng)的時(shí)間和日期的數(shù)據(jù)。
本文編譯自iotdesignpro