Skip to content

Jupitr3141/STM32-Freertos-OTA

 
 

Repository files navigation

STM32 + ESP01S 物联网控制系统(带 OTA 升级功能)

一个基于 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)

🔄 OTA 固件升级

  • 内置 Bootloader 程序,支持从 ONENET 平台下载最新固件并自动更新

  • 升级流程:版本检测→固件下载→校验写入→重启生效

  • 升级包暂存于 W25Q64 存储芯片,支持大文件分片传输

🛡️ 系统稳定性保障

  • 基于 FreeRTOS 实现多任务调度,各模块独立运行

  • 集成独立看门狗(IWDG)防止系统死机

  • 空闲任务定期检查网络连接,60 秒一次自动重连机制

  • 任务栈溢出检测与保护

硬件组成

模块 型号 / 规格 功能
主控制器 STM32F10x(如 STM32F103C8T6) 核心控制与任务调度
网络模块 ESP01S(ESP8266) WiFi 连接与 MQTT 通信
传感器 DHT11 温湿度数据采集
执行器 LED 指示灯、舵机(SG90) 响应控制指令
存储 W25Q64 存储 OTA 升级包与配置信息
显示 OLED 12864(I2C/SPI) 本地数据显示

软件架构

1. 主程序(Application)

基于 FreeRTOS 的多任务设计,核心任务包括:

  • ONENET_Control:处理平台指令接收与解析

  • LED_Task/Servo_Task:响应队列消息,控制外设并上报状态

  • DHT11_Timer:定时采集温湿度数据并上传

  • Display:本地 OLED 显示与看门狗喂狗

  • Attribute_Res:处理平台属性设置的响应反馈

通信协议:通过 ESP8266 与 ONENET 平台基于 MQTT 协议通信,遵循物模型规范。

2. 引导程序(Bootloader)

  • 上电优先运行,检查升级标志位

  • 存在升级指令时:启动 OTA 流程→下载固件→写入 STM32 FLASH

  • 无升级指令时:直接跳转至主程序(地址 0x08005000)

快速上手

环境配置

  1. 修改esp8266.h中的配置参数:
\#define WIFI\_NAME   "你的WiFi名称"

\#define WIFI\_WORD   "你的WiFi密码"

\#define ID          "ONENET产品ID"

\#define mqtt\_token  "ONENET设备令牌"
  1. 根据硬件接线修改外设引脚定义(LED、舵机、OLED 等)

编译与烧录

  1. 先烧录复原程序并复位启动构建初始环境

  2. 烧录 Bootloader 程序至 STM32(起始地址 0x08000000)

  3. 再烧录主程序(起始地址 0x08005000)

  4. 等两个程序都烧录进去后按复位键重启

OTA 升级触发

  1. 在 ONENET 平台上传新版本固件

  2. 重启设备,设备自动检测是否有新版本,若检测到新版本会在OLED 显示 "Upgrade after restart"

  3. 若要更新版本,则在观察到升级信息后复位程序,程序自动更新

About

基于FreeRTOS的STM32物联网设备控制与检测上报系统,支持OneNET平台接入与远程固件升级(OTA)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C 91.5%
  • HTML 3.8%
  • Makefile 2.5%
  • Assembly 2.2%