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