基於Arduino用Esp8266的四類控制模式

基於Arduino用Esp8266的幾種控制模式

用ESP8266控制IO端,並反饋IO端的狀態。常用的模式是web端代碼插入程序中。手機或電腦訪問ip地址,web端給出端口信號,然後程序給出相應信號。 有必要時,反饋IO端信號到web端。 有幾種控制模式如下(《C0》《C2》是兩種不同的基礎控制方法):

一,C語言+html代碼打包一起上傳。 訪問網址控制和 IO端反饋IO端狀態。

這一種是常用的方式,連接ARDUINO, 更新相關的庫文件,選擇板的型號,端口號。編譯上傳。 附件中有兩個方法:《C0語言11.txt》m?x1=1
可以反饋IO信號《C2語言20.txt》mx1/1 《C0》相較於《C2》後者能反饋每個端口的狀態。在可視化的web端,視覺效果更好。 整理html 代碼插入程序中 常用兩個工具《UTF-8 轉換工具.html》《Html壓縮整理工具2.html》具體方法可以參考基於Arduino 用Esp8266燒錄Html文件,實現手機電腦訪問內置網頁控制設備開和關!(一)

二,C語言+返回代碼打包一起上傳。 html代碼在手機電腦中打開控制。m?x1=1,mx1/1

這個和《一》有些不一樣,《一》中的web端代碼 改成訪問0.001秒返回上一級。利用這個功能,我們在控制IO端口時,可以直接打開html 或將 html打包成app 。 示例參考《C0語言11訪問並返回.txt》 《C0》《C2》兩種控制方式,但是《C2》不能反饋IO端口的信號。 相較於《一》優勢是web端和APP可以做的更好看一些。不用限制於1M的內存。

三,C語言+SPIFFS 打包一起上傳。html圖片css再上傳。

參考示例《C0語言11SPIFFS文件系統21簡.txt》 和《二》類似,區別在於《二》html 和app是存儲在手機或電腦中,《三》存儲在esp8266另外的3M內存中,不同的芯片內存不一樣,安裝 SPIFFS ,見附件 Tool 安裝到arduino tools 中 重啓 。選擇工具Flash size 再上傳程序, 然後 工具ESP8266 Upload。更新 html css 圖片,或其他文件。
在這裏插入圖片描述

四,在一的基礎上 OTA無線升級

示例《C0語言11OTA無線更新.txt》 《C2語言20OTA無線更新.txt》
第一次燒寫時連接電腦, 會在端口看到一個新的esp8266-xxxxx 192.168.xx.xxx" 的菜單項 選中,拔掉esp接上電源。 esp可以通過網絡端口更新程序。相較於《一》不用連接電腦更新程序。在以後esp已經應用到實際生活中,不方便拆卸時,可以用此類方法更新程序。 WIFI密碼,端口號。源碼見《C0語言11OTA源碼.txt》

#include <ESP8266WebServer.h>
#include <ArduinoOTA.h> 
const char* ssid = "XXXX";            // WIFI名和密碼
const char* password = "XXXXXXXXX"; 
void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) { Serial.println("Failed");  delay(5000);  ESP.restart();  }
  ArduinoOTA.begin();                     // 開啓 arduino 的 OTA
  Serial.print("IP address: ");  Serial.println(WiFi.localIP());
  pinMode(2, OUTPUT); digitalWrite(2, LOW);
  pinMode(4, OUTPUT); digitalWrite(4, HIGH);
} 
void loop() { ArduinoOTA.handle(); }

小記:

一,在控制家中電器設備時,需要多個esp,最好是一個房間安裝一個。這樣給每個esp 分配一個固定的IP地址更方便控制。路由器指定ip。
或《設置靜態IP和hostname.txt》

  IPAddress local_IP(192, 168, 31, 200);IPAddress gateway(192, 168, 31, 1);IPAddress subnet(255, 255, 255, 0);// 以下 String html = "  "; 是網頁部分
  void setup(void){ 
  Serial.begin(115200);
  WiFi.config(local_IP, gateway, subnet);  WiFi.mode(WIFI_STA); //設置靜態IP}
  void loop(void){ }

二, 《C2》示例中,定義端口的狀態,反饋到web端,示例二,縮寫

String s = "<div style=\"font-size: 280px; color: red ;\">";
  s += (val0) ? "H" : "L";
  s += (val1) ? "A" : "B";
  s += "</div>";

String a = (val0)?"H":"L";
String b = (val1)?"A":"B";
String s = "<div style=\"font-size: 280px; color: red ;\">" + a + b + "</div>";

"+a+"
" + a + b + "

附件截圖下載
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章