基于ESP8266构建一个污水监测系统

基于ESP8266构建一个污水监测系统,第1张

  污水管理是市政基础设施的一个重要方面,毫无疑问,它会影响我们的日常卫生。污水/排水管理不善会导致城市洪水,这在拥挤的城市中最为常见。这个问题可以通过使用基于物联网传感器技术的智能污水管理设备来解决。

  在本文中,我们将构建一个智能设备,它可以感知排水系统何时堵塞,如果水因堵塞而溢出,我们将通知市政当局采取必要的行动。此外,使用Android应用程序,可以实时监控排水系统的状态。

  所需组件

  ESP8266 NodeMCU

  HCSR04超声波传感器

  浮子传感器/导电电极

  面包板电源

  连接线

  引领

  12V、1 AMP DC 适配器

  污水监测项目工作

  在该项目中,使用了两个传感器作为输入设备,即用于检测堵塞的超声波传感器和用于检测溢水的水位传感器。来自这些传感器的信息在 ESP8266 中接收和处理,ESP8266作为微控制器和 WiFi 模块。下图代表我们项目的框图。

基于ESP8266构建一个污水监测系统,pYYBAGLjpwWAfHayAADJlrRuKTs776.png,第2张

  ESP8266 在内部执行所有逻辑和数学运算,并将适当的信号发送到 Blynk 云以执行必要的 *** 作。在这里,实时超声波距离被发送到 Blynk 应用程序,并且在阻塞或溢出的情况下也会向移动设备发送推送通知。

  基于物联网的污水监测电路

  首先,可以按照下图污水监测装置的电路图连接电路。

基于ESP8266构建一个污水监测系统,poYBAGLjpwKAZTpNAAH_fdJ4t5I909.png,第3张

  在这里,两个导体被用作水位检测器,也可以以类似的方式用浮子传感器代替。我已将电路焊接在穿孔板上,如下所示。

基于ESP8266构建一个污水监测系统,poYBAGLjpv6AN25jAAfInIocYDQ938.png,第4张

  然后为了外部保护,它被封装在一个塑料外壳中,最终组装如下所示:

基于ESP8266构建一个污水监测系统,poYBAGLjpvmAQE_XAAUYvibwdUo758.png,第5张

基于ESP8266构建一个污水监测系统,poYBAGLjpvWAHI52AACef2rqsVg274.png,第6张

  设置用于远程污水监测的 Blynk 应用程序

  Blynk 是一款可以在 Android 和 iOS 设备上运行的应用程序,可以使用我们的智能手机控制任何物联网设备。我们可以创建自己的图形用户界面来设计我们的物联网应用程序 GUI。您还可以查看我们之前构建的所有其他Blynk IoT 项目。在这里,我们将为这个项目设置我们的 Blynk 应用程序来监控污水状态。

  设置前,请从 Google Play 商店下载 Blynk 应用程序(iOS 用户可从 App Store 下载)。安装后,使用您的电子邮件 ID 和密码进行注册。

  在 Blynk 上创建一个新项目:

  成功安装后,打开应用程序,您将看到一个带有“新建项目”选项的屏幕。单击此处,将d出一个新屏幕,我们需要在其中设置项目名称、板和连接类型等参数。在此项目中,选择设备为NodeMCU,连接类型为 Wi-Fi,然后单击“创建”。

  成功创建项目后,我们将在我们的注册电子邮件中获得一个AuthenTIcate ID 。保存验证 ID 以供将来参考。

  创建图形用户界面:

  在 Blynk 中打开项目,单击“+”号,我们将在其中获取可以在该项目中使用的小部件。这里选择了一个“仪表”小部件来显示间隙距离,并选择一个“通知”小部件来接收来自 NodeMCU 的通知。在 Gauge 设置中,可以进行必要的更改,如参数名称、本项目中的 V1 引脚号。

  为污水监测编程 NodeMCU

  要将代码上传到 NodeMCU,请按照以下步骤 *** 作:

基于ESP8266构建一个污水监测系统,pYYBAGLjpvCAfOBxAAESv7EgaAc453.png,第7张

  1. 打开 Arduino IDE,然后转到File--》Preferences--》SetTIngs。

基于ESP8266构建一个污水监测系统,pYYBAGLjpuyAezLSAAAm2UgjsZU299.png,第8张

  2.在 “AddiTIonal Board Manager URL ”字段中输入https://arduino.esp8266.com/stable/package_esp8266com_index.json并单击“Ok”。

基于ESP8266构建一个污水监测系统,pYYBAGLjpuiAEPuzAADiPIMAZlI661.png,第9张

  3.现在转到Tools--》 Board--》 Boards Manager。在 Boards Manager 窗口中,在搜索框中键入ESP 8266,选择最新版本的板并单击安装。

