可以给你的 ESP8266 加入 “空中升级”(OTA,Over‑The‑Air)功能,这样以后用 Wi‑Fi 就能刷新固件,不再需要每次插数据线。下面给你两个常用方案:

方案一:Arduino IDE + ArduinoOTA 库(推荐)

  1. 在代码里加入 OTA 支持
   #include <ESP8266WiFi.h>
   #include <ArduinoOTA.h>

   const char* ssid = "yang1234";
   const char* password = "y123456789";

   void setup() {
     Serial.begin(115200);
     WiFi.begin(ssid, password);
     while (WiFi.status() != WL_CONNECTED) {
       delay(500);
       Serial.print(".");
     }
     Serial.println("\nWi-Fi 已连接,IP:" + WiFi.localIP().toString());

     // ArduinoOTA 配置
     ArduinoOTA.setHostname("my_esp8266");       // 在网络上的设备名
     ArduinoOTA.setPassword("ota_password");      // 上传密码(可选)

     ArduinoOTA.onStart([]() {
       Serial.println("开始 OTA 刷写");
     });
     ArduinoOTA.onEnd([]() {
       Serial.println("\nOTA 完成,重启中");
     });
     ArduinoOTA.onError([](ota_error_t err) {
       Serial.printf("OTA 错误[%u]\n", err);
     });
     ArduinoOTA.begin();
   }

   void loop() {
     ArduinoOTA.handle();    // 必须循环调用,监听 OTA 请求
     // … 在这里放你原有的读取传感器、控制继电器逻辑 …
   }
  1. 上传一次(有线) 把上面这段 OTA 代码合入你当前的程序,用 USB 数据线上传到 ESP8266 上,之后它就能接受网络刷机了。
  1. 后续无线刷机
  • 打开 Arduino IDE → 工具 → 端口,会出现一个 “网络端口” 名称(如 my_esp8266 at 192.168.1.50)。
  • 选中它,按普通方式点击“上传”,IDE 会通过 Wi‑Fi 把新固件发给设备。

方案二:基于 HTTP 的 Web OTA

如果你想更灵活(任何浏览器/POST 都能上传),可以在 ESP 上跑一个简单的网页上传接口:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266HTTPUpdateServer.h>

const char* ssid = "yang1234";
const char* password = "y123456789";

ESP8266WebServer httpServer(80);
ESP8266HTTPUpdateServer updater;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) delay(500);

  // 启动 HTTP 更新服务器
  updater.setup(&httpServer, "/update", "admin", "admin_pass");
  httpServer.begin();

  Serial.println("HTTP OTA 准备就绪,IP:" + WiFi.localIP().toString());
}

void loop() {
  httpServer.handleClient();
  // … 你的业务逻辑 …
}
  • 访问 http://<esp-ip>/update,输入用户名密码后上传 .bin 固件文件即可。

小结

  • ArduinoOTA 最简单,直接集成到现有项目,用 Arduino IDE 上传就行。
  • HTTPUpdateServer 更通用,浏览器/脚本都能推送固件。

二者都需要第一次有线烧录一次 OTA 代码;之后就能无线升级,不用再插数据线了。


如果你对安全(加密传输)、固件回滚等有更高要求,也可以再加 MD5 校验、HTTPS 支持、双分区固件等!