基于RT-Thread的简易物联网温控箱 | 技术集锦
目录
项目概述
RT-Thread 使用情况概述
硬件架构
软件架构说明
演示效果
优化方向
源码获取方式
1 项目概述
该项目构建了一个桌面级的高精度、易扩展温控系统。系统能够精准控制箱内温度,并通过Wi-Fi接入网络,配合完善的Web可视化监控与调参仪表盘,形成了完整的物联网控制闭环。在开发过程中,充分运用了RT-Thread操作系统提供的多线程管理、设备驱动接口及网络组件功能,实现了软硬件协同的完整解决方案。
硬件平台:NXP FRDM-MCXA156
RT-Thread 版本:5.2.1
核心特性包括:
- 整机最大功耗 24W
- 温度控制范围为常温至70°C(通过接入制冷片或更高耐温的PTC可进一步扩展)
- 实现较稳定恒温控制(最大波动为3°C,稳态波动不超过1°C)
- 多传感器数据融合机制
- OLED 本地状态显示
- 远程Web监控与参数在线调整
项目亮点:采用级联PID+前馈复合控制策略、三态控制状态机设计、TCP-WebSocket桥接的可视化方案。
2 RT-Thread 使用情况概述
RT-Thread 在本系统中作为核心操作系统,支撑了各项功能的实现。其稳定内核、丰富的中间件生态和简洁的API显著提高了开发效率。
内核与调度机制:系统创建多个线程分别处理主控逻辑、PID计算、OLED刷新、网络服务及LED指示灯控制。借助RT-Thread的抢占式调度,确保温度控制等关键任务具备较高的响应速度。
设备驱动接口:利用统一的设备模型,轻松操作多个外设:
- Pin 设备:用于控制LED指示灯及加热/制冷切换的继电器。
- ADC 设备:采集NTC热敏电阻电压,结合Steinhart-Hart模型计算PTC温度。
- PWM 设备:控制PTC加热片与风扇的输出。
- I2C 设备:驱动OLED显示(基于u8g2库)及板载P3T1755环境温度传感器。
Sensor 框架:用于获取DHT11与P3T1755的传感器数据。
网络协议栈:采用内置的lwIP协议栈与SAL抽象层,实现稳定可靠的TCP服务,为远程控制提供通信支持。
WLAN 框架:通过rt_wlan_connect接口实现Wi-Fi连接。
FinSH/MSH 命令行:定义get_status与tune命令,允许通过串口动态调整运行参数。
软件包生态:
- u8g2:图形库用于OLED显示。
- dhtxx:DHT11温湿度传感器包。
- p3t1755:P3T1755 I2C温感器包。
3 硬件架构
整体硬件系统由控制器、传感器、执行器及人机交互模块组成。
核心控制器:NXP FRDM-MCXA156开发板。
传感器模块:
- 箱内温湿度监测:DHT11传感器,集成于RT-Thread Sensor框架。
- PTC 表面温度监测:NTC热敏电阻,通过ADC采样并计算,用于内环控制与过温保护。
- 环境温度监测:开发板集成的P3T1755 I2C传感器。
执行器模块:
- 加热模块:采用LR7843 MOSFET驱动PTC加热片,通过PWM调节。
- 冷却模块:12V直流风扇,同样由PWM控制。
- 模式切换:通过继电器切换PWM信号至加热或散热设备,实现自动切换。
人机交互模块:
- 本地:SSD1306 OLED实时显示系统状态与关键温度数据。
- 远程:通过Wi-Fi连接,支持PC或手机浏览器访问远程仪表盘。
硬件连接示意图
4 软件架构说明
软件核心包含三态状态机与PID控制算法,分别部署于main.c与pid_entry线程。
软件模块详解
主控与状态机(main.c)
main函数初始化传感器、PWM、ADC与Wi-Fi模块,并创建各应用线程。
主循环构成系统状态机,周期性读取箱内温度,根据目标设定与迟滞范围,自动在HEATING(加热)、WARMING(保温)、COOLING(散热)状态间切换。
状态切换过程中通过STATE_PIN控制继电器,切换PWM信号通路,并重置PID积分项,避免系统突变。
核心控制逻辑(pid_entry线程)
该线程以高频率运行,负责温度调节核心算法。
级联PID + 前馈控制(加热/保温模式)
- 外环PID(pid_box):根据箱内与目标温度的差值,动态调整PTC目标温度(ptc_target_temp)。
- 内环PID(pid_ptc):根据PTC实际温度与目标值的偏差,调节PWM输出。
- 前馈控制:通过ff_table建立温度与PWM的关系,使PID输出叠加于基础PWM之上,加快响应速度并避免积分饱和。
PI控制(散热模式)
- 切换至COOLING状态后,采用pi_cool控制器,根据温度偏差调节风扇速度。
- 系统实时监控PTC温度,一旦超过安全阈值,立即将PWM设为零,以确保系统安全。
远程控制服务(remote.c)
remote_server_thread_entry线程创建TCP服务器,监听5000端口。
支持两种命令:
- get_status:将温度、湿度、PID参数、运行状态等信息封装成JSON返回。
- tune:接收参数修改指令并调用main.c中的tune函数进行在线调整。
OLED显示(screen.c)
screen_on线程负责驱动OLED。
UI界面展示工作模式(HEATING/COOLING/WARMING)、四个温度值(当前、目标、环境、PTC)及温差指示条,使状态一目了然。
5 演示效果
本地OLED显示
实时呈现系统关键参数。
远程Web仪表盘
通过浏览器访问远程监控界面,包括仪表、状态提示及参数调节区域。
温度历史曲线图可用于分析系统响应速度、超调量及稳态误差。
MSH 命令行调试
通过串口连接,可执行get_status命令查看系统状态,或使用tune命令调整参数。
6 优化方向
硬件优化
- 将DHT11替换为更高精度传感器(如DHT22),以提升整体控制精度。
功能拓展
- 允许用户在Web界面上定义随时间变化的温度曲线,如先保温30分钟再升温至70°C并保持1小时,从而支持更复杂的应用场景。
参数优化
- 当前PID参数仍有优化空间。由于温度变化缓慢,实验法耗时较长,目前正尝试通过仿真建模寻找最佳控制参数。
7 源码获取方式
本项目已开源,欢迎开发者参与与复现。
GitHub: https://github.com/Cylopsis/Little-TempControled-Box