基于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 + "
附件截图下载: