概述:
冬天到了,又到了靠烧煤取暖的季节了,虽然我们大南方还不知道啥时候才能享受到北方小伙伴一样的集中供暖,但是冬天的霾却不分彼此的席卷了全国各地。本方案使用的是RT-Thread的嵌入式实时系统,通过PMS70003传感器采集空气中的PM2.5浓度数据,并通过WiFi传输到移动onenet平台上,可以远程查看PM2.5实时数据。
开发环境:
RT-Thread版本: 4.0.3
开发工具:使用RT-Thread Studio2.0.0
硬件平台:基于RT-Thread官方ART-Pi开发板+自制传感器拓展板
RT-Thread使用情况概述:
本项目基于RT-Thread内核版本: Ver 4.0.3开发,使用RT-Thread Studio V2.0.0开发,使用的软件包包括cjson、onenet、webclient、pahomqtt、fal、easyflash、u8g2;
打开的组件和服务层有:finsh命令、DFS、ulog日志、C++、lwIP、POSIX、libc、ymodem,以及串口、Pin、SPI、SFUD、SDIO。
硬件框架:
本项目使用的是官方的Art-Pi开发板+自己做的传感器拓展板制作的,拓展板上包含了一个SHT20的温湿度传感器,一个攀藤的PMS7003PM2.5传感器、一个炜盛的MQ-4B半导体可燃气体传感器、一个0.91”Oled单色显示屏,以及一个拨盘按键。其中PMS7003是通过串口把采集到的数据传输到ART-PI上,由板载WiFi连接到移动onenet云上实现数据上传。SHT20和OLED共用一组IIC数据总线,可燃气体传感器占用了两个ADC口(一组检测气体浓度,一组检测传感器失效),并且可以通过背面跳线选择ADC口。按键占用了额外的三个GPIO用于设定一些配置信息。
软件框架说明:
首先RT-Thread启动后,对各部分外设进行初始化,然后进入pms7003的读取线程,该线程负责采集PMS7003上传上来的PM2.5浓度数据,并在线程里对数据进行校验求解后,通过onenet线程,我们把采集到的数据通过WiFi定时推送到移动onenet云平台,推送频率为2S/次。通过后台的数据流信息页面,可以看到实时的浓度数据信息。
软件模块说明:
软件采用的RTT4.0.3为内核基础,使用了一个独立线程来读取PMS传感器的数据,一个onenet软件包来实现联网推送的服务,最后由板载的WiFi模块负责连接到网络并把数据推送上去。
演示效果:
附上视频效果:
比赛感悟:
在使用rt-thread实时系统以前,我一直都是简单的使用裸机开发,纯粹的单流水线模式,经常会因为各种时间任务分配问题搞得头大,每种硬件使用起来得先仔细了解数据手册,了解器件性质,功能,然后才敢上板子,撸代码。
这次其实也是我第一次接触嵌入式实时操作系统这么一个方式来开发单片机,讲真,里面走了不少的弯路,也有很多没遇到过的坑。不得不说,RT-Thread的文档支持工作做的还是非常到位的,每个细节、功能都做了详细的介绍,但是诚如此还是有一部分我没太想明白的地方,这里就多亏了官方的比赛群以及我的小伙伴们,遇到很多事情找他们帮忙都能很快的解决掉。
本次比赛我还是学到了很多的新鲜知识,而且RTT的使用的便捷性给我了很大的震撼,有许多代码例程写的都很经典,后面板子上的几个设备我还要继续调试下去,争取把这个项目继续走下去,把rtt学得更深入一些。希望以后也能自己独立开发一些项目。把自己平时那么多奇奇怪怪的小点子都实现出来。