APP下载

基于自主计量芯片与NB-IoT的物联网智能水表系统

2022-02-22庞应龙吴文彬曹广忠

物联网技术 2022年2期
关键词:智能水表水流量阿里

庞应龙,吴文彬,曹广忠

(1.深圳大学 机电与控制工程学院,广东 深圳 518060;2.广东省电磁控制与智能机器人重点实验室,广东 深圳 518060)

0 引 言

面向设备接入的低功耗广域网迅速发展,结合低功耗广域网进行水流量实时采集和无线传输的智能水表正在逐步取代或改造着传统水表,有效解决了传统抄表方式普遍存在的精度低、费时费力等问题。低功耗广域网技术主要分为两类:非授权频段技术,如远距离无线电(Long Range Radio,LoRa);授权频段技术,如窄带物联网(Narrow BandInternet of Things,NB-IoT)。与LoRa相比,NB-IoT技术具有很强的覆盖度与穿透力,且具有低成本、低功耗、广覆盖、支持海量连接和数据传输稳定等优点,被广泛应用于单次传输少量数据的智能水表场景。

基于NB-IoT技术的智能水表能实时采集并无线传输水流量信息,可辅助供水公司对不同智能水表节点进行实时监控和智能管理。2017年,华为、中国电信与深圳水务集团联合发布全球首个基于NB-IoT技术的智慧水务商用项目。因此,将水表与NB-IoT技术结合具有广阔的应用前景。

在水表上增加计量模块是实现水表自动化读数的重要一步。文献[8-9]基于图像识别技术和4G模块,将大量的图片数据传输至云服务器,从而实现水流量的计量。但是,图像识别的结果往往会受到强光、弱光、遮挡、不完整等外部因素的影响,而且4G模块价格普遍比NB-IoT模块贵。

文献[10-12]基于NB-IoT技术设计了智能水表抄表系统的设备端,但未实现水流量监控和可视化功能的应用端。文献[13-15]为系统设计了APP或上位机应用端软件,但APP和上位机软件与硬件平台存在兼容性差、不便管理等问题。与APP和上位机相比,Web应用可为用户省去软件下载和安装的过程,突破软件运行的硬件限制,同时可供多个用户访问同一个Web应用程序。当前,Web应用已被广泛应用于微电网的可视化和管理、矿山废石输送监控系统、智能设备监测系统等场景。

针对上述不足,本文基于自主设计的计量芯片模块及NB-IoT技术设计了一种新型物联网智能水表系统,结合WebSocket和Web技术开发了可进行水流量实时显示和监控的Web应用,解决了智能水表从水流量采集、无线传输到可视化的问题。

1 总体方案设计

物联网体系架构可划分为感知识别层、网络构建层、管理服务层和综合应用层。本文基于上述4层架构进行物联网智能水表系统设计,系统总体框架如图1所示。

图1 系统总体框架

感知识别层由设备端的主控电路、NB-IoT模块和智能水表组成。智能水表测量的水流量通过串口发送给主控电路,主控电路通过AT指令控制NB-IoT模块接入网络并上传水流量信息,NB-IoT模块将水流量信息发送至阿里云物联网平台的协议为MQTT。

网络构建层包括通信基站和通信服务器,水流量传输途径依次为NB-IoT模块、通信基站和通信服务器,最后到达阿里云物联网平台。

管理服务层为阿里云物联网平台,在平台上注册水表产品并在该产品下创建智能水表设备,在平台上可对每台智能水表设备进行管理。

综合应用层包括Tomcat服务器和Web应用服务。为实现数据实时接收和Web实时显示功能,后端程序使用Java语言开发,通过Java库接口调用高级消息队列协议(AMQP)实现水流量信息从阿里云物联网平台到Tomcat服务器的实时传输。前端Web页面使用超文本标记语言(HTML),前端与后端之间借助jQuery库实现数据传输,Tomcat服务器通过WebSocket协议实时更新Web页面显示的水流量。

2 硬件设计

