摘 要: 设计了一种基于ARM920T微处理器和GPRS网络的无线气象预警信息接收系统。该系统采用GPRS作为信息接收的桥梁,通过短消息业务接收气象预警信息,利用嵌入式Linux操作系统资源和图形开发库QT/E实现气象预警信息的显示、语音播报。该方案有效地缩短了接收延迟时间,提高了预警信息接收的有效性,避免了传统的气象预警接收方式无法及时应对突发性气象灾害的情况。
关键词: ARM9;短消息业务;OSYNO6188;嵌入式Linux;QT/E
我国是世界上自然灾害发生十分频繁、灾害种类甚多、造成损失十分严重的少数国家之一。每年干旱、洪涝、台风、暴雨、冰雹等灾害危及人民生命和财产的安全,国民经济也受到了极大的损失。而且,随着经济的高速发展,自然灾害造成的损失亦呈上升趋势,直接影响着社会和经济的发展。
因此,在电力、交通、工业控制、零售、公共事业管理、医疗、水利、石油、农业等各个行业实时接收和发布气象预警信息,避免电视媒体、报纸等发布信息的延时,能大大减少气象灾害带来的损失。
随着移动通信技术的日益成熟,短消息业务发展越来越迅速,不仅应用在人们日常的信息交流中,在现场监测、远程控制等领域也得到了越来越广泛的应用。短消息业务是承载在GPRS网络上的。GPRS即通用分组无线业务,是在现有GSM网络上开通的一种新型的分组数据传输技术。语音合成技术实现了文字到语音的转换。本设计结合嵌入式技术、GPRS技术和语音合成技术,提出了基于ARM与SMS的气象预警信息终端。
1 总体设计
气象预警信息终端系统结构如图1所示。在中心服务器上通过信息发布软件发布预警信息到GPRS模块,该短消息通过GPRS网络传送。由嵌入式Linux终端上的GPRS模块接收来自中心服务器的气象预警信息,该模块将接收到的数据通过串口传输给终端处理器ARM9。终端处理器对接收的短消息进行解析,还原出服务器发送的预警信息。最后通过LCD显示屏、语音等方式将预警信息播出。
2 系统硬件设计
本系统接收端的硬件部分是基于三星S3C2440 32 bit微处理器的嵌入式系统,主要负责气象预警信息的读取以及GPRS网络传输、语音芯片和LCD液晶屏的控制。
气象预警信息接收终端的基本组成部分如图2所示。整个外围电路包括:嵌入式语音合成模块、GPRS无线通信模块、NAND Flash存储扩展和LCD触摸液晶显示模块。
ARM9微处理器具有高性能和低功耗特性,典型处理速度为1.1 MIPS/MHz,系统主时钟频率为100 MHz~233 MHz。片外扩展多功能外围接口,如USB、UART、I2S、LCD控制器、键盘接口、RTC、JTAG等。还有足够大的存储空间,如2 MB的NOR Flash、128 MB的NAND Flash(用于存储bootloader、嵌入式Linux内核和带有QT图形界面库的文件系统)、64 MB的SDRAM。
TC35i模块与GSM 2/2+兼容,并支持双频(GSM 900/1 800 MHz)、RS232数据口,符合ETSI标准GSM0707和GSM0705。该模块集射频电路和基带于一体,向用户提供标准的AT命令接口,为数据、语音、短消息和传真提供快速、可靠、安全的传输,方便用户的应用开发及设计。
OSYNO 6188嵌入式语音合成模块[1]通过异步串口接收待合成文本,直接通过PWM输出方式驱动扬声器实现文本到语音的转换。该芯片支持国家标准GB_2312所有汉字,支持标点符号、电话号码、邮政编码、英文字母等特殊字符处理。
3 系统软件设计
气象预警信息终端是典型的嵌入式系统,目标代码运行在S3C2440上面,在构架的嵌入式平台上,选用安装了arm-linux-gcc的交叉编译环境的fedora14为开发调试环境,以Linux为嵌入式操作系统开发应用程序。
气象预警信息终端软件主要是基于Linux和QT/E的用户程序开发以及相关驱动移植。应用程序按功能划分,由SMS数据传输、PDU短信息解码[2]、文本到语音转换和人机交互界面4部分组成。
系统上电启动Linux后,即开始启动终端图形用户界面应用程序,该应用程序创建了一个主线程,以响应用户的界面操作,初始化GPRS模块[3],发送命令,设置其为新短信息提示,该主线程还分别在后台创建一个子线程。GPRS模块的读线程不断侦听串口以获取GPRS模块返回的短信息,若从串口读到新短信息提示回送命令字,则弹出一个对话框显示“有新短信息”,提示用户操作,系统内部启动后台子线程,自动完成短信息的解析和存储,并通过信息内容判断信息的预警类别。若为红色预警,立即驱动6188语音芯片播报该条信息;若为其他预警类别,则由用户自由选择显示或者语音播报。实现将以PDU方式编码的短信息解码,并转换成GB2312码,因为OSYNO 6188只能识别以GB编码的汉字。软件流程如图3所示。
3.1 SMS数据传输模块设计
TC35i支持语音和短信服务。在本系统中,通过串口3发送AT指令集与TC35i模块通信,实现与远端设备的收发短信息功能。
在本系统中,GPRS模块就相当于一个调制解调器,ARM处理器通过串口发送AT命令控制GPRS模块工作情况和得到GPRS模块的反馈信息。AT指令集是调制解调器通信接口的工业标准,它的基本格式为:AT+命令字符。通信过程中,ARM每发送一条指令,都需要加上“回车符”作为指令的结束符,否则TC35i不能识别。该功能实现过程为:首先初始化GPRS模块,即发送AT命令测试网络情况并设置短信模式AT+CNMI=2,1,0,0,0(新短信提醒,并把收到的短信存入SIM卡);然后设置短信接收模式AT+CMGF=0(设为PDU模式,可以接收汉字);接着发送接收短信息命令AT+CMGR=last(last中存有收到短信在SIM卡中的存储记录号)。读取短信功能由gprs_read_msg()函数实现。代码如下:
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)
//读取短信内容到strATResult中
……
}
其中,tty_write()为底层串口写函数,receive()函数向GPRS模块发送AT命令和从GPRS模块读取返回信息;fd为已经打开的串口描述符;strAT为要向GPRS模块发送的命令信息;“OK”为需要匹配的字符串;strATResult为从GPRS模块返回的信息;ATREADTIMES为当读取返回信息字符个数为0时,函数继续读取的次数;last为从模块返回信息的最后一个字符。
3.2 PDU模式的短信息解码
基于GPRS的短信息收发常用的编码格式有Text模式和PDU(Protocol Description Unit)模式两种。其中,Text模式是纯文本方式[4],收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU模式收发短信可以使用7-bit、8-bit和UCS2 3种编码。这里使用UCS2编码将单个字符(1~2 B)按ISO/IEC10646的规定转变为16 bit的Unicode宽字符,PDU串不仅包含可显示的消息本身,还包括很多其他信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。
PDU模式的短消息解码[5]主要包含字符串顺序转换、可打印字符到字节的转换、Unicode编码字符到GB2312编码字符的转换几个模块。针对PDU串的格式,定义一个结构体SM_PARAM描述该串信息。
其中,可打印字符到字节的转换由gsm_s_2_b()函数完成,如将字符串“C8329BFD0E01”转换为{0xC8,0x32, 0x9B,0xFD,0x0E,0x01};字符串顺序转换由gsm_ serialize_numbers()函数实现,将两两颠倒的字符串转换为正常顺序的字符串(因为PDU串中的号码和时间都是两两颠倒的字符串)。Gsm_Decode_Ucs2()函数实现Unicode字符到GB2312字符的转换,在QT中定义QString变量QString str; 将TP_UD字符串转换为QString类型:str = QString(pDst->TP_UD);设定本地字符编码方式为GB2312编码:QTextCodec*codec=QTextCodec::codecForName(“GB2312”);将Unicode字符串转换为GB2312字符串:QString out=codec->toUnicode(str)。
在主函数中调用该解码函数时,传给形参pSrc的参数为2.1中strATResult字符指针,其指向收到的短信起始地址。
3.3 文本到语音的转换
使用OSYNO6188芯片实现任意文本到语音的输出转换。由ARM进行控制,将接收到的短信息数据打包成6188能识别的帧,通过UART传输给OSYNO6188中文语音合成芯片,该芯片通过文本转语音技术,实现文字信息到语音的输出。OSYNO6188芯片的发音数据命令格式如表1所示。
3.4 人机交互界面设计
QT/E[6]是用于嵌入式Linux系统的QT版本,其去掉X Lib的依赖而直接工作在Framebuffer上,是一个可配置、可裁剪、专门为嵌入式系统设计图形用户界面的工具包。
系统基于QT/E设计人机交互界面,通过TFT LCD显示气象预警信息。界面提供了气象预警信息的实时显示、GPRS模块的工作状态显示以及串口属性设置等。界面使用触摸屏作为用户命令输入接口,用户通过输入短信位置,然后点击图中的按钮“语音播报”即可实现历史短信的LCD显示和语音播报。
本文提出了一种基于S3C2440和嵌入式Linux操作系统的气象预警信息语音播报终端解决方案,并基于QT/E设计了终端界面。系统功能达到预期要求,实现了气象预警信息的实时接收与显示并可通过语音将其播报出来,有效地增加了气象预警信息的接收手段和覆盖范围。在终端中添加基于GPRS网络接收气象图片功能将成为下一步要研究的内容。
参考文献
[1] 北京语音天下科技有限公司.OSYNO6188嵌入式语音合成芯片用户手册.(2010-05-22)[2011-05-01].http://www.osyno.com/bao/osyno6188manual.pdf.
[2] 王聪,赵鹏飞,张拯民,等.PDU模式的短信息编解码技术及在Visual C++中的实现[J].计算技术与信息发展,2009,7(1):52-53.
[3] 黄涛,白创,徐靖.嵌入式无线互连系统开发从实践到提高[M].北京:中国电力出版社,2007.
[4] 孙勇,刘杰.基于ARM的GPRS通信终端设计[J].工业控制计算机,2010,23(5):49-51.
[5] 徐志刚,张绍阳,宋清艳,等.基于GSM短消息平台的信息发布系统[J].微计算机信息,2010(18):9-12.
[6] 韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2009.