黃一棟
(廈門大洋通信有限公司,福建 廈門 361000)
隨著萬物互聯(lián)的到來,越來越多的無線通信終端產(chǎn)品走入大眾的視野,這些產(chǎn)品在短距離[1]應(yīng)用方面大都以Wi-Fi、Zigbee、BLE為主,長距離應(yīng)用方面大都以NBIOT、Sigfox、LoRaWAN為主。不同的無線技術(shù)有不同的應(yīng)用領(lǐng)域,基于物聯(lián)網(wǎng)的特殊性、復(fù)雜性以及多樣性,利用無線技術(shù)來從原型開發(fā)到實現(xiàn)一個可用的物聯(lián)監(jiān)測系統(tǒng)需要較長的時間,而這時間可能會影響最終項目的落地時間甚至落后競爭對手。
軟件工程上提倡DRY原則[2],因此尋找一種能快速開發(fā)出可用的物聯(lián)網(wǎng)監(jiān)測系統(tǒng)對物聯(lián)網(wǎng)廠商來說尤為重要。
得益于LoRaWAN設(shè)備通信標(biāo)準(zhǔn),網(wǎng)關(guān)通信標(biāo)準(zhǔn)。不同家的終端產(chǎn)品、網(wǎng)關(guān)可以在不同平臺上混用。對用戶而言,終端和網(wǎng)關(guān)選擇性多樣,不用綁定固定廠家。因此涌現(xiàn)了很多開源的LoRaWAN終端、網(wǎng)關(guān)和網(wǎng)絡(luò)服務(wù)器,這些開源為LoRaWAN的物聯(lián)網(wǎng)監(jiān)測系統(tǒng)提供了極大的便利,縮短了開發(fā)一個可用的物聯(lián)網(wǎng)監(jiān)測系統(tǒng)的開發(fā)時間和開發(fā)成本。
LoRaWAN系統(tǒng)架構(gòu)圖1所示,主要由終端、網(wǎng)關(guān)和服務(wù)器組成。
圖1 LoRaWAN系統(tǒng)架構(gòu)圖
LoRaWAN終端:作為感知探測層,用于采集現(xiàn)場數(shù)據(jù),執(zhí)行現(xiàn)場指令,是系統(tǒng)末端的執(zhí)行器,也是LoRaWAN系統(tǒng)中個數(shù)最多的角色,終端按LoRaWAN規(guī)范細(xì)分為3類,含ClassA、ClassB以及ClassC,各適用于不同實時性、功耗要求的場合里,電池產(chǎn)品大部分以ClassA為主,實時受控產(chǎn)品一般以ClassC為主。
LoRaWAN網(wǎng)關(guān):網(wǎng)關(guān)作為終端和網(wǎng)絡(luò)服務(wù)器的橋接,在LoRaWAN系統(tǒng)里擔(dān)當(dāng)轉(zhuǎn)發(fā)透傳的角色,不做設(shè)備管理等,不像Zigbee/BLE Mesh的入網(wǎng)管理都是直接在網(wǎng)關(guān)設(shè)備上進行承擔(dān)處理。
LoRaWAN服務(wù)器:分為網(wǎng)絡(luò)服務(wù)器和應(yīng)用服務(wù)器,其中網(wǎng)絡(luò)服務(wù)器用于終端設(shè)備的管理、網(wǎng)關(guān)的注冊管理以及對終端產(chǎn)品進行自適應(yīng)速率調(diào)節(jié)等,應(yīng)用服務(wù)器側(cè)重在最終產(chǎn)品的應(yīng)用屬性可視化展示,將美觀的UI呈現(xiàn)給用戶。
LoRaWAN終端前幾年主要以MCU+LoRa RF IC來實現(xiàn),其中RF IC主要使用Semtech的sx1276、sx1262等,也有SIP封裝的方案如上海翱翔的ASR6501、ASR6502,臺灣群登的S76S、S78S,基于如上方案設(shè)計的無線模組因芯片體積關(guān)系模組都較大,因此選型當(dāng)下最新的SoC LoRa芯片STM32WLE5CC, 該芯片基于ARM Cortex-M4內(nèi)核,256Kbytes Flash,支持LoRa/FSK調(diào)制方式。溫濕度傳感器選擇中科銀河芯的國產(chǎn)型號GXHT30,該型號軟硬件完全兼容國外SHT30型號。得益于STM的STM32CubeMX軟件,開發(fā)者可以很快地創(chuàng)建基于STM32WL的可用工程模板。終端硬件框圖如圖2所示。
圖2 LoRaWAN終端框圖
硬件無線模組上,針對不同國家適用的頻段不同,分為低頻頻段和高頻頻段2個版本,硬件區(qū)別主要在芯片天線出口、RF匹配線路上以及所用天線的差異,該部分基本可以參考STM32WL的參考線路進行布局。
LoRaWAN軟件上有基于不同硬件平臺的參考實現(xiàn),LoRaWAN聯(lián)盟對此提供了開源參考實現(xiàn),該方式相比Zigbee/BLE Mesh等而言讓開發(fā)者更容易快速上手并從零實現(xiàn)一個可用的LoRaWAN產(chǎn)品,目前市面上的LoRaWAN商用產(chǎn)品也都是參考LoRaWAN聯(lián)盟的參考實現(xiàn),該參考實現(xiàn)放在github的開源倉庫里,在開源倉庫里直接搜索LoRaMacnode名稱即可找到。
LoRaWAN參考實現(xiàn)提供了入網(wǎng)功能,入網(wǎng)后的上下行功能以及LoRaWAN Mac層的參考實現(xiàn),其他方面的功能實現(xiàn),如OTA功能,需要開發(fā)者自行制定統(tǒng)一的應(yīng)用層協(xié)議。得益于STM32WLE5CC的256KBytes Flash,用戶可以很方便地基于內(nèi)部Flash實現(xiàn)在線OTA功能,無須再額外添加外部Flash。對應(yīng)用層,LoRaWAN標(biāo)準(zhǔn)不像Zigbee有針對應(yīng)用層協(xié)議定義了Zigbee Cluster Library,簡稱ZCL[3],ZCL里面的定義詳細(xì)到開關(guān)燈的應(yīng)用層指令如何構(gòu)造。BLE Mesh也和Zigbee一樣對應(yīng)用層進行定義,BLE Mesh為應(yīng)用層協(xié)議定義的規(guī)范為Model層規(guī)范,該規(guī)范同樣對如開關(guān)燈的應(yīng)用指令構(gòu)造進行了詳細(xì)定義。對應(yīng)用層進行統(tǒng)一規(guī)范有助于不同家的設(shè)備可以相互兼容,如A家的開關(guān)燈可以識別B家的開關(guān)按鈕。LoRaWAN標(biāo)準(zhǔn)只針對Phy層和Mac層進行定義,上層的應(yīng)用層沒有進行規(guī)范,應(yīng)用層需要由實現(xiàn)者來定義,應(yīng)用層協(xié)議的定義主要側(cè)重在編解碼方面,該部分用于平臺和設(shè)備識別要交互的應(yīng)用層指令。一種可用的應(yīng)用編解碼格式如下表1和表2所示。
表1 應(yīng)用層上行包指令幀格式
表2 應(yīng)用層下行包指令幀格式
上行指令格式如下。該格式可以用在大部分情況,特別是傳感監(jiān)測場合,通過事先對ReportType約定定義好,如該字段為1代表溫度類型,2代表濕度類型等,按這樣就可以基于此不斷擴展新型傳感器的上報支持。
下行指令格式如下。
通過對CmdType進行約定,如該字段為1代表開,為0代表關(guān),來滿足該格式不同下行指令的需求,同時具有對新指令需求的擴展性。
LoRaWAN網(wǎng)關(guān)在LoRaWAN系統(tǒng)中主要作為終端和服務(wù)器的橋接中介,負(fù)責(zé)接收來自終端設(shè)備的上行數(shù)據(jù),將其進行IP化傳給網(wǎng)絡(luò)服務(wù)器,同時負(fù)責(zé)接收網(wǎng)絡(luò)服務(wù)器的下行指令并下發(fā)給終端。網(wǎng)關(guān)硬件都是基于Semtech的SX1301/SX1302,Semtech提供了基于Linux系統(tǒng)的驅(qū)動移植參考以及網(wǎng)關(guān)參考板,市面也有很多成熟網(wǎng)關(guān)現(xiàn)成SX1301模塊,通過搭配樹莓派可以很快地搭建一個可用的LoRaWAN網(wǎng)關(guān)[4],同時也有很多商用的現(xiàn)成網(wǎng)關(guān)。網(wǎng)關(guān)的參考實現(xiàn)除了提供驅(qū)動模塊的實現(xiàn),同時也提供了網(wǎng)關(guān)和網(wǎng)絡(luò)服務(wù)器通信規(guī)約的實現(xiàn),現(xiàn)有市面上的LoRaWAN網(wǎng)關(guān)都支持Semtech定義的網(wǎng)關(guān)和網(wǎng)絡(luò)服務(wù)器的通信規(guī)約,各家網(wǎng)絡(luò)服務(wù)器也都支持該通信規(guī)約,因此不同家的網(wǎng)關(guān)都能支持不同家的網(wǎng)絡(luò)服務(wù)器,網(wǎng)關(guān)在使用上就變得簡單易用,通過修改網(wǎng)關(guān)的網(wǎng)絡(luò)服務(wù)器定向地址就可以輕松連上不同家的網(wǎng)絡(luò)服務(wù)器。網(wǎng)關(guān)部分可以直接選用現(xiàn)成sx1301模塊配合樹莓派或者商用的網(wǎng)關(guān),商用網(wǎng)關(guān)一般都有經(jīng)過相關(guān)產(chǎn)品認(rèn)證如3C、CE、FCC認(rèn)證等,對出口型的用戶來說可以省去很多與認(rèn)證相關(guān)的工作。網(wǎng)關(guān)可以直接選用Sandbox 的LoRaGoPort、Semtech的SX1302CSS915GW1、IMST的Lite Gateway等。
得益于LoRaWAN的開放生態(tài),不管是終端,還是網(wǎng)關(guān),甚至是LoRaWAN網(wǎng)絡(luò)服務(wù)器都有不少開源實現(xiàn)方案供參考,如The Things Network(業(yè)界簡稱TTN)、ChirpStack(前身LoRaServer)、ChirpStack的開源Licence是MIT類型,允許任意二次開發(fā),不用承擔(dān)商業(yè)風(fēng)險,因此ChirpStack的開源實現(xiàn)在不少商用上能看到其身影。也有部分網(wǎng)關(guān)直接把開源的網(wǎng)絡(luò)服務(wù)器集成到網(wǎng)關(guān)內(nèi)部,方便部署在一些不連通外網(wǎng)的場合。
LoRaWAN網(wǎng)絡(luò)服務(wù)器為應(yīng)用服務(wù)器對接提供了HTTP RestAPI[5]、MQTT[6]等多種整合方式,因此應(yīng)用服務(wù)器也能利用很多成熟的框架來進行實現(xiàn)。物聯(lián)網(wǎng)監(jiān)測側(cè)重采集終端的數(shù)據(jù)展示,因此應(yīng)用服務(wù)器功能側(cè)重數(shù)據(jù)展示,數(shù)據(jù)展示方面也有很多實現(xiàn)快速整合的開源方案,如Node-Red以及互聯(lián)網(wǎng)企業(yè)運營后臺應(yīng)用的數(shù)據(jù)可視化系統(tǒng)Grafana[7],Grafana可視化系統(tǒng)開源免費,可自己部署到服務(wù)器上,最重要的是Grafana要可視化展示的數(shù)據(jù)源可以直接在Grafana配置要展示的數(shù)據(jù)庫就可以。因此,只要在網(wǎng)絡(luò)服務(wù)器和應(yīng)用服務(wù)器可視化系統(tǒng)中間,自己開發(fā)一個中間件,通過中間件把網(wǎng)絡(luò)服務(wù)器的LoRaWAN終端數(shù)據(jù)寫入數(shù)據(jù)庫就可以完成可視化系統(tǒng)的快速實現(xiàn)。數(shù)據(jù)庫有多種開源實現(xiàn),如MySql、Mongodb等。
2.3.1 LoRaWAN網(wǎng)絡(luò)服務(wù)器的部署實現(xiàn)
服務(wù)器一般都部署在Linux系統(tǒng),如CentOS、Ubuntu等,早些年部署開源方案的服務(wù)器都需要配置一堆環(huán)境才能部署好,花費時間可能幾小時甚至幾天都有。這幾年隨著docker的興起,服務(wù)器部署與前幾年相比,快捷方便了許多,基本1h內(nèi)就可基于docker部署運作起來。如下以開源ChirpStack服務(wù)器在Ubuntu的部署實現(xiàn)為例。
克隆服務(wù)器docker資源并進入下載的目錄
在ChirpStack上注冊網(wǎng)關(guān)設(shè)備后,隨后在網(wǎng)關(guān)的配置文件中修改網(wǎng)絡(luò)服務(wù)器的定向地址到該部署服務(wù)器的地址后,網(wǎng)關(guān)即可連接上部署好的網(wǎng)絡(luò)服務(wù)器。
給終端設(shè)備供電并開機,終端設(shè)備會自行通過網(wǎng)關(guān)和網(wǎng)絡(luò)服務(wù)器進行交互并完成入網(wǎng)操作,隨后按周期上報當(dāng)前狀態(tài)數(shù)據(jù)。
2.3.2 中間件的快速實現(xiàn)
ChirpStack網(wǎng)絡(luò)服務(wù)器提供了MQTT對接支持,因此中間件可以通過實現(xiàn)MQTT Client來訂閱服務(wù)器的數(shù)據(jù),基于此中間件便可以通過訂閱相應(yīng)的MQTT主題來獲得LoRaWAN終端上報的狀態(tài)數(shù)據(jù)。
中間件需要訂閱的Topic規(guī)則如下。
中間件可以通過很多種開發(fā)語言來實現(xiàn),如C#、Golang、JavaScript等,使用基于JavaScript的NodeJS可以很快地實現(xiàn)一個MQTT中間件,該中間件主要功能為從網(wǎng)絡(luò)服務(wù)器訂閱LoRaWAN終端的上報數(shù)據(jù),并將其寫入MySql數(shù)據(jù)庫中以供應(yīng)用服務(wù)器的可視化系統(tǒng)展示使用。
2.3.3 應(yīng)用服務(wù)器展示系統(tǒng)的部署實現(xiàn)
應(yīng)用服務(wù)的可視化展示系統(tǒng)使用開源方案Grafana來快速實現(xiàn),Grafana開源可視化展示系統(tǒng)的部署實現(xiàn)也和網(wǎng)絡(luò)服務(wù)器一樣易用快捷,僅需幾個步驟就可以部署運行起來,如下以Grafana部署到Ubuntu服務(wù)器上為例。
在服務(wù)器上部署組件
通過運行sudo /bin/systemctl start grafana-server啟動Grafana展示系統(tǒng),在瀏覽器輸入服務(wù)器IP地址加端口號3000后即可看到展示系統(tǒng)。
配置Grafana可視化系統(tǒng)要展示的數(shù)據(jù)源為MySql,新建要展示的溫度和濕度DashBoard展示面板,同時對展示面板要展示的屬性和MySql的數(shù)據(jù)字段進行關(guān)聯(lián)后即可進行展示,LoRaWAN溫濕度終端的展示效果如圖3所示。
圖3 LoRaWAN終端當(dāng)前最新溫度濕度信息展示
該系統(tǒng)還可以根據(jù)不同時間維度來查看歷史數(shù)據(jù),如最近一周、最近一個月、最近一年等,很適合物聯(lián)網(wǎng)監(jiān)測數(shù)據(jù)的可視化及分析。
該文提出的基于無線LoRaWAN物聯(lián)網(wǎng)監(jiān)測系統(tǒng)的快速實現(xiàn),詳細(xì)說明了LoRaWAN終端模塊的軟硬件實現(xiàn)方法以及提供了一種可用于不同傳感類型監(jiān)測的統(tǒng)一可拓展應(yīng)用層通信協(xié)議,提供了LoRaWAN網(wǎng)關(guān)的快速實現(xiàn)方法以及幾種可用現(xiàn)成網(wǎng)關(guān)參考,對網(wǎng)絡(luò)服務(wù)器的開源實現(xiàn)進行說明以及實際部署運行說明,最后對應(yīng)用服務(wù)器可視化監(jiān)測系統(tǒng)快速實現(xiàn)的中間件實現(xiàn)方法進行說明,并對應(yīng)用監(jiān)測展示系統(tǒng)的最終實際部署運行進行說明,物聯(lián)網(wǎng)技術(shù)特別是無線物聯(lián)網(wǎng)方面存在復(fù)雜多樣性、細(xì)分領(lǐng)域繁多、開發(fā)周期長的特點,希望該文能為快速切入物聯(lián)網(wǎng)系統(tǒng)開發(fā),特別是LoRaWAN物聯(lián)網(wǎng)的愛好者開發(fā)者提供參考。