基于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 + "

附件截图下载
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44301884/article/details/104456058
今日推荐