下面代碼可能有點簡陋,還請大神輕噴!
硬件:
一、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://www.zgcwkj.com/archives/142.html
轉載聲明:請注明本文章的標題及內容的出處和聲明,謝謝
評論已關閉