系统设备端的硬件包括智能水表中基于自主芯片设计的计量模块、主控电路、NB-IoT模组和电源,其硬件架构如图2所示。

图2 系统设备端硬件架构

2.1 智能水表计量模块设计

计量模块的核心器件为自主设计的Au2001传感器芯片。Au2001可感知并计量水表金属转子的旋转,原理如图3所示。计量模块工作电压为2.8~3.6 V,分辨率为0.25 L,精度为±1 L,正常工作速率范围为3~9 000 r/h,平均功耗低于4.8 Ua,采用串口通信方式,具有克服高斯静磁场在模块周边运行或静置时产生的干扰,并克服NB-IoT产生的电磁干扰等优点。计量模块包含6个引脚接口,分别为电源V(VCC)和G(GND)、串口数据接收(R)和数据发送(T)、调试引脚(D)和复位引脚(S),如图4所示。

图3 Au2001传感器芯片原理

图4 计量模块引脚接口

在工作状态下,如果计量模块检测到水流量的变化超过0.25 L时,就会通过串口发送数据,T引脚向主板MCU发送包含水流量的数据帧。数据帧包括帧头、功能码、4 B数据和帧尾,格式见表1所列。

表1 计量模块发送的数据帧格式

2.2 单片机主控电路设计

主控电路以STM32F103单片机作为主控制器,供电电压为+3.3 V,配有低功耗通用异步接收传输接口,可工作在休眠模式,允许全双工串口通信,具有功耗低等优点。NBIoT模组采用具有高性能、低功耗优点的BC26模块,供电电压为+3.3 V,支持全双工串口通信,可由主控制器通过串口将水流量信息上传至阿里云物联网平台。智能水表工作电压为+3.3 V,内部集成测量水流量的计量模块,水流量以ASCII字符的格式通过串口传输至单片机。电源供电方式为USB接口供电,同时为主控电路、BC26模块和智能水表供电。

设备端硬件电路如图5所示。电路包括BC26模块和智能水表的供电电路、串口通信电路,及STM32F103单片机最小系统和电源供电电路。

图5 设备端硬件电路

3 软件设计

系统软件包括智能水表设备端主控软件和应用端软件两部分。应用端包括数据传输和Web应用两部分。设备端主控软件执行硬件初始化操作,具有联网通信和控制BC26模块通过MQTT协议将水流量信息上传的功能。阿里云物联网平台将接收的数据通过AMQP协议推送至Tomcat服务器,Tomcat服务器提取水流量信息并通过WebSocket协议实时更新Web页面上水流量的显示。

3.1 数据通信协议

3.1.1 消息队列遥测传输协议

消息队列遥测传输协议(Message Queuing Telemetry Transport,MQTT)是构建于TCP/IP协议的基于发布/订阅(Publish/Subscribe)模式的轻量级应用层通信协议,广泛应用于设备间的数据传输。在MQTT消息模型中,发布者、订阅者和代理是实现物联网设备间通信的基本元素。本文使用MQTT协议完成水表设备端包含水流量JSON数据向阿里云物联网平台的传输。MQTT协议框架如图6所示。

图6 MQTT协议框架

3.1.2 高级消息队列协议

高级消息队列协议(Advanced Message Queuing Protocol,AMQP)是一种应用层协议。AMQP的框架包括消息代理、虚拟主机、生产者、消费者、消息体、交换机、消息队列,如图7所示。生产者/消费者与消息代理通过TCP建立Connection连接,消费者与消息代理在Connection的基础上建立多个进行消息通信的Channel,消息代理按照路由规则将消息发送至消息队列。

图7 AMQP框架

本系统采用阿里云物联网平台的AMQP服务完成将水流量推送至Tomcat服务器的过程。

3.1.3 WebSocket协议

