陆 雨,钟良骥,廖海斌,高 山
(湖北科技学院 计算机科学与技术学院,湖北 咸宁 437100)
水泵作为常见的生产工具,错误使用和维护不及时会造成故障,导致宕机,影响生产生活。如何在运行中更早知道水泵的运行状态,做出正确的维修保养计划,非常重要。通过物联网技术,水泵联网可以快速、准确、方便地实现设备检测,能够大大降低人力成本、提高生产效率。因此,智能水泵有着巨大的经济效益和社会效益,水泵操控体系的自动化、网络化和智能化是大势所趋。
本文结合A9G物联网模块、STM32单片机及相关传感器,设计一套硬件成本低、功能全、稳定性好、性价比高的水泵控制板。它将采集到的水泵运行参数传送至物联网平台,从而实现对流量、扬程、转速、水泵、电动阀门等数据的远程实时监控以及动态管理。用户可以通过水泵物联网平台或手机扫描二维码的客户端对水泵、电动阀门的运行状态进行查看与控制。
智能水泵物联网系统的设计思路是:感知层实现水泵的监测与控制;网络层实现状态数据的传输;应用层完成人机交互和数据分析。
智能水泵的工作流程分三步:(1)通过平台的认证服务器,获取设备三元组信息和GPS地图配置信息。(2)设备基于MQTT协议与IOT中间件建立连接,设备采用发布与订阅的工作方式,实现稳定高效的网络连接。(3)用户通过Web端和微信公众号客户端管理水泵。其中,每个水泵有唯一的设备编号,以及对应的二维码;采用A9G物联网模块及STM32单片机,基于互联网实现快速上云,实现对水泵的状态采集和传输,其中包括水泵的温度、电压、电流、功率、振幅、转速等,并支持水泵流量的实时监测。在平台上,用户可以看到所有在线水泵的状态信息,查阅水泵在不同时间段的日志信息和工作情况。
详细开发步骤如下:
第一步,通过平台创建水泵的数据模型,实现真实设备与虚拟设备的数据映射,每个水泵有一份独立的数据表。水泵设备实时上报的位置信息,方便维护者异地检修;同时支持设备的在线升级和调试。
第二步,设备的配置信息和实时状态存储在Mysql数据库中;水泵产生的数据基于规则引擎,存储在TSDB时序数据库中。时序数据库详细记录上报的工作日志,通过数据清洗和处理,一方面快速生成图表;另一面为设备的故障诊断提供海量数据源。同时TSDB与Grafana结合实现对数据运维功能,设备故障模型可以进一步分析设备的状态变化,实现故障预测。
图1 系统拓扑图
图2 硬件原理图
智能水泵分为三部分:水泵是受控单元;STM32单片机及传感器是实现数据的采集、处理及上传的智慧单元;A9G模块是连接云端与设备的网络通信单元。具体功能如下:
(1)传感器采集水泵在运行时的温度、电压电流、功率、振幅、转速等数据上传给STM32单片机,再通过云端下传的指令控制水泵的开关。
(2)STM32单片机将传感器上传的数据进行处理及整合,再通过串口上传给A9G物联网模块,A9G模块通过串口下发控制指令给STM32单片机实施水泵的控制。
(3)通过A9G模块,实现HTTP的认证和MQTT的连接,将数据上传到平台,包括GPS定位信息,实现数据的快速透传。
(4)扫描水泵的二维码,实现手机与水泵的连接,从而对水泵进行控制。
水泵在工作时,若温度过大、电流电压不稳定,转速过快或过慢,需检查水泵是否出现故障;若震动频率过大可能需更换轴承。因此,水泵状态数据的采集、计算、控制、传输等功能电路,主要围绕以下几个方面实现:
(1)将STM32单片机作为进行数据的处理及上传的智慧单元。
(2)将A9G物联网模块作为将数据上传以及控制指令下发的通讯单元。
(3)通过电压电流互感器采集水泵的电流电压数据。
(4)通过DS18B20温度传感器采集水泵的温度。
(5)通过PVDF压电薄膜振动传感器检测水泵的振动频率。
(6)通过转速传感器计算水泵的旋转速率。
(7)通过继电器对水泵的启动与关闭进行控制。
图3 硬件电路图
A9G模块作为水泵的通信单元,内部集成了GK9501,高性能、高集成度、低功耗、低成本的多模卫星定位导航芯片,支持BDS/GPS/GLONASS/GALILEO/QZSS/SBAS与GPRS芯片的串口相连,使用RDA8955作为主控芯片,内部集成了GSM/GPRS等协议栈。
模块具有支持快速认证联网、断电不丢失数据、应答式的工作机制、标准JSON的数据格式、超低功耗等的优点。该模块的功能设计架构如图4所示。
图4 A9G架构图
1.A9G模块的关键技术
(1)模块支持MQTT、HTTP和UART等通信协议。其中,与服务器之间通过HTTP协议认证,获取本设备的配置信息;通过MQTT协议与平台连接,实现数据透传;与底层硬件通信采用串口,兼顾自适应波特率。
(2)模块周期性采集定位信息、用户可通过平台服务器获取当前位置信息、运动轨迹等。
(3)模块预留3路串口、3个I2C接口、1个加速度计LIS3DHx芯片、29个GPIO,不仅方便外部电路的直接联网,同时还支持更多MCU。
2.A9G工作流程
图5 传输单元
(1)启动通讯模块:按电源管理介绍方式,正常供电后系统会开始工作。
(2)检查SIM卡正常:如果SIM无法使用或没有插入SIM卡,系统将无法进行后续操作。
事件监听参数:API_EVENT_ID_NO_SIMCARD;
等待网络连接:OS_WaitForSemaphore(semStart, OS_TIM E_OUT_WAIT_FOREVER)。
(3)硬件初始化:初始化UART、GPIO、GPS等初始设置。
UART初始化:UART_Init(UART1, config);
GPIO初始化:GPIO_Init(gpioLedBlue1);
GPS初始化:GPS_Init();GPS_Open(NULL)。
(4)获取设备MAC:调用INFO_GetIMEI(imei)函数即可获取设备MAC号,并将其转为JSON格式。
MAC号获取:INFO_GetIMEI(imei)。
(5)HTTP、MQTT初始化:将从平台服务器获取的信息解析,存储相应的配置信息。
配置信息解析:Get_ConfigMessage()。
(6)开启时钟进程:通过TIME_SetIsAutoUpdateRtcTime()函数获取网络同步时间,再用TIME_SetRtcTIme(&time)设置本地RTC时间,每秒刷新一次。
时间同步:TIME_SetIsAutoUpdateRtcTime();TIME_SetRtcTIme(&time);
(7)开启GPS进程:按设定频率采集GPS坐标,将GPS坐标信息组合成JSON格式通过HTTP-POST上抛给鹰眼,坐标采集频率、数据上抛频率皆可通过MQTT调控。
获取经纬度:gcvt(latitude, 6, buff1);gcvt(longitude, 6, buff2);
获取时间戳:gettimeofday(&tv, NULL);
HTTP-POST上抛数据:Http_Post(HTTP_SERVER_IP, HTTP_SERVER_PORT,HTTP_SERVER_PATH,postbuff,sizeof(postbuff)
(8)数据采集进程:采集传感器数据、串口数据、执行器状态。将数据组合成JSON格式。执行控制命令。
数据监听事件参数:API_EVENT_ID_UART_RECEIVED。
(9)开启MQTT进程:建立MQTT连接,监控平台通讯数据,上抛本地数据,解析平台数据。关键函数如表1:
表1 MQTT接口
水泵的智慧单元,我们选择了高性能、低成本、低功耗的STM32单片机。该处理器采用ARM 内核,针对水泵领域,它具有强干扰性、满足恶劣工作条件下稳定持续工作的要求。此外,STM32外设包括10个定时器、两个12位1-Msample/s 模数转换器 (交错模式下2-Msample/s)、两个12位数模转换器、两个I2C接口、五个USART接口和三个SPI端口。新产品外设共有12条DMA通道,还有一个CRC计算单元,支持96位唯一标识码。STM32的丰富资源,可以满足智能水泵的开发要求。
1.STM32关键技术
(1)通过电压电流互感器采集水泵的电流电压数据。
(2)通过DS18B20温度传感器采集水泵的温度。
(3)通过PVDF压电薄膜振动传感器检测水泵的振动频率。
(4)通过转速传感器计算水泵的旋转速率。
(5)通过继电器对水泵的启动与关闭进行控制
2.STM32工作流程
图6 智慧单元
设备硬件初始化:初始化UART等设备,并启动芯片。采集数据进程:
(1)启动DS18B20:Start18B20();
(2)串口处理初始化:uart_init();
UartDriver();
UartRxMonitor(unsigned char ms);
ConfigUART(unsigned int baud);
发送函数:UartWrite(unsigned char *buf, unsigned char len);
接收函数:UartRead(unsigned char *buf, unsigned char len);
(3)I2C/AD转换:GetADCValue(unsigned char chn);
I2CReadACK();I2CReadNAK();
I2CWrite(unsigned char dat);
(4)中断定时:ConfigTimer0(unsigned int ms);
(5)整型转字符串:IntToString(unsigned char *str, int dat);
(6)其它重要函数(见表2):
表2 参数表
登录物联网平台(www.920iot.com),用户可以创建设备模型。根据水泵采集和控制要求,完成各项属性的添加,包括执行器动作的添加,以及预警上限和下限的设定。
完成上述操作后,用户可以在设备模型列表中查看刚创建好的模型,如图7所示。
图7 水泵模型
根据水泵模型,用户开始创建具体的水泵影子。根据设备MAC地址,创建好设备名称,作为水泵在系统中的唯一身份。创建好影子,用户可以查看到设备联网的配置信息、设备的各项属性,还可以进一步添加联动操作。如图8所示。
图8 水泵影子
开机启动智能水泵后,STM32单片机开始进行数据采集,A9G物联网模块开始连接平台。标准化的数据协议和格式,使硬件与平台之间,实现快速有效的连接。
图9 智能水泵
水泵上线后,用户可以在平台或客户端上查看设备在线状态以及是否处于告警状态;如果该设备处于告警状态,用户点击告警按钮就会清除告警。如图10所示。
图10水泵详情
水泵采集的状态,通过仪表盘显示;开关动作等命令,可以通过绑定的按键,直接控制。如图11所示。
图11 水泵属性
用户可以查看一段时间内该设备所有属性或者单个属性的历史状态,如图12所示。
图12 历史状态
A9G模块,不仅具有GPRS透传功能,还具有GPS定位功能。水泵物联网平台,通过调用第三方地图API接口,可以快速定位水泵具体位置,方便水泵后期的检修和维护。
图13 水泵定位
扫描水泵上的二维码,用户可进入水泵公众号的管理页面。水泵的所有信息和状态一目了然,方便用户远程异地实时的管理水泵。
通过水泵物联网平台,实时掌握水泵的位置信息,并在地图上展示;实时监控并展示水泵的运行状态及采集各种运行数据,包括运行停止时间、运行时长、故障时间、故障内容等数据。水泵设备管理,包括设备型号、设备参数、设备位置、设备投入时间等信息;水泵故障管理,记录故障信息,并准确推送给相关工作人员,并生成故障统计报表方便工作人员分析处理;智能统计分析,对于历史运行状态、历史故障记录以饼状图和表格方式展示,并结合大数据分析技术进行辅助决策; 生命周期管理,根据设备维护周期,智能提醒客户进行设备维护或保养。
综述上述,水泵物联网系统,可以有效保障水泵稳定高效的工作,还能帮助用户快速方便的管理,协助水利部门通过水泵大数据平台综合治理,为农村水利灌溉、城市供水、管道排污等行业应用提供智力支持和技术保障。