梁澤東,吳祖賢,張海強
(1.北方民族大學(xué)電氣信息工程學(xué)院,銀川750021;2.北方民族大學(xué)計算機科學(xué)與工程學(xué)院,銀川750021;3.北方民族大學(xué)電氣信息工程學(xué)院,銀川750021)
當(dāng)代智慧農(nóng)業(yè)、化工廠及人們的生活出行對氣象數(shù)據(jù)的要求越來越高,小型氣象站更加受到人們的重視。物聯(lián)網(wǎng)技術(shù)發(fā)展使得小型氣象站的信息傳遞和存儲變得十分便捷。為了有效提高物聯(lián)網(wǎng)產(chǎn)品開發(fā)的效率出現(xiàn)了物聯(lián)網(wǎng)平臺,這個氣象站建立在阿里云物聯(lián)網(wǎng)平臺上,利用平臺的接口完成App制作和網(wǎng)頁的構(gòu)建,同時還可以完成大屏展示和遠(yuǎn)程控制。相比NBIoT這個氣象站連接校園網(wǎng)即可快速進(jìn)行數(shù)據(jù)交換,又無需另外購買NB卡及套餐。氣象站用AMQP協(xié)議傳輸數(shù)據(jù)到數(shù)據(jù)庫,數(shù)據(jù)庫可以實時接收數(shù)據(jù)并完成分析,比以往的Tomcat部署Web應(yīng)用速度更快操作更加簡單。
氣象站可以分為硬件采集上傳部分、云平臺流轉(zhuǎn)數(shù)據(jù)和顯示與控制部分、ECS數(shù)據(jù)存儲分析部分、流通協(xié)議部分。硬件采集數(shù)據(jù)后用輕量級消息傳輸協(xié)議MQTT[1]連接云平臺,用JSON數(shù)據(jù)交換格式完成硬件與平臺的信息翻譯。云平臺和ECS主機之間用高級消息隊列協(xié)議AMQP完成平臺和ECS主機之間大量的信息交流。云平臺是數(shù)據(jù)的中樞,接收硬件數(shù)據(jù)也可以控制硬件。平臺數(shù)據(jù)流向App和網(wǎng)頁顯示,也流向建立在云主機上的數(shù)據(jù)庫進(jìn)行分析?;谄脚_的App和網(wǎng)頁實時顯示采集數(shù)據(jù)和分析數(shù)據(jù)。
圖1 氣象站系統(tǒng)原理圖
主控:采用NodeMCU作為主控部分,它是ESP8266 SOC上燒錄了NodeMCU固件,可以用Lua語言開發(fā)。如果熟悉Arduino可以用Arduino IDE直接開發(fā),相當(dāng)于直接操作固件調(diào)用芯片內(nèi)部資源。ESP8266內(nèi)置超低功耗Tensilica L106 32-bit RISC處理器,CPU時鐘速度最高可達(dá)160MHz,支持完整的TCP/IP協(xié)議棧。NodeMCU連入校園網(wǎng),使用阿里云提供的SDK實現(xiàn)MQTT協(xié)議連接物聯(lián)網(wǎng)平臺,發(fā)布和訂閱的數(shù)據(jù)都用JSON格式解析。NodeMCU利用校園內(nèi)便利的校園網(wǎng)資源,連接校園Wi-Fi發(fā)送溫濕度、風(fēng)力大小等天氣數(shù)據(jù),接收平臺傳來的控制信息,根據(jù)季節(jié)情況改變選擇使用的傳感器種類,合理調(diào)整上傳頻率節(jié)約平臺流量。
溫濕度檢測:DHT11是數(shù)字溫濕度傳感器,內(nèi)部自帶處理芯片進(jìn)行AD轉(zhuǎn)化。主控模塊采集的是數(shù)字信號,減輕主控芯片的數(shù)據(jù)處理壓力,增加氣象站系統(tǒng)硬件反應(yīng)速度。模塊內(nèi)部含一個電阻式感濕元件和一個NTC測溫元件,測量范圍是濕度20~90%RH,溫度0~50℃。檢測溫濕度對采集速度沒有過高要求,所以傳感器選擇中心在于準(zhǔn)確度[2]。DHT11不能檢測零下溫度,考慮到氣象信息的實際情況,氣象站需要進(jìn)行硬件調(diào)整。云平臺可以控制硬件的活動,在溫度低時啟用DS18B20溫度傳感器。
風(fēng)力檢測:三杯風(fēng)速傳感器采用優(yōu)質(zhì)鋁合金型材,表面經(jīng)電鍍噴塑處理,內(nèi)部經(jīng)過防水處理。小型直流有刷電機連接三杯旋轉(zhuǎn)軸,產(chǎn)生的電壓近似與風(fēng)速成正比。電壓采集采用歸一化處理之后代入公式計算風(fēng)力。在氣象站中風(fēng)力傳感器應(yīng)該置于高處,所以采用RS-485遠(yuǎn)距離通訊減少誤差。
輸出電壓與風(fēng)速的關(guān)系:
風(fēng)速 S(m/s),電壓 V(mv)。
雨量監(jiān)測:雨量傳感器由一個雨滴接收板和一個電壓比較電路組成,接收板連接在比較器的電阻上,雨水降落在擋板上改變電阻阻值從而改變電壓。接收板面積加大,擺放時與水平面盡量平行來減小誤差。雨量檢測經(jīng)過測試得出表1。
表1 雨量與傳感器采集值關(guān)系表
PM2.5檢測:采用激光PM2.5檢測系統(tǒng),由于激光的高方向性和高相干性,激光技術(shù)在測量及傳感領(lǐng)域有很大的應(yīng)用前景[3]。氣象站的激光發(fā)生端安裝風(fēng)扇提供穩(wěn)定的氣流,摻雜各種微粒的氣流經(jīng)過時發(fā)生散射,接收端進(jìn)行光電轉(zhuǎn)化并放大電信號,經(jīng)過AD處理輸出數(shù)字信號。NodeMCU采集到數(shù)字信號后上傳平臺,平臺時刻展示PM2.5數(shù)據(jù)數(shù),數(shù)據(jù)分析對比之后發(fā)送信息給平臺提示人們出門佩戴口罩的情況。
物聯(lián)網(wǎng)平臺作為數(shù)據(jù)流轉(zhuǎn)中間環(huán)節(jié),可以把實時數(shù)據(jù)流轉(zhuǎn)到App、網(wǎng)頁、數(shù)據(jù)庫。硬件、平臺、顯示、數(shù)據(jù)庫存儲的基礎(chǔ)是MQTT協(xié)議的topic[4]即數(shù)據(jù)流通的屬性名。在物聯(lián)網(wǎng)平臺設(shè)計網(wǎng)頁和App應(yīng)用并鏈接到自己的網(wǎng)址下,App和網(wǎng)頁的制作是簡單的圖形拼接,用不同的模塊組合完成數(shù)據(jù)顯示清洗功能,不涉及復(fù)雜的編程,這樣在滿足需求的前提下大大提高了效率。App和網(wǎng)頁設(shè)計時都可以添加硬件控制組件,當(dāng)季節(jié)變化時合理控制硬件上傳頻率和溫度傳感器的配合情況。氣象站利用平臺的接口把需要實時顯示的數(shù)據(jù)在網(wǎng)頁和App上顯示,同時平臺接收ECS數(shù)據(jù)庫分析結(jié)果的信息也可以顯示。人們看到信息實時變化的同時,還能看到穿衣指數(shù)、是否需戴口罩等提示。
為了對采集的氣象數(shù)據(jù)做全面的分析并能夠存到本地的存儲設(shè)備中,氣象站把數(shù)據(jù)流轉(zhuǎn)到自己的數(shù)據(jù)庫中,ECS云主機上建立SQL Server數(shù)據(jù)庫,配置管理權(quán)限和登錄信息?;跀?shù)據(jù)庫的分析程序可以隨時接收、分析、發(fā)布消息,云上數(shù)據(jù)庫操作和普通的數(shù)據(jù)庫一樣。在云主機上安裝IntelliJ IDEA配置JDK1.8環(huán)境。運行Apache Qpid JMS客戶端,用標(biāo)準(zhǔn)化的消息中間件AMQP協(xié)議完成平臺和ECS的大量數(shù)據(jù)交換。數(shù)據(jù)存儲于數(shù)據(jù)庫中,使用Java持久層框架MyBatis進(jìn)行數(shù)據(jù)操作,建立數(shù)學(xué)模型結(jié)合大量的數(shù)據(jù)統(tǒng)計出當(dāng)天及以后幾天的數(shù)據(jù)走勢。ECS發(fā)送信息給平臺在App和網(wǎng)頁顯示完成預(yù)報。PM2.5檢測到的測量值較大并持續(xù)增加時,ECS發(fā)送信息給物聯(lián)網(wǎng)平臺在顯示界面提示戴口罩。數(shù)據(jù)把空間存滿時,把數(shù)據(jù)備份到本地并刪除云端數(shù)據(jù)。
交流就需要媒介,軟件在網(wǎng)上交流擺脫了時間空間限制,用標(biāo)準(zhǔn)化的協(xié)議統(tǒng)一各方語言。JSON是一種輕量級的數(shù)據(jù)交換格式,為機器解析和生成提供便利,并有效地提升網(wǎng)絡(luò)傳輸效率。NodeMC上傳數(shù)據(jù)時把字符串轉(zhuǎn)換為平臺的數(shù)據(jù)格式。平臺操縱硬件時,
JSON可以將JavaScript對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,在硬件程序中傳遞字符串[5]。MQTT是一種發(fā)布/訂閱輕量級的消息傳輸協(xié)議,為網(wǎng)絡(luò)受限設(shè)備傳輸數(shù)據(jù)提供有力保障。AMQP高級消息隊列協(xié)議,是一個標(biāo)準(zhǔn)化的消息中間件協(xié)議。MQTT完成硬件和平臺的信息交流,AMQP完成平臺和ECS數(shù)據(jù)庫信息交流。他們連接的兩端都互為生產(chǎn)者和消費者,進(jìn)行相互之間的交流。單片機的處理能力較差選擇輕量級的MQTT協(xié)議,平臺和數(shù)據(jù)庫間信息交換量巨大傳輸速度快,選擇性能較強的AMQP協(xié)議。
氣象站的軟件有本地的Arduino IDE和云服務(wù)器上的IntelliJ IDEA及SQL Server。Arduino語言基于Wiring語言開發(fā),簡單易學(xué)[6]。硬件部分的程序包括數(shù)據(jù)采集、連接Wi-Fi、數(shù)據(jù)發(fā)布和訂閱、JSON解析。風(fēng)力檢測、雨滴傳感器用Arduino模擬量讀取進(jìn)行AD轉(zhuǎn)化,DHT11、DS18B20和PM2.5傳感器發(fā)送數(shù)字信號,NodeMCU用數(shù)字量讀取。程序完成其他功能有相應(yīng)的SDK,例如MQTT協(xié)議使用aliyun_mqtt.h實現(xiàn)。云主機上安裝JDK1.8環(huán)境,打開IntelliJ IDEA創(chuàng)建Maven項目,添加Apache Qpid JMS客戶端和其他依賴,進(jìn)行數(shù)據(jù)流轉(zhuǎn)。通過數(shù)學(xué)期望模型處理數(shù)據(jù)庫數(shù)據(jù),將未來天氣狀況進(jìn)行評估。
圖2 采集上傳程序
云平臺為物聯(lián)網(wǎng)應(yīng)用提供便利,為合理利用平臺的流量資源通過平臺可以控制硬件,以不同的頻率調(diào)用不同的硬件上傳數(shù)據(jù)。物聯(lián)網(wǎng)的云上氣象站系統(tǒng)完成數(shù)據(jù)的自動采集,自動分析,實時顯示。物聯(lián)網(wǎng)技術(shù)將會在未來氣象、農(nóng)業(yè)、工業(yè)生產(chǎn)中發(fā)揮巨大的作用。物聯(lián)網(wǎng)應(yīng)用普遍分為硬件采集信號部分,硬件聯(lián)網(wǎng)上傳部分,網(wǎng)絡(luò)端數(shù)據(jù)流轉(zhuǎn)部分,應(yīng)用分析部分。技術(shù)發(fā)展需要細(xì)化工作任務(wù),云平臺正式基于這個背景下的產(chǎn)物,物聯(lián)網(wǎng)發(fā)展需要模塊化。
圖3 數(shù)據(jù)處理程序
圖4 溫濕度部分實時顯示(網(wǎng)頁端)