APP下载

一款基于智能水表的物联网专业自制教学设备实现

2022-03-16夏素霞卜祥轩顾闻浩

物联网技术 2022年3期
关键词:水流量用水量串口

夏素霞,卜祥轩,顾闻浩

(1.北京邮电大学世纪学院 计算机科学与技术系,北京 102101;2. 北京邮电大学世纪学院 通信工程系,北京 102101)

0 引 言

物联网专业是一门交叉学科,涉及计算机、通信技术、电子技术、测控技术等专业基础知识以及管理学、软件开发等多方面知识。截至2019年底,我国开设物联网工程专业的院校共有514所,其中包括南开大学、东南大学、北京邮电大学等传统的985/211院校,但95%以上都是地方本科院校和民办院校等应用型高校。各校都专门为这个新兴专业制定了相应的人才培养方案。以地方应用型院校—北京石油化工学院2019年新增设的物联网工程专业为例,其所搭建的物联网专业智能家居实验室配有电视、电冰箱、风扇、开关、调光灯、指纹锁、RFID节点、传感器节点、控制节点、红外发射接收节点、协调器、网关、路由器、网络摄像机、PC机、ipad;还搭建了物联网技术及应用实验室,其中设有以Cortex A8网关为核心的异构网络系统、多种传感器模型和无线组网模式,可实现多种联网架构。实验系统中包含了感知层、传输层和应用层的能力训练,但各个知识点系统都是设置好的,更多的是验证实验,且缺乏综合感知层、传输层和应用层的能力训练项目。罗方燕等阐述了实践系统的设置情况,提出在第五学期开设“物联网综合项目”,主要是将前面所学的内容进行综合应用,实现简易的物联网系统,可以进行数据采集、处理、存储和浏览等;还介绍了学校相应的实验系统,但未涉及综合实训系统。其他学者在对物联网专业实践教学体系的研究中,提出物联网专业属于工程类专业,实践教学体系的设计要立足于培养学生的工程能力和工程素养。在现有的智能家居等应用中,一般采用直连模式,联入云端服务器的双向应用不多。本系统的架构是基于云端应用和数据采集的物联网专业实训案例,可以更好地帮助学生掌握感知层、传输层和应用层开发的能力。

1 系统功能和总体设计

1.1 系统硬件部分

系统的硬件部分,也就是水表的主体部件,相当于物联网中的感知层,如图1所示。主要设备有定时器、流速传感器、继电器、电磁阀、液晶显示屏、功能键盘、微控制器和通信芯片。主要完成水流量测定、设备防拆卸保护、水流开关控制、流量数据存储以及与上位管理机的通信。设备防拆卸保护主要为了防止用户恶意拆卸和改动水表,如水表被拆卸则会切断电源,通过改变EPROM中的存储标志,使得被拆卸的水表通过外加电源也无法实现程序运行,保护了智能水表的数据安全;硬件系统采用有源系统,有源模块采用电池、电源双供电,如遇突发停电等情况也能照常供水;流量数据存储在EPROM存储区,如遇到紧急断网等情况,单片机将水流数据存储在EPROM中,网络恢复后将数据发送给管理机。如果长时间断网,可能会导致EPROM中存储数据溢出,系统通断模块将强行关闭水表,等待网络恢复后,弹出数据完成同步后,再通过通断模块启动水表正常开启功能。

图1 硬件实物和电路结构图

1.2 系统传输层

系统的传输层共两层:第一层为单片机(下称“终端”)与上位管理机(下称“管理机”)的局域网通信,也称为感知层的通信;第二层是管理机与应用服务器的互联网通信。远程应用服务器通过与公网连接管理机,与管理机同步数据,包括用户的水费和用水量等信息。感知层通信采用ESP8266模块通过WiFi链接AP,再由AP与管理机通信。感知层通信为主从式通信,管理机向终端发送指令,终端执行。如需要终端上报用水量数据,管理机会向单片机发送抄表指令,终端收到后会将数据上报至管理机。如需更新数据、控制阀门通断状态等,管理机会发送相应的指令报文,终端收到后会执行。

