于德海,李培杰
(长春工业大学 计算机科学与工程学院, 长春 130012)
基于互联网的通信操作面板控制系统
于德海,李培杰
(长春工业大学 计算机科学与工程学院, 长春 130012)
摘要:设计了一套基于Android手机远程控制操作面板的系统;该系统硬件平台集成了ARM芯片和其他外围设备,并移植了Linux系统;在此系统上使用Hamlib对不同型号的通信设备进行控制,并对设备获得的音频数据使用RTP协议实时传输到手机,对设备的参数信息使用UDP协议反馈给手机;同时手机通过P2P协议与ARM平台通信,并通过UDP协议发送控制命令来控制设备的操作面板。
关键词:操作面板;Hamlib;实时音频传输;远程控制
0前言
随着无线通信设备的发展,传统的通信设备也正在向着互联网+的时代发展。由于无线通信设备相关的软件一般成本比较高,并且操作复杂,一般用户很难使用,这些都限制了设备许多强大实用的功能。人们迫切需要一种符合当今时代的控制软件,来支持对无线通信设备的操作。瑞士的一位无线电爱好者Simon Brown(HB9DRV)开发了名为Ham Radio Deluxe的软件,HRD可以根据自己的需要随意修改软件设置。通过电脑来控制无线通信设备,使操作得到简化,但是依然与当今移动互联网时代结合的不够紧密。
这里结合互联网+的发展理念,使用移动设备对无线通信设备进行远程控制,更符合现代人生活方式。同时也体现了物联网的重要特点之一就是实现物与物之间的信息交换,使物体变得更加智能化。
本系统使用手机APP通过网络远程连接通信设备,然后对设备进行远程控制,这两者之间以服务器作为中间桥梁,不仅可以实现对设备的远程控制,也方便了用户操作。本文以短波电台为通信设备,设计和实现了对短波电台的远程控制,同时本系统也可以使电台成为一种公共资源,使没有电台的爱好者,可以通过网络对电台进行访问,同时也提高了电台的资源利用率。
1系统硬件平台
根据系统的需求,本系统主要由嵌入式核心板、电台、串口外设、网卡外设、音频接口、Android手机组成。
本系统的嵌入式微处理器使用三星公司的S3C2416,它基于ARM926EJ内核,主频为400MHz。同时核心板还有NAND Flash、DDR2的SDRAM模块等。电台选用Elecraft k3高性能收发信机,能够在6米波段上工作,在0.5-30MHZ之间是连续可调的。串口外设采用RS-232串口标准,采用Linux内核中自带的串口驱动。网卡采用DM9000,驱动移植Linux内核自带DM9000网卡驱动。由于S3C2416支持IIS、AC97、PCM音频编解码器接口,而且PCM与IIS可以复用,这里采用IIS音频编解码器接口。Linux内核附有两类音频设备驱动框架OOS(Open Sound System)和ALSA(Advanced Linux Sound Architecture),本系统采用了ALSA驱动框架。
嵌入式核心板与电台通过串口连接进行通信,将嵌入式核心板连接到服务器,通过网络进行数据收发。Android手机作为客户端,通过服务器,实现对电台的远程访问和控制。
2系统软件平台
远程电台控制系统的软件设计主要是ARM客户端功能的实现和APP功能的实现,以及服务器端的实现。ARM平台通过串口与电台进行交互,对于音频数据通过RTP协议进行发送与接收,Android手机端通过服务器的协助,根据UDP打洞机制直接与ARM平台连接,然后通过RTP协议进行音频传输,同时使用UDP协议发送电台操作命令。服务器主要是用来协助客户端的UDP打洞过程,并维持客户端的在线状态。系统软件框图如图1所示。
图1 系统软件框图
2.1Linux系统移植
首先在Linux平台下建立交叉编译环境,本系统使用arm-linux-gcc-4.4.3编译开发板内核,图形库QtE,BootLoader,其他一些应用程序。对于引导程序BootLoader,这里移植的是U-Boot2010.06,用来初始化硬件,引导Linux系统。然后,针对特定的硬件编写驱动文件并对内核Linux-3.6进行配置和编译,生成内核的镜像文件,将镜像文件移植到ARM板上。接着,需要制作Linux文件系统,用专门的工具mkyaffs2image,制作yaffs2格式的文件系统镜像并进行移植。最后,移植图形库QTE-4.8.5,有了图形库就可以进行可视化的图形界面开发,为开发和调试工作提供了方便。
2.2音频接收与发送
当系统接收到音频后需要发送,而客户端发来的音频需要接收,并且音频数据都是有顺序的,TCP协议可以保证数据的接收顺序,但相对UDP协议来说开销比较大并且传输速度不是很快,而系统需要音频的实时传输,因此这里采用一种基于UDP协议的RTP/RTCP对音频发送与接收。
图2 音频系统流程图
由于系统的硬件平台ARM移植了Linux系统,在Linux系统上进行实时流媒体编程,可以使用开源的jrtplib库,这个库可以很好的解决流媒体实时传输问题。本系使用的是jrtplib3.9.1,需要移植jthread-1.3.1和jrtplib-3.9.1到ARM平台上。
本系统对音频收发主要实现过程为:电台通过串口把音频数据传输到ARM平台上,传输的音频是16位数据位宽、单通道、8000采样率的PCM编码数据,对得到的数据用采用G711A率编码,对本系统来说可以使传输的数据减少一半,然后用RTP协议发送音频数据。对于手机端接收的音频数据,使用G711A率解码,得到PCM编码数据,然后播放音频。经过在一个局域网下的测试,音频实时传输延时为300ms~500ms,噪声也很小。音频系统流程图如图2所示。
2.3Hamlib协议
由于业余无线电的软件和一些产品各有各的开发方式,而Hamlib是一个开源,用于业余无线设备的控制协议库,它主要是控制电台数据的接收与发送,通过这个协议库可以对不同型号或者品牌的电台进行控制。许多业余无线电收发器允许软件通过串口来控制电台,而Hamlib库就大大简化了应用程序与无线电设备和其他控制设备的交互方式。
Hamlib库是由C语言实现,它的主要作用是作为开发程序的子程序库,但是它也是一个独立的服务库。它支持远过程调用,但本系统只是在本地使用Hamlib。rigctl从命令行模式接受命令,如果没有在命令行上提供,也可以在交互模式下接受命令。使用Hamlib控制电台,一般用“set”或“get”函数结合命令进行控制,例如:
Q|q,exit_rigctl退出rigctl交互模式;
F,set_freq‘Frequency’设置频率;
M,set_mode‘Mode’设置模式;
V,get_vfo获取当前的VFO
本系统需要将Hamlib-1.2.15库移植到ARM上,通过“set”函数去设置电台的参数或者对电台进行控制,通过“get”函数去获取电台的状态或者数据。ARM平台通过串口连接电台,串口波特率为9600,数据位为8位,1位停止位,无奇偶校验位,无流控制,这可以通过Hamlib库中的函数进行设置,但一般不同厂商的电台控制参数不一样,对于不同的厂商的电台要调用库中对应的函数,本系统ARM平台上的应用程序支持多种厂商的电台控制。
2.4服务器
本系统的客户端访问电台需要服务器的协助。本系统的服务器在Linux环境下搭建,为了减轻服务器的负载,客户端之间的访问采用P2P协议进行通信,但由于路由器NAT机制的存在,使得P2P协议的使用有限制。为了做到对等连接,这里采用UDP打洞机制。
本系统的服务器处于公网上,而手机客户端使用WIFI,ARM平台使用局域网,在这种情况下(也就是两个客户端都处于NAT后面),UDP打洞机制流程如下:
(1)服务器启动两个网络侦听,一个主连接侦听,一个打洞连接侦听。
(2)手机客户端和ARM平台客户端分别与服务器的主连接发送连接请求,连接时需要说明自己的名字,这里以IP地址作为每个客户端的名字。
(3)当手机客户端需要与ARM平台客户端连接时,首先向服务器的打洞端口发送UDP连接申请,并说明连接的对象。同时在该端口号上启动接收侦听。服务器的打洞连接收到手机客户端的申请后通过主连接通知ARM平台客户端,并将手机客户端经过NAT转换后的公网IP地址和端口等信息告诉ARM平台客户端。
(4)ARM平台客户端收到服务器的请求连接通知后首先与服务器的打洞端口发送UDP请求,即随便发送一些数据,服务器得到ARM平台客户端经过NAT转换后的公网IP和端口号。
(5)服务器的打洞连接收到ARM平台客户端发送UDP请求后,通过主连接将ARM平台客户端经过NAT转换后的公网IP和端口号告诉手机客户端。
(6)手机客户端尝试与ARM平台客户端经过NAT转换后的公网IP地址和端口建立会话,NAT会记住本次连接的IP和端口号,为接下来真正的连接做好了准备,这就是所谓的打洞,即手机客户端向ARM平台客户端打了一个洞。
(7)ARM平台客户端尝试与手机客户端经过NAT转换后的公网IP地址和端口建立会话,NAT会记住此次连接的源地址和端口号,此时ARM平台客户端向手机客户端打了一个洞。下次手机客户端就能直接连接到ARM平台客户端刚才使用的端口号了。
(8)ARM平台客户端打洞的同时在相同的端口上启动接收侦听。ARM平台客户端在一切准备就绪以后通过与服务器的主连接回复消息“一切OK”,服务器在收到以后告知手机客户端。
(9)手机客户端收到服务器回复以后,开始连接到ARM平台客户端公网IP和端口号,此时客户端之间就可以相互通信而不需要借助服务器了。
服务器对于UDP打洞启动了两个监听,其中主连接监听采用TCP协议,打洞监听采用UDP协议。服务器主要就是协助UDP打洞,和通过主连接与客户端收发少量数据。
2.5客户端
客户端分为Android手机和ARM平台。Android APP可以通过网络对电台进行控制。具体功能有:登录、频率显示、瀑布图显示、增益设置、模式选择、调频方式选择、动态显示信号强度、频段选择、对音频发送接收等。
APP软件首先进入登录界面,登录主要是连接服务器的主连接端口,并且发送要连接的ARM平台的电台名字,连上服务器后,服务器会回发要连接的电台的状态,如果此电台也连接上了服务器,就可以选择建立操作命令会话和建立音频会话。根据UDP打洞机制,使APP软件与此电台建立会话,当两个会话都建立成功,会进入操作界面:显示界面、模式设置、增益设置、调频方式设置、频段设置、音频接收、音频发送,并且APP软件监听这两个端口,操作命令的端口会每经过一段时间会接收到电台发送的当前频率和当前信号强度,音频端口会接收电台发送的实时音频数据,并解码播放。显示界面模块会发送请求当前频率、当前模式、当前增益、当前信号强度和当前调频方式,并显示这些数据和绘制信号强度实时波形图;模式设置,可选的模式分别有:USB,LSB,CW,CWR,RTTY,RTTYR,AM,FM,WFM等,用于发送设置的模式;增益设置、调频方式设置和频段选择,也用于发送设置的数据;音频接收主要通过网络实时接收音频数据;音频发送主要是录音,然后使用RTP协议发送。
对于通过WIFI进行远程操作电台,Android上实现音频发送与接收的具体过程为:首先在Android下编译jthread-1.3.1和jrtplib-3.9.1,得到它们的静态库和动态库,加入到Android工程中,采用原生态编程(需要NDK环境),使用JNI技术。在Java语言中调用用C语言写的音频数据流接收函数,得到的音频流解码后,传给AudioTrack对象实时播放。发送音频过程相反。
对于ARM平台,在Linux系统下的QtE图形库基础上,使用Qt实现主要功能,主要分为:登录、电台型号的选择、音频数据的接收与发送、操作命令的接收、电台当前数据的发送、对串口的操作。ARM平台客户端是对APP发来的命令操作电台,同时给APP提供电台的数据参数。登录是使ARM平台连接到服务器的主连接端口,并提供电台的名称;电台的型号选择主要是针对不同型号的电台选择Hamlib库中对应的协议进行通信;音频数据的传输,实现的过程与APP一样;接收过程相反;操作命令的接收,通过网络接收数据,并对数据进行解析,调用Hamlib库中与当前电台型号对应的函数,并设置函数的参数,然后通过串口传给电台,控制电台;电台当前数据的发送,调用Hamlib库中的函数,得到电台的相关数据,通过网络发给Android手机客户端;ARM客户端需要一个串口,用于连接电台。
图3 Android手机端效果图
3系统测试
上文对系统的设计与实现进行了详细的说明,接下来是是对系统的测试。这里主要是对客户端的测试,分别是ARM平台和Android手机。测试环境是,服务器放在公网上,有唯一的IP,ARM平台和Android手机在局域网下。测试主要是使用Android手机通过服务器连接电台并控制电台,然后得到电台的数据并在手机上显示。Android手机端的效果如图3所示。结果表明,本系统是可行的,并具有一定的实用性。
4结语
这里提供了一种远程控制通信操作面板的解决方案,通过手机客户端来控制和访问通信操作面板,中间由服务器作为连接桥梁,并且通过UDP打洞技术解决了服务器负载过高的问题。通过串口连接通信操作面板与ARM平台,应用Hamlib协议库控制通信操作面板。相对于用Ham Radio Deluxe,应用手机APP来对设备进行控制,符合现代社会的需求,也方便了操作。并且通过网络可以实现远程控制,也可以把价格昂贵的设备作为一种公共资源,不但为使用者节省了开支,而且提高了资源利用率。
由于本系统设计与实现是以短波电台为通信设备,在音频实时传输时,有300~500ms的延迟,所以下一步的工作是尽量减少延迟,增强用户体验。
参考文献:
[1]钱志鸿,王义君.物联网技术与应用研究[J]. 电子学报, 2012,40(5):1023-1029.
[2]史涛,裴海龙.基于Linux的嵌入式实时视频跟踪系统[J]. 计算机测量与控制,2014,22(5):1523-1526.
[3]鲍轩,章坚武.基于Android的音视频监控软件的设计[J]. 杭州电子科技大学学报,2012,32(4):61-64.
[4]王辰,周杰,季榉.基于Android平台的实时视频技术的实现[J]. 计算机应用与软件,2014,31(6):120-122.
[5]吕少军,周渊平.基于Live555的实时流媒体传输系统[J]. 计算机系统应用,2015,24(1):56 -59.
[6]徐向阳,韦昌法.基于NAT穿越技术的P2P通信方案的研究与实现[J]. 计算机工程与设计,2007,28(7):1559-1561+1603.
[7]周敏,余慕春,黄维丰.综合UDP打洞与Http代理的SIP穿越NAT方案[J]. 计算机技术与发展,2014,24(8):147-151.
[8]刘家琪.HAM RADIO DELUXE软件入门篇[J]. 现代通信,2009(01):38-41.
[9]Martin Ewing.SourceForge ,Hamlib,and Rigserve: Free Beer, Free Speech,and Rig Control [C].Hartford:CT(US),2007.
[10]查鑫.基于Android的移动智能终端远程控制系统的设计与实现[D].北京:北京邮电大学,2013.
责任编辑:程艳艳
Communication Operation Panel Control System Base on Internet
YU Dehai, LI Peijie
(School of Computer Science and Engineering, Changchun University of Technology, Changchun 130012, China)
Abstract:A system based on remote control operation panel of Android phone is designed. The system hardware platform integrates ARM chip and other peripheral equipment, and it transplants Linux system. Hamlib is used to control the communication equipment of different types, audio data obtained from the equipment is sent timely to the phone through RTP protocol, the parameters of the equipment is sent back to the phone through UDP protocol. Based on P2P protocol and ARM platform communication, the mobile phone sends the order to control the operation panel through UDP protocol.
Keywords:operate panel; Hamlib; real-time audio transmission; remote control
收稿日期:2016-03-09
基金项目:吉林省教育厅“十二五”科学技术研究项目(2012274)
作者简介:于德海(1960-),男,吉林长春人,副教授,主要从事嵌入式系统方面研究;李培杰(1991-),男,湖北宜昌人,硕士研究生,主要从事嵌入式系统方面研究。
中图分类号:TP311
文献标志码:A
文章编号:1009-3907(2016)06-0039-05