赵静静,田延飞
(1.浙江工贸职业技术学院 人工智能学院,浙江 温州 325003;2.浙江海洋大学 船舶与海运学院,浙江 舟山 316022)
城市基建事业高速发展,地下管线井、污水井等井盖数量急剧上升,井盖丢失、塌陷和井下溢水等现象造成的安全事件频发,传统井盖以人工巡检为主,不能及时发现井盖异常信息,且人力维护成本较高,人员监督管理较难[1-2],也不符合智慧城市发展理念。
智慧井盖作为智慧城市的重要一环,有着举足轻重的地位。近年来针对井盖智能监测的问题,已有人提出了不同解决方案,张宏伟[3]等提出的基于单片机的智能井盖监控系统强调了井盖姿态、温度、水位等感器数据的采集设计,提到使用无线通信模块进行采集数据的发送,但具体使用的通信技术没有明确指出。刘雪亭等[4-5]采用远距离无线电(LoRa,long range radio)通信技术设计了一款智能井盖系统,其使用LoRa技术进行通信,终端将监测到的数据发送到LoRa无线网关,无线网关收到数据后再上传到云平台,但LoRa技术需要部署网关节点并制定相应的协议栈,增加了开发成本。朱代先[6]和孙钢灿[7]等分别提出使用窄带物联网(NB-IoT,narrow band internet of things)技术实现智能井盖监测,此协议不需要部署网关节点,直接利用电信基站完成数据上报至服务器,但他们都没有提到后期固件升级等维护方面的问题。
本文在利用NB-IoT技术通过电极溢水、浮球式等方式采集实现智能井盖位置、姿态、电极溢水、水位等监测信息的同时,使用空中下载技术(OTA,over-the-air technology)对固件进行升级,并使用微服务架构完成监控系统服务端的开发,借助云平台和移动终端等实现智慧井盖的实时监测,从而提高管理效率,降低管理与维护成本。
以物联网、云计算等为代表的新一代信息技术的广泛应用,为智慧城市基础设施的数字化管理提供了一个全新的平台[8-9]。本文所设计的云上智能井盖监控系统利用物联网技术实现,物联网技术一般由感知层、网络层和应用层构成[10]。考虑到业务功能的多样性、系统的复杂性,设计时从应用层中抽取出平台层,利用微服务为应用层提供服务,应用层仅用于信息展示与用户交互,如图1所示。感知层由多个井盖终端组成,用于完成井盖位置、姿态、水位等数据采集工作,由NB模块通过基站网络将采集数据上传至云平台。平台层提供终端数据的处理、设备的管理,用户管理等监控管理工作,应用层负责将相关数据呈现在电脑或者移动端。为保证数据安全,所有数据存储于本地的MySql数据库服务中。
图1 总体架构设计
本监控系统旨在利用信息技术提高城市的管理水平,有效排除因井盖位移等因素造成的安全隐患。系统提供如图2所示的功能。1)设备运营:利用井盖终端进行实时数据采集,包括井盖位置、井盖姿态、水位和溢水等自身及环境监测数据,通过管理系统进行数据展示与预警提示;2)设备管理:设置管理哪些终端,查看终端是否联网在线,对终端进行OTA 远程升级管理;2)工单管理:根据监测预警信息,对位置发生偏移、水位超过阀值等的井盖进行任务派发,运维人员利用移动APP 完成现场确认、处理及验收等工作;4)设备巡检:定期下发巡检任务,由运维人员巡检后,上报巡检结果;5)系统管理:验证用户是否有权限登录,管理员可对普通用户进行角色权限设置。
图2 系统功能结构图
1.3.1 终端的低功耗
终端系统设计遵循低功耗设计原则[11],设计包括选择本身具有超低功耗的微控制单元(MCU,microcontroller unit)、与MCU 工作电源相匹配的外围器件,设计节省功耗的电源管理及低功耗的系统运行管理等。
1.3.2 监测的智能化
终端可以放在任何有网络信号的地方,使其不受空间或者地域限制,通过对井盖的状态及井下的水位等状态提供实时的监测,保证管理员不需到达现场便可以随时查看状态、及时掌握相关情况,并对其进行合理化管理,减少运维成本。
1.3.3 系统的健壮性
充分考虑系统可能面临的异常情况,当终端等硬件发生故障、操作失误以及输入不符合规范的数据等异常情况下,系统能有针对性且合理的处理方式。
1.3.4 数据的安全性
系统要求能够保证终端传输数据不被篡改,同时保证系统用户信息、用户权限、操作等多方面的安全要求,对密码等敏感信息进行加密,且能够及时处理安全漏洞,以提升安全性能。
1.3.5 功能的可扩展性
能够在现有的硬件或软件基础上,以最小的影响进行功能扩展和能力提升。终端预留扩展槽以方便监测功能的扩展,终端系统留有升级接口和升级空间;监控系统设计时通过减少依赖和耦合等方式达到代码扩展等扩展性需求。
通过对项目功能和性能等方面需求进行分析,从成本价格、功耗情况及实用性等方面进行考虑,最终选择国产低功耗蓝牙MCU HS6621。HS6621 芯片拥有32 位ARM处理器,其最高主频可达144MHz,在sleep模式下功耗仅为4μA。
终端整体硬件架构基于HS6621 MCU 进行电路设计,采用可扩展性设计,预留扩展口,支持扩展浮球式水位检测、投入式水位检测、温湿度传感器,气体传感器,GPS等功能,HS6621硬件设计方案框架如图3所示。终端与服务器通信时,由MCU 充当透明传输,与NB-IoT 模块直接进行通信。
图3 HS6621硬件设计方案框架图
NB-IoT是指窄带物联网技术,是一种新兴技术,与ZigBee和LoRa等短距离无线通信技术相比,NB-IoT 具有明显优势[12],它采用低功率广域网络(LPWAN,lowpower wide-area network)技术,成本低、功耗少,提供运营商频段,不需要通过网关可直接将采集的数据上传到云端,简化现场部署。
本文NB 模组选用LCC 封装的高新兴物联GM120 模组,其具有低速率、低功耗、远距离和海量连接等特点。该模组支持TCP、UDP和OneNET 平台等功能,可提供最大62.5kbps上行速率和21.25kbps下行速率,为与服务器的数据通信提供保障。硬件上,该模组采用XY100 芯片,提供2 个UART 接口、SIM/eSIM 接口、主天线接口等,设计时通过UART1串口与HS6621进行通信,NB 模组硬件电路如图4所示。电路图中,18号引脚WAKEUP_IN默认高电平,当收到信号后,拉低此引脚唤醒模组,16号WAKEUP_IN 用于唤醒主机信号,当收到下行数据后,可通过该信息发出提示。模组工作电压范围为3.1~4.2V之间,本项目选择使用3.3V。
图4 NB模组硬件电路图
GM120主要有三种模式,分别为Connected mode正常工作模式、Idle mode空闲模式和PSM 省电模式。在PSM状态下电流仅为700nA,为降低功耗,当HS6621进入待机模式时,会向NB模组发送关机脉冲,通知NB模组进入PSM 省电模式;当HS6621有数据需要上报时,给NB 模组发送唤醒指令,并将数据发送给NB模组由该模组进行数据上报,当数据发给云平台后,如过一段时间还末收到HS6621发来的休眠指令,则自动进入PSM 模式。
姿态监测主要利用设备重力加速度X、Y和Z三个方向的变化,计算井盖与水平方向的夹角。3-axis Accelerometer STK8BA53芯片传感器是一个±2g/±4g/±8g的三轴线性加速度,具有数字输出(I2C)、0g偏移和增益误差补偿等功能,满足功能需求。STK8BA53中的所有寄存器都可以通过I2C 总线访问,I2C 总线有SCl(串行时钟线)和SDA(串行数据线)两种,SDA 是双向数据线,用于接收和发送数据。SCl和SDA 均通过一个外部电阻上拉到VDD I/O,当传感器检测到数据发生变化时,通过I2C 发生中断信号给MCU,MCU 处理数据后再由NB-IoT模块上传相应的结果。
为减少功耗,有效地增长终端使用的寿命,设备出厂前处于灭活状态,安装时利用金属导线,短路浸水电极后自动激活设备。激活后的终端,当井下水位上升溢出井盖时,上报溢水警告。设计时在井盖的底部,安装两个外漏的电极,此电极采用不锈钢材质,另外加上防锈的镀镍工艺处理,保证不会锈蚀。电极溢水模块硬件电路如图5所示,当电极不导通时,WATER_IN_CON 电极一直处于低电平,MOS管处于不导通状态,而WATER_IN 信号连接到MCU 的GPIO17,因为被3V3_WATER 电源拉高所以处于高电平状态。当外部水或者把两个电极短接起来后,WATER_IN _CON 信号被拉高,使MOS 管导通,将WATER_IN 信号位低使其处理低电平状态,通过状态变化通知MCU 外部电极短路或者进水。
图5 电极溢水警告硬件电路图
电极溢水警告设计提供设备激活和溢水警告两个功能,MCU 通过判断电极短接是灭活状态下短接还是激活状态下短接来进行激活或者判断进水。为减少功耗,有效的增长终端使用的寿命,设备出厂前处于灭活状态,安装时利用金属导线,短路浸水电极5s后断开,当MCU 第一次接收到连续5s的低信号,就可以自动激活设备了,并配合APP进行设置和报装操作,完成设备激动功能。在激活状态下,当井下水位上升或溢出井盖时,水直至接触到设备外壳电极水位感应,电极间通过水短路,此时感应电路给MCU 发出中断信号,设备将在10s内,通过NB 模组上报水位满溢数据至云平台。当井下水位下降,直至脱离外壳电极水位感应区域时,电极之间就会形成开路,MCU 将会检测到此电路的边或转变为信号,设备将在1分钟内,上报水位恢复数据至云平台。通过后台同步把报警以及水位恢复信息传送至软件平台,使用户在第一时间掌握井内水位状况,到达了实时监控井内水位状况。
考虑到不同地域可能对水位要求不一样,设计浮球式水位告警器监测井内水位状况,工作原理如图6所示。当井下水位未上升到超限位置时,浮球开关处于常闭触点状态,不会触发MCU 中断;当水位上升到超限位置时,浮球翻转触动开关变为常开触点位置,此时MCU 收到中断信号,MCU 通过NB模组向云平台发出告警;当水位下降低于超限位置时,浮球中的开关恢复到常闭触点,中断解除,MCU 通过NB向平台发送水位告警解除信号。
图6 浮球式开关设计原理
浮球开关的设计结构简洁,电路实现简单,可通过安装的高度自行设置报警水位高度,即根据线缆吊装调整浮球的高度实现。如要求水位离井盖还有3m 时报警,可把浮球吊装到离井盖3m 的位置,如要求2m 时报警,则调整高度即可。
终端软件功能主要包括开机初始化、采集井盖的位置、姿态及水位等各类数据信息、上报监测数据到OneNET 云平台及执行云平台发送的相关命令等[13]。
使用短路浸水电极方式开机后,NB 模组进入初始化,为降低功耗,波特率设置为9 600bit/s。单片机通过AT 向URAT2口发送命令检测NB模组工作状态是否就绪,其主要检测顺序及命令有:复位NB模组AT+NRB,获取信号强度AT+CSQ,获取IMEI号AT+CGSN,查询查询IMSI号AT+CIMI,获取IP 地址AT+CGPADDR。在检测状态时SIM 卡可能还未初始化完成,此时就不能继续向下执行,至到所有状态就绪后才可以上报监测数据,例如,状态监测时认为信号强度小于20为不合格信号,需要使用循环重新获取直到信号强度达到20以上。
数据采集主要包括井盖位置信息、姿态数据、电极溢水及水位告警等信息,姿态告警监测功能数据处理流程如图7所示。当STK8BA53传感器通过I2C 发生中断信号给MCU 后,MCU 唤醒开机并根据加速度分量值计算出角度值,如果角度值小于等于15°则不进行告警,如果角度小于等于60°,MCU 通过NB-IOT 向物联网平台发送撬井告警信号,如果角度大于60°,MCU 通过NB-IOT 向物联网平台发送开井告警信号。另外,在井盖的姿态监测过程中,利用标准差,通过滤波、算法处理来判定井盖是否发生了异常。设备每监测到一次异常状态,将对震动计数器加1,并周期性通过心跳数据包上报至OneNET 云平台。
图7 姿态数据处理流程图
与OneNET 云平台交互时,考虑数据传输的可靠性,采用发布/订阅模式的 “轻量级”MQTT 异步通信协议[14-15],与TCP协议相比,它还具传输开销小且对网络带宽要求低等优点。当传感器检测到数据发生变化或硬件变化时给MCU 发出中断信号,MCU 收到中断信号后根据不同的中断进行相应的处理,处理后的数据由NB-IoT 模组发送给云平台,以方便管理人员随时查看,之后若没有其它事件需要处理,MCU 自动进入超低功耗休眠状态。相应的,管理人员也可以通过云平台发送信号给NB 模组,NB模组接收到信号后再发送给MCU 并执行相应指令。
系统软件主要提供电脑端和移动终端APP两部分,开发时为减少代码的耦合,采用前后端分离技术进行开发[16]。后端主要处理业务逻辑问题,利用SpringBoot+Mybaits技术,定义统一restful风格的API接口为前端提供服务,并通过Json数据格式进行交互。前端主要用于页面样式的显示及动态数据的解析与渲染,PC 端使用双向数据绑定的Vue技术[17],并借助ElementUI和Echarts完成页面设计和数据可视化,移动APP 则利用加载速度更快的Uni-app进行开发与打包。考虑到监控系统后期的功能扩展与维护,后端设计时使用微服务系统架构,将系统中的不同模块拆分为用户管理、数据分析、井盖资产管理等多个不同服务,同时利用SpringSecurity+JWT 单点登录的方式进行认证与鉴权[18]。
3.2.1 订阅消息格式定义
系统中使用的终端数据来自于OneNET 云平台,服务端通过订阅云平台中设备连接的MQ 消息的topic来持续获取终端数据,订阅内容包括设备生命周期事件(设备的创建、删除、上线和离线等记录)及设备数据点事件。设备生命周期事件消息的定义如表1所示,设备数据点消息的定义格式如表2所示。同时服务端可通过调用云平台API的方式实现对终端的命令下发。
表1 设备生命周期事件消息
表2 设备数据点事件消息
3.2.2 远程OTA 升级
OTA 又叫空中下载技术,即通过空中无线方式实现设备固件升级[19-20]。目前支持OTA 的 有2G、3G、4G、WiFi、蓝牙、NB-IoT、NFC和Zigbee等,使用固件空中升级可以修复产品缺陷、迭代产品升级,也有助于快速切入市场,降低整体开发成本。本文设计两种固件的升级方式,一种是通过云平台OTA 升级,另一种是通过蓝牙进行升级。当设备需要进行批量升级时,可选择云平台OTA 升级,升级时需要设备处于在线状态,并在云平台上传新的固件包,当设备监测到升级任务后便可进行在线升级。
远程升级过程主要分五步,如图8 所示。第一步,终端上报固件的版本信息;第二步根据版本信息,选择在oneNET云服务器创建升级任务并上传升级包;第三步向服务器发送检测升级任务请求;第四步下载升级包,并完成固件升级;第五步升级包升级完成后,向服务器上报升级状态,其中201 表示升级完成。OTA 远程升级主要通过API实现,实现时,先使用postman工具按照以上步骤验证接口的可用性,设置请求参数并向oneNET 云服务器发送不同API请求,发送请求的url中需包含设备唯一编号等信息,然后根据响应结果判断升级过程中的各种状态。当API接口验证成功后,再将API请求代码添加到终端软件,以实现远程升级功能。固件升级完成后,利用手机端APP或者后台运维平台可以看到对应的设备信息和软件版本,如图9所示。
图8 云平台OTA 升级流程图
图9 终端版本信息查询
3.2.3 监控管理系统
管理系统主要提供井盖资产管理、实时定位监测、防盗监管、报警联动、鉴权设置、数据分析、工单管理、设备巡检、智慧大屏展示等功能。智能井盖编码采用国际标准化IMEI号码编码的方式进行唯一编码,并通过获取其所在的经纬度、所在道路等信息方便快速掌握其安装情况及实时监测井盖的状态,井盖的基本状态包括:正常、异常、低电、维修和闭合异常。当井盖出现异常后,系统向管理人员及相关负责人的手机等客户端发送报警信息,管理人员可根据不同的报警信息安排相应的部门进行维护处理,通过操作PC或者移动APP终端进行任务查询,派遣工单,下发任务,完成状况查询,确认验收。通过对系统中采集的数据进行重组、汇总及对比分析后,利用智能大屏的形式将井盖监测的实时状况展现出来,将管理信息可视化,简单化,透明化。
本文的测试主要针对终端硬件与系统软件功能等进行测试,各项测试表明,终端硬件符合设计要求,软件系统运行稳定且可靠,功能齐全,人机交互良好,终端与系统可正常通信,能达到实时监控的目的。
终端在硬件测试时,主要利用高精度数字电表、万用表、示波器等仪器根据硬件设计要求进行测试。结果表明,时钟震荡电路、Uart和I2C 的信号时序及电源纹波等均符合硬件设计要求,其中整机功耗为98.25μA,符合低功耗需求,各模块功耗测试结果如表3所示。根据终端使用的ER26500型号电池19AH 进行计算,其理论使用寿命可达7年以上,能达到超长待机的目的。
表3 终端功耗测试表
系统软件功能测试时进行实际场景下的测试,终端按产品要求安装在井盖底部,如图10所示,服务器选择使用的硬件环境为:Centos7.18操作系统,16G 内存,1T 硬盘i7处理器。
图10 井盖实测安装环境
通过井盖的姿态变化测试监控功能的实时性和有效性。井盖原始状态为正常,接着对井盖进行撬动,观察软件显示结果,如图11所示。当井盖撬动打开时,终端会采集井盖的姿态状态并经过NB-IoT通信模块发送给云服务器,服务器经解析后实时发出预警信息并由前端进行提示,姿态预警显示与实际状态相符合,可以达到实时监控的作用。
图11 井盖打开时实时预警提示
移动终端使用蓝牙连接井盖终端后,将固件版本从s1.2升级到s1.4,可以升级成功,远程升级后终端新版本固件可正常使用。利用APP 查看固件版本及电量等信息,如图9所示。
测试人员联动运维人员并配合移动APP,分别从权限控制、工单管理、设备巡查和统计分析等方面进行测试软件的管理功能。通过测试,软件管理功能齐全,人机交互良好,和预期效果基本一致。软件的可视化管理,为管理者的决策提供一定的参考价值,终端在维护过程通过上传现场照片等操作,可做到设备的全过程监督,有效地提高信息化管理水平。
本文利用NB-IoT 窄带物联网技术、OTA 空中下载技术及Web开发技术等,设计并实现了云上智能井盖监控系统。该系统能够对井盖位置、姿态及井下水位等状态进行实时监测,一定程度上预防了井盖异常、溢水等造成的安全隐患。通过任务查询、工单派遣、验收确认等功能,有效提高了管理效率,降低了管理成本。利用OTA 远程固件升级,自动更新固件版本,可降低终端后期维护成本。本监测系统解决了井盖导致的安全隐患问题及管理难等问题,提高了信息化管理水平,为智慧管网、智能水务、智慧洪涝管理和智慧消防等固件维护等方面提供了很好的借鉴,为智慧城市规划建设起到积极作用。