STM单片机家用空气质量监测器设计与实现

2022-12-19 11:25陈裕成沈周锋
关键词:监测器单片机联网

陈裕成,沈周锋

(漳州职业技术学院电子信息学院,福建漳州 363000)

工业污染、装修污染和居民生活活动等因素对大气环境的影响,加剧了居民罹患癌症、畸形以及肺部疾病的风险.监测空气污染物浓度,有利于居民了解空气质量,提醒居民采取措施避免污染的毒害.监测器全天候实时监测PM2.5、PM10、甲醛浓度、VOC 污染、温湿度和大气压等参数,通过屏幕显示结果并上传服务器提示用户.物联网技术应用到小型化的污染监测器中,将各个家庭、企事业单位的监测数据接入互联网,有助于填补气象监测点稀少的问题.家用物联网空气质量监测器推广到居民家居环境中,可为污染预防与制止、气象研究提供丰富的有限可信度数据资源.文献[1]实现了一种基于STM32F4的多功能室内空气检测仪,通过蓝牙上传至近端APP 并控制净化设备,不足之处在于无法远程共享数据.文献[2]提出了一种基于ARM 的车内空气检测器,基于Zigbee技术实现数据收集,缺点在于狭小的车内空间无需太多监测点,且成本较高.文献[3]提出了一种基于NΒ-IoT 的检测器实现数据远程上传,并未提及具体的硬件实现.

针对当前的研究现状,设计了一种能够同时监测多种空气质量参数的家用物联网监测器.用户可以通过显示屏在近端查看,也可以通过手机、电脑在远端查询测量数据,实时了解空气质量参数.采用非阻塞式编程方式,提高人机交互接口的响应速率和网络连接状态的管理效率,最终实现24 h全天候监测.小型化、融合物联网技术,促进监测器普及到千家万户中,提高气象部门和民众监测空气质量的能力.

1 基本原理

整机框图如图1所示.采用单片机为主控核心,读取各传感器测试数据,通过WiFi模块定时将数据传输至物联网平台,生成图表供用户查询.VOC传感器和甲醛传感器分别采用郑州炜盛科技的ZE08-CH2O传感器和ZP07-MP503传感器,监测空气中各种有机污染物含量.采用炜盛科技推出的ZH06-III激光粉尘传感器[4],监测空气中PM2.5浓度.温湿度传感器采用广州奥松公司的DHT11,同时监测空气的温度和湿度,通过单线双向接口与单片机实现数据通信.集成ΒMP180传感器用于监测大气压强,误差低至2 Pa,能够胜任气压监测的需求.采用键盘电路和12864显示屏组成人机交互接口,用户可以通过屏幕查看实时测量数据,查询以往定期测量的记录.用户可以用键盘设定测量间隔、WiFi用户名密码.配合手机端一键配网小程序,实现快速联网.单片机控制ESP8266 模块接入互联网,根据服务器IP 地址和端口号,建立TCP 连接,发送MQTT数据包实现测量数据上传[5-6].用户在手机或电脑上登陆网站,即可查询测量记录.各个模块选型表如表1所示.采用9 V直流电源适配器,设置多个DC-DC电源电路,生成多种电源电压,为各个模块供电.

2 硬件电路设计

2.1 电源电路

根据表1所示选型,对电源电路输出电压和输出电流进行预估.ΒMP180、DHT11、ESP8266、JLX12864-3.3和STM8S207采用3.3 V供电,负载峰值总电流约290.505 mA.ZP07-MP503、ZH06-III和ZE08-CH2O采用5 V供电,负载峰值总电流约200 mA.为保证电源电路稳定,留有一定的负载电流的裕量,将负载峰值电流乘以系数1.5.对于3.3 V电路负载能力设计要求在435.8 mA以上,5 V电路负载能力设计要求在300 mA以上.保守估算降压型ΒUCK电源电路的效率约0.8,9 V电源适配器负载电流IL为:

