APP下载

基于STM32的扬尘监测系统设计

2021-01-27余继成肖春明

物联网技术 2020年12期
关键词:显示屏线程调试

黄 晖,余继成,肖春明,曾 璐

(江西理工大学 电气工程与自动化学院,江西 赣州 341000)

0 引 言

随着生活水平不断提高,人们愈发重视环境问题。目前,社会发展迅速,建筑工地日益增多,施工时对周围环境造成污染,如空气污染、噪声污染、水污染、光污染等,给人们的生活带来诸多不便[1]。

如果能及时监测环境参数的变化,便能尽早进行污染治理[2]。基于此,本文设计了一款基于STM32单片机的扬尘监测系统。

1 系统总体设计

本系统主要包括电源模块、主控制器模块、数据采集模块、显示模块和移动通信模块。为了使用方便,本系统直接连接220 V交流电,再通过电源模块将220 V交流电转化为5 V的直流电,以便系统其他部分使用。主控制器通过STM32单片机处理数据采集模块传送的数据,并在显示模块实时显示。

为方便远程查看扬尘系统采集的环境数据,本系统特开发了一款专用微信小程序。移动通信模块(NB-IoT模块)通过HTTP网络协议访问服务器,将单片机处理后的数据上传到服务器,之后微信小程序与服务器进行数据交互,获取并显示相关环境数据[3-4]。系统运行示意如图1所示。

2 系统硬件组成

2.1 STM32单片机

本系统选用STM32F103单片机作为控制器。它属于中低端32位ARM微控制器,其芯片为ST公司出品的Cortex-M3内核。芯片内置128 KB闪存和20 KB SRAM高速存储器,最大工作频率为72 MHz,拥有多个I/O端口及与两条APB总线联接的外设。每个型号的STM32芯片都包含3个通用的16位定时器、2个12位的ADC、1个PWM定时器。此外,它还包含多个标准且先进的通信接口[5],如I2C、SPI、USART、USB、CAN 等。

图1 系统运行示意图

在本系统中,STM32F103单片机通过USART3连接数据采集模块用以获取温度、湿度、PM2.5等数据;USART2连接移动通信模块与服务器通信;SPI连接显示模块,将需要显示的数据通过SPI发送到显示屏[6]。

2.2 数据采集模块

数据采集选用RS-BYH-M模块。作为主要的环境数据采集器,RS-BYH-M模块采用一体式设计,将传感器安装在百叶盒内,能便捷地测量周围环境的空气质量、噪声、温度、湿度、光照等参数[7-8]。由于STM32F103单片机无RS 485接口,故本系统通过将UART转换成RS 485解决这一问题。

2.3 显示模块

显示模块使用由12块小LED模块面板组成的LED显示屏,采用12接口通信,通过四分之一扫描方式工作。单片机使用SPI通信接口循环发送数据,使LED显示屏点亮相应的LED灯,从而显示需要的字符。

2.4 NB-IoT模块

NB-IoT模块是移动通信模块,使用的型号为M5310-A。该型号的NB-IoT模块支持最新Release14标准,相比之前版本通信速率更高。此外,M5310-A还新增了远程固件升级(FOTA)功能。

NB-IoT模块具有尺寸小、功耗低、工作温度范围宽等特点,可用于智能家居、智能抄表、智慧城市、智慧农业等领域的数据传输服务。

3 系统软件设计

本系统在STM32单片机上使用了RT-Thread操作系统[9]。它是一个嵌入式实时多线程操作系统,基本属性之一是支持多个任务同时运行。RT-Thread还具有实时性高、占用资源少等特点。

系统软件采用模块化设计。其中,STM32单片机主要包括数据采集模块、数据显示模块以及通信模块。各模块均使用RT-Thread系统的线程处理,并且三个线程之间使用邮箱通信:首先由数据采集模块的线程读取传感器获得数据并进行简单处理,再通过邮箱将数据传送至数据显示模块线程及通信模块线程,数据显示模块线程接收到数据后,将其直接发送到LED显示屏,NB-IoT模块则将接收的数据发送到服务器[10]。系统软件流程如图2所示。

图2 系统软件流程

数据显示模块线程首先对数据显示相关变量进行初始化,然后通过邮箱接收从数据采集模块线程发送的带有环境参数数据的邮件,经过相应处理后调用数据显示函数将数据发送到显示屏进行显示。数据显示流程如图3(a)所示。

微信小程序使用微信原生的Request组件进行网络请求。首先Request组件携带URL、账号、密码等信息向服务器发起请求,服务器收到请求信息后检查自己是否存在所请求的资源,若存在,则返回状态码和所请求内容,否则返回错误信息。为了确保在网络数据传输过程中所有操作的正确性,必须确认服务器返回的状态均正确。微信小程序接收到请求数据后,对其进行解析并展示。微信小程序获取数据流程如图3(b)所示。

图3 软件流程

4 系统调试

本系统的调试过程分为如下两步:

(1)由STM32端进行数据采集显示;

(2)通过服务器在微信小程序上显示数据。

STM32端进行数据采集显示时,需通过数据采集模块将采集的温度、湿度、噪声、PM2.5、PM10等数据经过STM32单片机处理并显示到液晶屏上。经过多次调试,结果符合预期。数据采集调试界面如图4所示。

在对远程数据显示进行测试时,需把STM32单片机处理后的数据使用NB-IoT模块HTTP协议的POST方法提交给服务器并存储,微信小程序通过服务器获取数据并显示。微信小程序端测试结果符合要求。微信小程序数据查询、显示界面如图5所示。

图4 数据采集调试界面

图5 微信小程序数据查询、显示界面

5 结 语

经过调试,本系统能很好地完成数据采集、数据显示、数据上报、微信小程序查看测量环境数据等功能,基本实现了设计要求。另外,本系统选用的STM32单片机拥有强大的数据处理能力和众多外设,资源十分丰富,可以在现有基础上通过外接电路增加传感器,从而获取更多环境数据。如果有报警需求,还可以加入警报电路来实现报警功能。

猜你喜欢

显示屏线程调试
一块布就是一个显示屏?
苍蝇迷恋显示屏
基于航拍无人机的设计与调试
FOCAS功能在机床调试中的开发与应用
浅谈linux多线程协作
无线通信中频线路窄带临界调试法及其应用
未来五年LED显示屏出货将保持16%增长
调压柜的调试与试运行探讨
基于AT89S52的手势可控LED滚动显示屏设计
基于上下文定界的Fork/Join并行性的并发程序可达性分析*