自動化抽水系統實現處理端(測試版)

@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