黃嬌郁 唐海
摘要:針對(duì)于國(guó)家氣象部門所用氣象站維護(hù)難度大、專業(yè)要求高等問(wèn)題,提出一種基于阿里云物聯(lián)網(wǎng)平臺(tái)的民用自動(dòng)氣象站設(shè)計(jì)方案。系統(tǒng)設(shè)計(jì)方案包括硬件部分和軟件部分。其中,硬件部分包括以AM3358為主控制器的核心電路、Modbus傳感器數(shù)據(jù)采集電路、4G通信模塊等;軟件部分包括設(shè)備端Link kit軟件開(kāi)發(fā)、云服務(wù)器端IoT Studio網(wǎng)站應(yīng)用UI界面開(kāi)發(fā)、后臺(tái)數(shù)據(jù)服務(wù)開(kāi)發(fā)、消息流轉(zhuǎn)等內(nèi)容。整個(gè)系統(tǒng)實(shí)現(xiàn)了六要素自動(dòng)氣象站的全部功能,并增加了一些實(shí)用功能,如在出現(xiàn)特定氣象參數(shù)時(shí),將消息發(fā)送至手機(jī)APP群組。實(shí)踐測(cè)試表明其具有維護(hù)簡(jiǎn)單、成本低廉等優(yōu)點(diǎn),特別適用于農(nóng)業(yè)生產(chǎn)、車站、港口等非氣象部門中對(duì)氣象要素的觀測(cè)需求。
關(guān)鍵詞:阿里云物聯(lián)網(wǎng);自動(dòng)氣象站;Modbus;MQTT
中圖分類號(hào):TP399 ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):0439-8114(2020)17-0166-04
Abstract: In view of the difficulty of maintenance and high professional requirement of meteorological station used by governmentalmeteorological department, a design scheme of civil automatic weather station based on Aliyun Internet of things platform is proposed. The system design includes hardware and software. The hardware part includes the core circuit of AM3358 controller, Modbus sensor data acquisition circuit ,4G communication module and so on. The software part includes device side Link kit software development, cloud server side IoT Studio website application UI interface development, background data service development, message flow and so on. All functions of the six-element automatic weather station are implementedin the system, and some practical functions are added, such as sending the message to the mobile phone APP group when a specific weather parameter appears. The practical test shows that it has the advantages of simple maintenance and low cost, which is especially suitable for the observation of meteorological elements in non-meteorological departments such as agricultural production, station and port.
Key words: Aliyun Internet of things; automatic weather station; Modbus; MQTT
隨著云計(jì)算和物聯(lián)網(wǎng)技術(shù)的發(fā)展,越來(lái)越多的企業(yè)將核心業(yè)務(wù)轉(zhuǎn)移到云端,而終端設(shè)備以物聯(lián)網(wǎng)節(jié)點(diǎn)的形式和終端用戶交互[1,2]。受維護(hù)成本和技術(shù)的限制,氣象部門所維護(hù)的自動(dòng)氣象站的數(shù)量和分布區(qū)域有限,而與氣象要素緊密相關(guān)的企事業(yè)單位難以獨(dú)立維護(hù)氣象觀測(cè)設(shè)備[3]。如農(nóng)田小氣候的觀測(cè)、港口、機(jī)場(chǎng)、車站氣象監(jiān)測(cè)等應(yīng)用場(chǎng)合[4,5]。因此一種易維護(hù)、低成本的氣象監(jiān)測(cè)設(shè)備的研發(fā)變得十分必要。民用相關(guān)的氣象傳感器產(chǎn)品在市場(chǎng)上較普遍,因此數(shù)據(jù)的采集不是難點(diǎn)。數(shù)據(jù)的傳輸和處理是關(guān)鍵問(wèn)題,普通單位沒(méi)有條件建立一套完整的數(shù)據(jù)傳輸專網(wǎng)和數(shù)據(jù)處理中心。基于以上考慮,本設(shè)計(jì)借助云計(jì)算和物聯(lián)網(wǎng)技術(shù),實(shí)現(xiàn)一套維護(hù)簡(jiǎn)單、擴(kuò)展靈活、不受地域范圍限制的自動(dòng)氣象站設(shè)計(jì)方案,可以廣泛用于生產(chǎn)實(shí)踐。
本自動(dòng)氣象站包含常見(jiàn)的氣象六要素傳感器:風(fēng)速、風(fēng)向、雨量、溫度、濕度、氣壓。傳感器接口是RS-485,協(xié)議符合MODBUS-RTU。在此基礎(chǔ)上,可以動(dòng)態(tài)增加其他必要的傳感器而不需要修改硬件設(shè)計(jì),比如增加土壤、照度等傳感器。
1 主控板硬件設(shè)計(jì)
1.1 主控芯片選型
自動(dòng)氣象站硬件需要很強(qiáng)的環(huán)境適應(yīng)能力,主要包括對(duì)環(huán)境溫度的適應(yīng)能力和對(duì)電源的適應(yīng)能力。處于野外的自動(dòng)氣象站需要在極熱和極寒的條件下正常工作,且一般以太陽(yáng)能電池和蓄電池作為電源,需要整機(jī)功耗較低才能適應(yīng)長(zhǎng)期連續(xù)不間斷工作條件。
綜合以上考慮,選用德州儀器(TI)的AM335x 微處理器,其基于 ARM Cortex-A8架構(gòu),滿足工業(yè)溫度范圍要求(-40~85 ℃),且功耗較低,在典型CPU主頻400 MHz的情況下,功耗僅約3 W,能適應(yīng)在市電斷電的情況下使用蓄電池和太陽(yáng)能電池板長(zhǎng)時(shí)間工作。
1.2 主控板設(shè)計(jì)
為了擴(kuò)大硬件的靈活適應(yīng)性,采用核心板加底板組合的方式,核心板包括了CPU和內(nèi)存,底板引出AM335x豐富的外部接口,能滿足自動(dòng)氣象站連接傳感器和通信線路的需要。外部接口見(jiàn)表1,圖1是整個(gè)硬件系統(tǒng)框架。
2 軟件設(shè)計(jì)
為實(shí)現(xiàn)完整操作系統(tǒng)功能和網(wǎng)絡(luò)接入能力,選擇Linux操作系統(tǒng)內(nèi)核和Debian根文件系統(tǒng)發(fā)行版。Debian 是一個(gè)自由操作系統(tǒng)[6],不只提供一個(gè)純粹的操作系統(tǒng),它還附帶了大量的開(kāi)源軟件包,同時(shí)又具有豐富的上游軟件庫(kù)的支持,可以方便更新本地軟件包。本方案的整個(gè)軟件系統(tǒng)總體框架見(jiàn)圖2。
2.1 系統(tǒng)鏡像構(gòu)建
在裝有ubuntu 16.04的PC機(jī)上構(gòu)建ARM平臺(tái)的Debian根文件系統(tǒng)。安裝 qemu 和 debootstrap 等工具,用 debootstrap 抽取系統(tǒng)。最終構(gòu)建的根文件系統(tǒng):bin ?boot ?dev ?etc ?home ?lib ?opt ?proc ?root ?run ?sbinsrv ?sys ?tmpusr ?var.
2.2 Modbus-RTU協(xié)議的支持
為支持工業(yè)現(xiàn)場(chǎng)總線Modbus-RTU協(xié)議,采用Linux下開(kāi)源的libmodbus軟件庫(kù)。所有使用同一RS-485總線的傳感器應(yīng)該使用不重復(fù)的Modbus從站地址。其中溫度、濕度、氣壓3個(gè)要素被集成在一個(gè)傳感器上(表2)。以風(fēng)速讀取為例,使用0x03功能碼,讀取0x0016寄存器上的風(fēng)速值,一次通信命令過(guò)程如下。
主控板發(fā)出 01 03 00 16 00 01 65 CE
傳感器回復(fù) 01 03 02 00 0C B8 41
傳感器回復(fù)的溫度值是0x0C,把十六進(jìn)制換算為十進(jìn)制,此時(shí)得到的風(fēng)速就是12 m/s。
3 設(shè)備接入
3.1 設(shè)備接入SDK
阿里云物聯(lián)網(wǎng)平臺(tái)的Link Kit軟件開(kāi)發(fā)包可以快速實(shí)現(xiàn)設(shè)備的連云開(kāi)發(fā),且有多種編程語(yǔ)言可以選擇,比如C語(yǔ)言、Java和Python[7-9]。為支持底層硬件驅(qū)動(dòng)訪問(wèn)和兼容Libmodbus,本方案選用C語(yǔ)言版本SDK。只需將云端設(shè)備的三元組(產(chǎn)品密鑰、設(shè)備名稱、設(shè)備密碼)與軟件開(kāi)發(fā)包綁定,即可實(shí)現(xiàn)安全的數(shù)據(jù)傳輸。
Link Kit支持與云端的MQTT(ISO標(biāo)準(zhǔn)消息隊(duì)列遙測(cè)傳輸)通信,這為低成本的設(shè)備連云提供了基礎(chǔ)。MQTT是一個(gè)基于發(fā)布-訂閱機(jī)制的輕量級(jí)傳輸協(xié)議,專為一些軟硬件資源較少的物聯(lián)網(wǎng)設(shè)備設(shè)計(jì)。
Link Kit支持FOTA(Firmware-Over-the-Air Technology),即空中下載技術(shù)[10]。物聯(lián)網(wǎng)平臺(tái)支持通過(guò)FOTA方式進(jìn)行設(shè)備固件升級(jí)。FOTA對(duì)自動(dòng)氣象站的遠(yuǎn)程維護(hù)升級(jí)來(lái)說(shuō)是非常必要的,通過(guò)FOTA流程,用戶可以從云端遠(yuǎn)程更新Link Kit軟件自身。
Link Kit的程序流程見(jiàn)圖3。①初始化,導(dǎo)入設(shè)備三元組;②建立與服務(wù)器的MQTT連接;③注冊(cè)服務(wù)、事件、屬性、FOTA等回調(diào)函數(shù);④開(kāi)啟數(shù)據(jù)采集線程;⑤進(jìn)入消息循環(huán),采集數(shù)據(jù),檢查是否有事件和屬性需要上報(bào)。實(shí)現(xiàn)服務(wù)、事件、屬性上報(bào)和FOTA更新的回調(diào)函數(shù)如下。
IOT_RegisterCallback(ITE_SERVICE_REQUEST,user_service_request_event_handler);
IOT_RegisterCallback(ITE_PROPERTY_SET,user_property_set_event_handler);
IOT_RegisterCallback(ITE_REPORT_REPLY, user_report_reply_event_handler);
IOT_RegisterCallback(ITE_TRIGGER_EVENT_ REPLY, user_trigger_event_reply_event_handler);
IOT_RegisterCallback(ITE_FOTA,user_fota_ event_handler).
3.2 阿里物模型編程
物模型指將物理空間中的實(shí)體數(shù)字化,并在云端構(gòu)建該實(shí)體的數(shù)據(jù)模型[11]。在物聯(lián)網(wǎng)平臺(tái)中,定義物模型即定義產(chǎn)品功能。完成功能定義后,系統(tǒng)將自動(dòng)生成該產(chǎn)品的物模型。物模型描述產(chǎn)品是什么,能做什么,可以對(duì)外提供哪些服務(wù)。物模型可以描述為一個(gè)JSON格式的文件。它是物理空間中的實(shí)體,如傳感器、車載裝置、樓宇、工廠等在云端的數(shù)字化表示,從屬性、服務(wù)和事件3個(gè)維度,分別描述了該實(shí)體是什么,能做什么,可以對(duì)外提供哪些信息。定義了這3個(gè)維度,即完成了產(chǎn)品功能的定義。
物模型將產(chǎn)品功能類型分為3類:屬性、服務(wù)和事件。定義了這3類功能,即完成了物模型的定義(表3)。該自動(dòng)氣象站支持6個(gè)氣象要素屬性,1個(gè)設(shè)備自檢服務(wù)和1個(gè)錯(cuò)誤報(bào)警事件。
4 Web可視化界面設(shè)計(jì)
基于IoT Studio的Web可視化開(kāi)發(fā)工作臺(tái)是物聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)工具。無(wú)需寫代碼,只需在編輯器中拖拽組件到畫布上,再配置組件的顯示樣式、數(shù)據(jù)源及交互動(dòng)作,即可以可視化的方式進(jìn)行Web應(yīng)用開(kāi)發(fā)。開(kāi)發(fā)好的Web應(yīng)用直接托管運(yùn)行在阿里云服務(wù)器上并全天運(yùn)行,用戶無(wú)需搭建自己的服務(wù)器。該方案所開(kāi)發(fā)氣象站及監(jiān)控面板如圖4所示。通過(guò)CNAME解析,可以將用戶自己的域名和Web應(yīng)用關(guān)聯(lián),從而實(shí)現(xiàn)Internet訪問(wèn)。
5 服務(wù)和消息開(kāi)發(fā)
5.1 定時(shí)服務(wù)
翻斗式雨量傳感器需要定期清零操作,使用阿里云物聯(lián)網(wǎng)平臺(tái)規(guī)則引擎中的定時(shí)服務(wù)實(shí)現(xiàn)。該規(guī)則引擎支持標(biāo)準(zhǔn)5位Cron表達(dá)式的計(jì)劃任務(wù),可以精確到分鐘。例如,設(shè)定每個(gè)小時(shí)的整點(diǎn)時(shí)刻清零雨量,可以設(shè)定Cron表達(dá)式如下。
0 * * * *
其中,0表示每分鐘的第0秒,其余“*”表示任意的小時(shí)、天、月和年。
當(dāng)定時(shí)器滿足條件時(shí),執(zhí)行雨量情況命令,即通過(guò)Modbus發(fā)送清零指令給傳感器。以上過(guò)程皆由阿里云平臺(tái)實(shí)現(xiàn),用戶無(wú)需維護(hù)服務(wù)器。
5.2 消息流轉(zhuǎn)
阿里云平臺(tái)支持和釘釘APP的及時(shí)交互,當(dāng)氣象站檢測(cè)到特定的氣象參數(shù)或者異常報(bào)警時(shí),可以將消息發(fā)送到管理人員的釘釘群組,實(shí)現(xiàn)這一過(guò)程只需要設(shè)置相關(guān)的Webhook和釘釘賬戶信息(通常為手機(jī)號(hào)),在可視化界面編輯消息處理模塊,設(shè)置各模塊的輸入和輸出邏輯關(guān)系。如圖5所示,傳感器數(shù)據(jù)經(jīng)過(guò)設(shè)備觸發(fā)條件模塊判斷后,將結(jié)果送給路徑選擇模塊做分類處理,從而發(fā)送給特定的釘釘機(jī)器人,產(chǎn)生不同的消息到特定釘釘APP群組。
6 小結(jié)
系統(tǒng)設(shè)計(jì)主要完成了以下幾部分工作:自動(dòng)氣象站硬件設(shè)計(jì),該部分電路是承載整個(gè)數(shù)據(jù)采集和傳輸業(yè)務(wù)邏輯的基礎(chǔ);基于Link Kit的數(shù)據(jù)采集和聯(lián)網(wǎng)程序;基于Iot Studio的Web界面合計(jì);基于阿里云平臺(tái)的消息和服務(wù)設(shè)計(jì)。系統(tǒng)的創(chuàng)新主要體現(xiàn)在:①采用嵌入式SOC處理器運(yùn)行Linux操作系統(tǒng)內(nèi)核,結(jié)合Debian嵌入式操作系統(tǒng)棧,使得上層軟件開(kāi)發(fā)變得通用和便于移植,所有程序基于標(biāo)準(zhǔn)的POSIX,功能上與通用計(jì)算機(jī)兼容,同時(shí)系統(tǒng)功耗又非常低;②借助阿里云物聯(lián)網(wǎng)平臺(tái),氣象站的數(shù)據(jù)采集、處理、顯示、運(yùn)行維護(hù)可以全部在云端實(shí)現(xiàn),用戶無(wú)需自建服務(wù)器,真正實(shí)現(xiàn)低成本自動(dòng)氣象站的需求。
參考文獻(xiàn):
[1] 范天恩. 基于云服務(wù)的物聯(lián)網(wǎng)嵌入式開(kāi)發(fā)平臺(tái)研究與設(shè)計(jì)[D]. 上海:上海師范大學(xué),2018.
[2] 劉 強(qiáng), 崔 莉,陳海明. 物聯(lián)網(wǎng)關(guān)鍵技術(shù)與應(yīng)用[J]. 計(jì)算機(jī)科學(xué),2010,37(6):1-4.
[3] 李 巖,王 娟,王 勝,等. 基于DZZ6和TYQ200的新型區(qū)域氣象站保障技術(shù)[J]. 湖北農(nóng)業(yè)科學(xué),2019,58(S1):67-69,95.
[4] 馬召偉. 農(nóng)田小氣候監(jiān)測(cè)預(yù)警系統(tǒng)[J]. 湖北農(nóng)機(jī)化,2019(15):36.
[5] 陳斌源,紀(jì)立恒,鄧曉璐. 農(nóng)業(yè)氣象自動(dòng)觀測(cè)采集系統(tǒng)對(duì)現(xiàn)代農(nóng)業(yè)氣象觀測(cè)的作用[J]. 福建熱作科技,2018,43(1):64-66.
[6] 王 洋. Debian架構(gòu)研究[J]. 電腦知識(shí)與技術(shù),2017,13(13):75-77.
[7] 劉 雨,望育梅,張 琳. 一種無(wú)線傳感器網(wǎng)絡(luò)中的信息驅(qū)動(dòng)節(jié)點(diǎn)選擇機(jī)制[J]. 北京郵電大學(xué)學(xué)報(bào),2006(6):66-70.
[8] 熊夢(mèng)彪,高 譽(yù),周龍麗,等. 基于MQTT協(xié)議的物聯(lián)網(wǎng)農(nóng)業(yè)監(jiān)測(cè)系統(tǒng)[J]. 科技經(jīng)濟(jì)導(dǎo)刊,2019,27(29):32.
[9] 陳玉兵. 農(nóng)業(yè)物聯(lián)網(wǎng)動(dòng)態(tài)感知與智慧決策系統(tǒng)[A]. 2018年全國(guó)物聯(lián)網(wǎng)技術(shù)與應(yīng)用大會(huì)論文集[C]. 北京:中國(guó)通信學(xué)會(huì),2018.
[10] 李備備,欒 勇,王 超,等. 基于AM3358處理器的嵌入式實(shí)時(shí)EtherCAT主站的構(gòu)建[J]. 組合機(jī)床與自動(dòng)化加工技術(shù), 2015(5):5-9.
[11]OUSSAMA R,MOHAMED T,F(xiàn)ABRICE MONTEIRO A D. Smart device for multi-band industrial IoT communications[J]. ?Procedia computer science,2019,155:660-665.