在终端开发过程中,用Arduino开发工具对ESP8266进行编程,通过程序预设ESP8266需要连接的WiFi以及管理机的IP和端口号;并对其功能进行配置,使得ESP8266上电后能自动连接服务器,如果连接服务器失败则通过串口向单片机报告,如果连接成功则等待服务器发送数据和指令后将从串口收到的单片机内容封装传送给单片机。

1.3 系统应用层

管理机的数据信息经过整理后,形成用户用水数据上传到应用服务器,存储在数据库中,系统的应用层将读取数据库中的数据,实现数据处理、存储、分析等功能的软件平台。本系统应用层利用Flutter开发工具实现移动端数据处理、存储、分析、查询等功能的APP应用程序。通过APP用户可以实时查询自己的用水信息、阶梯水量、缴费信息等;自来水公司可以对用水数据进行分析、对欠费用户进行信息提醒等。Flutter开发工具具有跨平台的特性,开发的APP工具可以融合IOS和安卓移动系统。应用层的APP设计可以实现在互联网端查询、修改、展示感知层数据,是物联网技术中数据应用的重要内容。

2 系统硬件设计

高效且稳定的硬件设计是保证水表系统可靠性的重要前提,本设计主要包括围绕微控制器的主控设计和围绕霍尔传感器的探头设计。

2.1 主板电路设计

控制系统采用的STC15F2K60S2系列单片机是单时钟/机器周期的单片机,是高速、高可靠、低功耗、超强抗干扰的新一代8051单片机;采用STC第八代加密技术,无法解密;指令代码完全兼容传统8051,但速度快8~12倍;3路CCP/PWM/PCA、8路高速10位A/D转换(30万次/秒),内置2 KB大容量SRAM、2组超高速异步串行通信端口UART1/UART2、1组高速同步串行通信端口SPI,针对多串行口通信、电机控制、强干扰场合。

微控制器最小系统由微控制器、电源电路和存储构成。STC15F2K60S2的工作电压为5 V,为满足系统可依靠内部紧凑电源独立运行的需求,设计了可通过二极管自动选择的双供电方案,分别为由4节可充电电池供电和由12 V圆口接口向可充电电池供电的降压供电方案。7 V电源接入时二极管截止,电池不会为设备供电,同时电源为电池反向充电。

单片机及其他芯片的供电引脚接5 V电源,接地引脚接电源负极。单片机P10、P11口设置为串口,交叉连接ESP8266芯片的串口,以此实现单片机与ESP8266芯片通信。单片机P2口连接显示屏幕数据口,实现单片机与屏幕的数据通信,同时P33、P34、P35分别连接显示屏幕的E(片选)、RW(读写模式切换)、RS(命令数据),控制单片机与显示屏幕的通信过程。P32连接霍尔传感器,用于检测水流量。P17管脚用于控制电磁阀门通断。P0口用于接外壳,实现防拆卸功能。主板电路如图2所示。

图2 主板电路

2.2 水流控制模块

水流采集模块包含涡轮和霍尔传感器,水管中流过一定量的水,涡轮就会带动霍尔传感器轴转动一周,霍尔传感器会输出一个正弦波信号,经过比较器形成一组方波。涡轮设计精密时方波数量与用水量成正比,更能精准计算水流量。

水流通断模块采用继电器控制电磁阀门设计,电磁阀门由阀座、电磁线圈和关闭件组成。电源关闭时关闭件插入阀座中,水流截止;电源打开时,电流通过电磁线圈产生电磁力,使关闭件从阀座中脱离,则水流开启。由于电磁阀门开启时需要较强的吸力,采用12 V电源为开启时的电磁阀门供电,由被单片机控制的继电器控制12 V电源通断。单片机可以控制继电器开合,继电器可控制电磁阀开关,电磁阀可控制水流通断。因此本模块可使单片机控制水流通断。

2.3 系统外围I/O模块

