概述:
多点传感器采集子系统是用基于 STM32 系类芯片STM32H750开发板ART-Pi开发,支持无线采集多种传感器数据,子系统收集数据后通过无线网络上传分站。访问该子系统时会展示一个网页显示本系统采集到的传感器数据。该系统适用与工业现场各种传感器数据收集转储,可以用在传感器较多的场景中。
开发环境
硬件:ART-Pi主板
扩展板: ESP8266 WIFI模块
RT-Thread版本:RT-Thread V 4.0.3
开发工具及版本:RT-Thread Studio 2.0.0
RT-Thread使用情况概述
内核部分:调度器,信号量,消息队列。
调度器:创建多个线程来实现不同的工作。
信号量:用来同步线程。
消息队列:用来实现线程之间传递的数据。
组件部分:SPI框架, Sensor框架,SAL 套接字抽象层
软件包部分:
Webnet:建立一个简单Web服务器,提供数据显示界面。
cJSON:C语言实现的极简的解析 JSON 格式的软件包。
TFTP:上传配置数据,网页文件等。
MicroPython:逻辑实现的主要部分。实现与ESP8266的连接以传输收集的传感器数据。还要实现对展示数据的网页的动态生成。
硬件框架
将接收到ESP8266的数据转储后传输到分站上位机。
软件框架
软件框架说明
本项目使用2个线程,其中一个负责基于ESP8266的采集板通过发送UDP数据包给ARIT-Pi获得传感器数据,另一个线程负责根据数据池的数据生成动态网页并上传数据。
第一部分:数据接收线程
此线程负责接收由基于ESP8266的采集板发送来的UDP数据。并储存在数据池内。
第二部分:网页生成线程
另一个线程负责从数据池内提取数据,并根据数据生成网页供展示传感器数据。然后将接收到ESP8266的数据转储后传输到分站上位机。
软件模块说明
server_run:接收UDP数据包线程,提取有用传感器数据,保存在数据池。
web_run:根据采集到的数据生成网页文件,并保存在/flash/webnet目录下。然后将数据上传至上位机。
main:负责led 闪烁,用来显示当前系统的运行状态。
演示效果
从传感器传来的数据是随时变化的。
使用的材料其实也很简单,就是一个ART-Pi主板和一个ESP8266模块。
视频观看:
比赛感悟
通过这次实践,我学习了RT-Thread 操作系统的裁剪和各种组件和软件包的搭配使用。在过程中学到了许多以前没有接触过的知识,也对RT-Thread RTOS也有了新的认识。对这种小操作系统能做到这样的程度感到非常吃惊。这让我以后使用该系统更有底气。
RT-Thread的软件包非常丰富,我在这个小操作系统上找到了需要的web服务器、TFTP服务器、socket组件,令人意外的是集成了MicroPython,而且在MicroPython中支持re和json,可以快速开发应用,不用每一次修改程序都重新烧写一遍芯片。但是我在试图使用动态模块时却不顺利,这让我对这种操作系统的配置复杂性有一点却步,感觉上手有一点难,其实还可以做的更好一些。
最后感谢主办方提供了这么好的一个平台,让我学到了许多RT-Thread操作系统的特性。通过这次的实践我对RT-Thread的许多特性有了了解,并且感受到此产品在工程开发上提供的许多便利性,我会在以后的作品中更多的使用RT-Thread产品,也会向朋友推荐这款产品。