污水管理是市政基礎(chǔ)設(shè)施的一個(gè)重要方面,毫無(wú)疑問(wèn),它會(huì)影響我們的日常衛(wèi)生。污水/排水管理不善會(huì)導(dǎo)致城市洪水,這在擁擠的城市中最為常見(jiàn)。這個(gè)問(wèn)題可以通過(guò)使用基于物聯(lián)網(wǎng)和傳感器技術(shù)的智能污水管理設(shè)備來(lái)解決。
在本文中,我們將構(gòu)建一個(gè)智能設(shè)備,它可以感知排水系統(tǒng)何時(shí)堵塞,如果水因堵塞而溢出,我們將通知市政當(dāng)局采取必要的行動(dòng)。此外,使用Android應(yīng)用程序,可以實(shí)時(shí)監(jiān)控排水系統(tǒng)的狀態(tài)。
所需組件
HCSR04超聲波傳感器
浮子傳感器/導(dǎo)電電極
面包板電源
連接線
引領(lǐng)
12V、1 AMP DC 適配器
污水監(jiān)測(cè)項(xiàng)目工作
在該項(xiàng)目中,使用了兩個(gè)傳感器作為輸入設(shè)備,即用于檢測(cè)堵塞的超聲波傳感器和用于檢測(cè)溢水的水位傳感器。來(lái)自這些傳感器的信息在 ESP8266 中接收和處理,ESP8266作為微控制器和 WiFi 模塊。下圖代表我們項(xiàng)目的框圖。
ESP8266 在內(nèi)部執(zhí)行所有邏輯和數(shù)學(xué)運(yùn)算,并將適當(dāng)?shù)?a target="_blank">信號(hào)發(fā)送到 Blynk 云以執(zhí)行必要的操作。在這里,實(shí)時(shí)超聲波距離被發(fā)送到 Blynk 應(yīng)用程序,并且在阻塞或溢出的情況下也會(huì)向移動(dòng)設(shè)備發(fā)送推送通知。
基于物聯(lián)網(wǎng)的污水監(jiān)測(cè)電路圖
首先,可以按照下圖污水監(jiān)測(cè)裝置的電路圖連接電路。
在這里,兩個(gè)導(dǎo)體被用作水位檢測(cè)器,也可以以類似的方式用浮子傳感器代替。我已將電路焊接在穿孔板上,如下所示。
然后為了外部保護(hù),它被封裝在一個(gè)塑料外殼中,最終組裝如下所示:
設(shè)置用于遠(yuǎn)程污水監(jiān)測(cè)的 Blynk 應(yīng)用程序
Blynk 是一款可以在 Android 和 iOS 設(shè)備上運(yùn)行的應(yīng)用程序,可以使用我們的智能手機(jī)控制任何物聯(lián)網(wǎng)設(shè)備。我們可以創(chuàng)建自己的圖形用戶界面來(lái)設(shè)計(jì)我們的物聯(lián)網(wǎng)應(yīng)用程序 GUI。您還可以查看我們之前構(gòu)建的所有其他Blynk IoT 項(xiàng)目。在這里,我們將為這個(gè)項(xiàng)目設(shè)置我們的 Blynk 應(yīng)用程序來(lái)監(jiān)控污水狀態(tài)。
設(shè)置前,請(qǐng)從 Google Play 商店下載 Blynk 應(yīng)用程序(iOS 用戶可從 App Store 下載)。安裝后,使用您的電子郵件 ID 和密碼進(jìn)行注冊(cè)。
在 Blynk 上創(chuàng)建一個(gè)新項(xiàng)目:
成功安裝后,打開應(yīng)用程序,您將看到一個(gè)帶有“新建項(xiàng)目”選項(xiàng)的屏幕。單擊此處,將彈出一個(gè)新屏幕,我們需要在其中設(shè)置項(xiàng)目名稱、板和連接類型等參數(shù)。在此項(xiàng)目中,選擇設(shè)備為NodeMCU,連接類型為 Wi-Fi,然后單擊“創(chuàng)建”。
成功創(chuàng)建項(xiàng)目后,我們將在我們的注冊(cè)電子郵件中獲得一個(gè)Authenticate ID 。保存驗(yàn)證 ID 以供將來(lái)參考。
創(chuàng)建圖形用戶界面:
在 Blynk 中打開項(xiàng)目,單擊“+”號(hào),我們將在其中獲取可以在該項(xiàng)目中使用的小部件。這里選擇了一個(gè)“儀表”小部件來(lái)顯示間隙距離,并選擇一個(gè)“通知”小部件來(lái)接收來(lái)自 NodeMCU 的通知。在 Gauge 設(shè)置中,可以進(jìn)行必要的更改,如參數(shù)名稱、本項(xiàng)目中的 V1 引腳號(hào)。
為污水監(jiān)測(cè)編程 NodeMCU
要將代碼上傳到 NodeMCU,請(qǐng)按照以下步驟操作:
1. 打開 Arduino IDE,然后轉(zhuǎn)到File--》Preferences--》Settings。
2.在 “Additional Board Manager URL ”字段中輸入https://arduino.esp8266.com/stable/package_esp8266com_index.json并單擊“Ok”。
3.現(xiàn)在轉(zhuǎn)到Tools--》 Board--》 Boards Manager。在 Boards Manager 窗口中,在搜索框中鍵入ESP 8266,選擇最新版本的板并單擊安裝。
4.安裝完成后,進(jìn)入Tools-->Board-->選擇NodeMCU 1.0(ESP-12E Module)?,F(xiàn)在,您可以使用 Arduino IDE 對(duì) NodeMCU 進(jìn)行編程。
完成上述 NodeMCU 編程設(shè)置后,我們必須將完整代碼上傳到 ESP8266 NodeMCU。首先,我們必須在代碼中包含所有必需的庫(kù)文件。
通過(guò)在代碼中包含所有必需的庫(kù)文件來(lái)啟動(dòng)代碼,例如用于ESP8266板的 ESP8266WiFi.h 等。
這里“?BlynkSimpleEsp8266.h”用于將 Blynk 與 ESP8266 模塊集成。要下載包,打開 Arduino IDE,然后轉(zhuǎn)到選項(xiàng)卡Sketch并單擊選項(xiàng)Include Library--> Manage Libraries。然后在搜索框中搜索 Blynk 并下載并安裝適用于 ESP8266 的 Blynk 包。
?
#define BLYNK_PRINT 序列號(hào) #include#include
?
接下來(lái),定義用于超聲波傳感器和 LED 的引腳。
?
常數(shù) trigPin1 = D3; 常量 echoPin1 = D2; #define redled D4
?
現(xiàn)在,定義了將 NodeMCU 與互聯(lián)網(wǎng)連接所需的網(wǎng)絡(luò)憑據(jù),即 SSID 和密碼。然后定義先前保存的 Blynk 帳戶憑據(jù),例如身份驗(yàn)證 ID。確保您已編輯個(gè)人憑據(jù)以代替這些變量。
?
charauth[]="aX3Cded2oXXXXXXXXoo9bAVEGt1U"; charssid[] = "管理員"; 字符傳[] = "123456789"; void setup() { pinMode(trigPin1, OUTPUT); pinMode(echoPin1,輸入); pinMode(A0,輸入); 數(shù)字寫入(A0,輸出); pinMode(紅色,輸出); 數(shù)字寫入(紅色,低); 序列號(hào).開始(9600); Blynk.begin(auth, ssid, pass); }
?
接收并存儲(chǔ)來(lái)自水流傳感器的模擬數(shù)據(jù)以供進(jìn)一步使用。
?
int float1=analogRead(A0);
?
為了計(jì)算距離,我們需要通過(guò)超聲波傳感器的觸發(fā)引腳向傳感器提供輸入脈沖。在這里,根據(jù) HC-SR04 數(shù)據(jù)表,給出一個(gè) 2 微秒的脈沖,然后從回波引腳讀取傳感器的輸出脈沖,并以厘米為單位計(jì)算距離。
?
數(shù)字寫入(trigPin1,低); 延遲微秒(2); 數(shù)字寫入(trigPin1,高); 延遲微秒(10); 數(shù)字寫入(trigPin1,低); 持續(xù)時(shí)間1 = 脈沖輸入(echoPin1,高); 距離1 = 持續(xù)時(shí)間1 * 0.034 / 2;
?
要將距離數(shù)據(jù)發(fā)送到 Blynk,使用如下所示的Blynk.virtualWrite函數(shù),其中需要定義特定的虛擬引腳。
?
Blynk.virtualWrite(V1,distance1);
?
然后,為溢出或阻塞條件下的 LED 指示寫入 if-else 條件。在這里,根據(jù)我的設(shè)置,我以 5 厘米作為參考。您必須根據(jù)現(xiàn)有設(shè)置進(jìn)行更改。要發(fā)送通知,請(qǐng)使用Blynk.notify函數(shù),如下所示。
?
if(distance1<=5) { Blynk.notify("阻塞警報(bào)!"); 數(shù)字寫入(紅色,高); } else if(float1<=800) { Blynk.notify("溢出警報(bào)!"); 數(shù)字寫入(紅色,高); } else { digitalWrite(redled, LOW); } blynk.run(); }
?
污水監(jiān)測(cè)系統(tǒng)的工作
完成設(shè)置后,只需將代碼上傳到您的 NodeMCU,您的項(xiàng)目就可以進(jìn)行測(cè)試了。我的設(shè)置如下所示。
#define BLYNK_PRINT Serial
#include
#include
const int trigPin1 = D3;
常量 int echoPin1 = D2;
#define redled D4
char auth[]="aX3Cded2oxBxxxxx9bAVEGt1U";
字符 ssid[] = "管理員";
字符傳[] = "123456789";
國(guó)際持續(xù)時(shí)間1,距離1;
整數(shù)計(jì)數(shù)=0;
void setup()
{
? pinMode(trigPin1, OUTPUT);
? pinMode(echoPin1,輸入);
? pinMode(A0,輸入);
? 數(shù)字寫入(A0,輸出);
? pinMode(紅色,輸出);
? 數(shù)字寫入(紅色,低);
? 序列號(hào).開始(9600);
? Blynk.begin(auth, ssid, pass);
}
無(wú)效循環(huán)()
{
? int float1=analogRead(A0);
? 數(shù)字寫入(trigPin1,低);
? 延遲微秒(2);
? 數(shù)字寫入(trigPin1,高);
? 延遲微秒(10);
? 數(shù)字寫入(trigPin1,低);
? 持續(xù)時(shí)間1 = 脈沖輸入(echoPin1,高);
? 距離1 = 持續(xù)時(shí)間1 * 0.034 / 2;
? Serial.println(float1);
?? Blynk.virtualWrite(V1,distance1);
?? if(distance1<=5)
?? {
??? Blynk.notify("阻塞警報(bào)!");
??? 數(shù)字寫入(紅色,高);
?? }
?? else if(float1<=800)
?? {
??? Blynk.notify("溢出警報(bào)!");
???? 數(shù)字寫入(紅色,高);
?? }
????? 其他
?? {
??? 數(shù)字寫入(紅色,低);
?? }
??? blynk.run();
?? }
評(píng)論
查看更多