本帖最后由 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使用情况概述 系统 | | | | stm32l475-atk-pandora(MDK-AC5) | stm32f407-st-discovery(MDK-AC6.14) | | | | | | | | | | | | | | | |
|
|
|
| | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | | | | |
硬件框架
软件框架说明系统启动后,根据各项功能分别建立线程,由网卡状态检测线程判断联网成功后,其他线程再执行各自任务,联网成功后先使用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
|
不错不错,那个查询网卡状态和网络状态的函数不错,弥补了之前做项目的不足之处