刘筠筠
(郑州科技学院,河南 郑州 450064)
环境与发展是当今国际最为关注的问题之一。空气中各种各样的污染物大多来自人们的日常生活。近些年,人们在关注身体健康的同时也开始关注周围的空气环境[1]。传统的空气质量监测采用人工在现场采样的方式,这种方式的实时性较差且占用人力资源[2]。随着现代化科学技术的发展,利用监测系统对空气质量进行实时监测的智能化监测站快速发展。虽然我国已经建立了很多空气监测站,但由于建站时存在区域监测意识上的薄弱,导致目前监测网络存在着分布不合理,监测区域略小以及空气监测项目指标偏少等问题。
NB-IoT(窄带物联网)是物联网领域的一种新兴技术,具有覆盖广、连接多、速率低、成本低、功耗低、架构优等特点[3]。基于NB-IoT的上述特点,本文设计了一个基本NB-IoT的空气质量监测系统。该系统能够实时采集数据并上传,使得用户能够在监测端便捷地查看监测点的空气质量情况。
该监测系统由监测终端和用户端组成。监测终端的数量根据需求确定。监测终端主要由主控模块、传感器模块、显示模块、NB-IoT无线通信模块和电源模块5部分构成。其中,传感器模块包括:SO2传感器、NO2传感器、CO传感器、O3传感器和PM2.5传感器;电源模块给整个监测终端提供电源。系统运行时,单片机接收并处理由各个传感器采集到的空气质量数据,不仅能将分析计算出的气体浓度值实时显示上在显示屏,还能通过NB-IoT无线通信模块将气体浓度值传送到云平台。用户端可以使用PC查看云平台接收到的监测终端检测空气质量数据。系统总体设计如图1所示。
图1 系统硬件
主控模块即单片机最小系统,包括单片机、时钟电路和复位电路。在监测系统中,不仅要求主控芯片能够高效实时地对数据进行处理并上传至云平台,还要考虑系统的扩展性以便后续增加功能模块。因此,本系统中的主控芯片采用STM32F103RCT6单片机。STM32F103RCT6是一个基于ARM核心的32位微控制器。其基本特性有:3个12位模数转换器,1μs转换时间(21个输入通道),2通道12位D/A转换器,12通道DMA控制器,112个快速I/O端口,采用串行单线调试(SWD)和JTAG接口调试模式,11个定时器,13个通信接口,具有CRC计算单元,低功耗。
2.2.1 CO和O3检测模块
系统采用2个MQ135空气质量传感器来检测CO和O3。MQ135是MQ气体传感器的一种,用于检测、测量和监测空气中存在的各种气体。该传感模块有4个引脚,具有模拟和数字2种输出形式,其引脚功能为,(1)1脚VCC:+5 V电源;(2)2脚GND:参考电位引脚,接地;(3)3脚Digital Out:数字输出引脚,通过电位器调节值来提供数字输出;(4)4脚Analog Out:0~5 V的模拟输出信号。它取决于气体强度,输出信号与测量的气体蒸汽浓度成正比。
CO检测模块和O3检测模块采用模拟输出,二者与单片机连接的区别仅在于使用的单片机引脚不同。CO检测模块的4脚连接到单片机的PA4引脚,O3检测模块的4脚连接到单片机的PA5引脚。CO检测模块电路,如图2所示。
图2 CO检测模块电路
2.2.2 SO2和NO2检测模块
SO2检测模块和NO2检测模块均使用MQ-2烟雾传感器。MQ-2烟雾传感器采用在清洁空气中电导率较低的二氧化锡(SnO2),属于表面离子式N型半导体。当与烟雾接触时,烟雾的浓度越大导电率越大,输出电阻越低,则输出的模拟信号就越大。MQ-2有2种输出方式:模拟量输出和TTL电平输出,都具有信号输出指示。TTL输出为低电平有效,可以和单片机直接连接,当输出低电平时信号灯亮;模拟量输出为0~5 V电压,浓度越高其对等的输出电压就越高。
MQ-2烟雾传感器模块共有4个引脚,分别为VCC(接+5V)、GND(接地)、DOUT(数字信号输出)、AOUT(模拟量输出)。本设计中使用MQ-2烟雾传感器的模拟量输出,SO2检测模块和NO2检测模块与单片机的连接方式和CO检测模块电路基本一致,区别仅在于使用的单片机引脚不同,这里不再重复给出检测电路图。
2.2.3 PM2.5检测模块
在本系统中采用ZPH02粉尘传感器检测空气中的PM2.5浓度。ZPH02传感器整合红外PM2.5检测技术,采用粒子计数原理对环境中PM2.5进行检测,可灵敏检测直径1 μm以上灰尘颗粒物。其具有长期稳定性好、灵敏度高、接口输出方式丰富、一致性好、易安装、维护的特点。ZPH02有2种输出方式,分别为UART模式和PWM模式。本设计中使用ZPH02的PWM模式。ZPH02的引脚功能,如表1所示。
表1 ZPH02引脚功能
本系统采用JLX12864 G—332液晶显示模块,它可以显示:128列×64行点阵单色图片,16×16点阵的汉字8个×4行,8×16点阵的英文、数字、符号16个×4行,5×8点阵的英文、数字、符号。JLX12864 G—332可以通过软件调节对比度、进行正显/反显转换以及改变行列扫描方向。它具有并行和串行两种接口方式,在本设计中采用串行接口方式,这种方式下的接口引脚功能,如表2所示。
表2 串行时JLX12864G—332接口引脚功能
本系统监测终端的无线传输模块选用NB-IoT无线通信模块BC28,用来实现监测终端与云平台的实时数据传输。BC28是一款超紧凑、高性能、低功耗的多频段NB-IoT无线通信模块,支持 B1、B3、B8、B5、B20、B28频段,可与网络运营商的基础设备建立通信。采用更易于焊接的 LCC 封装,尺寸仅为17.7 mm×15.8 mm×2.0 mm,VBAT供电电压范围为3.1~4.2 V。
BC28模块设有2个串口:主串口和调试串口。主串口可用于AT 命令传送和数据传输,此时其波特率为9600 bps。主串口在Active模式、dle 模式和PSM模式下均可工作。本设计中BC28模块供电电压为3.3 V,通过主串口与单片机进行数据传输,其与STM32F103的引脚连接关系,如表3所示。
表3 BC28模块与STM32F103的引脚连接关系
本设计中使用2节18650锂电池对整个系统进行供电,可提供7.4 V的直流电。系统中的单片机、显示模块以及无线通信模块均需要3.3 V供电,各传感器模块则需要5 V供电。因此,在该系统中使用了XL1509-5.0E1和AMS1117-3.3来获取稳定的5 V电压和3.3 V电压。
系统上电运行后,首先对整个系统进行初始化;随后,监测终端中的各个传感器将采集到的气体信号传送给单片机。单片机对数据进行处理,将接收到的模拟电压信号转化成与之对应的气体浓度数据,再通过无线通信模块完成与云平台的数据传送。监测终端的主程序设计流程如图3所示。
图3 监测终端主程序设计流程
监测终端的显示模块用以实时显示各传感器所采集到的气体浓度值,其中CO、NO2的浓度单位为mg/m3,O3、SO2、PM2.5的浓度单位为μg/m3。单片机将从EEROM中取出的气体浓度值通过控制引脚和串行接口传送给JLX12846 G显示模块,显示子程序流程,如图4所示。
图4 显示子程序流程
BC28模块与单片机是通过串口发送AT指令的,单片机通过串口依次将AT指令配置发送给通信模块,从而建立网络连接。使用BC28模块时,首先,要对单片机的串口进行初始化;其次,通过AT指令打开BC28模块;最后,进行网络连接。BC28与网络连接的过程,如表4所示。当能查询到模块的IP 地址时,说明网络连接成功。
表4 BC28与网络连接的过程
BC28接入云平台的通信协议是MQTT(消息队列遥测传输)通信协议。MQTT是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况较差的情况下而设计的发布/订阅型消息协议,需要消息中间件。
本设计中的云平台选用了阿里云的物联网平台[4]。相对于其他平台而言,阿里云平台支持更多的物联网设备接入以及众多的设备信息查询和多语言SDK,实践案例较多,给个人和企业提供了虚拟设备开发、在线调试、完整日志服务、实时监控告警、数据分析和可视化展示等服务。其中,物联网设备管理平台是阿里云针对物联网设备提供的工具。它提供了MQTT服务的接入以及设备SDK的开源程序。用户可以根据所需设备的型号去匹配适用的最佳接入方式。
3.4.1 环境配置
MQTT服务器的使用安装需要借助JDK开发环境。用户需要先从官网上下载JDK8.0,安装完毕后需要配置环境变量。打开“我的电脑”进入属性,找到“高级系统设置”,点开可见环境变量。再次双击后,会出现有2个变量,找到系统变量。点击新建变量,键入“变量名:JAVA_HOME”,变量值选择刚才安装JDK的文件夹。设置完毕后在系统变量里找到已经由计算机建立好的PATH变量,双击打开后选择新建,创建一个名为“%JAVA_HOME%in”的环境变量。全部选择确认后打开cmd命令行窗口,输入java-version,显示版本信息则安装成功。
3.4.2 新建产品
登录阿里云官网,找到物联网应用开发的管理控制台。双击项目管理,在产品选项中点击“新建产品”,依次输入产品名称、选择节点类型及接入方式后,点击“确认”按钮即可新建成功。
产品添加成功后,在设备列表中可以看到此时显示设备为“离线”状态,下一步要把“离线”的状态变为“在线”状态,需要将物联网设备进行插电启动、设置入网。
3.4.3 添加功能
阿里云平台中没有CO、SO2、O3、NO2等功能定义,需要手动添加。首先,登陆阿里云的物联网应用开发平台。其次,点击右侧的设备接入专栏,进入后可以看到左侧的设备管理。再次点击,会看到已创建好的产品名称。通过后面的查看按钮进入到产品的详情页,找到功能定义,点击编辑草稿,选择“添加自定义功能”,输入CO、SO2、O3、NO2、PM2.5,添加完毕后,点击“发布上线”按钮即可完成添加。
3.4.4 MQTT服务器接入云
在云平台物联网管理应用中找到设备管理,点开列表,看到产品后双击,会有一个自定义的Topic,点击创建。定义Topic后,打开eclipse.paho调试工具也就是MQTT客户端。在MQTT客户端中,找到位于左上角的文件,选择新建连接,创建一个名为connection2的服务器连接。创建完成后,可以看到MQTT下的服务器地址和客户机标识,这里默认本地环境地址为服务器地址。手动点击连接按钮,看到连接状态显示为:已连接。接着在下方订阅-添加新的订阅起一个名字test,勾选后点击订阅就可以发布消息。发布消息如图5所示。
图5 MQTT发布消息
系统上电运行后,监测终端的传感器模块便开始进行数据采集,当监测终端和阿里云连接成功(BC28模块上的网络连接指示灯亮)后,查看液晶显示屏上的数值是否和云平台接收的一致。通过多次实验表明,该系统可以使用户实时、准确地对监测终端附近的空气中的CO、SO2、O3、NO2、PM2.5进行远程监测。
本设计通过监测终端的传感器模块实现对空气质量的数据采集,使用液晶显示器显示气体浓度的同时,利用NB-IoT模块将数据传送到云平台,用户可以利用云平台实现对环境数据的远程监测。该系统不仅能够对数据进行实时采集、稳定传输,而且可以设定阈值报警,可广泛用于不同场所的空气质量监测,具有一定的实际应用价值。