天线|RF射频|微波|雷达技术
直播中

白纪龙

8年用户 1305经验值
擅长:连接器 电源/新能源 连接器 模拟技术 连接器 测量仪表 连接器 EMC/EMI设计 连接器 嵌入式技术 连接器 连接器 连接器 连接器 接口/总线/驱动 连接器 处理器/DSP 连接器 光电显示 连接器 控制/MCU 连接器 连接器 连接器 MEMS/传感技术 连接器 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 模拟技术 连接器 EMC/EMI设计 光电显示 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[经验]

接口雨水土壤水分传感器与 Nodemcu Esp8266-12E WiFi 模块



这是一个简单的教程如何界面雨水或土壤水分水平传感器与 nodemcu esp8266-12e WiFi 模块。通过 WiFi 监控你的花园的状态赢得了智能花园的称号。我们将监测雨水和土壤湿度水平的组成。用户现在可以在桌面或手机上查看他/她花园的状态。该项目采用了简单、流行的水位传感器。传感器由两条腿组成。传感器工作在3.3伏到5伏的电源上。在每条腿上粘贴导电材料,通常是镍或铜两腿之间供应电力。一条腿连接到 + 的电源,另一条腿连接到-的电源。两条腿相互连接成一部分。在正常情况下,由于威廉希尔官方网站 是断开的,所以没有电荷流过支路。一旦我们把腿插入地面,地面上的水分就会降低腿之间的电阻,并且取决于水分水平,电压在完成的威廉希尔官方网站 之间流动。如果两腿之间的水分含量高,电阻就会低,更多的电压会通过两腿。如果湿度低,很少的电压会流过腿部另一个模块提供的腿是电压控制威廉希尔官方网站 。它有一个可变的电阻和 lm393运算放大器它有四个引脚。两个电源引脚和两个传感器输出引脚。传感器输出引脚是
1.png

水分水平传感器

  • A0-模拟输出引脚。输出模拟电压,对应于土壤湿度水平或关于水雨探测。传感器用于何种目的。

  • D0-输出数字信号。我们通过传感器控制板上的可变电阻设置阈值。现在,当水分水平增加或减少的阈值数字针变得高。
  •        我将使用这个项目的两个输出引脚。通常许多教程在互联网上使用只有一个输出引脚,并留下其他空缺。从 a0开始,我将测量土壤的湿度水平。设置一个阈值,当传感器值达到阈值时,d0用于生成警报。
  • 项目威廉希尔官方网站 图
  • 诺德姆库工作在3.3伏和土壤湿度雨水泄漏传感器也工作在3.3至5伏之间。所以我们可以用同一个电源为同一个威廉希尔官方网站 供电。漏水传感器也可以采用波分复用器输出电源。模拟通道0与雨水传感器的 a0输出相连。数字引脚13连接到土壤水分传感器 d0输出端。
2.png

带有 nodemcu wifi 模块的雨水土壤水分传感器

       开始学习代码。让我们回想一下项目的功能。当用户在桌面或手机的浏览器中输入特定的 IP 地址时,将显示一个包含湿度状态或雨水检测的页面。无论是 nodemcu 还是移动/台式电脑,想要查看状态都必须连接到同一个 WiFi 网络。如果其中任何一个在其他网络上,页面将不会显示。诺德姆库是一个服务器。它是服务于一个网页,所以服务器和客户端必须在同一个网络上,以便通信正确。首先输入你希望你的网络节点连接到的网络节点的 SSID 和密码。
const char* ssid = “Your SSID”;

const char* password = “Your Wifi Password”;

        然后定义了模拟通道和数字引脚,用于读取雨水传感器输出的数据。在设置函数中,无线局域网被打开,我们正在连接的路由器请求分配一个 IP。当成功分配完整的 IP 时,nodemcu 启动其服务器并在 arduino 的串行监视器上输出服务器地址。在循环函数中,我在等待客户端请求,当一个请求到达时,我计算模拟值,将其转换为百分比,检查是否达到阈值,并将这些值传递到页面。诺德姆库将页面发送回客户端并关闭连接。
#include

const char* ssid = "Your SSID";
const char* password = "Your Wifi Password";

int Raw       = A0;      //Analog channel A0 as used to measure temperature
int threshold = 13;      //Nodemcu digital pin water sensor read
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);
  // Connect to WiFi network
  pinMode(threshold,INPUT_PULLUP); //Pin#13 as output-Activate pullup at pin 13
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);     //Begin WiFi

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address on serial monitor
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");    //URL IP to be typed in mobile/desktop browser
  Serial.print(WiFi.localIP());
  Serial.println("/");

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('r');
  Serial.println(request);
  client.flush();

  // Match the request
  float percentage = 0.0;
  int value = LOW;
  if (request.indexOf("/Up=ON") != -1)  {
      //Analog pin reading output voltage by water moisture rain sensor
       float reading = analogRead(Raw);     
       percentage = (reading/1024) * 100;   //Converting the raw value in percentage
    value = HIGH;
  }


  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("");
  client.println("");
  client.println("

Rain Soil Water moisture Level



");
  client.print("Moisture Level Percentage =");
  client.print(percentage);
  client.print("%");
  client.println();

if(digitalRead(threshold)==HIGH){
  client.println("Threshold Reached = Rain detected / Moisture exceeded / Water detected");
  }

  if(value == HIGH) {
    client.println("Updated");
  } else {
    client.print("Not Updated");
  }
  client.println("

");
  client.println("
");  
  client.println("");
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");

}
在代码中,可见的标题和按钮是由于在 nodemcu arduino ide 代码中出现的 html 代码。只需制作以上威廉希尔官方网站 并下载网络通信部分的代码即可。下载代码后,从 arduino ide 以115200bps 波特率打开串行监视器。你会看到 nodemcu 正在连接到你的路由器,启动它的服务器,在服务器初始化之后,它会显示在屏幕上。这个地址或 IP 是显示土壤湿度状态的页面。IP 看起来就像这样。人们必须在他/她的移动电话,台式机,笔记本电脑或笔记本电脑的浏览器中输入这个 IP,以查看花园土壤湿度的状况。最终的结果是像下面这样的东西
3.png

诺登姆库土壤湿度水雨传感器无线监测


nodemcu_soil_sensor.rar (1.37 KB)
(下载次数: 2, 2022-4-2 10:52 上传)





当任何时候按下“更新水分水平”的按钮,即时值的传感器将显示在网页上

Limitations

       土壤传感器铜和镍的电导率在3个月左右就会消失。土壤中的每一样东西都会被土壤中的细菌吃掉,或者与土壤成分发生化学反应。同样的情况也发生在土壤传感器支架上。在几个月的时间里,它们很容易失去导电性。你可能需要每3个月更换一次传感器。另一个限制是,用户需要刷新页面(按更新水分级别按钮) ,每次他需要看到更新的值。页面可以通过使用 node js 而不是 HTML relaod 自动刷新

Future Work

       当土壤水分低时,可以通过激活水阀来延长上述工程。用这种方法,人们可以自动给花园里的植物浇水。唯一需要修改的是驱动一个带有节流器的继电器,你可以把阀门连接上。下面是一个使用诺德姆库实现 WiFi 中继接口和控制的示范项目。本教程使用中继项目代码,可以构建一个智能花园项目

下载项目代码。文件夹中包含 arduino ide 项目。文件。请提供您对该项目的反馈意见。在下面的评论部分写下你的问题和意见。
公众号二维码.png



更多回帖

发帖
×
20
完善资料,
赚取积分