范鵬程,曹 烤,王大旺,陸建君
(中國氣象局上海物資管理處,上海 200050)
自動氣象站是指能夠?qū)Χ喾N氣象要素自動進行采集、處理、存儲和傳輸?shù)牡孛鏆庀笥^測設(shè)備。隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展,在對遠程監(jiān)控系統(tǒng)進行充分研究之后,結(jié)合當前主流的嵌入式技術(shù),提出一種能實現(xiàn)遠程氣象數(shù)據(jù)監(jiān)測的方法。系統(tǒng)采用嵌入式平臺來采集數(shù)據(jù),并通過以太網(wǎng)控制器W5500搭建的Web服務(wù)器,將數(shù)據(jù)通過Internet發(fā)送給遠程客戶端,來實現(xiàn)客戶端網(wǎng)頁對服務(wù)器采集數(shù)據(jù)的動態(tài)更新。
氣象數(shù)據(jù)采集系統(tǒng)硬件主要由數(shù)據(jù)采集模塊、主控制模塊、數(shù)據(jù)儲存模塊以及電源模塊組成[1-4]。數(shù)據(jù)采集模塊是在主控制器的驅(qū)動下,完成對溫度、濕度、風速、風向以及氣壓等數(shù)據(jù)的采集,主控制模塊使用的是高性能Cortex-M3內(nèi)核的STM32處理器,它可以完成對數(shù)據(jù)采集模塊的控制以及對采集數(shù)據(jù)的處理工作。數(shù)據(jù)儲存模塊使用SD卡完成數(shù)據(jù)存儲,處理完成的數(shù)據(jù)通過以太網(wǎng)模塊發(fā)送至客戶端[5,6],整體結(jié)構(gòu)設(shè)計如圖 1 所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
在供電方面,使用太陽能供電和蓄電池供電的組合方式保證自動氣象站能全天候工作。在有足夠強的光照的條件下,太陽能電池板的電壓經(jīng)過充電控制芯片UC3906,給鉛酸蓄電池進行充電,在光照較弱的條件下,充電控制器控制充電電路不啟動,不對蓄電池進行充電。UC3906芯片是專門為鉛酸電池充電設(shè)計的,其內(nèi)部的基準電壓隨溫度變化規(guī)律與鉛酸電池電壓的溫度特性完全一致,通過對環(huán)境溫度的準確監(jiān)測,保證電池既充足電又不會嚴重過充電,這樣有利于提高充電效率和延長使用壽命[7]。
系統(tǒng)對太陽能電池板電壓、充電器輸出電壓、STM32主控模塊電壓這三路電壓進行監(jiān)測,保證自動氣象站能夠工作在正常狀態(tài)。電壓監(jiān)測使用STM32內(nèi)部自帶的ADC,它是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器,有18個通道,其中兩路為內(nèi)部信號源,剩余的16個外部通道可以實現(xiàn)對外部多路電壓信號的測量。系統(tǒng)使用的STM32F103RCTB內(nèi)部參考電壓引腳與VCC信號線相連,這樣ADC的參考電壓就是VCC上的電壓。所以太陽能電池板的電壓及充電器輸出電壓,經(jīng)分壓電阻降壓后,保證小于3.3V,接入STM32 ADC的I/O口以實現(xiàn)對這三路電壓的監(jiān)測。
嵌入式Web服務(wù)器的設(shè)計是系統(tǒng)的重點和難點,它包括三部分內(nèi)容:以太網(wǎng)模塊接口電路、HTTP協(xié)議以及實時數(shù)據(jù)的傳輸。
Internet接入設(shè)備的傳統(tǒng)做法基本上是采用軟件編程,由于軟件實現(xiàn)的協(xié)議缺乏穩(wěn)定性以及網(wǎng)絡(luò)協(xié)議的復(fù)雜性,這對開發(fā)人員的能力要求比較高。因此直接采用硬件協(xié)議棧實現(xiàn)網(wǎng)絡(luò)連接,具有設(shè)計簡單方便、應(yīng)用快捷靈活等特點。WIZnet公司生產(chǎn)的W5500使用邏輯門電路實現(xiàn)TCP/IP協(xié)議棧的傳輸層以及網(wǎng)絡(luò)層,并集成了鏈路層、物理層以及32KB存儲器用作數(shù)據(jù)收發(fā)緩存。這樣就把數(shù)據(jù)流量的處理工作轉(zhuǎn)移到W5500集成硬件中進行,使得主控芯片只需要承擔應(yīng)用層控制信息的處理任務(wù)。因而使用W5500只需要一些簡單的Socket編程就能實現(xiàn)以太網(wǎng)的應(yīng)用,這為嵌入式的設(shè)計開發(fā)提供硬件參考。
W5500提供了SPI接口,從而能夠更加容易與外設(shè)MCU通信,而且W5500使用了新的高效SPI協(xié)議支持80MHz速率,從而能夠更好的實現(xiàn)高速網(wǎng)絡(luò)通訊。如圖2所示,本設(shè)計采用SPI接口將STM32微控制器和以太網(wǎng)模塊連接構(gòu)成以太網(wǎng)接口電路[8,9],其中 RJ-45 接口作為以太網(wǎng)通信接口是實現(xiàn)Internet接入的樞紐,網(wǎng)絡(luò)傳輸狀態(tài)指示燈指示網(wǎng)絡(luò)的工作狀態(tài)是否正常。
圖2 以太網(wǎng)接口電路
HTTP(超文本傳輸協(xié)議)是因特網(wǎng)中在Web服務(wù)器和客戶瀏覽器之間傳輸數(shù)據(jù)使用的協(xié)議。首先,HTTP協(xié)議是TCP/IP模型中應(yīng)用層一個面向?qū)ο蟮膮f(xié)議,在HTTP工作開始之前,瀏覽器與服務(wù)器之間要建立TCP鏈接,然后瀏覽器向服務(wù)器發(fā)送請求信息,服務(wù)器接受到請求信息之后返回響應(yīng)信息,瀏覽器接收到服務(wù)器的響應(yīng)信息后,對數(shù)據(jù)進行處理執(zhí)行。如圖3所示,就是HTTP協(xié)議傳輸數(shù)據(jù)的基本過程。
圖3 HTTP傳輸數(shù)據(jù)示意圖
在STM32微控制器和以太網(wǎng)模塊W5500搭建的硬件平臺上,要實現(xiàn)HTTP服務(wù)器的通信過程,大致分為以下幾個步驟。
(1)初始化服務(wù)器:這部分完成Web服務(wù)器的初始化,例如W5500作為Web服務(wù)器,首先分配Socket去監(jiān)聽HTTP請求。
(2)接受并解析客戶端請求:當Socket連接建立完成后,W5500接收來自客戶端的HTTP請求并進行分析。
(3)回應(yīng)響應(yīng)消息:如果請求方法為GET,則先返回響應(yīng)首部,再將客戶端請求的URL目標文件從內(nèi)存中讀出,作為HTTP應(yīng)答發(fā)送給客戶端。
(4)關(guān)閉:HTTP響應(yīng)消息完成后,關(guān)閉與客戶端的連接。
由于Web服務(wù)器和瀏覽器在通信時使用TCP協(xié)議工作,根據(jù)SOCK_HTTP之間狀態(tài)的不同,執(zhí)行不同的操作。http函數(shù)就實現(xiàn)了Web服務(wù)器接受請求和回復(fù)響應(yīng)的全過程。HTTP服務(wù)器實現(xiàn)的具體流程[10],如圖 4 所示。
圖4 HTTP服務(wù)器實現(xiàn)流程圖
要在嵌入式系統(tǒng)中實現(xiàn)頁面的動態(tài)更新,與在通用服務(wù)器上是不一樣的。由于受到單片機處理速度以及存儲空間的限制,不可能生成各種不同的頁面。 這里采用 SSI技術(shù),SSI(Server Side Include)俗稱服務(wù)器端嵌入,是一種網(wǎng)頁制作技術(shù)。它的工作原理是檢測文件中的標志位,然后在這個標志前面添加你所需要的字符串。
因此在嵌入式系統(tǒng)中,可將編好的網(wǎng)頁文件保存在自定義的數(shù)組中,對需要添加氣象數(shù)據(jù)部分作一個特殊標志。當程序運行時,先將數(shù)組讀入內(nèi)存,然后檢測數(shù)組中的標記,將傳感器測量并處理完成后的氣象數(shù)據(jù)添加到標志之前,這樣就可以重新生成一個頁面,并將其發(fā)送給客戶端。動態(tài)網(wǎng)頁可以及時更新網(wǎng)頁中的某些數(shù)據(jù),因此可以清楚的查詢到所需要觀測的氣象數(shù)據(jù),使遠程監(jiān)測變得方便快捷[11],具體實現(xiàn)步驟如下。
首先,新建一個index.html的靜態(tài)網(wǎng)頁文件,將靜態(tài)網(wǎng)頁存儲在數(shù)組webpage內(nèi),代碼簡化如下:
當服務(wù)器接受到客戶端的請求,就將數(shù)組webpage內(nèi)的網(wǎng)頁作為響應(yīng)發(fā)送給客戶端。代碼簡化如下:
其中定義了W5500的發(fā)送/接受緩存區(qū)的大小TX_RX_BUF_SIZE,如果所要發(fā)送數(shù)據(jù)的字節(jié)大于TX_RX_BUF_SIZE,就需要將數(shù)據(jù)拆分開依次發(fā)送。Send函數(shù)的原型是uint16 send(SOCKET s,const uint8* buf,uint16 len),這樣我們就可以清楚的了解,通過建立HTTP連接的Socket端口,將緩存區(qū)內(nèi)一定長度的數(shù)據(jù)發(fā)送出去。
由于發(fā)送給服務(wù)器是一個沒有信息的靜態(tài)頁面,不包含任何數(shù)據(jù)值,所以在發(fā)送之前,需要處理器去查找標志,然后在標志前插入測定的氣象數(shù)據(jù),查找函數(shù)如下:
其中tx數(shù)組用于存放處理完成的溫度數(shù)據(jù)。這樣所測定的氣象數(shù)據(jù)就可以顯示在網(wǎng)頁中。
程序中設(shè)定Web服務(wù)器的IP地址為192.168.3.171,客戶端PC機也位于同一網(wǎng)段,設(shè)定IP地址為192.168.3.18。在PC機瀏覽器地址欄輸入嵌入式Web服務(wù)器的IP地址192.168.3.171,運行結(jié)果如表1所示。
表1 數(shù)據(jù)監(jiān)測表
然后點擊進入電壓監(jiān)控頁面,可以顯示出太陽能電池板的電壓、充電器輸出電壓以及STM32主控模塊電壓,運行結(jié)果如表2所示。
表2 電壓檢測表
隨著信息化的推進與網(wǎng)絡(luò)技術(shù)的發(fā)展,嵌入式系統(tǒng)設(shè)備實現(xiàn)網(wǎng)絡(luò)連接成為了一大趨勢。系統(tǒng)基于Cortex-M3的嵌入式模塊,其中太網(wǎng)控制器W5500的使用,比其它以太網(wǎng)方案更加快捷、方便實現(xiàn)了自動氣象站監(jiān)測系統(tǒng)數(shù)據(jù)的更新[12-17]。經(jīng)過模擬測試表明,可以對氣壓、溫度、濕度、風向、風速進行較為精確地監(jiān)測。
[1]毛壽興,楊麗麗.自動氣象站氣壓傳感器的校準及誤差分析處理[J].氣象研究與應(yīng)用,2016,37(4):96-98.
[2]陶偉,張喜鴻.廣西自動氣象站計量檢定智能顯示平臺的研制[J].氣象研究與應(yīng)用,2015,36(4):94-96.
[3]黃宏智,黃飛龍,陳冰懷.新型自動氣象站實時監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].廣東氣象,2016,38(5):74-77.
[4]王建莊,余秀娟.國家級自動氣象站應(yīng)用APN自動補傳的實現(xiàn)[J].廣東氣象,2015,37(4):73-76.
[5]張惠捷,鐘鼎.基于 Cortex-M3 的自動氣象站設(shè)計[J].電子技術(shù),2012,37(8):70-72.
[6]郁波.自動氣象站數(shù)據(jù)傳輸系統(tǒng)設(shè)計[D].南京:南京信息工程大學(xué),2008.
[7]徐海輝.基于 UC3906的太陽能充電控制器的設(shè)計[J].通信電源技術(shù),2010,27(2):33-34.
[8]于春雪.W5100在遠程電力質(zhì)量監(jiān)測設(shè)備中的應(yīng)用[J].電力系統(tǒng)通信,2011,32(227):59-64.
[9]陳實,王琪,張鐵軍,等.一種基于W5100的數(shù)據(jù)傳輸系統(tǒng)[J].電子技術(shù)應(yīng)用,2013,39(9):54-56.
[10]高嵩.基于HTTP協(xié)議的嵌入式遠程監(jiān)控系統(tǒng)的研究[D].北京:北京工業(yè)大學(xué),2009.
[11]林笑君.基于Cortex-M3的嵌入式WEB服務(wù)器監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[D].太原:太原理工大學(xué),2013.
[12]周柳麗,蒙程,馬冬晨.自動氣象站現(xiàn)場校準過程處理經(jīng)驗[J].氣象研究與應(yīng)用,2013,34(4):67-69.
[13]田小芳,韋麗英,黃健征.自動氣象站蒸發(fā)傳感器日常維護及數(shù)據(jù)異常處理[J].氣象研究與應(yīng)用,2016,37(S1):149.
[14]黎錦雷,韋菊,楊玉靜.新型自動氣象站故障分析與排除[J].氣象研究與應(yīng)用,2015,36(4):100-102.
[15]王建莊,余秀娟.廣東省自動氣象站數(shù)據(jù)傳輸監(jiān)控功能的實現(xiàn)[J].廣東氣象,2013,35(2):71-73.
[16]雷衛(wèi)延,李源鴻,楊志健.船舶自動氣象站中心采集系統(tǒng)的設(shè)計與實現(xiàn)[J].廣東氣象,2014,36(6):63-66.
[17]陳映強,鄭繼玲,黃育嬌.自動站氣象資料管理查詢系統(tǒng)的設(shè)計與實現(xiàn)[J].廣東氣象,2012,34(5):54-56.