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