基于ESP8266构建一个污水监测系统,pYYBAGLjpuSAINAlAAFs3qCnhaU761.png,第10张

 4.安装完成后,进入Tools-->Board-->选择NodeMCU 1.0(ESP-12E Module)。现在,您可以使用 Arduino IDE 对 NodeMCU 进行编程。

完成上述 NodeMCU 编程设置后,我们必须将完整代码上传到 ESP8266 NodeMCU。首先,我们必须在代码中包含所有必需的库文件。

通过在代码中包含所有必需的库文件来启动代码,例如用于ESP8266板的 ESP8266WiFi.h 等。

这里“ BlynkSimpleEsp8266.h”用于将 Blynk 与 ESP8266 模块集成。要下载包,打开 Arduino IDE,然后转到选项卡Sketch并单击选项Include Library--> Manage Libraries。然后在搜索框中搜索 Blynk 并下载并安装适用于 ESP8266 的 Blynk 包。

 

#define BLYNK_PRINT 序列号
#include  
#include 

 

接下来,定义用于超声波传感器和 LED 的引脚。

 

常数 trigPin1 = D3; 
常量 echoPin1 = D2; 
#define redled D4

 

现在,定义了将 NodeMCU 与互联网连接所需的网络凭据,即 SSID 和密码。然后定义先前保存的 Blynk 帐户凭据,例如身份验证 ID。确保您已编辑个人凭据以代替这些变量。

 

charauth[]="aX3Cded2oXXXXXXXXoo9bAVEGt1U"; 
charssid[] = "管理员"; 
字符传[] = "123456789"; 
void setup() 
{ 
pinMode(trigPin1, OUTPUT); 
pinMode(echoPin1,输入);
pinMode(A0,输入);
数字写入(A0,输出);
pinMode(红色,输出);
数字写入(红色,低);
序列号.开始(9600);
Blynk.begin(auth, ssid, pass); 
}

 

接收并存储来自水流传感器的模拟数据以供进一步使用。

 

int float1=analogRead(A0);

 

为了计算距离,我们需要通过超声波传感器的触发引脚向传感器提供输入脉冲。在这里,根据 HC-SR04 数据表,给出一个 2 微秒的脉冲,然后从回波引脚读取传感器的输出脉冲,并以厘米为单位计算距离。

 

数字写入(trigPin1,低);
延迟微秒(2);
数字写入(trigPin1,高);
延迟微秒(10);
数字写入(trigPin1,低);
  持续时间1 = 脉冲输入(echoPin1,高);
  距离1 = 持续时间1 * 0.034 / 2;

 

要将距离数据发送到 Blynk,使用如下所示的Blynk.virtualWrite函数,其中需要定义特定的虚拟引脚。

 

Blynk.virtualWrite(V1,distance1);

 

然后,为溢出或阻塞条件下的 LED 指示写入 if-else 条件。在这里,根据我的设置,我以 5 厘米作为参考。您必须根据现有设置进行更改。要发送通知,请使用Blynk.noTIfy函数,如下所示。

 

if(distance1<=5) 
   { 
Blynk.notify("阻塞警报!"); 
数字写入(红色,高);
   } 
else if(float1<=800) 
   { 
Blynk.notify("溢出警报!"); 
数字写入(红色,高);
   } 
else 
   { 
digitalWrite(redled, LOW); 
   } 
blynk.run(); 
   }

 

  污水监测系统的工作

  完成设置后,只需将代码上传到您的 NodeMCU,您的项目就可以进行测试了。我的设置如下所示。

基于ESP8266构建一个污水监测系统,pYYBAGLjpt2AAJ3XAAOTiGGx93U472.png,第11张
#define BLYNK_PRINT Serial
#include
#include
const int trigPin1 = D3;
常量 int echoPin1 = D2;
#define redled D4
char auth[]="aX3Cded2oxBxxxxx9bAVEGt1U";
字符 ssid[] = "管理员";
字符传[] = "123456789";
国际持续时间1,距离1;
整数计数=0;
void setup()
{
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1,输入);
  pinMode(A0,输入);
  数字写入(A0,输出);
  pinMode(红色,输出);
  数字写入(红色,低);
  序列号.开始(9600);
  Blynk.begin(auth, ssid, pass);
}
无效循环()
{
  int float1=analogRead(A0);
  数字写入(trigPin1,低);
  延迟微秒(2);
  数字写入(trigPin1,高);
  延迟微秒(10);
  数字写入(trigPin1,低);
  持续时间1 = 脉冲输入(echoPin1,高);
  距离1 = 持续时间1 * 0.034 / 2;
  Serial.println(float1);
   Blynk.virtualWrite(V1,distance1);
   if(distance1<=5)
   {
    Blynk.notify("阻塞警报!");
    数字写入(红色,高);
   }
   else if(float1<=800)
   {
    Blynk.notify("溢出警报!");
     数字写入(红色,高);
   }
      其他
   {
    数字写入(红色,低);
   }
    blynk.run();
   }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2711427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存