0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于RT-Thread的简单物联网温控箱 | 技术集结

RT-Thread官方账号 2025-12-26 18:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目录

项目概述


RT-Thread使用情况概述


硬件框架


软件框架说明


演示效果


改进方向


代码地址

1 项目概述

本项目是一个简易的、较高精度的、易于扩展的桌面级温控系统。实现对箱内温度的精确控制,并通过Wi-Fi接入网络,配套了功能完善的Web可视化监控和调参Dashboard,实现了完整的物联网闭环。整个项目充分利用了RT-Thread多线程、设备驱动框架和网络组件的能力,实现了一个软硬件结合的完整解决方案。

硬件平台:NXP FRDM-MCXA156

RT-Thread版本:5.2.1

核心功能:

整机最大功耗24W

温控范围常温~70°C(接入制冷片/更高温的PTC可以拓展范围)

较高精度的恒温控制(最大波动范围3°C,稳态波动范围1°C)

传感器数据融合

OLED本地显示

Web远程监控与在线调参

项目亮点:级联PID+前馈复合控制算法、三态控制状态机、TCP-WebSocket桥接的Web可视化方案。

2RT-Thread使用情况概述

RT-Thread作为项目的核心操作系统,为功能的实现提供了坚实的基础。其稳定可靠的内核、丰富的组件和简洁的API,让整个开发过程事半功倍。

内核与调度器:项目创建了多个线程来处理不同任务,包括主控线程、PID控制线程、OLED刷新线程、网络服务线程和LED指示线程。利用RT-Thread的抢占式调度器,确保了温度控制等高优先级任务的实时性。

设备驱动框架:通过RT-Thread统一的设备模型,轻松地操作了多个硬件外设:

Pin设备:用于控制LED指示灯和加热/散热模式切换的继电器。

ADC设备:用于读取NTC热敏电阻的电压值,进而计算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:本地UI图形库。

dhtxx:DHT11温湿度传感器软件包。

p3t1755: 板载I2C温度传感器软件包。

3 硬件框架

系统硬件由核心控制、传感器、执行器和人机交互四部分组成

2e7f895a-e244-11f0-8ce9-92fbcf53809c.png

核心控制器:NXP FRDM-MCXA156开发板。

传感器模块:

箱内温湿度:DHT11传感器,通过RT-Thread Sensor框架读取。

PTC表面温度:NTC热敏电阻,通过ADC采样并使用Steinhart-Hart模型计算,用于内环控制和过温保护。

环境温度:开发板板载的P3T1755 I2C传感器。

执行器模块:

加热:LR7843 MOSFET驱动PTC陶瓷发热片,通过PWM信号调节功率。

散热:12V直流风扇,同样由PWM信号驱动。

模式切换:通过一个继电器切换PWM输出信号到MOSFET或风扇,实现加热/散热模式的自动切换。

人机交互模块:

本地:SSD1306 OLED显示屏,实时显示系统状态、当前温度、目标温度等关键信息。

远程:通过Wi-Fi连接,在PC或手机浏览器上访问可视化Dashboard。

硬件连线图

2e912b88-e244-11f0-8ce9-92fbcf53809c.png2ea78d4c-e244-11f0-8ce9-92fbcf53809c.png2ebe4ed8-e244-11f0-8ce9-92fbcf53809c.png

4 软件框架说明

软件的核心是一个基于main.c中的三态状态机和pid_entry线程中的级联PID控制算法。

2ed26e9a-e244-11f0-8ce9-92fbcf53809c.png

软件模块说明

主控与状态机 (main.c)

main函数负责初始化所有设备(传感器、PWM、ADC、Wi-Fi),并创建各个应用线程。

main函数内的while(1)循环是系统的主状态机。它周期性地读取箱内温度,并与目标温度和迟滞范围(hysteresis_band)比较,自动在HEATING(加热)、WARMING(保温)、COOLING(散热)三种状态间切换。

状态切换时,会通过STATE_PIN控制继电器,将PWM信号通路切换到对应的执行器(PTC或风扇),并重置PID积分项,防止状态突变。

核心控制算法 (pid_entry线程)

这是一个独立的线程,以更高的频率(CONTROL_PERIOD_MS)运行,负责核心的温度控制算法。

