陸 雨,鐘良驥,廖海斌,高 山
(湖北科技學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 咸寧 437100)
水泵作為常見的生產(chǎn)工具,錯(cuò)誤使用和維護(hù)不及時(shí)會(huì)造成故障,導(dǎo)致宕機(jī),影響生產(chǎn)生活。如何在運(yùn)行中更早知道水泵的運(yùn)行狀態(tài),做出正確的維修保養(yǎng)計(jì)劃,非常重要。通過物聯(lián)網(wǎng)技術(shù),水泵聯(lián)網(wǎng)可以快速、準(zhǔn)確、方便地實(shí)現(xiàn)設(shè)備檢測(cè),能夠大大降低人力成本、提高生產(chǎn)效率。因此,智能水泵有著巨大的經(jīng)濟(jì)效益和社會(huì)效益,水泵操控體系的自動(dòng)化、網(wǎng)絡(luò)化和智能化是大勢(shì)所趨。
本文結(jié)合A9G物聯(lián)網(wǎng)模塊、STM32單片機(jī)及相關(guān)傳感器,設(shè)計(jì)一套硬件成本低、功能全、穩(wěn)定性好、性價(jià)比高的水泵控制板。它將采集到的水泵運(yùn)行參數(shù)傳送至物聯(lián)網(wǎng)平臺(tái),從而實(shí)現(xiàn)對(duì)流量、揚(yáng)程、轉(zhuǎn)速、水泵、電動(dòng)閥門等數(shù)據(jù)的遠(yuǎn)程實(shí)時(shí)監(jiān)控以及動(dòng)態(tài)管理。用戶可以通過水泵物聯(lián)網(wǎng)平臺(tái)或手機(jī)掃描二維碼的客戶端對(duì)水泵、電動(dòng)閥門的運(yùn)行狀態(tài)進(jìn)行查看與控制。
智能水泵物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì)思路是:感知層實(shí)現(xiàn)水泵的監(jiān)測(cè)與控制;網(wǎng)絡(luò)層實(shí)現(xiàn)狀態(tài)數(shù)據(jù)的傳輸;應(yīng)用層完成人機(jī)交互和數(shù)據(jù)分析。
智能水泵的工作流程分三步:(1)通過平臺(tái)的認(rèn)證服務(wù)器,獲取設(shè)備三元組信息和GPS地圖配置信息。(2)設(shè)備基于MQTT協(xié)議與IOT中間件建立連接,設(shè)備采用發(fā)布與訂閱的工作方式,實(shí)現(xiàn)穩(wěn)定高效的網(wǎng)絡(luò)連接。(3)用戶通過Web端和微信公眾號(hào)客戶端管理水泵。其中,每個(gè)水泵有唯一的設(shè)備編號(hào),以及對(duì)應(yīng)的二維碼;采用A9G物聯(lián)網(wǎng)模塊及STM32單片機(jī),基于互聯(lián)網(wǎng)實(shí)現(xiàn)快速上云,實(shí)現(xiàn)對(duì)水泵的狀態(tài)采集和傳輸,其中包括水泵的溫度、電壓、電流、功率、振幅、轉(zhuǎn)速等,并支持水泵流量的實(shí)時(shí)監(jiān)測(cè)。在平臺(tái)上,用戶可以看到所有在線水泵的狀態(tài)信息,查閱水泵在不同時(shí)間段的日志信息和工作情況。
詳細(xì)開發(fā)步驟如下:
第一步,通過平臺(tái)創(chuàng)建水泵的數(shù)據(jù)模型,實(shí)現(xiàn)真實(shí)設(shè)備與虛擬設(shè)備的數(shù)據(jù)映射,每個(gè)水泵有一份獨(dú)立的數(shù)據(jù)表。水泵設(shè)備實(shí)時(shí)上報(bào)的位置信息,方便維護(hù)者異地檢修;同時(shí)支持設(shè)備的在線升級(jí)和調(diào)試。
第二步,設(shè)備的配置信息和實(shí)時(shí)狀態(tài)存儲(chǔ)在Mysql數(shù)據(jù)庫中;水泵產(chǎn)生的數(shù)據(jù)基于規(guī)則引擎,存儲(chǔ)在TSDB時(shí)序數(shù)據(jù)庫中。時(shí)序數(shù)據(jù)庫詳細(xì)記錄上報(bào)的工作日志,通過數(shù)據(jù)清洗和處理,一方面快速生成圖表;另一面為設(shè)備的故障診斷提供海量數(shù)據(jù)源。同時(shí)TSDB與Grafana結(jié)合實(shí)現(xiàn)對(duì)數(shù)據(jù)運(yùn)維功能,設(shè)備故障模型可以進(jìn)一步分析設(shè)備的狀態(tài)變化,實(shí)現(xiàn)故障預(yù)測(cè)。
圖1 系統(tǒng)拓?fù)鋱D
圖2 硬件原理圖
智能水泵分為三部分:水泵是受控單元;STM32單片機(jī)及傳感器是實(shí)現(xiàn)數(shù)據(jù)的采集、處理及上傳的智慧單元;A9G模塊是連接云端與設(shè)備的網(wǎng)絡(luò)通信單元。具體功能如下:
(1)傳感器采集水泵在運(yùn)行時(shí)的溫度、電壓電流、功率、振幅、轉(zhuǎn)速等數(shù)據(jù)上傳給STM32單片機(jī),再通過云端下傳的指令控制水泵的開關(guān)。
(2)STM32單片機(jī)將傳感器上傳的數(shù)據(jù)進(jìn)行處理及整合,再通過串口上傳給A9G物聯(lián)網(wǎng)模塊,A9G模塊通過串口下發(fā)控制指令給STM32單片機(jī)實(shí)施水泵的控制。
(3)通過A9G模塊,實(shí)現(xiàn)HTTP的認(rèn)證和MQTT的連接,將數(shù)據(jù)上傳到平臺(tái),包括GPS定位信息,實(shí)現(xiàn)數(shù)據(jù)的快速透?jìng)鳌?/p>
(4)掃描水泵的二維碼,實(shí)現(xiàn)手機(jī)與水泵的連接,從而對(duì)水泵進(jìn)行控制。
水泵在工作時(shí),若溫度過大、電流電壓不穩(wěn)定,轉(zhuǎn)速過快或過慢,需檢查水泵是否出現(xiàn)故障;若震動(dòng)頻率過大可能需更換軸承。因此,水泵狀態(tài)數(shù)據(jù)的采集、計(jì)算、控制、傳輸?shù)裙δ茈娐?,主要圍繞以下幾個(gè)方面實(shí)現(xiàn):
(1)將STM32單片機(jī)作為進(jìn)行數(shù)據(jù)的處理及上傳的智慧單元。
(2)將A9G物聯(lián)網(wǎng)模塊作為將數(shù)據(jù)上傳以及控制指令下發(fā)的通訊單元。
(3)通過電壓電流互感器采集水泵的電流電壓數(shù)據(jù)。
(4)通過DS18B20溫度傳感器采集水泵的溫度。
(5)通過PVDF壓電薄膜振動(dòng)傳感器檢測(cè)水泵的振動(dòng)頻率。
(6)通過轉(zhuǎn)速傳感器計(jì)算水泵的旋轉(zhuǎn)速率。
(7)通過繼電器對(duì)水泵的啟動(dòng)與關(guān)閉進(jìn)行控制。
圖3 硬件電路圖
A9G模塊作為水泵的通信單元,內(nèi)部集成了GK9501,高性能、高集成度、低功耗、低成本的多模衛(wèi)星定位導(dǎo)航芯片,支持BDS/GPS/GLONASS/GALILEO/QZSS/SBAS與GPRS芯片的串口相連,使用RDA8955作為主控芯片,內(nèi)部集成了GSM/GPRS等協(xié)議棧。
模塊具有支持快速認(rèn)證聯(lián)網(wǎng)、斷電不丟失數(shù)據(jù)、應(yīng)答式的工作機(jī)制、標(biāo)準(zhǔn)JSON的數(shù)據(jù)格式、超低功耗等的優(yōu)點(diǎn)。該模塊的功能設(shè)計(jì)架構(gòu)如圖4所示。
圖4 A9G架構(gòu)圖
1.A9G模塊的關(guān)鍵技術(shù)
(1)模塊支持MQTT、HTTP和UART等通信協(xié)議。其中,與服務(wù)器之間通過HTTP協(xié)議認(rèn)證,獲取本設(shè)備的配置信息;通過MQTT協(xié)議與平臺(tái)連接,實(shí)現(xiàn)數(shù)據(jù)透?jìng)?;與底層硬件通信采用串口,兼顧自適應(yīng)波特率。
(2)模塊周期性采集定位信息、用戶可通過平臺(tái)服務(wù)器獲取當(dāng)前位置信息、運(yùn)動(dòng)軌跡等。
(3)模塊預(yù)留3路串口、3個(gè)I2C接口、1個(gè)加速度計(jì)LIS3DHx芯片、29個(gè)GPIO,不僅方便外部電路的直接聯(lián)網(wǎng),同時(shí)還支持更多MCU。
2.A9G工作流程
圖5 傳輸單元
(1)啟動(dòng)通訊模塊:按電源管理介紹方式,正常供電后系統(tǒng)會(huì)開始工作。
(2)檢查SIM卡正常:如果SIM無法使用或沒有插入SIM卡,系統(tǒng)將無法進(jìn)行后續(xù)操作。
事件監(jiān)聽參數(shù):API_EVENT_ID_NO_SIMCARD;
等待網(wǎng)絡(luò)連接:OS_WaitForSemaphore(semStart, OS_TIM E_OUT_WAIT_FOREVER)。
(3)硬件初始化:初始化UART、GPIO、GPS等初始設(shè)置。
UART初始化:UART_Init(UART1, config);
GPIO初始化:GPIO_Init(gpioLedBlue1);
GPS初始化:GPS_Init();GPS_Open(NULL)。
(4)獲取設(shè)備MAC:調(diào)用INFO_GetIMEI(imei)函數(shù)即可獲取設(shè)備MAC號(hào),并將其轉(zhuǎn)為JSON格式。
MAC號(hào)獲取:INFO_GetIMEI(imei)。
(5)HTTP、MQTT初始化:將從平臺(tái)服務(wù)器獲取的信息解析,存儲(chǔ)相應(yīng)的配置信息。
配置信息解析:Get_ConfigMessage()。
(6)開啟時(shí)鐘進(jìn)程:通過TIME_SetIsAutoUpdateRtcTime()函數(shù)獲取網(wǎng)絡(luò)同步時(shí)間,再用TIME_SetRtcTIme(&time)設(shè)置本地RTC時(shí)間,每秒刷新一次。
時(shí)間同步:TIME_SetIsAutoUpdateRtcTime();TIME_SetRtcTIme(&time);
(7)開啟GPS進(jìn)程:按設(shè)定頻率采集GPS坐標(biāo),將GPS坐標(biāo)信息組合成JSON格式通過HTTP-POST上拋給鷹眼,坐標(biāo)采集頻率、數(shù)據(jù)上拋頻率皆可通過MQTT調(diào)控。
獲取經(jīng)緯度:gcvt(latitude, 6, buff1);gcvt(longitude, 6, buff2);
獲取時(shí)間戳:gettimeofday(&tv, NULL);
HTTP-POST上拋數(shù)據(jù):Http_Post(HTTP_SERVER_IP, HTTP_SERVER_PORT,HTTP_SERVER_PATH,postbuff,sizeof(postbuff)
(8)數(shù)據(jù)采集進(jìn)程:采集傳感器數(shù)據(jù)、串口數(shù)據(jù)、執(zhí)行器狀態(tài)。將數(shù)據(jù)組合成JSON格式。執(zhí)行控制命令。
數(shù)據(jù)監(jiān)聽事件參數(shù):API_EVENT_ID_UART_RECEIVED。
(9)開啟MQTT進(jìn)程:建立MQTT連接,監(jiān)控平臺(tái)通訊數(shù)據(jù),上拋本地?cái)?shù)據(jù),解析平臺(tái)數(shù)據(jù)。關(guān)鍵函數(shù)如表1:
表1 MQTT接口
水泵的智慧單元,我們選擇了高性能、低成本、低功耗的STM32單片機(jī)。該處理器采用ARM 內(nèi)核,針對(duì)水泵領(lǐng)域,它具有強(qiáng)干擾性、滿足惡劣工作條件下穩(wěn)定持續(xù)工作的要求。此外,STM32外設(shè)包括10個(gè)定時(shí)器、兩個(gè)12位1-Msample/s 模數(shù)轉(zhuǎn)換器 (交錯(cuò)模式下2-Msample/s)、兩個(gè)12位數(shù)模轉(zhuǎn)換器、兩個(gè)I2C接口、五個(gè)USART接口和三個(gè)SPI端口。新產(chǎn)品外設(shè)共有12條DMA通道,還有一個(gè)CRC計(jì)算單元,支持96位唯一標(biāo)識(shí)碼。STM32的豐富資源,可以滿足智能水泵的開發(fā)要求。
1.STM32關(guān)鍵技術(shù)
(1)通過電壓電流互感器采集水泵的電流電壓數(shù)據(jù)。
(2)通過DS18B20溫度傳感器采集水泵的溫度。
(3)通過PVDF壓電薄膜振動(dòng)傳感器檢測(cè)水泵的振動(dòng)頻率。
(4)通過轉(zhuǎn)速傳感器計(jì)算水泵的旋轉(zhuǎn)速率。
(5)通過繼電器對(duì)水泵的啟動(dòng)與關(guān)閉進(jìn)行控制
2.STM32工作流程
圖6 智慧單元
設(shè)備硬件初始化:初始化UART等設(shè)備,并啟動(dòng)芯片。采集數(shù)據(jù)進(jìn)程:
(1)啟動(dòng)DS18B20:Start18B20();
(2)串口處理初始化:uart_init();
UartDriver();
UartRxMonitor(unsigned char ms);
ConfigUART(unsigned int baud);
發(fā)送函數(shù):UartWrite(unsigned char *buf, unsigned char len);
接收函數(shù):UartRead(unsigned char *buf, unsigned char len);
(3)I2C/AD轉(zhuǎn)換:GetADCValue(unsigned char chn);
I2CReadACK();I2CReadNAK();
I2CWrite(unsigned char dat);
(4)中斷定時(shí):ConfigTimer0(unsigned int ms);
(5)整型轉(zhuǎn)字符串:IntToString(unsigned char *str, int dat);
(6)其它重要函數(shù)(見表2):
表2 參數(shù)表
登錄物聯(lián)網(wǎng)平臺(tái)(www.920iot.com),用戶可以創(chuàng)建設(shè)備模型。根據(jù)水泵采集和控制要求,完成各項(xiàng)屬性的添加,包括執(zhí)行器動(dòng)作的添加,以及預(yù)警上限和下限的設(shè)定。
完成上述操作后,用戶可以在設(shè)備模型列表中查看剛創(chuàng)建好的模型,如圖7所示。
圖7 水泵模型
根據(jù)水泵模型,用戶開始創(chuàng)建具體的水泵影子。根據(jù)設(shè)備MAC地址,創(chuàng)建好設(shè)備名稱,作為水泵在系統(tǒng)中的唯一身份。創(chuàng)建好影子,用戶可以查看到設(shè)備聯(lián)網(wǎng)的配置信息、設(shè)備的各項(xiàng)屬性,還可以進(jìn)一步添加聯(lián)動(dòng)操作。如圖8所示。
圖8 水泵影子
開機(jī)啟動(dòng)智能水泵后,STM32單片機(jī)開始進(jìn)行數(shù)據(jù)采集,A9G物聯(lián)網(wǎng)模塊開始連接平臺(tái)。標(biāo)準(zhǔn)化的數(shù)據(jù)協(xié)議和格式,使硬件與平臺(tái)之間,實(shí)現(xiàn)快速有效的連接。
圖9 智能水泵
水泵上線后,用戶可以在平臺(tái)或客戶端上查看設(shè)備在線狀態(tài)以及是否處于告警狀態(tài);如果該設(shè)備處于告警狀態(tài),用戶點(diǎn)擊告警按鈕就會(huì)清除告警。如圖10所示。
圖10水泵詳情
水泵采集的狀態(tài),通過儀表盤顯示;開關(guān)動(dòng)作等命令,可以通過綁定的按鍵,直接控制。如圖11所示。
圖11 水泵屬性
用戶可以查看一段時(shí)間內(nèi)該設(shè)備所有屬性或者單個(gè)屬性的歷史狀態(tài),如圖12所示。
圖12 歷史狀態(tài)
A9G模塊,不僅具有GPRS透?jìng)鞴δ?,還具有GPS定位功能。水泵物聯(lián)網(wǎng)平臺(tái),通過調(diào)用第三方地圖API接口,可以快速定位水泵具體位置,方便水泵后期的檢修和維護(hù)。
圖13 水泵定位
掃描水泵上的二維碼,用戶可進(jìn)入水泵公眾號(hào)的管理頁面。水泵的所有信息和狀態(tài)一目了然,方便用戶遠(yuǎn)程異地實(shí)時(shí)的管理水泵。
通過水泵物聯(lián)網(wǎng)平臺(tái),實(shí)時(shí)掌握水泵的位置信息,并在地圖上展示;實(shí)時(shí)監(jiān)控并展示水泵的運(yùn)行狀態(tài)及采集各種運(yùn)行數(shù)據(jù),包括運(yùn)行停止時(shí)間、運(yùn)行時(shí)長、故障時(shí)間、故障內(nèi)容等數(shù)據(jù)。水泵設(shè)備管理,包括設(shè)備型號(hào)、設(shè)備參數(shù)、設(shè)備位置、設(shè)備投入時(shí)間等信息;水泵故障管理,記錄故障信息,并準(zhǔn)確推送給相關(guān)工作人員,并生成故障統(tǒng)計(jì)報(bào)表方便工作人員分析處理;智能統(tǒng)計(jì)分析,對(duì)于歷史運(yùn)行狀態(tài)、歷史故障記錄以餅狀圖和表格方式展示,并結(jié)合大數(shù)據(jù)分析技術(shù)進(jìn)行輔助決策; 生命周期管理,根據(jù)設(shè)備維護(hù)周期,智能提醒客戶進(jìn)行設(shè)備維護(hù)或保養(yǎng)。
綜述上述,水泵物聯(lián)網(wǎng)系統(tǒng),可以有效保障水泵穩(wěn)定高效的工作,還能幫助用戶快速方便的管理,協(xié)助水利部門通過水泵大數(shù)據(jù)平臺(tái)綜合治理,為農(nóng)村水利灌溉、城市供水、管道排污等行業(yè)應(yīng)用提供智力支持和技術(shù)保障。
湖北科技學(xué)院學(xué)報(bào)2020年2期