2025-11-3 23:57:32 [显示全部楼层]
8浏览
查看: 8|回复: 0

[ESP8266/ESP32] ESP32的OTA固件升级功能+联网+温湿度信息实时网络监控

[复制链接]
[color=rgba(43, 53, 71, 0.88)]ESP32的OTA固件升级功能+联网+温湿度信息实时网络监控图2
ESP32的OTA固件升级功能+联网+温湿度信息实时网络监控图1
本项目演示了如何通过MQTT消息触发ESP32的OTA固件升级功能,设备会自动从指定URL下载并更新固件,无需手动指定设备IP地址。
  • ESP32连接到指定WiFi网络
  • 连接到MQTT服务器
  • 监听指定的MQTT主题
  • 当收到OTA更新指令时,自动从指定URL下载固件并执行升级
  • 在SSD1306 OLED屏幕上显示设备信息(MAC地址、IP地址、版本号、MQTT主题)
  • GPIO2 (D4) LED指示灯功能:
    • 正常运行时:每秒闪烁一次
    • OTA升级期间:快速闪烁(100ms间隔)
    • OTA升级完成后:恢复正常闪烁
  • 屏幕显示增强功能:
    • 第一屏:显示设备基本信息(MAC地址、IP地址、版本号、MQTT主题)
    • 第二屏:显示当前日期和时间(从NTP服务器获取)
    • 时区信息(UTC+8)
    • 第三屏:显示温湿度信息
    • 三屏每10秒自动切换显示
  • 温湿度数据MQTT发布功能:
    • 每10分钟自动采集并发布一次温湿度数据到MQTT服务器
    • 数据包含设备ID、MAC地址、温度、湿度和时间戳
  • OTA更新MAC地址验证功能
    • 支持带MAC地址验证的OTA更新消息
    • 只有MAC地址匹配的设备才会执行OTA更新
    • 提高了OTA更新的安全性和精确性
    • 向后兼容不带MAC地址的OTA更新消息
  • MQTT消息实时显示功能
    • 接收到任何MQTT消息时立即在屏幕上显示
    • 消息显示最多持续30秒
    • 短消息单行显示,长消息多行显示
    • 内容过多时自动启用滚动显示,滚动间隔为1秒
    • 显示结束后自动恢复三屏循环


      屏幕显示信息
      设备连接成功后,SSD1306屏幕将循环显示以下信息:
      • 第一屏:
        • MAC地址
        • IP地址
        • 固件版本号
        • MQTT订阅主题
      • 第二屏:
        • 当前日期(年-月-日)
        • 当前时间(时:分:秒)
        • 时区信息(UTC+8)
      • 第三屏:
        • 温度(℃)
        • 湿度(%)


          配置说明
          在src/config/Constants.h中配置以下参数:
          // MQTT服务器配置const char* const MQTT_BROKER = "your_mqtt_broker";const int MQTT_PORT = 8883;const char* const MQTT_TOPIC = "your_mqtt_topic";const char* const MQTT_USERNAME = "your_mqtt_username";const char* const MQTT_PASSWORD = "your_mqtt_password";// 固件版本号const char* const FIRMWARE_VERSION = "1.0.8";
          注意:WiFi配置已移至v1.0.8版本中通过WiFiManager动态配置,无需在代码中硬编码。
          OTA更新消息格式
          向MQTT主题发送以下JSON格式的消息来触发OTA更新:
          基本OTA更新消息格式(向后兼容)
          ``json { "ota_update": "true", "ota_url": "[color=var(--vscode-textLink-foreground)]http://example.com/firmware.bin", "version": "1.0.6" }
          所有接收到此消息的设备都会尝试执行OTA更新。### 带MAC地址验证的OTA更新消息格式(推荐)``json{  "ota_update": "true",  "mac_address": "4C:EB:D6:1F:E8:3B",  "ota_url": "http://example.com/firmware.bin",  "version": "1.0.6"}
          当消息中包含[mac_address](file:///Users/nixs/Desktop/ESP8266/OTA/ota_002/src/mqtt/MQTTHandler.cpp#L29-L29)字段时,设备会验证该MAC地址是否与自身的MAC地址匹配:
          • 只有匹配的设备才会执行OTA更新
          • 其他设备会忽略该消息并输出调试信息
          • MAC地址比较不区分大小写,确保兼容性
          OTA更新安全性和精确性
          MAC地址验证功能大大提高了OTA更新的安全性和精确性:
          • 安全性提升:只有目标设备才会接收和执行OTA更新,防止非目标设备误更新
          • 精确性提升:可以精确控制哪些设备需要更新,避免批量更新时的误操作
          • 调试友好:当MAC地址不匹配时,会在串口输出详细的调试信息,包括目标MAC和设备MAC





MonNovember-202511031716..png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail