一个基于 STM32F10x 系列单片机与 ESP01S(ESP8266)模块的物联网控制系统,支持通过 ONENET 平台远程控制外设、采集环境数据,并集成完整的 OTA(Over-The-Air)固件升级功能,实现设备远程维护与更新。
本项目旨在构建一个低成本、高可靠性的物联网终端节点,采用 STM32 作为主控制器,ESP01S 模块实现网络通信,结合 FreeRTOS 实时操作系统实现多任务管理,支持远程控制、环境监测、状态反馈及固件在线升级等核心功能。
-
通过 ONENET 平台下发指令,实现 LED 开关控制与舵机角度调节(0°/45°/90°/135°/180°)
-
设备状态(LED 开关状态、舵机角度)实时上报至云端平台
-
支持属性设置响应,确保控制指令执行结果反馈
-
集成 DHT11 温湿度传感器,每 10 秒采集一次数据并上传云端
-
本地 OLED 屏实时显示温湿度数据(0.5 秒刷新一次)
-
屏幕同步显示设备版本信息(如 V1.0)
-
内置 Bootloader 程序,支持从 ONENET 平台下载最新固件并自动更新
-
升级流程:版本检测→固件下载→校验写入→重启生效
-
升级包暂存于 W25Q64 存储芯片,支持大文件分片传输
-
基于 FreeRTOS 实现多任务调度,各模块独立运行
-
集成独立看门狗(IWDG)防止系统死机
-
空闲任务定期检查网络连接,60 秒一次自动重连机制
-
任务栈溢出检测与保护
| 模块 | 型号 / 规格 | 功能 |
|---|---|---|
| 主控制器 | STM32F10x(如 STM32F103C8T6) | 核心控制与任务调度 |
| 网络模块 | ESP01S(ESP8266) | WiFi 连接与 MQTT 通信 |
| 传感器 | DHT11 | 温湿度数据采集 |
| 执行器 | LED 指示灯、舵机(SG90) | 响应控制指令 |
| 存储 | W25Q64 | 存储 OTA 升级包与配置信息 |
| 显示 | OLED 12864(I2C/SPI) | 本地数据显示 |
基于 FreeRTOS 的多任务设计,核心任务包括:
-
ONENET_Control:处理平台指令接收与解析 -
LED_Task/Servo_Task:响应队列消息,控制外设并上报状态 -
DHT11_Timer:定时采集温湿度数据并上传 -
Display:本地 OLED 显示与看门狗喂狗 -
Attribute_Res:处理平台属性设置的响应反馈
通信协议:通过 ESP8266 与 ONENET 平台基于 MQTT 协议通信,遵循物模型规范。
-
上电优先运行,检查升级标志位
-
存在升级指令时:启动 OTA 流程→下载固件→写入 STM32 FLASH
-
无升级指令时:直接跳转至主程序(地址 0x08005000)
- 修改
esp8266.h中的配置参数:
\#define WIFI\_NAME "你的WiFi名称"
\#define WIFI\_WORD "你的WiFi密码"
\#define ID "ONENET产品ID"
\#define mqtt\_token "ONENET设备令牌"
- 根据硬件接线修改外设引脚定义(LED、舵机、OLED 等)
-
先烧录复原程序并复位启动构建初始环境
-
烧录 Bootloader 程序至 STM32(起始地址 0x08000000)
-
再烧录主程序(起始地址 0x08005000)
-
等两个程序都烧录进去后按复位键重启
-
在 ONENET 平台上传新版本固件
-
重启设备,设备自动检测是否有新版本,若检测到新版本会在OLED 显示 "Upgrade after restart"
-
若要更新版本,则在观察到升级信息后复位程序,程序自动更新