自动化抽水系统实现处理端

@zgcwkj  2020年01月20日

分类:

代码 其它 

下面代码可能有点简陋,还请大神轻喷!

硬件:

一、ESP8266
二、继电器模块

原理:

通过本地 TCP 协议来接收客户端传输的数据,然后解析数据得到水池剩余量,对水池剩余量进行评估,然后在阈值的访问内进行对应的操作

源码:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

const char *ssid = "zgcwkj_2.4G";    //WiFi名称
const char *password = "1234567890"; //WiFi密码
const int OutputSwitch = D2;         //继电器输出IO

WiFiServer tcpServer(2025); //声明TCP服务对象

void setup()
{
  Serial.begin(115200);
  Serial.println("\r\n _ \r\n");
  WiFi.mode(WIFI_STA);                  //设置工作模式
  WiFi.begin(ssid, password);           //连接WIFI
  while (WiFi.status() != WL_CONNECTED) //检查WiFi连接状态
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("Connected");
  Serial.print("IP Address:");
  Serial.println(WiFi.localIP());
  pinMode(OutputSwitch, OUTPUT); //设置输出
  tcpServer.begin();             //启动TCP服务
}

void loop()
{
  WiFiClient client = tcpServer.available();            //建立客户对象
  if (client)                                           //当前客户可用
  {                                                     //
    Serial.println("Client connected");                 //客户端已连接
    String readBuff;                                    //用来存储接收的数据
    while (client.connected())                          //客户端处于连接状态
    {                                                   // # > 接收数据
      if (client.available())                           //如果有可读的数据
      {                                                 //
        char c = client.read();                         //读取一个字节 //也可以用 readLine() 等其他方法
        readBuff += c;                                  //拼接接收的字符数据
        if (c == '\r')                                  //接收到回车符
        {                                               //
          client.print("Received: " + readBuff + "\n"); //向客户端发送
          Serial.println("Received: " + readBuff);      //串口打印
          goScheduler(readBuff.toInt());                //操作继电器
          readBuff = "";                                //
          break;                                        //跳出循环
        }                                               //
      }                                                 // # > 接收数据
    }                                                   //
    client.stop();                                      //关闭客户对象
    Serial.println("Client disconnected");              //结束当前连接
  }
}

// 根据得到的数据进行调度
void goScheduler(int values)
{
  if (values < 0 || values > 100)
  {
    Serial.println("Invalid data"); //无效的数据
  }
  else if (values < 5)
  {
    digitalWrite(OutputSwitch, HIGH); //设置IO脚的输出状态为高电平
  }
  else if (values > 95)
  {
    digitalWrite(OutputSwitch, LOW); //设置IO脚的输出状态为底电平
  }
}

说明:

注意更改 WIFI名称和密码,超声波数据的引脚等



添加新评论

Top