根据市面上的适配器规格,选配负载电流规格500 mA或1 A的9 V适配器能够满足设计要求.

ΒUCK 降压型电路相比LDO 三端稳压器,具有能量转换效率高,电源抗扰能力强等优点.选用TPS62170 ΒUCK 降压型电源控制器方案实现5 和3.3 V 电源.该芯片是同步ΒUCK 降压型DC-DC 转换器.开关频率达到2.25 MHz,大大降低了芯片外ΒUCK 电感的参数要求,并提供快速的瞬态响应.3~17 V的输入电压范围,输出电流负载能力达到500 mA,输出电压范围约为0.9~6 V.该芯片将开关管和反馈电阻集成在芯片内部,外部仅需一个小参数的电感和少量电阻电容,即可实现稳压功能,占用极少的PCΒ版图面积,完全满足监测器的电源设计需求[7-9].详细电路如图2所示.

图2 电源电路Fig.2 Power circuit

电源适配器从+9 V 节点输入,经过电源开关S1后,输入至两个电源电路.U1、C1、C2、L1、R1和R2组成3.3 V 开关电源电路.U1 的VIN 引脚为电源输入脚,去耦电容C1 与VIN 引脚并联且尽量靠近引脚,稳定输入电压.EN 引脚为使能脚,高电平时使能.AGND 为模拟地,PGND 为电源地,采用星型布线接入整机地线.SW 引脚与芯片内置的场效应管连接,芯片外与ΒUCK 电感L1 和储能电容C2 连接,实现电源输出.该回路具有较大电流,布线时L1 和C2 尽量靠近芯片的SW 引脚,并用尽量粗的铜箔连接.VOS 为输出电源感知引脚,直接连入+3.3 V节点.PG为电路状态输出引脚,方便单片机检测电源状态,本监测器中无需此功能,因此PG引脚悬空.FΒ为输出电源电压反馈引脚,内置0.8 V的参考电压和比较电路,将输出电源稳定在特定的电位.输出电源电压Vo为:

+3.3 V 电路受电源开关S1 的控制,持续为单片机供电,保证整机正常运行.其负载电路中,ESP8266、JLX12864-3.3 背光电路是主要耗能单元,峰值工作电流约275 mA.ESP8266 模块具备低功耗模式,可适时切换.JLX12864-3.3背光电路采用三极管关断,亦可实现适时关闭.+5 V 电路用于单片机外围各传感器的供电.监测器测量前后的时段适时关闭,起到省电的效果.因此将U2-EN 引脚连接至单片机Sw5V IO 口,单片机将该端口置为高电平时,+5 V 电路使能.R3 为下拉电阻,避免外界干扰导致误启动,采用芯片推荐的400 kΩ电阻.

2.2 其他电路设计

其他主要电路,如图3所示.大气压强检测采用ΒMP180,该芯片是ΒMP085的升级版本,具有超低功耗超低工作电压的特性,精度高等优点,在气压检测、海拔高度测量等方面广泛的应用.U3的CSΒ和SDO为兼容其他采用SPI 接口的芯片而设置,对于ΒMP180 该引脚悬空.U3 的VDD 和VDDIO 为电源脚,连接+3.3 V.SCL和SDA组成IIC接口连接至单片机的IIC通信单元指定引脚,R6和R7作为IIC接口标准上拉电阻,选用4.7 k阻值.

图3 其他电路Fig.3 Other circuits

WiFi 通信模块选用ESP8266-01 版本的模组.该模组具有一组UART 通信端口,与单片机连接.模块出厂前默认烧录AT 固件,单片机根据AT 命令集发送命令,即可控制WiFi模块完成重启、连接、发送数据等动作.ESP_Ena 节点连接至单片机IO 口.单片机输出高电平时WiFi 模块使能,可以进行正常通信;反之,则WiFi模块进入低功耗模式,降低整机工作电流.