显示模块采用LCD1602,它由字符型液晶显示屏(LCD)、控制驱动主电路HD44780和扩展驱动电路HD44100以及少量电阻、电容元件和结构件等装配在PCB板上而组成。显示容量为16×2个字符,字符尺寸为2.95 mm×4.35 mm(宽×高),它能够显示英文字母、阿拉 伯数字,满足日常用户读取水费需要。

系统按键模块按照微控制器I/O口下降沿中断触发模式设计,共设有3个独立功能按键供用户使用。功能分别为开关水流、切换显示费用/水量、切换显示月用水量/周用水量。

系统EPROM采用片内EPROM,用于存储用户用水量以及与管理机通信的秘钥。用户无法提取单片机与管理机的通信秘钥,单片机破解难度大,安全系数较高。

3 系统软件设计

3.1 软件程序模块及功能介绍

系统软件使用 Keil-MDK集成开发环境编写。该环境支持软件的编写、编译、链接和调试,操作简单且功能强大。系统软件功能以底层相互独立的功能程序为基础。各功能程序分别编写完成后通过调用构建完整的抄表系统。系统软件各基础功能见表1所列。

表1 系统软件各基础功能

所有驱动程序均以硬件原理或通信协议为基础、以系统最优调用该模块为原则进行编写。以水流采集程序为例,水流传感器通过霍尔传感器将水流量转化为方波,单片机则通过外部下降沿中断读取方波数量,以此计量出用水量。在防拆卸报警程序中,设备外壳的暗线首尾通过杜邦线连接单片机的管脚,一个管脚发送伪随机数,另一个管脚接收,如接收到的数值与发送的不符,则程序可判定为外壳被非法用户强制拆卸,向主程序返回数值(被拆卸代码)。

3.2 硬件程序模块及功能实现原理

本程序采用中断完成多线程运行程序,图3为主线程流程。主线程中的核心功能主要包括外包装完好测试、单片机水流采集和缓存、管理机与单片机的数据交换。上述核心功能分别通过以下三个线程完成。

图3 主线程流程

(1)判断设备外包装线程

本线程通过定时器中断完成,功能为判断外包装是否完好。如发生非法改动,则会进行设备禁用操作,清除EPROM中的通信密钥,并且强制宕机。系统通过单片机P0口的低四位,产生伪随机数,若被拆卸,高四位无法收到低四位发送的伪随机数,则判断外壳被破坏。此时单片机调用故障函数,让单片机进入故障状态。

(2)水流采集线程

本线程通过外部中断完成。单片机上电初始化后,创建一个长整数型变量用于计量水流量,在下降沿中断程序中该变量自加一,变量值存入EPROM后,该变量清零。

(3)管理机数据获取线程

本线程通过串口中断完成。ESP8266收到服务器发送的信息后,会通过串口将命令以字符串的形式发送给单片机。单片机串口收到每一个字符后,会触发串口中断;单片机通过串口将数据发送给ESP8266,再由ESP8266通过网络将数据发送给服务器。WiFi芯片将上位管理机发送的指令及数据解密,并将解密指令转码后发送给单片机,指令分为长指令和短指令,短指令为1字节,长指令为3~20字节。单片机接收到1字节数据后触发串口中断,若为短指令,立即触发指令对应函数;若为长指令,中断程序将接收到的指令存储在接收队列中,收到结束标志即处理队列中信息,如收到更新数据指令,单片机将根据指令中的信息更新用户的日用水量、周用水量,并将新数据显示在屏幕上。

4 通信功能实现

本系统涉及水表数据与上位管理机的内网通信及管理机与Web应用服务器的互联网通信。可利用NB-IoT模块将数据发送到移动NB-IoT基站,并将水表数据通过NB-IoT模块上传到Web服务器实现智能水表与服务器双向通信。这种连接方式实验成本较高。采用双网卡设置,即上位管理机在通信过程中起着连接内外网的网关作用,因此上位管理机需要安装两块网卡。管理机在内网中发挥Socket服务器的作用,在广域网相当于Web应用服务器终端设备。图4为通信结构。

图4 通信结构