级联PID+前馈(加热/保温模式):

外环PID (pid_box): 根据箱内温度与目标温度的差值,计算出一个期望的PTC目标温度 (ptc_target_temp)。这使得PTC的加热速率能根据箱内离目标的远近动态调整。

内环PID (pid_ptc): 根据PTC实际温度与外环给出的ptc_target_temp的差值,计算出PWM的调节量。这可以快速响应PTC自身的温度波动,实现更稳定的热量输出。

前馈控制: 建立了一个ptc_target_temp到base_pwm的映射表 (ff_table)。PID的输出是叠加在这个PWM基础值之上的微调,这大大加快了系统收敛速度,减少了PID积分饱和的风险。

PI控制(散热模式):

切换到散热模式后,算法切换为简单的pid_cool PI控制器,根据箱内温度与目标温度的差值直接控制风扇的转速。

过温保护: 算法实时监测PTC温度,一旦超过设定的安全阈值(PTC_MAX_SAFE_TEMP),立即将PWM输出置零,确保系统安全。

远程控制服务 (remote.c)

在remote_server_thread_entry线程中,创建了一个TCP服务器,监听5000端口

服务器接收两种文本命令:

get_status: 将系统中所有关键的实时变量(各处温度、湿度、PID参数、控制状态、PWM占空比等)打包成一个JSON字符串返回。

tune ...: 将收到的参数直接传递给main.c中的tune()函数,实现了对目标温度、PID增益、前馈表等所有关键参数的运行时修改。

OLED显示 (screen.c)

screen_on线程负责驱动OLED屏幕。

UI界面清晰地展示了当前的工作模式(HEATING/COOLING/WARMING)、4个温度值(当前、目标、环境温度、PTC当前温度),以及一个直观的温差指示条。

5 演示效果

本地OLED显示

2ee7957c-e244-11f0-8ce9-92fbcf53809c.png

OLED实时显示系统关键数据

远程Web Dashboard


通过浏览器访问的实时监控仪表盘,包含仪表、状态指示和在线调参区

2f01893c-e244-11f0-8ce9-92fbcf53809c.png

温度历史曲线图,可以直观地分析系统的响应速度、超调和稳态误差(K线图可以得到的信息更多,而且看起来很有趣)

MSH 命令行调试

通过串口连接,可以直接使用get_status查看系统状态,或使用tune命令修改参数。

2f19c68c-e244-11f0-8ce9-92fbcf53809c.png

6 改进方向

硬件

把DHT11换成更好的(比如DHT22),DHT11的精度和响应速度都不太行,我手里暂时没有其它的温度传感器了,所以只能先用这个。

功能

可以允许用户通过Web界面预设一条随时间变化的温度曲线(例如:先60℃保温30分钟,再升到70℃保温1小时),使温控箱能用于更复杂的场景。

参数优化

目前的参数还不太好,还有很大的优化空间。由于温度的变化很慢,所以如果通过实验测定最优参数的话会非常消耗时间,目前正在尝试通过建模拟真的方式寻找最优参数,因为期中有点忙,所以还没做完。

2f29c014-e244-11f0-8ce9-92fbcf53809c.png

7 代码地址

本项目已开源,欢迎大家复刻。

