基于RT-Thread的简易物联网温控箱 | 技术分享
本文介绍了一个基于RT-Thread操作系统的桌面级物联网温控系统。该系统具备较高的温度控制精度和扩展能力,集成了Wi-Fi联网功能,并通过Web可视化界面实现了远程监控与参数调整。
1 项目概述
本项目旨在打造一个高精度、可扩展的温控系统,适用于桌面应用场景。系统能够实现对箱内温度的精确调节,支持Web远程控制与可视化监控,构建了完整的物联网闭环。
项目采用了NXP FRDM-MCXA156作为硬件平台,运行RT-Thread 5.2.1系统。
主要功能包括:
- 整机最大功耗不超过24W
- 支持常温至70°C的温控范围,可通过PTC或制冷片扩展温度区间
- 具有高精度恒温控制,最大温度波动控制在3°C内,稳态波动小于1°C
- 支持多传感器数据融合
- 本地OLED显示当前状态
- 通过Wi-Fi实现Web远程监控和在线调参
项目亮点包括:级联PID与前馈控制算法、三态状态机设计、以及基于TCP-WebSocket桥接的Web可视化架构。
2 RT-Thread使用情况概述
作为本系统的软件核心,RT-Thread操作系统为功能实现提供了稳定可靠的平台。其轻量级内核、丰富组件和模块化设计,使得开发过程更加高效。
在内核调度方面,系统创建了多个线程,分别用于主控、PID控制、OLED刷新、网络服务和LED状态指示。利用RT-Thread的抢占式调度机制,确保了温度控制等关键任务的实时响应。
设备驱动部分借助RT-Thread统一设备模型,实现了对多种外设的便捷控制:
- Pin设备:控制LED和继电器,实现加热/散热模式切换
- ADC设备:采集NTC热敏电阻电压,用于计算PTC温度
- PWM设备:调节加热和散热设备的功率输出
- I2C设备:驱动OLED显示屏及读取环境温度传感器
- Sensor框架:接入DHT11和P3T1755传感器,实现多点温度监测
网络功能方面,系统使用了lwIP协议栈和SAL接口,构建了TCP服务器,支持远程访问。Wi-Fi连接通过rt_wlan_connect接口实现,具备良好的连接稳定性。
此外,FinSH命令行工具支持在串口上运行自定义命令,如get_status和tune,便于实时调试与参数调整。
软件包生态包括u8g2图形库、dhtxx温湿度驱动和p3t1755温度驱动等。
3 硬件框架
系统硬件分为四个主要部分:主控、传感器、执行器和人机交互。
- 主控制器:采用NXP FRDM-MCXA156开发板
- 传感器模块:
- DHT11:测量箱内温湿度
- NTC热敏电阻:通过ADC采样,用于PTC温度计算
- P3T1755:板载I2C温度传感器,测量环境温度
- 执行器模块:
- 加热:通过PWM控制LR7843 MOSFET驱动PTC加热片
- 散热:12V直流风扇,同样由PWM调节
- 模式切换:继电器切换PWM输出方向,实现加热与散热模式切换
- 人机交互模块:
- 本地OLED显示屏:展示系统状态和温度信息
- 远程Web Dashboard:通过浏览器实现系统监控与参数调整
硬件连线示意图
4 软件框架说明
软件核心包含基于状态机的设计和级联PID控制算法,主要由main.c和pid_entry线程实现。
主控与状态机(main.c)
主函数负责初始化外设并创建多个线程。系统主循环作为状态机,根据当前温度与目标温度比较,实现HEATING(加热)、WARMING(保温)和COOLING(散热)三种状态切换。
状态切换时,继电器控制PWM输出方向,并通过RESET PID积分项避免状态跳变引起的问题。
核心控制算法(pid_entry线程)
此线程以更高频率运行,负责核心温度控制逻辑,包含两种模式:
- 级联PID + 前馈控制(加热/保温):
- 外环PID(pid_box)计算PTC目标温度
- 内环PID(pid_ptc)根据PTC温度调整PWM输出
- 前馈机制通过映射表提高系统收敛速度并减少积分饱和
- PI控制(散热):
- 根据温差直接调节风扇转速
系统同时具备过温保护功能,当PTC温度超过设定阈值时自动切断输出。
远程控制服务(remote.c)
在remote_server_thread_entry线程中构建了一个TCP服务器,监听5000端口。
- get_status:返回当前系统状态的JSON格式数据
- tune:接收参数并传递到main.c中,实现运行时参数调整
OLED显示(screen.c)
screen_on线程控制OLED显示,界面包含工作模式、温度数据和温差条。
5 演示效果
本地OLED显示
OLED实时显示系统关键数据。
远程Web Dashboard
通过浏览器可访问远程监控界面,界面包含仪表盘、状态指示与参数设置。
温度历史曲线图展示了系统的响应速度、超调量和稳态误差。
MSH 命令行调试
通过串口可访问get_status和tune命令,实现调试和参数调整。
6 改进方向
- 硬件优化:考虑将DHT11升级为DHT22以提高精度和响应速度
- 功能扩展:增加时间-温度曲线功能,以支持更复杂的控温流程
- 算法优化:尝试通过仿真方法优化PID参数,提升系统稳定性
7 代码地址
本项目已开源,欢迎开发者下载复现。
GitHub链接:https://github.com/Cylopsis/Little-TempControled-Box