WebSocket是一种支持服务器与客户端TCP进行全双工通信的协议。该协议允许服务器主动向客户端推送数据,客户端与服务器只需一次握手便能建立连续有效的连接。本文系统中的每个Web页面单独与Tomcat服务器建立WebSocket连接,接收来自页面的控制指令并实现水流量到Web页面的实时推送功能。本文设计的WebSocket服务程序流程如图8所示。

图8 WebSocket服务程序流程

3.2 设备端主控软件设计

设备端主控软件主要围绕低功耗主控芯片STM32F103、BC26模块和智能水表设计。软件程序在Keil平台采用C语言开发。设备端主控软件程序流程如图9所示。

图9 设备端主控软件程序流程

设备端主控程序首先进行STM32F103单片机外设硬件的初始化,包括系统时基设置、系统时钟配置和串口通信的初始化。STM32F103通过AT指令与BC26模块通信,实现控制BC26模块与阿里云物联网平台连接和数据传输的目的。BC26模块工作程序流程如图10所示。在空闲状态下,BC26模块自动进入省电模式,处于等待唤醒状态,STM32F103单片机通过串口间隔1 s发送AT指令唤醒BC26模块。

图10 BC26模块工作程序流程

控制BC26模块的主要AT指令及其功能描述依次见表2所列。

表2 主要AT指令及功能描述

3.3 应用端软件设计

对本文系统设备端进行数据管理的平台为阿里云物联网平台,能接收阿里云物联网平台推送数据的本地服务器为Tomcat服务器。阿里云物联网平台支持设备数据采集上云,规则引擎和云端数据下发设备端微系统提供了方便快捷的设备管理能力,支持模型定义、数据结构化存储等。在阿里云物联网平台,同种类型的设备被抽象成一种产品进行管理,因此可以在平台的设备管理模块中创建智能水表产品,在产品中可为每一台智能水表设备端创建设备模型,从而完成智能水表在物联网平台的创建和管理。智能水表在阿里云物联网平台上的设备详情如图11所示。

图11 智能水表在阿里云物联网平台的设备详情

Tomcat是Apache提供的一款运行在Java环境下开源和免费的Web应用服务器,支持Servlet和JSP技术。Tomcat服务器运行在已配置好Java环境的Ubuntu操作系统中,调用目录下的start.sh和shutdown.sh脚本文件可以启动和关闭服务器。修改Tomcat服务器conf目录下的server.xml配置文件,可以改变客户端的域名和Web应用的访问路径,如图12所示。name表示访问的域名为pyl,Web应用的访问路径appBase为/mnt/hgfs/iot_pyl。

图12 Tomcat域名和访问路径

本文系统中Web应用完成了与Tomcat服务器进行数据交互和实时显示水流量数据两项任务。Web页面采用超文本标记语言(HTML)开发,通过jQuery库的WebSocket模块与Tomcat建立连接,实现数据双向传输。采用echart.js库将水流量进行可视化处理,利用柱状图和曲线图实现水流量的动态实时可视化显示。借助WebSocket的双向数据传输功能,在页面上显示WebSocket和AMQP的连接状态、当前时刻的水流量以及阿里云物联网平台推送的JSON格式报文。报文的内容包括设备类型、设备名称、ID号、水流量、推送时间等。

4 系统测试

为验证系统中智能水表、STM32最小系统、阿里云物联网平台和Web应用是否正常运行,需要对设备端的智能水表水流量采集、水流量上传及推送、Web应用页面访问及数据可视化显示和系统水流量采集4部分进行测试。

为模拟智能水表的真实工作场景,选择风扇作为水流动力源,风扇产生的风作为模拟驱动水表计量仪器转动的水流,从而构成一个完整的智能水表水流量采集系统实验环境。系统实物如图13所示。

图13 水流量采集系统实验环境整体实物

4.1 智能水表水流量采集

STM32F103单片机通过串口接收水流量并控制BC26模块上传,数据格式为JSON。JSON数据包含了2个相邻时刻水流量的增量,其中value表示水流量值,data表示水流量增量的值。将STM32F103单片机通过USB转串口与电脑连接,可在电脑的串口助手中显示该JSON数据,如图14所示。