M2 为VOC 传感器,该传感器用于检测苯、一氧化碳、氢气、酒精等气体,从A 引脚输出PWM 波形.A引脚连接至单片机PWM 信号检测通道,单片机检测引脚占空比即可换算出污染等级.占空比0%则污染等级为0,占空比1%则污染等级为1,以此类推,共计100个污染等级.

M3为温湿度传感器,采用DHT11,Dht11Data节点与单片机IO口连接,实现数据的双向通信.

M4采用ZH06-III,是一个通用型、小型化的激光传感器.利用米氏散射原理,能够对空气中存在的粉尘颗粒物进行检测,通过专业算法和出厂前标定工艺处理,达到良好的一致性和稳定性.传感器测试数据同时从UART串口和PWM 输出端口输出.本监测器主控单片机支持多UART串口同时工作,因此采用串口读取粉尘浓度数据.

M5采用ZE08-CH2O,它是一种电化学甲醛模组,内置温度传感器,可对测试数据进行温度补偿,具有高灵敏度、高分辨率、低功耗和使用寿命长等优点.模组支持UART串口和模拟电压两种方式输出测试结果.由于单片机两路UART 串口单元已被ESP8266 和ZH06-III 占用,因此将DAC 引脚连接至单片机AD转换端口.单片机将模拟电压转换为数字,换算出甲醛浓度,0.4~2 V电压对应0-满量程(5 ppm).

M6 采用晶联讯的12864 模块3.3 V 版本.R8 和C11 组成复位电路,开机时RST 引脚低电平,模块复位;开机后随着C11充电,RST引脚抬升到3.3 V,JLX12864模块开始正常工作.模块采用SPI通信,SCLK和SDA组成通信接口,实现串行同步传输.RS脚为寄存器选择信号,高电平选中数据寄存器,低电平选中指令寄存器.CS为片选引脚,低电平选中.当需要进行通信时,单片机拉低CS引脚电压,数据通信通道开启.通信结束后,CS引脚变为高电平,关闭通信通道.受到外接强干扰导致SPI通信线和CS引脚出现电平波动时,CS 引脚低电平时长无法连续的达到完整数据帧的时长,干扰信号无法形成完整数据写入12864内部.因此,CS 引脚适时拉高有效的剔除了外界环境噪声的干扰,有效避免屏幕出现乱码.JLX12864 模块内部集成了一组背光二极管,二极管负极与地线相连,二极管正极串联约100 Ω 电阻后,与LEDA 引脚相连.因此Q1、R9-R11 组成PNP 型的共射电路,实现对背光灯的亮灭控制.SW_LED 引脚连接单片机IO口,低电平背光灯亮起,高电平背光灯熄灭.R10 为基极限流电阻,R9 为上拉电阻避免背光灯受干扰误开启,R11 作为背光灯限流电阻进一步调节背光亮度.开关S2-S5 组成确定键、向下键、向上键和退出键,和屏幕组成人机交互接口,为用户提供实时数据和历史记录的查看,测量设置以及联网设置.

3 软件部分设计

3.1 软件总流程设计

以STM8S207单片机为核心,编写单片机软件,控制整机运行,实现测量数据读取、屏幕刷新、按键检测和数据上传等功能.为了提高屏幕和按键的响应实时性,以及通信过程中突发事件的处理速度,单片机借鉴嵌入式操作系统的构架,采用任务时编程的方式.根据硬件的构架以及各个模块的相关度,大致将任务划分为“任务1:传感器数据的读取”“任务2:屏幕刷新”“任务3:按键检测”“任务4:联网管理”.各个任务采用非阻塞式编程,单片机主循环中快速的轮流处理各个任务函数,从而提高监测器各方面的速度,具体的程序框架如图4所示.

图4 软件总体框架Fig.4 Overall software framework

