天天看點

基于Arduino用Esp8266的四類控制模式基于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 圖檔,或其他檔案。

基于Arduino用Esp8266的四類控制模式基于Arduino用Esp8266的幾種控制模式

四,在一的基礎上 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 + "
           

附件截圖下載下傳:

基于Arduino用Esp8266的四類控制模式基于Arduino用Esp8266的幾種控制模式