摘 要: 設計了一種基于ARM920T微處理器和GPRS網(wǎng)絡的無線氣象預警信息接收系統(tǒng),。該系統(tǒng)采用GPRS作為信息接收的橋梁,通過短消息業(yè)務接收氣象預警信息,利用嵌入式Linux操作系統(tǒng)資源和圖形開發(fā)庫QT/E實現(xiàn)氣象預警信息的顯示,、語音播報,。該方案有效地縮短了接收延遲時間,提高了預警信息接收的有效性,,避免了傳統(tǒng)的氣象預警接收方式無法及時應對突發(fā)性氣象災害的情況,。
關(guān)鍵詞: ARM9;短消息業(yè)務,;OSYNO6188,;嵌入式Linux;QT/E
我國是世界上自然災害發(fā)生十分頻繁,、災害種類甚多,、造成損失十分嚴重的少數(shù)國家之一。每年干旱,、洪澇,、臺風、暴雨,、冰雹等災害危及人民生命和財產(chǎn)的安全,,國民經(jīng)濟也受到了極大的損失。而且,,隨著經(jīng)濟的高速發(fā)展,,自然災害造成的損失亦呈上升趨勢,直接影響著社會和經(jīng)濟的發(fā)展,。
因此,,在電力、交通,、工業(yè)控制,、零售、公共事業(yè)管理,、醫(yī)療,、水利、石油,、農(nóng)業(yè)等各個行業(yè)實時接收和發(fā)布氣象預警信息,,避免電視媒體、報紙等發(fā)布信息的延時,,能大大減少氣象災害帶來的損失,。
隨著移動通信技術(shù)的日益成熟,短消息業(yè)務發(fā)展越來越迅速,,不僅應用在人們?nèi)粘5男畔⒔涣髦?,在現(xiàn)場監(jiān)測,、遠程控制等領(lǐng)域也得到了越來越廣泛的應用。短消息業(yè)務是承載在GPRS網(wǎng)絡上的,。GPRS即通用分組無線業(yè)務,,是在現(xiàn)有GSM網(wǎng)絡上開通的一種新型的分組數(shù)據(jù)傳輸技術(shù)。語音合成技術(shù)實現(xiàn)了文字到語音的轉(zhuǎn)換,。本設計結(jié)合嵌入式技術(shù),、GPRS技術(shù)和語音合成技術(shù),提出了基于ARM與SMS的氣象預警信息終端,。
1 總體設計
氣象預警信息終端系統(tǒng)結(jié)構(gòu)如圖1所示。在中心服務器上通過信息發(fā)布軟件發(fā)布預警信息到GPRS模塊,,該短消息通過GPRS網(wǎng)絡傳送,。由嵌入式Linux終端上的GPRS模塊接收來自中心服務器的氣象預警信息,該模塊將接收到的數(shù)據(jù)通過串口傳輸給終端處理器ARM9,。終端處理器對接收的短消息進行解析,,還原出服務器發(fā)送的預警信息。最后通過LCD顯示屏,、語音等方式將預警信息播出,。
2 系統(tǒng)硬件設計
本系統(tǒng)接收端的硬件部分是基于三星S3C2440 32 bit微處理器的嵌入式系統(tǒng),主要負責氣象預警信息的讀取以及GPRS網(wǎng)絡傳輸,、語音芯片和LCD液晶屏的控制,。
氣象預警信息接收終端的基本組成部分如圖2所示。整個外圍電路包括:嵌入式語音合成模塊,、GPRS無線通信模塊,、NAND Flash存儲擴展和LCD觸摸液晶顯示模塊。
ARM9微處理器具有高性能和低功耗特性,,典型處理速度為1.1 MIPS/MHz,,系統(tǒng)主時鐘頻率為100 MHz~233 MHz。片外擴展多功能外圍接口,,如USB,、UART、I2S,、LCD控制器,、鍵盤接口、RTC,、JTAG等,。還有足夠大的存儲空間,如2 MB的NOR Flash,、128 MB的NAND Flash(用于存儲bootloader,、嵌入式Linux內(nèi)核和帶有QT圖形界面庫的文件系統(tǒng)),、64 MB的SDRAM。
TC35i模塊與GSM 2/2+兼容,,并支持雙頻(GSM 900/1 800 MHz),、RS232數(shù)據(jù)口,符合ETSI標準GSM0707和GSM0705,。該模塊集射頻電路和基帶于一體,,向用戶提供標準的AT命令接口,為數(shù)據(jù),、語音,、短消息和傳真提供快速、可靠,、安全的傳輸,,方便用戶的應用開發(fā)及設計。
OSYNO 6188嵌入式語音合成模塊[1]通過異步串口接收待合成文本,,直接通過PWM輸出方式驅(qū)動揚聲器實現(xiàn)文本到語音的轉(zhuǎn)換,。該芯片支持國家標準GB_2312所有漢字,支持標點符號,、電話號碼,、郵政編碼、英文字母等特殊字符處理,。
3 系統(tǒng)軟件設計
氣象預警信息終端是典型的嵌入式系統(tǒng),,目標代碼運行在S3C2440上面,在構(gòu)架的嵌入式平臺上,,選用安裝了arm-linux-gcc的交叉編譯環(huán)境的fedora14為開發(fā)調(diào)試環(huán)境,,以Linux為嵌入式操作系統(tǒng)開發(fā)應用程序。
氣象預警信息終端軟件主要是基于Linux和QT/E的用戶程序開發(fā)以及相關(guān)驅(qū)動移植,。應用程序按功能劃分,,由SMS數(shù)據(jù)傳輸、PDU短信息解碼[2],、文本到語音轉(zhuǎn)換和人機交互界面4部分組成,。
系統(tǒng)上電啟動Linux后,即開始啟動終端圖形用戶界面應用程序,,該應用程序創(chuàng)建了一個主線程,,以響應用戶的界面操作,初始化GPRS模塊[3],,發(fā)送命令,,設置其為新短信息提示,該主線程還分別在后臺創(chuàng)建一個子線程,。GPRS模塊的讀線程不斷偵聽串口以獲取GPRS模塊返回的短信息,,若從串口讀到新短信息提示回送命令字,,則彈出一個對話框顯示“有新短信息”,提示用戶操作,,系統(tǒng)內(nèi)部啟動后臺子線程,,自動完成短信息的解析和存儲,并通過信息內(nèi)容判斷信息的預警類別,。若為紅色預警,,立即驅(qū)動6188語音芯片播報該條信息;若為其他預警類別,,則由用戶自由選擇顯示或者語音播報,。實現(xiàn)將以PDU方式編碼的短信息解碼,并轉(zhuǎn)換成GB2312碼,,因為OSYNO 6188只能識別以GB編碼的漢字,。軟件流程如圖3所示。
3.1 SMS數(shù)據(jù)傳輸模塊設計
TC35i支持語音和短信服務,。在本系統(tǒng)中,通過串口3發(fā)送AT指令集與TC35i模塊通信,,實現(xiàn)與遠端設備的收發(fā)短信息功能,。
在本系統(tǒng)中,GPRS模塊就相當于一個調(diào)制解調(diào)器,,ARM處理器通過串口發(fā)送AT命令控制GPRS模塊工作情況和得到GPRS模塊的反饋信息,。AT指令集是調(diào)制解調(diào)器通信接口的工業(yè)標準,它的基本格式為:AT+命令字符,。通信過程中,,ARM每發(fā)送一條指令,都需要加上“回車符”作為指令的結(jié)束符,,否則TC35i不能識別,。該功能實現(xiàn)過程為:首先初始化GPRS模塊,即發(fā)送AT命令測試網(wǎng)絡情況并設置短信模式AT+CNMI=2,,1,,0,0,,0(新短信提醒,,并把收到的短信存入SIM卡);然后設置短信接收模式AT+CMGF=0(設為PDU模式,,可以接收漢字),;接著發(fā)送接收短信息命令AT+CMGR=last(last中存有收到短信在SIM卡中的存儲記錄號)。讀取短信功能由gprs_read_msg()函數(shù)實現(xiàn),。代碼如下:
int gprs_read_msg()
{
……
tty_write(“AT+CMGF=0\r”,,strlen(“AT+CMGF=0\r”)),;
while(receive(fd,strAT,,”OK”,,strATResult,ATREADTIMES,,last)!=TRUE)
{
……
}
while(receive(fd,,strAT,”OK”,,strATResult,,ATREADTIMES,last)!=TRUE)
//讀取短信內(nèi)容到strATResult中
……
}
其中,,tty_write()為底層串口寫函數(shù),,receive()函數(shù)向GPRS模塊發(fā)送AT命令和從GPRS模塊讀取返回信息;fd為已經(jīng)打開的串口描述符,;strAT為要向GPRS模塊發(fā)送的命令信息,;“OK”為需要匹配的字符串;strATResult為從GPRS模塊返回的信息,;ATREADTIMES為當讀取返回信息字符個數(shù)為0時,,函數(shù)繼續(xù)讀取的次數(shù);last為從模塊返回信息的最后一個字符,。
3.2 PDU模式的短信息解碼
基于GPRS的短信息收發(fā)常用的編碼格式有Text模式和PDU(Protocol Description Unit)模式兩種,。其中,Text模式是純文本方式[4],,收發(fā)短信代碼簡單,,實現(xiàn)起來十分容易,但最大的缺點是不能收發(fā)中文短信,;而PDU模式不僅支持中文短信,,也能發(fā)送英文短信。PDU模式收發(fā)短信可以使用7-bit,、8-bit和UCS2 3種編碼,。這里使用UCS2編碼將單個字符(1~2 B)按ISO/IEC10646的規(guī)定轉(zhuǎn)變?yōu)?6 bit的Unicode寬字符,PDU串不僅包含可顯示的消息本身,,還包括很多其他信息,,如SMS服務中心號碼、目標號碼,、回復號碼,、編碼方式和服務時間等。
PDU模式的短消息解碼[5]主要包含字符串順序轉(zhuǎn)換,、可打印字符到字節(jié)的轉(zhuǎn)換,、Unicode編碼字符到GB2312編碼字符的轉(zhuǎn)換幾個模塊,。針對PDU串的格式,定義一個結(jié)構(gòu)體SM_PARAM描述該串信息,。
其中,,可打印字符到字節(jié)的轉(zhuǎn)換由gsm_s_2_b()函數(shù)完成,如將字符串“C8329BFD0E01”轉(zhuǎn)換為{0xC8,,0x32,, 0x9B,0xFD,,0x0E,,0x01};字符串順序轉(zhuǎn)換由gsm_ serialize_numbers()函數(shù)實現(xiàn),,將兩兩顛倒的字符串轉(zhuǎn)換為正常順序的字符串(因為PDU串中的號碼和時間都是兩兩顛倒的字符串),。Gsm_Decode_Ucs2()函數(shù)實現(xiàn)Unicode字符到GB2312字符的轉(zhuǎn)換,在QT中定義QString變量QString str,; 將TP_UD字符串轉(zhuǎn)換為QString類型:str = QString(pDst->TP_UD),;設定本地字符編碼方式為GB2312編碼:QTextCodec*codec=QTextCodec::codecForName(“GB2312”);將Unicode字符串轉(zhuǎn)換為GB2312字符串:QString out=codec->toUnicode(str),。
在主函數(shù)中調(diào)用該解碼函數(shù)時,,傳給形參pSrc的參數(shù)為2.1中strATResult字符指針,其指向收到的短信起始地址,。
3.3 文本到語音的轉(zhuǎn)換
使用OSYNO6188芯片實現(xiàn)任意文本到語音的輸出轉(zhuǎn)換,。由ARM進行控制,,將接收到的短信息數(shù)據(jù)打包成6188能識別的幀,,通過UART傳輸給OSYNO6188中文語音合成芯片,該芯片通過文本轉(zhuǎn)語音技術(shù),,實現(xiàn)文字信息到語音的輸出,。OSYNO6188芯片的發(fā)音數(shù)據(jù)命令格式如表1所示。
3.4 人機交互界面設計
QT/E[6]是用于嵌入式Linux系統(tǒng)的QT版本,,其去掉X Lib的依賴而直接工作在Framebuffer上,,是一個可配置、可裁剪,、專門為嵌入式系統(tǒng)設計圖形用戶界面的工具包,。
系統(tǒng)基于QT/E設計人機交互界面,通過TFT LCD顯示氣象預警信息,。界面提供了氣象預警信息的實時顯示,、GPRS模塊的工作狀態(tài)顯示以及串口屬性設置等。界面使用觸摸屏作為用戶命令輸入接口,,用戶通過輸入短信位置,,然后點擊圖中的按鈕“語音播報”即可實現(xiàn)歷史短信的LCD顯示和語音播報,。
本文提出了一種基于S3C2440和嵌入式Linux操作系統(tǒng)的氣象預警信息語音播報終端解決方案,并基于QT/E設計了終端界面,。系統(tǒng)功能達到預期要求,,實現(xiàn)了氣象預警信息的實時接收與顯示并可通過語音將其播報出來,有效地增加了氣象預警信息的接收手段和覆蓋范圍,。在終端中添加基于GPRS網(wǎng)絡接收氣象圖片功能將成為下一步要研究的內(nèi)容,。
參考文獻
[1] 北京語音天下科技有限公司.OSYNO6188嵌入式語音合成芯片用戶手冊.(2010-05-22)[2011-05-01].http://www.osyno.com/bao/osyno6188manual.pdf.
[2] 王聰,趙鵬飛,,張拯民,,等.PDU模式的短信息編解碼技術(shù)及在Visual C++中的實現(xiàn)[J].計算技術(shù)與信息發(fā)展,2009,,7(1):52-53.
[3] 黃濤,,白創(chuàng),徐靖.嵌入式無線互連系統(tǒng)開發(fā)從實踐到提高[M].北京:中國電力出版社,,2007.
[4] 孫勇,,劉杰.基于ARM的GPRS通信終端設計[J].工業(yè)控制計算機,2010,,23(5):49-51.
[5] 徐志剛,,張紹陽,宋清艷,,等.基于GSM短消息平臺的信息發(fā)布系統(tǒng)[J].微計算機信息,,2010(18):9-12.
[6] 韋東山.嵌入式Linux應用開發(fā)完全手冊[M].北京:人民郵電出版社,2009.