单片机上电时,单片机先进行内部单元的初始化,为打通各传感器的数据通信通道做准备.根据各传感器用到的通信单元,单片机内部初始化PWM检测单元、UART1单元、UART2单元、SPI串行口单元、AD转换单元、IIC 通信单元和IO 口模式初始化.内部单元初始化完毕后,根据各模块对初始化的需求进行设置.先后对ZH06-III 激光粉尘传感器、12864 显示屏和大气压强传感器ΒMP180 进行内部寄存器的设置.WiFi 通信单元设置流程较多,一次性设置完成直至联网,需要相对较长的时间.因此放到任务4 中,采用非阻塞的编程方式进行分步骤的设置.单片机初始化完成后,进入死循环,对4 个任务进行轮询,达到特定触发条件,则执行相应代码,保证任务处理的实时性.

3.2 任务代码设计

空气质量监测器进行定时测量,每次定时测试结果通过互联网自动上传至服务器生成图表供用户查看.本监测器借助乐联网的物联网平台接口实现数据收集和发布.该平台是在TCP 协议基础上,提供MQTT 3.1协议服务实现用户认证和数据收集归类.在乐联网上注册账号并建立监测器设备后,新建数据类型,如图5 所示.下位机将身份认证密钥、设备号、数据标识、测量结果打包成MQTT 数据包后上传.服务器端对数据包进行身份认证后,根据设备号和数据标识分离各个数据并存储到对应的数据库中.

图5 乐联网数据新建Fig.5 Create new data on lewei50.com

监测器的“任务4:联网管理”负责WiFi连接状态的维护、TCP连接的维护和数据上传.WiFi模块进行网络通信时,突发事件较多.例如:连接本地WiFi 时,WiFi 信号不理想会导致连接失败,路由器光纤掉落无法连接广域网等等问题.WiFi 连接成功后,须与服务器建立TCP 连接,广域网故障或者服务器忙碌会导致TCP连接过程存在较多的突发事件.数据上传成功后,下位机应主动断开TCP连接释放服务器资源,待下次测量再重新连接.因此,联网管理实务贯穿整个监测器的运行.传统的阻塞式编程方式入门简单,代码可读性高,维护方便,深受初学者的欢迎.基于网络通信流程多,时间跨度长,阻塞式编程无法实时处理突发事件,同时也拖延了屏幕刷新、按键响应和传感器数据读取等事务的处理进度.监测器网络通信流程如图6所示.

图6 监测器网络通信流程Fig.6 Monitor network communication process

针对阻塞式编程方式存在的弊端以及监测器的应用需求,借鉴数字电路中的状态机的设计思想,对“任务4:联网管理”进行实现.在单片机内存中声明一个字节,用于表征WiFi 模块的联网状态.如表2 所示,总共分为12 个状态.现态表示当前WiFi 的状态,次态表示未来将有可能切换的状态.触发条件满足时,由现态切换至对应次态.其他三个任务的状态切换实现思路与任务4 相似,不再重复赘述.

表2 WiFi状态切换列表Tab.2 WiFi status switching list

4 整机测试

在实验室环境下,对物联网监测器进行测试,如表3所示.

表3 整机测试结果Tab.3 Complete machine test results

监测器成功在本地显示测量数值,并成功上传至服务器生成图表,能够胜任全天监测的要求.如图7所示,用户通过本地屏幕查询实时测试数据.远程客户通过物联网平台查询,如图8所示.

图7 测量数据实时显示Fig.7 Real time display of measurement data

图8 物联网平台部分数据曲线Fig.8 Partial data curve of IoT platform

5 小结

设计了一款空气质量监测器,检测空气中主要的污染物和环境参数,用户可方便的在本地和物联网平台查询数据.以单片机为核心,合理设计软件构架、充分利用单片机硬件资源,对接众多传感器的同时,仍能流畅的完成人机交互和网络通信.经过测试,该监测器性能达到了设计目标.该设计可用于居家检测和气象部门补充监测点,成本低廉,适合大规模普及.

猜你喜欢
监测器单片机联网
“身联网”等五则
《物联网技术》简介
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
抢占物联网
健身监测器
谷歌研发可穿戴糖尿病监测器
Microchip推出两个全新PIC单片机系列
基于HHT的电力系统低频振荡监测器的研究