下面代码可能有点简陋,还请大神轻喷!
硬件:
一、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名称和密码,超声波数据的引脚等
版权属于:zgcwkj
本文链接:https://zgcwkj.com/archives/142.html
转载声明:请注明本文章的标题及内容的出处和声明,谢谢
评论已关闭