基于RT-Thread的简易物联网温控箱设计与实现
本文围绕一个桌面级高精度温控系统展开,展示了如何结合RT-Thread实时操作系统与硬件平台,构建一个具备网络化控制能力的物联网闭环系统。项目不仅具备良好的扩展性,还通过Web可视化界面实现了远程监控与参数调整。
1. 项目概述
该系统是一个桌面级温控装置,支持常温至70°C的温度调节,并可通过Wi-Fi接入网络,实现远程管理与监控。系统设计充分融合了RT-Thread多线程、驱动模型与网络组件的能力,构建了一个完整的软硬件一体化解决方案。
硬件平台选用NXP FRDM-MCXA156开发板,RT-Thread版本为5.2.1。
- 最大功耗:24W
- 温控范围:常温~70°C(支持PTC或制冷片扩展)
- 控制精度:稳态波动1°C,最大波动3°C
- 多传感器数据融合
- OLED本地显示
- Web远程监控与参数调整
项目亮点包括复合型级联PID+前馈控制算法、三态控制状态机以及基于TCP-WebSocket桥接的Web可视化监控界面。
2. RT-Thread应用概览
RT-Thread在本项目中作为核心操作系统,为系统提供了稳定内核与丰富的功能组件,显著提升了开发效率。
系统中创建了多个线程来处理不同任务,包括主控线程、PID控制线程、OLED刷新线程、网络服务线程以及LED指示线程。通过抢占式调度机制,确保了关键控制任务的实时响应。
在设备驱动方面,系统通过统一的RT-Thread设备模型,高效操作了多个外围设备:
- Pin设备:用于控制LED指示灯与加热/散热模式切换的继电器。
- ADC设备:采集NTC热敏电阻电压,经Steinhart-Hart模型计算得到PTC温度。
- PWM设备:调节PTC加热片与散热风扇的功率输出。
- I2C设备:驱动OLED显示屏与读取板载P3T1755温度传感器数据。
通过内置lwIP协议栈与SAL接口,系统实现了稳定的TCP服务器,为远程控制提供了通信通道。Wi-Fi功能则通过rt_wlan_connect接口实现快速连接。
此外,系统支持FinSH/MSH命令行工具,用户可通过串口输入get_status与tune命令动态调整运行参数。
软件包方面,u8g2用于本地图形显示,dhtxx与p3t1755分别用于DHT11与板载I2C温度传感器数据读取。
3. 硬件架构
系统硬件结构由四个主要模块组成:核心控制器、传感器模块、执行器模块与人机交互模块。
核心控制器
采用NXP FRDM-MCXA156开发板作为主控单元。
传感器模块
- 箱内温湿度:由DHT11传感器采集,通过Sensor框架集成。
- PTC表面温度:通过NTC热敏电阻与ADC采集,结合算法计算。
- 环境温度:来自开发板内置的P3T1755 I2C传感器。
执行器模块
- 加热:通过PWM驱动LR7843 MOSFET控制PTC加热片。
- 散热:12V直流风扇同样由PWM控制。
- 模式切换:通过继电器控制PWM输出路径,实现加热与散热模式的自动切换。
人机交互模块
- 本地显示:SSD1306 OLED实时显示温度、状态等关键信息。
- 远程监控:通过Wi-Fi连接,用户可使用PC或手机浏览器访问Web Dashboard。
4. 软件框架详解
系统软件围绕main.c中的状态机与PID控制算法构建。
主控与状态机(main.c)
main函数负责初始化所有设备(包括传感器、PWM、ADC、Wi-Fi),并创建必要的应用线程。
系统主循环为三态状态机,周期性读取箱内温度,并根据设定目标与迟滞范围自动切换为加热、保温或散热状态。
状态切换时,通过继电器切换PWM路径至对应执行器(PTC或风扇),并自动重置PID积分项,防止控制突变。
PID控制算法(pid_entry线程)
控制算法运行在独立线程中,频率高于主循环。
级联PID + 前馈控制(加热/保温模式)
- 外环PID:根据箱内温度与目标差值,计算出PTC的目标温度。
- 内环PID:基于PTC实际温度与目标值的偏差,调节PWM输出。
- 前馈控制:通过映射表将目标温度转换为PWM基础值,提升系统响应速度。
PI控制(散热模式)
在散热模式下,系统切换为简单的PI控制,直接调节风扇转速。
系统同时具备过温保护功能,当PTC温度超过安全阈值时,立即停止PWM输出。
远程控制服务(remote.c)
在remote_server_thread_entry线程中,系统创建TCP服务器监听5000端口。
支持两种命令:
- get_status:返回系统中所有实时参数的JSON格式字符串。
- tune:动态调整目标温度、PID增益等关键参数。
OLED显示(screen.c)
screen_on线程负责驱动OLED屏,显示当前工作模式与四组温度数据,并提供直观的温度差指示条。
5. 演示效果
本地OLED显示
OLED屏实时展示系统状态、温度值与运行模式。
远程Web Dashboard
用户可通过浏览器访问可视化监控界面,查看温度曲线、系统状态与参数调整区。
MSH命令行调试
通过串口工具,可输入get_status命令查看运行状态,或使用tune命令实时调整参数。
6. 未来改进方向
硬件方面
计划将DHT11替换为更高精度的传感器,如DHT22,以提升温湿度测量准确性。
功能扩展
设想通过Web界面设置时间-温度曲线,使系统能够满足更复杂应用场景。
参数优化
当前参数尚不理想,未来将尝试通过建模仿真寻找最优控制参数。
7. 代码获取
本项目已在GitHub上开源,欢迎开发者参考与复用。
GitHub地址:https://github.com/Cylopsis/Little-TempControled-Box