張美平,陳清建,張少敏,郭 毅
1(福建師范大學(xué) 數(shù)學(xué)與信息學(xué)院,福州 350117)
2(福建省網(wǎng)絡(luò)安全與密碼技術(shù)重點(diǎn)實(shí)驗(yàn)室,福州 350007)
在低功耗廣域網(wǎng)技術(shù)興起之前,大多數(shù)的無線技術(shù)都難以做到遠(yuǎn)距離和低功耗的兼顧.目前大部分的智慧農(nóng)業(yè)系統(tǒng)采用ZigBee 無線通信技術(shù)進(jìn)行數(shù)據(jù)傳輸.雖然ZigBee 技術(shù)滿足智慧農(nóng)業(yè)對(duì)于低功耗、低成本的需求,但其卻無法滿足遠(yuǎn)距離傳輸?shù)男枨?這在無形之中增加了中繼節(jié)點(diǎn)的開銷.同時(shí),ZigBee 技術(shù)在高頻率通信的情況下有著信號(hào)衰減快的問題,易受到其他信號(hào)的干擾,從而影響有效數(shù)據(jù)的傳輸,已難以滿足目前智慧農(nóng)業(yè)系統(tǒng)的數(shù)據(jù)傳輸需求[1].遠(yuǎn)距離無線電(Long Range Radio,LoRa)作為非授權(quán)頻譜的低功率廣域網(wǎng)絡(luò)(Low-Power Wide-Area Network,LPWAN)的一種新興技術(shù),具有遠(yuǎn)距離通信的優(yōu)點(diǎn)外,也有低成本、多節(jié)點(diǎn)、低功耗、抗干擾性強(qiáng)等優(yōu)勢(shì)[2].LoRaWAN 是基于LoRa 遠(yuǎn)距離通信網(wǎng)絡(luò)設(shè)計(jì)的一套通訊協(xié)議和系統(tǒng)架構(gòu),目前已經(jīng)成為L(zhǎng)PWAN 中重要的技術(shù)標(biāo)準(zhǔn)之一.
近幾年國(guó)內(nèi)外開展了一系列對(duì)LoRaWAN 智慧農(nóng)業(yè)應(yīng)用系統(tǒng)方案設(shè)計(jì)的研究.在國(guó)內(nèi),趙蘭枝提出了基于LoRaWAN 物聯(lián)網(wǎng)技術(shù)的農(nóng)田環(huán)境監(jiān)測(cè)系統(tǒng)研究相關(guān)的設(shè)計(jì)方案,給出了系統(tǒng)實(shí)現(xiàn)所需結(jié)構(gòu)與功能框架,為開發(fā)一個(gè)LoRaWAN 農(nóng)業(yè)應(yīng)用系統(tǒng)提供了不錯(cuò)的框架思路基礎(chǔ)[3];劉映江分析了低功耗廣域網(wǎng)在農(nóng)田監(jiān)測(cè)中的應(yīng)用價(jià)值,也設(shè)計(jì)了一套LoRaWAN 智慧農(nóng)業(yè)監(jiān)測(cè)系統(tǒng),并介紹了相關(guān)硬件平臺(tái)實(shí)現(xiàn)與技術(shù)原理[4].在國(guó)外,Ibrahim 等將LoRaWAN 技術(shù)應(yīng)用在了智慧蘑菇屋來達(dá)到控制屋內(nèi)的環(huán)境最終實(shí)現(xiàn)了更高的產(chǎn)量,并且對(duì)系統(tǒng)能耗、射頻進(jìn)行了相應(yīng)的分析[5].這些方案都為L(zhǎng)oRaWAN 智慧農(nóng)業(yè)應(yīng)用系統(tǒng)的設(shè)計(jì)提供了一定的基礎(chǔ)借鑒.
本文所設(shè)計(jì)的LoRaWAN 智慧農(nóng)業(yè)應(yīng)用系統(tǒng),在同樣實(shí)現(xiàn)LoRa 終端與LoRa 網(wǎng)關(guān)軟硬件功能部分的基礎(chǔ)上,在云服務(wù)的搭建中還結(jié)合ChirpStack 這一個(gè)開源服務(wù)項(xiàng)目,相比于上述應(yīng)用,結(jié)合該服務(wù)能夠提供便捷的網(wǎng)絡(luò)管理,使得系統(tǒng)開發(fā)簡(jiǎn)易快速,用戶更多只需要考慮應(yīng)用需求方面的開發(fā).本文將詳細(xì)介紹系統(tǒng)開發(fā)流程,為今后LoRaWAN 應(yīng)用系統(tǒng)的開發(fā)提供良好可靠的方案基礎(chǔ).
基于LoRaWAN 設(shè)計(jì)的智慧農(nóng)業(yè)系統(tǒng),由LoRa終端、LoRa 網(wǎng)關(guān)集中器以及ChirpStack 服務(wù)、Flask Web 應(yīng)用4 個(gè)部分組成.在LoRa 終端上外接多種傳感器與執(zhí)行器,能夠?qū)?shù)據(jù)封裝通過LoRa 傳輸至網(wǎng)關(guān)集中器;LoRa 網(wǎng)關(guān)集中器能夠并行接收處理多個(gè)終端節(jié)點(diǎn)的數(shù)據(jù)并通過UDP 協(xié)議傳輸至服務(wù)器;服務(wù)器結(jié)合ChirpStack 服務(wù)與Flask Web 應(yīng)用為用戶呈現(xiàn)可視化監(jiān)測(cè)與管理界面.系統(tǒng)框架如圖1所示.
圖1 系統(tǒng)總體框架
LoRa 終端系統(tǒng)采用以STM32F103VET6 為控制芯片的開發(fā)板作為控制器,搭載傳感器模塊(DHT11溫濕度傳感器、FC-28 土壤濕度傳感器、TSL2561 光強(qiáng)傳感器)、LoRa 通信模塊(RAK811 Breakout Board)、LCD 液晶觸摸屏模塊與執(zhí)行模塊(水泵、散熱器),整個(gè)LoRa 終端的硬件結(jié)構(gòu)如圖2所示.LoRa終端能進(jìn)行傳感器數(shù)據(jù)的采集以及通過LoRa 通信模塊傳輸數(shù)據(jù),同時(shí)還具有液晶屏顯示與自動(dòng)灌溉功能,利用串口與PC 端連接還可以接收PC 端的配置指令.
圖2 LoRa 終端硬件系統(tǒng)設(shè)計(jì)框圖
RAK811 遠(yuǎn)距離LoRa 收發(fā)模塊,其擁有小巧、簡(jiǎn)單、遠(yuǎn)距離傳輸和低功耗的特點(diǎn),能夠很好地應(yīng)用于遠(yuǎn)距離無線傳輸解決方案當(dāng)中,支持P2P 通信和LoRaWAN 組網(wǎng)方式,該模塊集成了Semtech 的SX1276芯片,以及STM32L 芯片,并且提供了UART 接口,能夠通過簡(jiǎn)單的AT 串口指令來進(jìn)行LoRa 模塊的配置與數(shù)據(jù)收發(fā).
LoRa 網(wǎng)關(guān)集中器采用了“樹莓派+RAK2245 Pi HAT 模塊”組合搭建而成,其硬件結(jié)構(gòu)如圖3所示.RAK2245 Pi HAT 是一款適配于樹莓派的LoRa 網(wǎng)關(guān)集中器模塊,集成了Ublox Max-7Q GPS 模塊以及散熱器,能夠支持8 個(gè)信道,并且適用于LoRaWAN 全球所有頻段,它擁有一個(gè)基于Semtech SX1301 的基帶處理器用來進(jìn)行數(shù)據(jù)包的管理和兩個(gè)Semtech SX1257 來用于射頻前端I/Q 收發(fā)器.RAK2245 Pi HAT 主要負(fù)責(zé)LoRa 信號(hào)的發(fā)送以及接收,樹莓派則主要負(fù)責(zé)作為核心控制板,處理數(shù)據(jù)和運(yùn)算等[6].
根據(jù)LoRaWAN 協(xié)議,終端入網(wǎng)首先需要定義終端類型、入網(wǎng)方式以及通信頻段.由于LoRa 通信模塊支持AT 指令進(jìn)行配置,將LoRa 終端利用串口配置為符合此次系統(tǒng)需求的Class A 類型,入網(wǎng)方式為 OTAA 空中激活模式,頻段為中國(guó)的CN_470_510;其次此系統(tǒng)OTAA 入網(wǎng)方式還需要為終端配置DevEUI、AppKey兩個(gè)入網(wǎng)參數(shù).在上述配置完成基礎(chǔ)上,終端開機(jī)后可以自行進(jìn)行入網(wǎng)請(qǐng)求操作,并在入網(wǎng)成功之后結(jié)合Class A 工作模式進(jìn)行傳感器數(shù)據(jù)的采集與上傳等工作,整個(gè)終端運(yùn)行流程如圖4所示.
圖3 LoRa 網(wǎng)關(guān)集中器硬件設(shè)計(jì)框圖
圖4 終端系統(tǒng)運(yùn)行流程
LoRa 網(wǎng)關(guān)集中器的數(shù)據(jù)轉(zhuǎn)發(fā)功能主要是依賴于Packet_forworder 這一程序來實(shí)現(xiàn),它會(huì)負(fù)責(zé)將網(wǎng)關(guān)收到的RF 數(shù)據(jù)包通過UDP 協(xié)議發(fā)送給服務(wù)器,以及將服務(wù)器的下行數(shù)據(jù)包通過RF 發(fā)送到指定的信道進(jìn)而傳輸給LoRa 終端節(jié)點(diǎn),可以理解為是網(wǎng)關(guān)集中器和服務(wù)器之間的一個(gè)包轉(zhuǎn)發(fā)器.
Packet_forworder 主要通過Semtech 提供的開源代碼進(jìn)行編譯得到,在libloragw 核心庫(kù)的基礎(chǔ)上編譯成的lora_pkt_fwd 應(yīng)用程序?qū)?huì)作為樹莓派開機(jī)自啟服務(wù),讓樹莓派利用SPI 接口通信使RAK2245 集中器開發(fā)板實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)功能,通過讀取global.json 配置文件來指定需要監(jiān)聽的頻段與服務(wù)器的IP 地址,UDP端口等,而我們所需要做的便是對(duì)global.json 配置文件進(jìn)行修改以實(shí)現(xiàn)CN_470_510 頻段的數(shù)據(jù)監(jiān)聽與轉(zhuǎn)發(fā)至指定服務(wù)器的功能.
ChirpStack 作為一個(gè)開源的LoRaWAN Server 服務(wù)器端項(xiàng)目,包含了Gateway Bridge、Network Server、Application Server 和Geolocation Server,并且集成了許多接口供第三方應(yīng)用使用,是目前LoRaWAN 服務(wù)端中一個(gè)很好可行的解決方案.
部署ChirpStack 服務(wù)器需要先安裝mosquitto MQTT 服務(wù)器、Redis 以及PostgreSQL 數(shù)據(jù)庫(kù)來供ChirpStack 服務(wù)使用,在PostgreSQL 中需要為Network Server 以及Application Server 創(chuàng)建相應(yīng)的數(shù)據(jù)庫(kù),以及終端數(shù)據(jù)的建表操作.在添加repository 之后利用apt工具依次安裝Gateway Bridge、Network Server 以及Application Server,3 個(gè)Server 的配置文件都在etc 對(duì)應(yīng)的目錄下,需要對(duì)Network Server 以及Application Server 的toml 配置文件進(jìn)行修改,在Network Server配置文件中需配置接收頻段為CN_470_510,而在Application Server 配置文件中需要給定jwt_secret 密鑰內(nèi)容以便后續(xù)REST API 的調(diào)用,同時(shí)二者都需要指定PostgreSQL 配置項(xiàng)對(duì)應(yīng)到各自數(shù)據(jù)庫(kù)的DSN 地址.
在ChirpStack 服務(wù)部署完成之后,通過Application Server 提供的Web 界面進(jìn)行應(yīng)用層的初始化配置,具體如下:
(1)添加相對(duì)應(yīng)關(guān)聯(lián)的Network Server 服務(wù)項(xiàng),指定IP 地址與端口號(hào),默認(rèn)配置文件中的端口為8000;
(2)添加Service-profiles 服務(wù)配置項(xiàng),其中需要指定上述Network servers 的服務(wù)項(xiàng);
(3)添加Device-profiles 設(shè)備配置項(xiàng),根據(jù)本文系統(tǒng)終端設(shè)計(jì)需求,需要?jiǎng)?chuàng)建一個(gè)Class A 類型、OTAA入網(wǎng)方式的Device-profiles.針對(duì)終端數(shù)據(jù)的碎片化,在配置項(xiàng)中codec 一欄,可以供用戶編寫LoRa 終端數(shù)據(jù)傳輸?shù)木幗獯a函數(shù),其中支持JS 語言實(shí)現(xiàn),能夠?qū)⒔K端原始數(shù)據(jù)轉(zhuǎn)換為用戶所需如JSON 格式的數(shù)據(jù),以便后續(xù)存儲(chǔ)后便捷提取解析數(shù)據(jù).
ChirpStack 服務(wù)為用戶提供了和LoRa 底層網(wǎng)絡(luò)的對(duì)接和管理功能,但還需要用戶進(jìn)一步開發(fā)自己所需的應(yīng)用系統(tǒng),因此系統(tǒng)使用Flask 應(yīng)用框架開發(fā)一個(gè)Web 應(yīng)用來進(jìn)行智能農(nóng)業(yè)終端數(shù)據(jù)的可視化展示[7],整個(gè)Flask Web 應(yīng)用框架結(jié)構(gòu)圖如圖5所示.
ChirpStack Application Server 提供了REST API 接口以實(shí)現(xiàn)終端、網(wǎng)關(guān)、用戶信息的獲取等快速操作,在REST API 的接口調(diào)用請(qǐng)求中需要在請(qǐng)求頭的Authorization 字段附上生成的JWT TOKEN,JWT TOKEN 中的簽名密鑰即為ChirpStack Application Server 配置文件中設(shè)置的jwt_secret 字段;同時(shí)Application Server 還會(huì)向MQTT Broker 發(fā)布LoRa 終端的上下行數(shù)據(jù)消息.
整個(gè)Flask Web 項(xiàng)目運(yùn)行流程圖如圖6所示.當(dāng)Flask Web 項(xiàng)目運(yùn)行時(shí),如果接收到前端的請(qǐng)求時(shí)通過控制層解析并且匹配route 路由找到相應(yīng)的視圖函數(shù)之后執(zhí)行業(yè)務(wù)層邏輯的處理,在業(yè)務(wù)邏輯處理的時(shí)候如有需要便可以快速調(diào)用REST API 接口以對(duì)接ChirpStack 服務(wù),當(dāng)有需要操作數(shù)據(jù)庫(kù)時(shí)便可以交給數(shù)據(jù)層處理,數(shù)據(jù)庫(kù)的操作則使用了SQLAlchemy 來創(chuàng)建ORM 模型將數(shù)據(jù)庫(kù)內(nèi)容實(shí)例化成對(duì)象,能夠增加抽象地方便數(shù)據(jù)訪問.此外,Flask Web 項(xiàng)目還開啟了一個(gè)用于監(jiān)聽MQTT 終端數(shù)據(jù)消息的線程來進(jìn)行終端上行數(shù)據(jù)的數(shù)據(jù)庫(kù)存儲(chǔ)操作.
圖6 Flask Web 應(yīng)用運(yùn)行流程
整個(gè)LoRaWAN 智慧農(nóng)業(yè)系統(tǒng)搭建完成之后,其數(shù)據(jù)通信流程如圖7所示.
圖7 系統(tǒng)數(shù)據(jù)通信流程
具體過程如下:
(1)LoRa 終端主控板在通過表1對(duì)傳感器數(shù)據(jù)進(jìn)行封裝后,利用串口AT 指令發(fā)送十六進(jìn)制格式原始封裝數(shù)據(jù)至LoRa 模塊,LoRa 模塊會(huì)通過AppKey 衍生的AppSKey 應(yīng)用層會(huì)話密鑰來對(duì)數(shù)據(jù)進(jìn)行AES128位算法加密填入MAC 層幀中的FRMPayload 部分再通過LoRa 發(fā)送至網(wǎng)關(guān)集中器.
表1 傳感器數(shù)據(jù)封裝格式
(2)LoRa 網(wǎng)關(guān)集中器在接收到終端的上行數(shù)據(jù)后,對(duì)其進(jìn)行Base64 編碼再通過UDP 協(xié)議傳輸至ChirpStack服務(wù)端.
(3)ChirpStack 服務(wù)中Network Server 先將網(wǎng)關(guān)集中器轉(zhuǎn)發(fā)上來的數(shù)據(jù)進(jìn)行提取并且整理成JSON 格式,然后通過gRPC 傳輸至Application Server,Application Server 會(huì)負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行解密操作之后發(fā)布到MQTT Broker.
(4)Flask Web 應(yīng)用通過訂閱MQTT 相應(yīng)主題來獲取到Application Server 解密之后的終端JSON 格式消息,然后進(jìn)行數(shù)據(jù)庫(kù)的存儲(chǔ)操作.
系統(tǒng)測(cè)試硬件實(shí)物框架圖如圖8所示.
圖8 系統(tǒng)測(cè)試硬件框架
在LoRa 終端節(jié)點(diǎn)開機(jī)入網(wǎng)成功之后,采集完傳感器環(huán)境數(shù)據(jù)后結(jié)合Class A 類型工作模式發(fā)送至LoRa網(wǎng)關(guān)集中器,通過串口調(diào)試工具查看LoRa 終端運(yùn)行結(jié)果如圖9所示.
圖9 LoRa 終端入網(wǎng)與數(shù)據(jù)傳輸
在LoRa 網(wǎng)關(guān)集中器中,可以開啟監(jiān)聽日志程序util_pkt_logger 來進(jìn)行數(shù)據(jù)傳輸監(jiān)聽,結(jié)果如圖10所示.
圖10 網(wǎng)關(guān)util_pkt_logger 程序監(jiān)聽
在LoRa 網(wǎng)關(guān)將終端數(shù)據(jù)通過UDP 傳輸?shù)椒?wù)器后,通過開啟Flask Web 應(yīng)用服務(wù),結(jié)合ChirpStack 服務(wù)運(yùn)行后,用戶進(jìn)行系統(tǒng)登錄后,觀察傳感器數(shù)據(jù)界面實(shí)際運(yùn)行效果如圖11所示,可以觀察到LoRa 終端數(shù)據(jù)最終能夠穩(wěn)定地傳輸并更新展示在了Web 界面當(dāng)中.
圖11 Web 應(yīng)用運(yùn)行效果圖
本文所提出的基于LoRaWAN 技術(shù)設(shè)計(jì)的智慧農(nóng)業(yè)系統(tǒng)方案,實(shí)現(xiàn)了農(nóng)業(yè)大棚環(huán)境數(shù)據(jù)的遠(yuǎn)程監(jiān)測(cè)管理等功能,并且對(duì)整個(gè)系統(tǒng)的架構(gòu)、軟硬件設(shè)計(jì)以及程序運(yùn)行流程做了詳細(xì)的介紹.系統(tǒng)具有開發(fā)快速便捷,數(shù)據(jù)傳輸安全可靠的優(yōu)點(diǎn),同時(shí),系統(tǒng)因?yàn)椴捎昧薈lass A 模式從而犧牲了一定控制下發(fā)的實(shí)時(shí)性來換取更佳的低功耗性能,還有進(jìn)一步改進(jìn)的空間.總而言之,基于LoRaWAN 技術(shù)設(shè)計(jì)的智慧農(nóng)業(yè)系統(tǒng)方案還可應(yīng)用于多種場(chǎng)合環(huán)境監(jiān)測(cè)應(yīng)用,具有一定的應(yīng)用前景,希望能夠?yàn)榻窈驦oRaWAN 應(yīng)用開發(fā)提供一定的參考借鑒.