基于NB-IoT的污水管道气体远程监测装置设计*
2019-08-14于重重
鲍 春, 谢 涛, 杨 飞, 于重重
(北京工商大学 计算机与信息工程学院,北京 100048)
0 引 言
城市污水管道是维持城市运转正常的重要部分,承担着工业废水和生活污水的输送和处理作用。一直以来,污水管道里产生的易燃易爆且有毒气体,如甲烷(CH4)、硫化氢(H2S)、氨气(NH3)等都是威胁城市居民的安全隐患,而污水管道监测环境恶劣,现场监测难度大,因此,污水管道气体远程监测就成为了一项亟待解决的重要课题[1]。
针对污水管道气体监测问题,张娜提出了基于通用分组无线业务(general packet radio service,GPRS)网络的管道可燃气体监测系统,但是其没有解决运算速度慢和运算精度低的问题。高致慧等提出基于现场可编程门阵列(field programmable gate array,FPGA)在线气体监测系统,但是该系统只适用于现场气体监测,没有解决远程监测问题[2]。
本文提出了一种基于窄带物联网(narrow band Internet of things,NB-IoT)的污水管道混合气体远程监测系统,通过FPGA组成的传感器阵列采集气体数据,使得测量的实时性更好。利用FPGA并行结构实现神经网络算法,从而提高了测量的精度。同时,该装置嵌入了Linux操作系统,操作界面友好,最后,将采集的气体数据通过NB-IoT组网传送至云端,实现远程实时监测。
1 系统总体设计
管道气体的主要成分为CH4,H2S和NH3,因此,在检测管道气体时,先将混合气体经过气泵抽入预先设计的密闭气室中,抽取的混合气体要经过气体传感器阵列,该阵列分别由CH4,H2S和NH3传感器组成。气体数据经过FPGA和ARM组成的采集装置,由NB-IoT模块连接基站传至云平台,用户通过访问云平台获得采集数据,系统整体架构如图1所示。
2 系统硬件设计
系统硬件设计部分主要包括NB-IoT模块设计、FPGA采集硬件设计以及ARM电路设计。系统硬件设计如图2所示,以下将分成三个部分对监测系统进行介绍。
图2 系统硬件设计
2.1 NB-IoT模块设计
本系统选用的NB-IoT芯片为移远公司的BC95—B5模块,BC95是最早期推出的一种NB-IoT模块,其尺寸小,功耗低,功能强,极大的满足终端小设备的设计需求。采用LCC封装,内嵌网络协议,超低功耗的同时,具有超高的灵敏度。本设计基于BC95无线NB模块,其具备电源指示灯1路,网络状态指示灯1路,Micro SIM卡座1个。模块引出8个管脚用于和主控板对接,工作温度-40~+85 ℃,支持AT指令配置,数据传输100 bps。
BC95模块的电路设计如图3所示,模块共有94个引脚,其中,54个为LCC引脚,其余40个为LGA引脚。供电范围为3.1~4.2 V。SIM卡由电信运营商提供,并配有唯一的IMEI码[3~6]。
图3 BC95模块硬件设计
2.2 FPGA采集硬件设计
本系统采用Altera公司生产的Cyclone IV系列EP4CE30F23C8N型号的芯片。该芯片共有532个管脚,集成了28 848个逻辑单元,66个18×18 位乘法器,也可配置成为132个9×9位的乘法器;最多可具备4个增强型锁相环(phase-locked loop,PLL);包含了高达 30个全局时钟(global clock,GCLK)网络以及高达8个PLL(每个PLL上均有五个输出端),以提供可靠的时钟管理;I/O 支持可编程总线保持、可编程上拉电阻、可编程延迟、可编程驱动能力。
AD模块选用了AD7626芯片来进行传感器数据的模数转换,由于大部分传感器的测量数据都为模拟量,所以,进入FPGA计算的数据都要经过AD模块进行转换。AD7672是16位逐次逼近寄存器(SAR)架构式ADC,能够以10MSPS无延迟采样,不存在流水线式ADC常有的“流水线延迟”,有良好的线性度。其内部集成了一个转换时钟和一个内部缓冲基准源。本系统所用的A/D转换和FPGA之间的连接如图4所示,其中,进入AD7626芯片的传感器数据为DATA1_P和DATA1_N,在CNV的上升沿,AD7626对IN+和IN-引脚之间的电压差进行采样[7,8]。在采样过程中,所有的转换结果通过LVDS自时钟串行接口或回波时钟串行接口都可获得,本系统通过回拨时钟获得转换后的数据。
图4 采集部分硬件设计
2.3 ARM电路设计
由于FPGA作为ARM的外设挂载在嵌入式系统的总线上,因此硬件连接相对简单,其连接框图如图5所示。其中RD为读数据,CS为片选,WE为写数据,DATA为数据线,ADDR为地址线,EXINT为外部中断,MCLK为时钟信号。
图5 ARM+FPGA架构
当CS低电平有效、WE低电平有效、RD高电平无效时,ARM对FPGA进行写操作,根据ARM地址总线上传送的地址,FPGA向自身双RAM口对应单元写入ARM数据总线上的数据。当CS低电平有效、WE高电平无效、RD低电平有效时,ARM对FPGA进行读操作,根据FPGA地址总线的传送的地址,ARM读入FPGA上对应地址单元的数据[9]。
3 系统软件设计
系统软件设计包括NB-IoT软件设计和采集部分软件设计,在NB-IoT软件设计部分介绍了NB模块的初始化配置,采集部分主要包括FPGA在和AD模块之间的信息交换以及FPGA神经网络的简单介绍。系统软件设计整体流程图如图6所示。
图6 系统软件设计整体流程
3.1 NB-IoT软件设计
NB-IoT的软件设计主要为NB-IoT的初始化入网设置过程,在本文中,通过发一系列AT指令来设置NB模块,以下为终端设置步骤。
1)终端上电,发送“AT+NRB”,复位终端。
2)发送“AT+CFUN=0”,关闭功能开关。
3)发送“AT+NTSETID=1,设备ID”,此ID即为模块中SIM卡的IMEI号。
4)发送“AT+NCDP=IP,PORT”,设置对接云平台的地址。
5)发送“AT+CFUN=1”,开启功能开关。
6)发送“AT+NBAND=频段”,设置频段。
7)发送“AT+CGDCONT=1,IP,APN”设置核心网的APN。
8)发送“AT+CGATT=1”,终端入网。
9)发送“AT+CGPADDR”,查询终端获取核心网分配的IP地址。
3.2 采集部分软件设计
传感器阵列数据经AD转换后成为FPGA可以处理的数字量,FPGA与AD芯片之间通过串行外围接口(serial peripheral interface,SPI)协议进行数据通信。通过实现FPGA平台的SPI通信接口,实现数据的接收。SPI总线的特点有全双工通信、主从模式、片选使能、四线接线等优点,通信易于控制。
本系统所设计的数据模/数转换(analog-to-digital conversion,ADC)电路采用AD7626,该ADC有大量片内寄存器用于对ADC的配置和控制。如通信寄存器,与ADC所有的通信操作前都应该和通信寄存器的写操作开始,通过对通讯寄存器的配置,决定后续操作是读还是写。同时还有状态寄存器,来判断ADC读取状态;模式寄存器设置连续转换、单次转换或者待机模式;数据寄存器存储ADC的转换结果,完成读操作后,RDY位/引脚被置1。AD7626软件设计流程图如图7所示[10,11]。
图7 AD模块软件设计
由于气体传感器在检测混合气体中对应的特定气体时,会出现交叉敏感现象,即在测量某一种气体浓度时,会受到其他气体的影响,使得传感器的性能不稳定,且测量精度低。为了消除这种影响,本系统采用了在FPGA上部署BP神经网络算法,利用多传感器数据来训练神经网络,使得FPGA采集的数据更加可靠和精确。采用定点计算的方法,将神经网络运算中浮点数用定点计算公式表示,运用大量片上资源来换取并行计算的快速性。采用分段拟合的方法,将拟合区间分为若干段,利用细间距线性函数拟合激活函数。
4 系统测试与结果分析
4.1 上位机测试
本系统开发了独立的上位机软件,如图8所示,用户可以输入用户名和密码登陆软件系统,输入NB-IoT模块中SIM卡的IMSI号作为用户ID,即可获得此装置所在的管段信息,该软件提供数据包下载和查询功能,用户设置报警阈值,可得到气体状态。本实验在实验室的配气装置下,配置NH3体积分数为20×10-6,H2S为0.8×10-6,CH4为200×10-6,气体传感器采集信息后,用户登陆该软件,所得到的数据如图8所示。
图8 上位机界面
4.2 数据采集实验
本实验通过气体配置装置,在传感器端配置10组气体浓度,经过本文设计的气体监测装置,其采集浓度表1所示。其中,浓度值为配气浓度,实测值为本系统采集浓度。
表1 配气浓度与远程采集浓度数据表 10-6
由表中数据可知,测量CH4的平均误差为1.64×10-6,H2S的平均误差为0.02×10-6,NH3的平均误差为0.67,其测试精度高,在数据远传过程中无丢包现象。
5 结束语
通过实验证明,本文所设计的气体采集装置不仅采集误差小,而且上位机操作界面友好,解决了污水管道混合气体监测精度低、操作难度大等问题。