基于Rt-Thread 和STM32F103的温湿度采集系统设计

基于Rt-Thread 和STM32F103的温湿度采集系统设计

写在前面:
入门RT-Thread的课设作业,自娱自乐,hhh

RT-Thread内核移植

详细的工程模板建立步骤参见野火的说明文档:
https://doc.embedfire.com/rtos/rtthread/zh/latest/application/porting_to_stm32.html
这里只是用了裁剪后的RT-Thread内核,我们可以rtconfig.h文件里面配置相关的参数,比如我们的工程里面用到了动态的内存分配,消息队列等需要在里面定义相关的宏,打开相应的功能:
在这里插入图片描述

工程程序实现

系统功能组成

系统涉及到的硬件由以下几部分组成:

1.交互输入部分:按键
2. 输出部分:TFTLCD屏幕显示,SD卡存储,led灯报警
3. 传感器采集:DHT11温湿度采集
4. 通讯部分:串口,wifi模块
5. 计时部分:RTC时钟计时
系统框图:在这里插入图片描述

系统软件设计

软件程序结构:
在这里插入图片描述

其中在定时器超函数中周期性采集温湿度信息,并发送消息队列到处理缓存传感器信息的线程,和超温处理线程,同时发布采集到一次传感器的事件。超温处理线程接收消息判断是否超过温度,wifi模块通过串口2将温湿度信息发送给wifi模块,由wifi模块实时上传到服务器。同时串口温度上传任务同时接收定时器发送的事件和PC机通过串口1发送的获取温度标志所触发的事件。当采集到传感器信息且上位机要求获取温湿度信息的事情同时发生时,通过串口1向PC发送温湿度信息。由于SD卡存储缓慢,所以由温湿度信息缓存线程在内存池中申请内存,并将获取到的温湿度信息缓存到内存中,同时更新LCD曲线绘制的历史温湿度信息缓存。LCD处理线程处理IO口中断发送过来的标志信息,并据此显示相应的菜单,温度湿度信息,显示所设定采样频率与阈值的情况等。SD卡存储任务作为后台任务,从缓存存储温湿度信息的内存中读取温湿度信息,并通过FATFS文件系统将相应的温湿度信息存入SD卡,同时根据每片内存的头部时间信息以及定时器采样频率推算本片内存中其他数据的时间信息,并将采样时间一起保存到SD卡中。在存储完一片内存片后,释放该内存到内存池之中。流程图如下所示:
在这里插入图片描述

部分工程效果展示

主菜单显示:
主菜单分为5个功能:1.温度阈值设定2.湿度阈值设定3.采样频率设定
4.温湿度曲线显示 5.温湿度实时数值显示
在这里插入图片描述
温湿度,采样频率设定:
在这里插入图片描述
温湿度曲线:
其中实时的温湿度用黑线表示,红线是当前设定的温湿度阈值
在这里插入图片描述
在原子云端查看wifi发送的信息:
在这里插入图片描述
SD卡csv温湿度信息文件存储效果:
在这里插入图片描述

工程源代码获取

源代码可以访问下面的链接在github上获取,本人还是小白,工程还不完善,欢迎提交修改!!!
https://github.com/sherecho/Rt-Thread-STM32F103ZET6-emperature-and-humidity-acquisition-system.

版权声明:本文为CSDN博主「sherecho」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45934869/article/details/122470958

基于Rt-Thread 和STM32F103的温湿度采集系统设计

写在前面:
入门RT-Thread的课设作业,自娱自乐,hhh

RT-Thread内核移植

详细的工程模板建立步骤参见野火的说明文档:
https://doc.embedfire.com/rtos/rtthread/zh/latest/application/porting_to_stm32.html
这里只是用了裁剪后的RT-Thread内核,我们可以rtconfig.h文件里面配置相关的参数,比如我们的工程里面用到了动态的内存分配,消息队列等需要在里面定义相关的宏,打开相应的功能:
在这里插入图片描述

工程程序实现

系统功能组成

系统涉及到的硬件由以下几部分组成:

1.交互输入部分:按键
2. 输出部分:TFTLCD屏幕显示,SD卡存储,led灯报警
3. 传感器采集:DHT11温湿度采集
4. 通讯部分:串口,wifi模块
5. 计时部分:RTC时钟计时
系统框图:在这里插入图片描述

系统软件设计

软件程序结构:
在这里插入图片描述

其中在定时器超函数中周期性采集温湿度信息,并发送消息队列到处理缓存传感器信息的线程,和超温处理线程,同时发布采集到一次传感器的事件。超温处理线程接收消息判断是否超过温度,wifi模块通过串口2将温湿度信息发送给wifi模块,由wifi模块实时上传到服务器。同时串口温度上传任务同时接收定时器发送的事件和PC机通过串口1发送的获取温度标志所触发的事件。当采集到传感器信息且上位机要求获取温湿度信息的事情同时发生时,通过串口1向PC发送温湿度信息。由于SD卡存储缓慢,所以由温湿度信息缓存线程在内存池中申请内存,并将获取到的温湿度信息缓存到内存中,同时更新LCD曲线绘制的历史温湿度信息缓存。LCD处理线程处理IO口中断发送过来的标志信息,并据此显示相应的菜单,温度湿度信息,显示所设定采样频率与阈值的情况等。SD卡存储任务作为后台任务,从缓存存储温湿度信息的内存中读取温湿度信息,并通过FATFS文件系统将相应的温湿度信息存入SD卡,同时根据每片内存的头部时间信息以及定时器采样频率推算本片内存中其他数据的时间信息,并将采样时间一起保存到SD卡中。在存储完一片内存片后,释放该内存到内存池之中。流程图如下所示:
在这里插入图片描述

部分工程效果展示

主菜单显示:
主菜单分为5个功能:1.温度阈值设定2.湿度阈值设定3.采样频率设定
4.温湿度曲线显示 5.温湿度实时数值显示
在这里插入图片描述
温湿度,采样频率设定:
在这里插入图片描述
温湿度曲线:
其中实时的温湿度用黑线表示,红线是当前设定的温湿度阈值
在这里插入图片描述
在原子云端查看wifi发送的信息:
在这里插入图片描述
SD卡csv温湿度信息文件存储效果:
在这里插入图片描述

工程源代码获取

源代码可以访问下面的链接在github上获取,本人还是小白,工程还不完善,欢迎提交修改!!!
https://github.com/sherecho/Rt-Thread-STM32F103ZET6-emperature-and-humidity-acquisition-system.

版权声明:本文为CSDN博主「sherecho」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45934869/article/details/122470958

生成海报
点赞 0

sherecho

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

基于Arduino的显示测量环境数据设计

题目: 基于Arduino的显示测量环境数据设计 目录 基于Arduino的显示测量环境数据设计... 3 第一章 课题任务... 4 1.1课题任务... 4 1.2任务分工... 4 1.3设计条件... 4 第