打印
[uCOS/RTOS]

RT-Thread-分布式壁挂炉温控系统

[复制链接]
8169|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 6552918 于 2020-7-7 09:17 编辑

RT-Thread应用创新设计大赛作品gxf.pdf (1.45 MB)
概述
壁挂炉是北方家庭自采暖方式的主要供热设备,采暖费是每年冬天都是家庭的重要支出,但传统的壁挂炉在使用时存在一些弊端,比如控制方式单一,温度设置不够灵活,无法做到最经济的使用,造成经济和资源的浪费
我所要做的是,使用分布式温度采集终端将温度数据采集完成后通过WIFI将数据传输至ucloud云平台,在云平台实现本地和云端统一控制,实现经济和灵活的使用。
硬件上使用正点原子的潘多拉开发板和ST官方的STM32F4-discovery开发板模拟温度采集终端,STM32F4-discovery开发板作为壁挂炉的控制端。
使用多种型号的开发板主要是体现rt-thread RTOS系统丰富的中间层组件和丰富的BSP,能够非常容易的实现不同型号芯片的移植。
RT-Thread使用情况概述
  
系统
  
版本
BSP
rt-thread-master(4.0.3)
  
stm32l475-atk-pandora(MDK-AC5)
stm32f407-st-discovery(MDK-AC6.14)
 编译环境
 MDK5
内核部分
信号量
使用信号量来实现线程同步
互斥量
使用互斥锁来实现资源的单一访问
事件集
对多线程同步工作
线程
多个线程实现多个任务的伪同时进行
定时器
实现延时动作处理,软件RTC模拟
内存管理
动态内存管理




内核组件
控制台
打印调试信息,和串口升级
文件系统
SD卡读写
设备驱动框架
底层硬件驱动对接
POSIX
系统统一接口,供应用调用
NET
网卡相关接口管理
Ymodem
升级


软件包
webclient
获取天气数据
cJSON
云平台通信的数据交互
netutils
网络获取时间
AT DEVICE
ESP8266的底层通信
ota_dowmloader
串口升级
EasyFlash
设备参数信息存储
FAL
OTA升级
sensor drivers
温度传感器驱动
FlexibleButton
UI的按键控制

硬件框架

软件框架说明
系统启动后,根据各项功能分别建立线程,由网卡状态检测线程判断联网成功后,其他线程再执行各自任务,联网成功后先使用NTP对RTC进行校准时间,RTC时间用于时钟显示和MQTT通信使用。
NTP对时线程负责按设定的自动对时间隔向NTP服务器获取时间,用于本地时间校对。
温度采集线程负责按一定间隔时间采集温度数据,将温度数据用于本机显示和上报云平台。
天气状态获取线程按程序设定间隔向服务器获取天气信息,用于本机显示。
Ucloud MQTT线程负责将温度数据上报和接收云平台下发的控制命令。
2.4G无线通信线程负责将本机设置或云平台下发的控制命令转发至控制端。
LCD显示线程负责将时间信息,天气状态,设定参数,2.4无线连接状态在LCD上显示。

温度采集终端两款芯片均支持OTA升级功能
软件模块说明
main.c文件内创建3个线程,分别进**状态检测,LED心跳指示,温度采集,创建1s周期定时器用于产生秒周期事件
--------------------------------------------------------------------------------------------------------------------------------------------------
网卡监测线程采用循环间隔查询方式获取网卡状态,用于其他线程同步。
温度采集线程采用循环间隔查询方式读取温度传感器数据,由于涉及到共享内存的访问,所以在数据保存时采用的互斥量进行临界区保护。
1秒周期定时器产生秒事件,用于其他线程的事件触发(时间走时显示)
----------------------------------------------------------------------------------------
lcd_sample.c接收秒事件,读取RTC时间用于时间显示,并显示天气信息,网络连接状态,设定温度等
demo_rtt_iotboard.c内运行按键检测线程,用于参数输入和页面控制
ymodem_ota.c实现串口升级和配合uiot软件包实现云端OTA升级
mqtt_semple.c创建一个线程,在判断到联网成功后建立与云平台的MQTT连接,周期性的将温度数据等数据发送到云平台,同时接收云平台下发的命令
Demo.c创建一个2.4G通信线程,将主机命令发送至从机,同时接收从机返回的数据
Httpclint_sample.c创建一个线程,用于在整点时获取天气数据,用于本地显示。
演示效果
图片

视频地址
https://www.bilibili.com/video/BV1HV41167xT


代码地址
使用压缩包的工程
https://gitee.com/guoxiangfeng/rtthreadkaiyuan





使用特权

评论回复
评论
mo_chen 2020-12-10 15:15 回复TA
不错不错,那个查询网卡状态和网络状态的函数不错,弥补了之前做项目的不足之处 

相关帖子

沙发
pangkitty| | 2020-7-7 09:15 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

100

主题

1183

帖子

5

粉丝