内网段可以按小组分配网段和管理机,内网段ESP8266进行单片机和管理机的双向通信。采用STA模式通过路由器连接局域网,通过设置使ESP8266上电后连接无线路由器,单片机通过串口连接ESP8266,ESP8266模块内编写程序处理与单片机相连的串口发来的数据,通过TCP协议将数据发送给网络上的管理机,并将从管理机接收到的数据通过串口发送给单片机。

系统主要由单片机、管理机构成,设备需要连接到同一个管理机的Socket服务器,由Socket服务器转发数据,以实现两个设备间的通信。单片机连接网络进行通信,是通过将ESP8266模块与路由器WiFi或者其他设备的WiFi进行连接来实现的。将管理机作为Socket服务器,单片机的ESP8266模块作为客户端连接到Socket服务器,即连接到服务器的IP地址和端口号,让两个设备连接到同一个网络中。分别编写客户端通信程序下载到ESP8266模块与管理机Socket服务端通信程序实现数据透传。

4.1 客户端连接服务器

本系统设置单片机的ESP8266模块作为客户端。开发环境为ESP8266开发板、Win7和Arduino。在电脑中下载Arduino开发工具并且配置ESP8266的开发环境以及串口转换器的驱动。

根据现实通信环境配置WiFi的SSID和password、服务器的IP和端口;ESP8266上电后进行初始化,尝试连接WiFi和服务器。连接成功后,ESP8266周期性循环检测网络状态,如发生异常,通过串口向单片机报告,并周期性扫描串口与网络报文。如果从服务器收到TCP报文,则将数据解封装后通过串口发送给单片机;如果从串口接收到数据,则将其封装为TCP报文发送给管理机。

4.2 服务器端通信

服务器端的通信程序安装在管理机上。本系统采用Python开发工具。服务器开启线程后先完成数据库连接;通过Socket开启TCP端口;等待客户端连接后,服务器周期性向客户端发送抄表指令,并接收客户端上报的报文,将报文解封装后写入数据库中;读出数据库中需要与客户端同步的数据,并通过报文的形式下发给客户端,如周用水量、月用水量等。图5为客户端与服务器端的通信流程。

图5 客户端与服务器端的通信流程

5 APP设计

本设计在管理机上设置了Tomcat作为移动端APP的后端Web服务器。由于目前移动端操作系统有IOS和Android两种,基于一种操作系统开发的APP无法在另一个系统的移动端使用。本系统采用Flutter工具开发的基于移动端的APP应用程序,可以融合Android和IOS系统,克服了目前市场上的APP须分平台开发的弊端。

APP应用程序包含了水流量折线图展示以及实时水流量数据、周用水量数据、月用水量数据、周用水费数据、月用水费数据、水流量测量时间数据等信息的查询功能;也可以对水表进行开关操作。以实时水流量监测为例,在启动传感器进行水流量数据采集的同时,数据也会显示在实时水流量折线图中。点击水流量详情可以看到每秒钟更新的水流量数据,业主可以根据此功能监测自己的水表情况。实时水流量监测实现界面如图6所示。

图6 实时水流量监测界面

6 结 语

本文设计了基于智能水表的物联网系统综合训练的自制教学设备,在学院创新团队训练中发挥了很大的作用,并得到改进,获得了北京市“互联网+”创新创业大赛三等奖。在项目开发过程中,可以将项目先分解为多个子系统,训练学生电路设计、单片机控制编程、网络设计和数据库设计等能力,最后进行系统综合训练。这样可以更有效地使学生理解和掌握物联网系统三层结构中的核心要素,达到综合训练学生专业能力的目标。

猜你喜欢

水流量用水量串口
M701F4燃气轮机TCA系统冷却水流量异常分析
新疆生产建设兵团某师用水水平分析与评价
你的用水量是多少?
国产纳滤膜脱除硝酸盐的试验研究
浅谈AB PLC串口跟RFID传感器的通讯应用
澳大利亚研发出新型农业传感器可预测农作物用水量
基于重力方向影响的低压涡轮叶片水流量测量数值计算
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
330MW机组主蒸汽流量计量不准的原因分析及措施