ESP8266远程烧录实现
可以给你的 ESP8266 加入 “空中升级”(OTA,Over‑The‑Air)功能,这样以后用 Wi‑Fi 就能刷新固件,不再需要每次插数据线。下面给你两个常用方案:
方案一:Arduino IDE + ArduinoOTA 库(推荐)
- 在代码里加入 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 请求
// … 在这里放你原有的读取传感器、控制继电器逻辑 …
}
- 上传一次(有线) 把上面这段 OTA 代码合入你当前的程序,用 USB 数据线上传到 ESP8266 上,之后它就能接受网络刷机了。
- 后续无线刷机
- 打开 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 支持、双分区固件等!
本文作者: 永生
本文链接: https://yys.zone/detail/?id=431
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
评论列表 (0 条评论)