盧佳佳
(福州理工學(xué)院 計算與信息科學(xué)學(xué)院,福建 福州 350506)
伴隨著經(jīng)濟的高速發(fā)展,人民生活質(zhì)量的提高,自來水的使用逐漸普及,傳統(tǒng)水表存在的問題和弊端就慢慢凸顯出來,人工抄表的壓力愈加明顯,得大量的人力投入才能完成抄表任務(wù),智能水表的使用普及迫在眉睫。筆者設(shè)計的云智能水表系統(tǒng),具有將水量計量數(shù)據(jù)通過NB-IOT通信模塊上傳到云端,實現(xiàn)云計量讀數(shù)的遠程抄表功能。
抄表業(yè)務(wù)有著如下特點:用戶眾多對于深度和廣度覆蓋要求高;對功耗十分敏感;對數(shù)據(jù)傳輸?shù)膶崟r性要求不高;海量連接并需要傳輸加密;需要周期性上報,因此特別適合采用LwM2M協(xié)議的數(shù)
據(jù)封裝方式。另外,NB-IOT有著廣覆蓋高、強鏈接、低功耗等優(yōu)點,非常適合于作為抄表業(yè)務(wù)模型的通信接入方式。[1]
本項目采用STM32L431RC芯片處理并將霍爾水流量傳感器產(chǎn)生的脈沖數(shù)據(jù)轉(zhuǎn)換為水量數(shù)據(jù),使用NB-IOT模組將水量數(shù)據(jù)輸送至華為云平臺,將云平臺的數(shù)據(jù)通過定時程序拉取至自建MySQL數(shù)據(jù)庫,以備后續(xù)進行后端數(shù)據(jù)處理及其前端訪問調(diào)用。
采用輕量級SSM(Spring+SpringMVC+Mybatis)Java框架編寫后端。管理人員可登錄智能水表管理系統(tǒng)對用水情況進行查詢并可以打印用水清單,用戶可以通過安卓APP查詢用水情況并進行充值操作。
圖1 系統(tǒng)部署圖
本項目共有四大功能模塊,模塊間配合如圖1所示:
(1)主控芯片控制霍爾水流量傳感器進行數(shù)據(jù)定時采集。
(2)采用LwM2M數(shù)據(jù)封裝方式將傳感數(shù)據(jù)通過NB-IOT模組發(fā)送并傳輸?shù)饺A為云平臺。
(3)使用正確的appId和secret,調(diào)用鑒權(quán)接 口,獲取鑒權(quán)token,實現(xiàn)第三方系統(tǒng)在訪問開放API之前的認證。編寫LiteNaDemo程序?qū)⑷A為平臺數(shù)據(jù)讀出并放入自建MySQL數(shù)據(jù)庫平臺。
(3)使用Spring+SpringMVC+Mybatis框架開發(fā)服務(wù)器程序,前端人員可以通過此系統(tǒng)查詢用戶用水情況。
(4)采用JavaWeb、安卓、微信小程序等多前端平臺展示水量及其繳費情況數(shù)據(jù)。
此次設(shè)計的云智能水表系統(tǒng)運用微控制器STM32L431RC來作為主控核心,芯片具有低功耗的特點。該芯片的定時器/計數(shù)器功能可以采集霍爾水流量傳感器在正確的進水方向進水時產(chǎn)生的脈沖數(shù),并根據(jù)傳感器的標準轉(zhuǎn)化為水量數(shù)據(jù)。用戶定時執(zhí)行程序,通過BC95 Nb-Iot通信模組向華為遠程實驗室平臺傳送數(shù)據(jù),程序設(shè)定每月執(zhí)行一次。
智能水表:由控制器、流量傳感器、光敏傳感器、顯示單元、通信模組、電源單元組成。
控制器:采用ST公司的STM32L431RC微控制器,可以提供良好的系統(tǒng)擴展性能并滿足低功耗需求。
流量傳感器:采用YF-S201型號霍爾型液體流量傳感器,每通過一升液體輸出450個脈沖。
光敏傳感器:選用BH1750光強度傳感器,用于檢測水表面板的蓋子是否打開,以通知控制器電路顯示單元。
顯示單元:采用SSD1306驅(qū)動的128*32OLED顯示模塊,該模塊可以滿足水表體積小、功耗低的要求。
通信模組:采用移遠公司的BC95-B5型NB-IOT模組,相比其它物流網(wǎng)通信方案,Nb-IoT的方案不僅有低功耗、低成本等優(yōu)勢,還能實現(xiàn)快速部署、快速入網(wǎng)等優(yōu)勢。
制器利用片內(nèi)定時器/計數(shù)器記錄流量脈沖,以定周期方式向云端服務(wù)器發(fā)送流量數(shù)據(jù),采用中斷的方式檢測光敏傳感器、控制顯示單元。軟件整體流程如圖2所示。
圖2 系統(tǒng)流程圖
采集到的水量數(shù)據(jù)通過NB模組進行數(shù)據(jù)發(fā)送,數(shù)據(jù)封裝的傳輸層協(xié)議為UDP,由于IP網(wǎng)絡(luò)是一種盡力交付的網(wǎng)絡(luò),運輸層上如使用UDP協(xié)議無法保證數(shù)據(jù)的可靠性。在此基礎(chǔ)上使用基于REST構(gòu)架的CoAP協(xié)議,CoAP協(xié)議支持可靠傳輸,可實現(xiàn)數(shù)據(jù)重傳,塊傳輸及非長連接通信,適用于低功耗物聯(lián)網(wǎng)場景。[6]
基于NB-IOT的LWM2M協(xié)議和CoAP協(xié)議實現(xiàn)用戶設(shè)備與云端的通信,其中LWM2M協(xié)議為應(yīng)用層協(xié)議,CoAP協(xié)議為傳輸層協(xié)議。
LWM2M是OMA組織制定的輕量化的M2M協(xié)議,通過三個邏輯實體,4個通信接口(設(shè)備注冊,引導(dǎo)程序,設(shè)備管理和服務(wù)實現(xiàn),信息上報)。[3]COAP服務(wù)器端和COAP客戶端通過四種資源調(diào)用方式進行服務(wù)器和客戶端的互操作,分別為是GET ,POST,PUT,DELETE,獲取數(shù)據(jù)可采用JSON格式。
圖3 LwM2M協(xié)議棧
LiteNaDemo程序拉取華為云平臺數(shù)據(jù),使用HTTP GET方法將獲取到JSON格式數(shù)據(jù)進行格式化處理,存入設(shè)計好的數(shù)據(jù)庫中為后臺系統(tǒng)使用。
通過給出App ID及密鑰獲取華為云平臺Token,連接成功后就可以獲取JSON格式數(shù)據(jù)。
對獲取的數(shù)據(jù)進行處理,存入數(shù)據(jù)庫中為后臺系統(tǒng)使用。用戶定時執(zhí)行程序,用戶向華為遠程實
驗室平臺獲取數(shù)據(jù),程序設(shè)定每月一號執(zhí)行一次。
用戶將請求發(fā)送給對應(yīng)的Tomcat服務(wù)器,服務(wù)器主要通過springMVC的前端控制器和mybatis請求需要的數(shù)據(jù)。之后數(shù)據(jù)庫將數(shù)據(jù)返回到服務(wù)器,服務(wù)器中前端控制器的handler處理器會返回model and view。最后在服務(wù)器返回視圖時Spring容器中的視圖解析器對model and view進行視圖渲染,瀏覽器最終將內(nèi)容呈現(xiàn)在用戶界面。[5]
用戶管理模塊中,每增加一個智能水表用戶時,自來水公司的管理人員就可以增加新的用戶,當(dāng)然,也可以對原來的用戶進行修改,刪除操作。
水表管理部分展示所有用戶的每月用水量信息,可以進行查詢,也可以導(dǎo)出到電子表格,方便管理人員對導(dǎo)出來的每戶用水量信息進行打印。
繳費管理部分,自來水公司的管理員可以在后臺查看每個用戶的繳費記錄,同時也可以幫用戶現(xiàn)場繳費。
公告管理部分,系統(tǒng)管理員可以通過在后臺發(fā)布公告,然后就會顯示在首頁,首頁中顯示的都是最新的公告。
多前端Vue庫使用HttpsGet、HttpsPost方法請求服務(wù)器程序訪問數(shù)據(jù)庫,并將返回結(jié)果展示在安卓原生、H5APP、及WAP微站。
北向提供的API 是平臺與Application之間的https接口,使用安全傳輸協(xié)議TLS1.1/1.2進行加密傳輸。App程序使用HttpPost方法請求服務(wù)器程序訪問數(shù)據(jù)庫,并將返回結(jié)果展示在及其Web前端頁面。表1為幾個HttpPost方法API接口功能描述。
表1 API接口描述
筆者介紹一款云智能水表開發(fā)設(shè)計方案,擁有智能硬件水表終端,云服務(wù)器,前端Web服務(wù)系統(tǒng)及其安卓APP。本套系統(tǒng)從物聯(lián)網(wǎng)生態(tài)鏈角度解決日益突出的入戶抄表難、抄表工作量大的問題,方便了居民和自來水公司對每月用水量的統(tǒng)計與分析。通信協(xié)議上采用基于REST架構(gòu)及其CoAP協(xié)議,在資源受限的嵌入式設(shè)備上很好適應(yīng)了應(yīng)用場景。