概述随着物联网技术的广泛推广,产生了农业物联网。做智慧农业物联网项目,首先要解决的是农业数据的采集问题;比如空气的温湿度、土壤的温湿度、二氧化碳浓度、水培溶液的EC值、PH值等数据;结合此次RTT大赛,笔者决定基于ART-Pi板子和RT-Thread实时操作系统,开发一个农业数据采集器。此次数据采集器笔者以ART-PI开发板为核心板,外接了一款温湿度传感器模块、GPS模块、OLED模块、串口通讯模块进行了基础Demo版本代码编写与调试,实现了采集温湿度数据在OLED屏上显示、GPS位置信号信息采集后经串口输出等功能。后续还有采集的数据经板载的WiFi模块上传至TCP Server 、阿里IOT平台的规划。
开发环境
硬件:ART-PI(STM32H750XB)、GPS模块、DHT11、0.96寸OLED屏、USB转串口模块
RT-Thread版本:RT-Thread V 4.0.3
开发工具及版本:RT-Thread Studio版本: 2.0.0
RT-Thread使用情况概述(1)内核部分:调度器,信号量等。
调度器:创建多个线程来实现不同的工作。
信号量:用来线程间的同步。
(2)组件部分:UART框架,SENSOR框架。
UART框架:使用了1个串口,用于采集GPS模块数据、同时用于串口输出数据。
II2C框架:使用了1路II2C接口用于连接OLED屏,进行采集温湿度数据的显示。
SENSOR框架:使用DHT11采集空气温湿度
(3)软件包:u8g2 netutils dht11gps_rmc
硬件框架软件框架说明软件模块说明主函数中执行了
wlan_autoconnect_init();
serial_init();
oled_init();
DHT11_init();
创建了3个线程,其中
dht11_thread_entry()用于读取温湿度传感器数据;
serial_thread_entry()用于读取串口1 RX引脚接收到的GPS模块数据;
演示效果比赛感悟首先笔者要表扬一下自己,能在工作之余、在下班后回家还要哄娃入睡之余,利用了一切可以利用的时间,进行STM32单片机的理论、RT-Thread Studio平台、II2C通讯、串口通讯理论知识的学习,然后小白一样的摸索着玩ART-Pi;笔者之前是Java程序员出身,在Java代码层面是打通过跟阿里IOT平台进行数据采集对接的,可是用STM32单片机来做,尤其是要熟悉STM32单片机的开发流程与技巧、RT-Thread 开发环境与编程规范等,作者实在是显得有点稚嫩,毕竟想要很快入行,是需要时间积累的。笔者还是5年前玩过AVR单片机,之后的工作主要是PLC、C#、JAVA相关,最近的工作是基于Go\Linux系统进行应用程序开发,讲真笔者对STM32单片机的知识了解还是相当欠缺的,Ubuntu系统用过半年左右,对于实时操作系统比如RTOS等,不曾了解;可是这些并不能阻止我对国产操作系统的关心与关注。当某次在论坛看到RT-Thread Smart发布会宣传时,笔者一下子就被深深吸引,在参会中看到了搭载RT-Thread Smart内核的板子启动很快,于是乎当时就萌发了了解一下RT-Thread的想法。后面也就有了参加此次RT-Thread全连接创意创客大赛的故事。
笔者的初心并不是参加比赛获得名次,而是通过参与,让自己去熟悉RT-Thread,熟悉RT-Thread跟STM32单片机的联姻;想着能不能基于RT-Thread操作系统、APT-Pi板子做些数据采集的实验测试;幸不辜负青春,通过此次尝试,笔者调通了APT-Pi 的板载串口1的收发控制、II2C通讯驱动OLED屏、采集单总线的温湿度传感器DHT11、板载WiFi模块进行参数配置联网、TCP通讯测试、GPS信号数据截取处理等;在整个边学习边码字的过程中也遇到了一些困难,比如调试II2C接口的气压传感器时,折腾了几天就是不出结果,还不知道问题出在哪,还有调试SPI接口液晶屏时,也是遇到困难,最后曲线救国,换成了II2C接口的OLED屏,还好调通了。主要是笔者时间上受限了,工作上几个项目要跟进,期间去出差了外省几次;下班后回家宝宝又会粘着我求抱抱。本来计划的是多接一些传感器采集数据,比如采集485接口传感器数据、通过调用我自己封装的dll文件去跟欧姆龙PLC进行通讯的测试、上传数据至阿里IOT平台,截止当前未完成,但后面我会继续把这个项目做下去,争取把这个数据采集器做得完善。最后感谢大赛举办方给我们提供了一个如此好的学习和锻炼的机会,我会尝试将RTT引入到自己研发的产品中去。
1