基于物聯(lián)網(wǎng)的洪水監(jiān)測系統(tǒng)
洪水是一種已知的重大自然災(zāi)害,給環(huán)境和生物造成了巨大的損失。在這種情況下,對不同條件下的河床水位狀況進行應(yīng)急預(yù)警就顯得尤為重要。在這個項目中,目標(biāo)是感知河床的水位,檢查它們是否處于正常狀態(tài)。如果它們超過了限制,那么它就會通過LED指示和互聯(lián)網(wǎng)應(yīng)用程序提醒人們。在這里,我們使用超聲波傳感器來感知河流水位,并使用NodeMCU ESP8266來處理這些數(shù)據(jù)。這些數(shù)據(jù)將被上傳到ThingSpeak物聯(lián)網(wǎng)云,使用該云,可以從世界任何地方以圖形方式監(jiān)測河流水位。
組件的要求
?ESP8266 NodeMCU
?超聲波傳感器
?電力供應(yīng)
?led(紅色和綠色)
?電路試驗板
?跳投
洪水監(jiān)測系統(tǒng)的運作
我們以前使用ESP8266 NodeMCU來構(gòu)建許多物聯(lián)網(wǎng)項目。上面的框圖展示了這個基于物聯(lián)網(wǎng)的洪水監(jiān)測系統(tǒng)的工作原理。在這里,超聲波傳感器被用來感應(yīng)河水的水位。從超聲波傳感器輸出的數(shù)據(jù)被饋送到NodeMCU,在那里它被處理并發(fā)送到ThingSpeak進行圖形監(jiān)控和緊急警報。在這里,紅色LED用于在關(guān)鍵洪水條件下發(fā)出警報,綠色LED用于指示正常情況。
HC-SR04超聲波傳感器
超聲波傳感器利用超聲波的原理來確定與物體的距離。超聲波傳感器產(chǎn)生高頻聲波。當(dāng)超聲波擊中物體時,它以回聲的形式反射出來,被接收器感知。通過使用回聲到達接收器所需的時間,我們可以計算到目標(biāo)物體的距離。
超聲波測距儀由兩個超聲波換能器組成。其中,單片機作為發(fā)射器,將單片機的電脈沖轉(zhuǎn)換為超聲波脈沖,接收器接收發(fā)射的脈沖。如果它接收到這些信號,那么它就會產(chǎn)生一個輸出脈沖,其時間周期可以用來確定與目標(biāo)的距離。
特性
?工作電壓:5V
?工作電流:15mA
?工作頻率:40HZ
?測量距離:2cm-4m
?測量角度:15度。
?觸發(fā)輸入脈沖:10uS
通過之前的項目,如物聯(lián)網(wǎng)庫存管理和Wi-Fi控制機器人,了解更多關(guān)于超聲波傳感器的信息。
洪水監(jiān)測系統(tǒng)電路圖
洪水監(jiān)測系統(tǒng)的電路圖如下
真正的設(shè)置是這樣的:
為洪水監(jiān)測和警報系統(tǒng)設(shè)置ThingSpeak帳戶
根據(jù)上述電路圖成功完成硬件后,現(xiàn)在是時候設(shè)置物聯(lián)網(wǎng)平臺了,數(shù)據(jù)可以存儲在該平臺上進行在線監(jiān)控。這里我們使用ThingSpeak來存儲數(shù)據(jù),這是一個非常流行的物聯(lián)網(wǎng)云平臺,用于在線構(gòu)建存儲、監(jiān)控和處理數(shù)據(jù)。我們還使用ThingSpeak構(gòu)建了許多基于物聯(lián)網(wǎng)的項目。
第一步:注冊ThingSpeak
首先,如果你以前沒有Mathworks帳戶,請登錄https://thingspeak.com/并創(chuàng)建一個新的免費Mathworks帳戶。
第二步:登錄ThingSpeak
用你的憑證登錄ThingSpeak,然后點擊“新頻道”?,F(xiàn)在填寫項目的詳細信息,如名稱、字段名稱等。這里我們必須創(chuàng)建四個字段名,如濕度,溫度,壓力和雨。然后點擊“保存頻道”。
步驟3:記錄憑據(jù)
選擇已創(chuàng)建的通道并記錄以下憑據(jù)。
通道ID,它在通道視圖的頂部。
編寫一個API密鑰,可以在通道視圖的API Keys選項卡上找到。
步驟4:向GUI添加小部件
單擊“Add Widgets”并添加四個適當(dāng)?shù)膚idget,如儀表、數(shù)字顯示和指示器。在我的例子中,我?guī)Я艘粋€洪水指示器。為每個小部件選擇適當(dāng)?shù)淖侄蚊?
代碼的解釋
在成功完成硬件設(shè)置之后,現(xiàn)在是對ESP8266 NodeMCU進行編程的時候了。
要使用Arduino IDE將代碼上傳到NodeMCU,請遵循以下步驟:
1. 打開Arduino IDE,然后進入File - >Preferences - >Settings。
2. 在“附加板管理器URL”字段中鍵入https://arduino.esp8266.com/stable/package_esp8266com_index.json,然后單擊“確定”。
3. 現(xiàn)在轉(zhuǎn)到Tools > Board > Boards Manager。在“單板管理器”窗口中,在搜索框中輸入ESP8266,選擇最新版本的單板,單擊“安裝”。
4. 安裝完成后,進入“Tools ->Board ->”,選擇“NodeMCU 1.0(ESP-12E Module)”。現(xiàn)在您可以使用Arduino IDE對NodeMCU進行編程。
完成上述設(shè)置后,使用Arduino IDE對NodeMCU進行編程,將完整的代碼上傳到ESP8266 NodeMCU。下面給出了完整代碼的逐步解釋。
通過在代碼中包含所有必需的庫文件來啟動代碼,例如ESP8266WiFi.h用于ESP8266板等。這里,ThingSpeak.h庫用于ThingSpeak平臺,可以通過以下步驟將其添加到Arduino IDE中:
?在Arduino IDE中,選擇Sketch/Include Library/Manage Libraries。
?從列表中單擊ThingSpeak庫,然后單擊Install按鈕。
接下來,定義用于超聲波傳感器和led的引腳。
現(xiàn)在,定義了網(wǎng)絡(luò)憑據(jù)——即SSID和密碼,它們是將NodeMCU連接到互聯(lián)網(wǎng)所必需的。然后定義ThingSpeak帳戶憑據(jù),如通道號和寫入API,這些都是前面記錄的。確保您已經(jīng)編輯了您的憑據(jù)來代替這些變量。
然后,定義用于計時的變量。
然后,將NodeMCU連接到互聯(lián)網(wǎng),調(diào)用WiFi。開始并傳遞網(wǎng)絡(luò)SSID和密碼作為參數(shù)。使用WiFi.status()檢查網(wǎng)絡(luò)連接是否成功,連接成功后,在Serial Monitor上打印一條帶有本地IP地址的消息。
然后使用保存的憑證連接到ThingSpeak平臺。為此,ThingSpeak。使用Begin。
為了計算距離,通過超聲波傳感器的三角引腳向傳感器輸入脈沖。這里根據(jù)HC-SR04數(shù)據(jù)表,給出2微秒脈沖,然后從回波引腳讀取傳感器的輸出脈沖,并以厘米為單位計算距離。
然后,為正常狀態(tài)和泛洪狀態(tài)下的LED指示編寫if-else條件。這里根據(jù)我的設(shè)置,我已經(jīng)采取了4厘米作為參考。您可以根據(jù)您的設(shè)置更改它。
最后,每隔10秒將河流水位的值上傳到ThingSpeak頻道。
在洪水的情況下,ThingSpeak會顯示一個大紅圈,如下圖所示:
這只是基于物聯(lián)網(wǎng)的洪水監(jiān)測預(yù)警系統(tǒng)的一個基本模型,還有很大的改進空間。
本文編譯自iotdesignpro