陸 雨,鐘良驥,廖海斌,高 山
(湖北科技學院 計算機科學與技術學院,湖北 咸寧 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 水泵定位
掃描水泵上的二維碼,用戶可進入水泵公眾號的管理頁面。水泵的所有信息和狀態一目了然,方便用戶遠程異地實時的管理水泵。
通過水泵物聯網平臺,實時掌握水泵的位置信息,并在地圖上展示;實時監控并展示水泵的運行狀態及采集各種運行數據,包括運行停止時間、運行時長、故障時間、故障內容等數據。水泵設備管理,包括設備型號、設備參數、設備位置、設備投入時間等信息;水泵故障管理,記錄故障信息,并準確推送給相關工作人員,并生成故障統計報表方便工作人員分析處理;智能統計分析,對于歷史運行狀態、歷史故障記錄以餅狀圖和表格方式展示,并結合大數據分析技術進行輔助決策; 生命周期管理,根據設備維護周期,智能提醒客戶進行設備維護或保養。
綜述上述,水泵物聯網系統,可以有效保障水泵穩定高效的工作,還能幫助用戶快速方便的管理,協助水利部門通過水泵大數據平臺綜合治理,為農村水利灌溉、城市供水、管道排污等行業應用提供智力支持和技術保障。