GitHub:https://github.com/Cylopsis/Little-TempControled-Box

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2942

    文章

    47516

    浏览量

    410125
  • 温控箱设计
    +关注

    关注

    0

    文章

    8

    浏览量

    6332
  • RT-Thread
    +关注

    关注

    32

    文章

    1561

    浏览量

    44425
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RT-Thread开发,如何有效学习RT-Thread的五个步骤

    RT-Thread推出RT-Thread Inside战略开放RT-Thread开发平台授权合作,与硬件十万个为什么合作首次推出第一款RT-Inside的开发板——iBox
    的头像 发表于 09-25 09:55 3.6w次阅读
    <b class='flag-5'>RT-Thread</b>开发,如何有效学习<b class='flag-5'>RT-Thread</b>的五个步骤

    RT-Thread资深开发者朱天龙正式加盟RT-Thread

    新年伊始,中国自主联网操作系统厂商RT-Thread迎来一位联网行业的技术大咖!
    发表于 01-10 09:08 1w次阅读

    RT-Thread软件包定义和使用

    RT-Thread软件包是运行于RT-Thread联网操作系统平台上,面向不同应用领域的通用软件组件 。RT-Thread 同时提供了开放
    的头像 发表于 05-21 11:29 1.2w次阅读
    <b class='flag-5'>RT-Thread</b>软件包定义和使用

    国民技术携手RT-Thread共同推进MCU与RT-Thread操作系统广泛适配

    日前,国民技术股份有限公司与知名物联网操作系统厂商睿赛德科技(RT-Thread)签署会员合作协议,正式成为RT-Thread高级会员。国民技术
    的头像 发表于 12-16 09:56 2978次阅读

    RT-Thread全球技术大会:RT-Thread开源重塑软件发展新生态

    RT-Thread全球技术大会:RT-Thread开源重塑软件发展新生态,市场空间巨大,以开放的心态不断提升技术水平,大胆创新,迎接挑战!       审核编辑:彭静
    的头像 发表于 05-27 10:47 1707次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:<b class='flag-5'>RT-Thread</b>开源重塑软件发展新生态

    RT-Thread全球技术大会:萤石研发团队使用RT-Thread技术挑战

    RT-Thread全球技术大会:研发团队使用RT-Thread技术挑战         审核编辑:彭静
    的头像 发表于 05-27 11:36 1910次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:萤石研发团队使用<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>技术</b>挑战

    2022 RT-Thread全球技术大会:萤石EZIOT SDK对RT-Thread的支持

    2022 RT-Thread全球技术大会:RT-Thread在摄像头及IoT设备上的实践经验分享
    的头像 发表于 05-27 11:08 1785次阅读
    2022 <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:萤石EZIOT SDK对<b class='flag-5'>RT-Thread</b>的支持

    RT-Thread全球技术大会:RT-Thread Smart更好的兼容Linux生态

    RT-Thread全球技术大会:RT-Thread Smart更好的兼容Linux生态             审核编辑:彭静
    的头像 发表于 05-27 14:31 2398次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:<b class='flag-5'>RT-Thread</b> Smart更好的兼容Linux生态

    RT-Thread全球技术大会:Kconfig在RT-Thread中的工作机制

    RT-Thread全球技术大会:Kconfig在RT-Thread中的工作机制               审核编辑:彭静
    的头像 发表于 05-27 14:49 2183次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:Kconfig在<b class='flag-5'>RT-Thread</b>中的工作机制

    RT-Thread全球技术大会:在RT-Thread上编写测试用例

    RT-Thread全球技术大会:在RT-Thread上编写测试用例           审核编辑:彭静
    的头像 发表于 05-27 16:28 1998次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:在<b class='flag-5'>RT-Thread</b>上编写测试用例

    RT-Thread全球技术大会:RT-Thread测试用例集合案例

    RT-Thread全球技术大会:RT-Thread测试用例集合案例           审核编辑:彭静
    的头像 发表于 05-27 16:34 2692次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:<b class='flag-5'>RT-Thread</b>测试用例集合案例

    RT-Thread全球技术大会:RT-Thread对POSIX的实现情况介绍

    RT-Thread全球技术大会:RT-Thread对POSIX的实现情况介绍             审核编辑:彭静
    的头像 发表于 05-27 16:52 2443次阅读
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技术</b>大会:<b class='flag-5'>RT-Thread</b>对POSIX的实现情况介绍

    RT-Thread学习笔记 RT-Thread的架构概述

    的种种优越之处。RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过 16 个年头的沉淀,伴随着联网的兴起,它正演变成一个功能强大、组件丰富的
    的头像 发表于 07-09 11:27 5611次阅读
    <b class='flag-5'>RT-Thread</b>学习笔记 <b class='flag-5'>RT-Thread</b>的架构概述

    RT-Thread文档_RT-Thread 简介

    RT-Thread文档_RT-Thread 简介
    发表于 02-22 18:22 5次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> 简介

    RT-Thread文档_RT-Thread SMP 介绍与移植

    RT-Thread文档_RT-Thread SMP 介绍与移植
    发表于 02-22 18:31 9次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> SMP 介绍与移植