勇婭詢,劉懷芝
(1.江蘇科技大學 電子信息學院,鎮(zhèn)江 212003;2.中船重工鵬力(南京)大氣海洋信息系統(tǒng)有限公司)
?
嵌入式系統(tǒng)的小型自動氣象站設計※
勇婭詢1,劉懷芝2
(1.江蘇科技大學 電子信息學院,鎮(zhèn)江 212003;2.中船重工鵬力(南京)大氣海洋信息系統(tǒng)有限公司)
摘要:隨著社會進步,人們對周圍氣象信息的準確性和實時性提出了更高的要求,由于市場上的自動氣象站價格較高,因而設計了基于嵌入式的小型自動氣象站。系統(tǒng)以高性能的ARM Cortex-M3微控制器 LPC1788為硬件核心,擴展了外圍接口電路。以嵌入式實時操作系統(tǒng)μC/OS-II為軟件平臺,移植了μC/GUI圖形用戶界面,實現(xiàn)了數(shù)據(jù)的采集、處理、存儲及顯示等功能。通過3G模塊與數(shù)據(jù)監(jiān)控中心主機進行通信,實現(xiàn)了遠程數(shù)據(jù)實時傳輸。經測試,系統(tǒng)具有體積小、成本低、功耗低、采集速度快等優(yōu)點,在氣象監(jiān)測行業(yè)中具有廣闊的應用前景。
關鍵詞:Cortex-M3;μC/OS-II;μC/GUI;小型自動氣象站
引言
自動氣象站是一種集氣象數(shù)據(jù)的采集、存儲、傳輸和管理于一體的無人值守的氣象采集系統(tǒng),在電子設備或計算機控制下自動進行氣象觀測和資料的收集傳輸[1]。小型自動氣象站主要觀測氣壓、氣溫、相對濕度、風向、風速等基本氣象要素,也可根據(jù)需求增加測量要素,如光照、蒸發(fā)量、雨量等。小型自動氣象站具有成本低、功耗低、安裝方便等優(yōu)勢,既適用于氣象、海洋、機場、港口、城市以及工業(yè)/農業(yè)區(qū)環(huán)境監(jiān)測,也適合學校和科研機構等使用,應用十分廣泛[2]。
1總體設計方案
小型自動氣象站主要由6大功能模塊組成,分別為主控模塊、信號采集模塊、數(shù)據(jù)存儲模塊、人機交互模塊、通信模塊和電源模塊。小型自動氣象站的組成框圖如圖 1所示[3]。
1.1主控模塊
考慮到設計要求與經濟因素,本系統(tǒng)選擇了恩智浦基于Cortex-M3內核的LPC1788微控制器作為主控核心,其資源豐富,主頻可達120 MHz,支持SDRAM和NAND FLASH擴展、具有512 KB的FLASH和96 KB的RAM、 4個定時器、5個UART、8通道12位A/D轉換器,1路SPI以及3路I2C、帶LCD_TFT控制,支持USB 2.0(host/device/OTG)、支持SD卡、具有內部RTC等,滿足設計要求[4-6]。
以LPC1788微控制器為核心的主控模塊負責驅動整個系統(tǒng)的運行,為其他各個模塊提供接口,實現(xiàn)數(shù)據(jù)的采集、處理、顯示、存儲與傳輸。
圖1 小型自動氣象站的組成框圖
1.2電源模塊
在電源電路中,采用DC 9~18 V電源輸入,供電圖如圖2所示。首先通過DC-DC將輸入電壓變?yōu)?2 V,其中12 V分為兩路,一路為系統(tǒng)提供電壓,另一路為外設供電。然后,12 V通過DC-DC變?yōu)? V,5 V也分為兩路,一路可以給3G/GPRS模塊供電;另一路通過低壓差線性穩(wěn)壓器(LDO)變?yōu)?.3 V,為系統(tǒng)供電。DC-DC電源芯片選用的是LM2596,其輸出的電壓可以調節(jié),擁有3 A負載電流輸出。LDO選擇AMS1117-3.3 V,此芯片最大電流可以達到1 A,兩種芯片均滿足應用需要。
圖2 電源供電圖
供電系統(tǒng)采用市電和太陽能發(fā)電互補,主電采用交流220 V市電,副電采用太陽能發(fā)電,通過自動開關進行切換,保證在無市電的情況下本系統(tǒng)能可靠運行。
1.3信號采集模塊
信號采集模塊以傳感器為核心,負責獲取氣象要素信息。本設計考慮氣象站的小型化、低功耗、安裝便捷、價格等因素,選取了國產的PH-YT超聲波一體化傳感器用來測量風速、風向、溫度、濕度、氣壓共五項基本氣象要素,技術參數(shù)如表1所列。
PH-YT超聲波一體化傳感器通過RS485接口連接采集主控模塊,通信協(xié)議采用標準的Modbus通信協(xié)議。
采集板預留了各種接口,可接擴充的各種類型的傳感器。傳感器由采集板供電,電源可控,電路設計中,為了避免傳感器短路故障而影響系統(tǒng)工作,在各個供電部分都加入了自恢復保險絲,提高了系統(tǒng)運行的可靠性。
1.4數(shù)據(jù)存儲模塊
自動氣象站常工作在野外環(huán)境中,需要大量存儲數(shù)據(jù),當系統(tǒng)存儲容量不夠,又需要保存大量數(shù)據(jù)的時候,可以用SD卡存儲臨時數(shù)據(jù),因而設計了SD卡存儲電路。同時還設計了USB接口電路,當檢測到有U盤接入時,將自動拷貝SD卡中的數(shù)據(jù)。
1.5人機交互模塊
人機交互模塊主要設計了 LCD 液晶屏接口電路,提供直觀的菜單操作界面,方便用戶操作。
1.6通信模塊
通信模塊分為兩個部分:一是智能傳感器通過相應的接口將采集的信息傳輸給主控模塊,二是主控模塊與監(jiān)控中心主機的通信。本設計采用的是3G通信,采集處理好的氣象信息,通過3G模塊上傳到數(shù)據(jù)庫。
2軟件設計與實現(xiàn)
考慮到系統(tǒng)的多任務及實時性,系統(tǒng)在軟件上移植了嵌入式實時操作系統(tǒng)μC/OS-II。主要完成的工作為:根據(jù)所選的MCU對OS_CPU.H 頭文件、OS_CPU_C.C源代碼文件、OS_CPU_A.S 匯編代碼文件進行編寫與修改,接著移植了圖形用戶界面μC/GUI[7-8]。
在系統(tǒng)的硬件平臺上實現(xiàn)μC/OS-II系統(tǒng)軟件層和μC/GUI圖形用戶接口后,根據(jù)系統(tǒng)的應用功能進入嵌入式應用軟件開發(fā)。以LPC1788為核心,把各種輸入/輸出設備相關的功能劃分成不同的任務,主要包括GUI界面顯示任務、串口任務、數(shù)據(jù)采集任務、文件系統(tǒng)存儲任務、按鍵任務等[9]。系統(tǒng)軟件整體工作流程如圖3所示。
表1 技術參數(shù)指標
圖3 系統(tǒng)軟件整體工作流程
2.1數(shù)據(jù)采集任務
PH-YT超聲波一體化傳感器采用標準的Modbus通信協(xié)議[9]。通信協(xié)議具體內容見表2。
表2 傳感器通信協(xié)議
注:XX XX為風速數(shù)據(jù),高前低后;YY YY為風向數(shù)據(jù),高前低后;TP TP為溫度速數(shù)據(jù),高前低后;HU HU為濕度數(shù)據(jù),高前低后;PRE PRE為氣壓數(shù)據(jù),高前低后;CRC為校驗碼。
以獲取風速風向數(shù)據(jù)為例,其具體程序如下:
void SEND_FSFX_ORDER(void){
//發(fā)送獲得風速風向數(shù)據(jù)指令
int i;
unsigned char buf[8]={0x01,0x03,0x00,0x00,0x00,
0x02,0xC4,0x0B};
for(i=0;i<8;i++){
UART_Send(UART_1,&buf[i],1,BLOCKING);
}
}
void GET_FSFX_DATA(void){
//獲得風速風向數(shù)據(jù)
UART_Receive(UART_1,Read_FSFX_Buffer,9,BLOCKING);
}
void SEND_BUFFER_FS(void){
//將風速數(shù)據(jù)通過串口0發(fā)送
int i;
for(i=3;i<5;i++){
UART_Send(UART_0,&Read_FSFX_Buffer[i],1,BLOCKING);
}
}
void Dec_BUFFER_FSFX(){//將風速數(shù)據(jù)轉換成十進制數(shù)據(jù)
DEC_FS=(Read_FSFX_Buffer[3]*256+(Read_FSFX_Buffer[4])) ;
}
2.2串口任務
串行接口(Serial Interface) 簡稱串口,也就是平時所說的COM口,是采用串行通信方式的擴展接口。現(xiàn)場傳感器進行數(shù)據(jù)采集,經過終端處理后在電腦上打印,串口任務如下:
void TRANSMIT_task(void *pdata){
OSTaskSuspend(TRANSMIT_TASK_PRIO);
OSTimeDlyHMSM(0, 0, 0, 500);
for(;;){
DEBUG_LOG("FS->%d.%d ", DEC_FS/100, DEC_FS%100);
DEBUG_LOG("FX->%d ", DEC_FX);
DEBUG_LOG("TP->%d.%d ", DEC_TP/10, DEC_TP%10);
DEBUG_LOG("HU->%d.%d ", DEC_HU/10, DEC_HU%10);
DEBUG_LOG("PRE->%d.%d ", DEC_PRE/10, DEC_PRE%10);
OSTimeDlyHMSM(0, 0, 1,0);
}
}
圖4所示為串口助手顯示的串口打印數(shù)據(jù)。其中FS為風速,F(xiàn)X為風向,TP代表溫度,HU代表濕度,PRE代表氣壓。
圖4 串口打印數(shù)據(jù)
2.3文件存儲任務
數(shù)據(jù)保存在自動氣象站系統(tǒng)中較為重要,傳感器采集的數(shù)據(jù)保存于本地的SD卡中。歷史數(shù)據(jù)以日期命名,每天產生一個文件夾,小時數(shù)據(jù)以小時命名,每小時產生一個txt文檔用于保存每小時產生的數(shù)據(jù),代碼里設置為3 s保存一次數(shù)據(jù)[10],具體程序如下:
void FATFSData(){
status = f_mount(0, &fs);
Create_files(dir_path,file_path);
Write_Time_file(dir_path,file_path) ;
Write_Uart_file(dir_path,file_path) ;
f_mount(0,NULL);
}
系統(tǒng)在執(zhí)行FATFSData()函數(shù)時,首先在FATFS上注冊一個工作區(qū),然后使用Create_files(dir_path,file_path)函數(shù),以年月日的格式創(chuàng)建文件夾路徑dir_path,以小時的格式創(chuàng)建txt文件路徑file_path,這樣便于以后的數(shù)據(jù)查找,測試的結果如圖5所示。Write_Time_file(dir_path,file_path) 和Write_Uart_file(dir_path,file_path) 函數(shù),在所創(chuàng)建的txt文檔中寫入內容,數(shù)據(jù)格式如圖5(c)所示。
圖5 文件系統(tǒng)保存數(shù)據(jù)
2.4GUI顯示任務
GUI界面顯示任務主要完成了以下工作:①確定界面布局;②顯示文本框,并通過文本框顯示采集的數(shù)據(jù);③制作字模,建立字母和漢字庫,并在屏幕上顯示;④顯示圖片。為了節(jié)省內存,通過字模生成器生成漢字,通過鏈表形式加入。為了在LCD屏幕上顯示bmp圖片,首先要把圖片轉換成C文件,這個C文件由一個數(shù)組構成,數(shù)組大小由LCD上顯示的圖片大小決定。顯示圖片首先通過GLCD_DrawIcos(uint16_t x,uint16_t y,uint16_t width,uint16_t height,uint8_t *icosbase)函數(shù)讀取圖片像素點,GLCD_DrawIcos函數(shù)共有5個變量,前4個變量分別代表了圖片顯示的位置和寬度、高度,最后一個參數(shù)是一個指針,指向存放圖片點陣的數(shù)組。然后用函數(shù)GLCD_SetPixel_16bpp(x,y,temp)一點一點地顯示像素點,直到讀取完所有的像素點為止。
界面顯示如圖6所示。圖中顯示的是2015年8月31日下午15時49分在測量基地測得的氣象要素,由于未下雨,雨量數(shù)值顯示為0,此時風速為0.3 m/s,風向為16.7°,溫度為29.0 ℃,氣壓為1006.9 hPa,濕度為58.5%RH。
圖6 界面顯示
3上位機的實現(xiàn)
氣象站系統(tǒng)安裝在鹽城市濱海港的江蘇省海洋氣象環(huán)境綜合觀測研究基地,測得的數(shù)據(jù)通過3G模塊傳輸?shù)焦旧衔粰C數(shù)據(jù)庫中,采用Java語言設計了氣象站顯示界面,采用C/S模式,輸入網址獲得的數(shù)據(jù)實時顯示界面略——編者注,實時顯示了風速、風向、溫度、濕度、氣壓的數(shù)值,選擇要素變化趨勢,可以實時顯示變化曲線圖。
結語
至今為止,該設備運行穩(wěn)定,功能正常,與研究基地內多個類似觀測產品,以及雷達監(jiān)測的數(shù)據(jù)相比,數(shù)據(jù)采集和分析處理結果較為準確。因為小型氣象站安裝便捷、功耗低、性能穩(wěn)定,適合推廣應用。
參考文獻
[1] 周欣,行鴻彥,季鑫源.多功能自動氣象站控制與管理系統(tǒng)[J].電子測量與儀器學報,2011,25(4):348-354.
[2] 孟昭輝,李慶軍.自動氣象站綜述[J].氣象水文海洋儀器,2009,26(4):54-56.
[3] Nguyen Trung Hai,Doan Cao Thanh,Nguyen Van Quan.Distributed defense of distributed DoS using pushback and communicate mechanism[C]//Da Nang City,Viet nam, 2011.
[4] JosePhyiu.ARM Cortex-M3權威指南[M].宋巖,譯.北京:北京航空航天大學出版社,2009:49-65.
[5] 王柏林,胡玉峰,李佳.移動式自動氣象站設計及其在應急氣象環(huán)境監(jiān)測服務中的應用[J].氣象科技, 2006,34(5):628-632.
[6] 陳冬冬,施麗娟,張鑫.新型自動氣象站結構特點及其優(yōu)越性[J].氣象水文海洋儀器,2011(4):93-99.
[7] 彭剛,秦志強.基于ARM Cortex-M3的STM32系列嵌入式微控制器應用實踐[M].北京:電子工業(yè)出版社,2011.
[8] 任哲.嵌入式操作系統(tǒng)μC/OS-II原理及應用[M].北京:北京航空航天大學出版社,2009:40-56.
[9] 肖前軍.基于STM32和MODBUS協(xié)議的多參數(shù)數(shù)據(jù)采集卡設計[J].制造業(yè)自動化,2010,32(12):205-208.
[10] 張濤,左謹平,馬華玲.FatFs在32位微控制器STM32上的移植[J].電子技術,2010(3):25-27.
勇婭詢(碩士研究生),研究方向為智能電氣系統(tǒng);劉懷芝(工程師),研究方向為儀器開發(fā)。
Small Automatic Weather Station Based on Embedded System※
Yong Yaxun1,Liu Huaizhi2
(1.School of Electrical and Information,Jiangsu University of Science and Technology,Zhenjiang 212003,China;2.CSIC Pride (Nanjing) Atmosphere Ocean Information System Co.,Ltd.)
Abstract:With the development of the society,people put forward higher requirements for the accuracy and real-time of the weather information around themself.Due to the price of the automatic weather station on the market,therefore a small automatic weather station based on embedded system is designed.The system uses high-performance ARM Cortex-M3 microcontroller LPC1788 as the hardware core,and expands the peripheral interface circuits.The embedded real-time operating system μC/OS-II is used as the software platform,and the μC/GUI graphical interface system is ported to achieve data collection,processing,storage and display and so on.It communicates with the data monitoring center host through the 3G module,and achieves the real-time remote data transmission.The test results show that the system has small size,low cost,low power consumption,acquisition speed,etc,and has a wide range of applications in the weather monitoring industry.
Key words:Cortex-M3;μC/OS-II;μC/GUI;small automatic weather station
收稿日期:(責任編輯:薛士然2015-09-09)
中圖分類號:TP393
文獻標識碼:A