图14 BC26模块发送的JSON格式数据

4.2 水流量上传及推送

Web页面显示的水流量数据首先需要上传至阿里云物联网平台,然后通过高级消息队列(AMQP)推送至应用端的Tomcat服务器。在阿里云物联网平台的日志服务中,可以实时查看智能水表设备端与平台的连接情况和数据传输记录,记录内容包括物模型、物模型消息、设备到云消息、云到设备消息和服务端订阅5种类型,如图15所示。

图15 智能水表运行过程中在阿里云物联网平台产生的日志记录

在Web页面中点击“AMQP连接”按键,控制Tomcat服务器与阿里云物联网平台通过高级消息队列协议(AMQP)连接。阿里云物联网平台通过高级消息队列(AMQP)推送JSON数据至Tomcat服务器,JSON数据被缓存在当前Web应用路径的txt文件中,txt文件存储的JSON数据如图16所示。

图16 AMQP推送的JSON数据

4.3 Web页面访问及数据显示

开启Tomcat服务器,在浏览器中输入http://pyl:8080访问html目录下的webSocketChat.html页面,点击“连接AMQP”按键后,页面上显示水表的当前总水流量及其变化曲线和柱状图。Web页面显示AMQP连接结果和WebSocket连接状态,通过WebSocket接收Tomcat服务器返回的JSON数据并在页面中实时显示。在智能水表设备端正常发送水流量数据时,通过累加每次接收到的水流量得到总水流量,并在Web页面中显示。运行中的Web页面如图17所示。

图17 运行中的Web页面

4.4 系统水流量采集

系统水流量采集测试是为了验证系统在运行时所采集的数据是否准确,进一步证明系统的可行性。

自智能水表设备端上电运行后发送的第一条数据开始,Web应用端将接收的数据逐条累计,作为水表在该运行时间段内的总水流量,并在Web页面上实时显示。选取水表在分辨率为0.001 m处表盘指针指在0刻度时的记录值为总水流量初始值l,l在Web页面上显示的值为28.5 L,即0.028 5 m,如图18(a)所示。当该表盘指针由0刻度处转动到9刻度处时,记测量到的总水流量为l,水流量从l到l增加了A=9 L,即0.009 m,总水流量l在Web页面上显示的值为37.5 L,即0.037 5 m,如图18(b)所示。因此,以l为初始起点,智能水表测得总水流量为l时,水流量差见式(1):

图18 相邻两个时刻水流量采集测试结果

上述结果表明,本系统成功实现了水流量的准确采集并能够在Web应用中实时稳定地显示总水流量的值,进一步说明了本系统具备较高的可行性和稳定性。

5 结 语

基于自主设计的计量芯片模块与NB-IoT技术,提出并实现了一种新型物联网智能水表系统。BC26模块使用MQTT协议与阿里云物联网平台实现通信,本地Tomcat服务器通过高级消息队列协议(AMQP)可接收阿里云物联网平台推送的包含水流量的JSON数据,利用WebSocket技术实现Web页面与Tomcat的双向数据传输,Web页面可实时更新水流量的变化并向Tomcat服务器发送控制指令。该系统解决了智能水表计量的水流量实时采集、无线传输和数据可视化问题,可满足实际使用要求。测试结果表明,系统具有抗干扰能力强、稳定性和实时性高等优点,可替代传统的人工抄读水表数据工作方式,为实现水表的智能化管理提供新型解决方案,具有较好的实际应用价值。

猜你喜欢

智能水表水流量阿里
M701F4燃气轮机TCA系统冷却水流量异常分析
浅析智能水表对用水计量检测装置的性能影响
智能水表的计量特性与应用现状分析
云上阿里
国产纳滤膜脱除硝酸盐的试验研究
基于重力方向影响的低压涡轮叶片水流量测量数值计算
辰辰带你游阿里
江西:全面推广使用智能水表
阿里战略
330MW机组主蒸汽流量计量不准的原因分析及措施