Warning: Cannot modify header information - headers already sent by (output started at /data/home/byu3498090001/htdocs/include/conn.inc.php:1) in /data/home/byu3498090001/htdocs/yinru.php on line 2
针对对讲机的VOIP中继网关设计 - 技术应用 - 环球专网通信_知专网通信 行传播使命
用户反馈

针对对讲机的VOIP中继网关设计

2017-01-04    常海滨 王帑

综合考虑现今技术趋势和传统模拟通信弊端,本文介绍了一种基于对讲机和嵌入式系统结合的嵌入式中继网关设计,利用因特网在速度与距离上的优势,重新发掘传统对讲机在各种应用场合下的优势。在本设计中采用因特网传输对讲机中的语音与其他信令信息,使用两台对讲机和嵌入式处理核心实现中继台的基本功能。利用两台对讲机完成两个频点上信号的收发,经过嵌入式处理器进行相关信号采集,并将语音信号打包通过互联网进行远距离通信,最终实现通过网络提高中继台的中继范围。

1 总体设计

本系统主要由中继终端和网络服务器组成。中继终端在接收到中继请求后,判断发起请求的对讲机所发出的信令信号,经由网络服务器获取目标IP地址,然后连接到目标中继终端,并最终完成远距离中继。系统总体设计如图 1 所示:

1 系统总体结构图

中继终端由两部对讲机和两块嵌入式控制板组成。一块是作为语音网关核心的 ARM9 处理器,另一块是由单片机为核心的底层电信号控制单元。底层控制单元主要负责完成两组对讲机的信号采集与控制信号的生成。由两部对讲机分别完成信号的收发,来实现中继台的基本中继功能。其中一台采集接收到的信号,产生传输触发信号。核心处理器通过该信号触发语音信号发送线程,并在该线程中对信道中的语音信号进行采样量化,并完成打包传输。接收到语音包之后,语音网关核心模块对其进行解包,触发PTT信号,并通过 DA 将语音信号合成输出。同时考虑到在传输过程中会需要相应信令传输,本设计还添加了DTMF编解码模块,完成对应的双音频信号的获取与生成。并最后通过服务器根据拨号选择中继IP,发起中继会话。

2 硬件设计

1)硬件总体设计:

针对双对讲机拼接完成的中继台,本文设计一种简易而且功能完全的硬件接口电路。其中包含了对PTT发射键、信号接收和语音收发信号的处理。硬件上主要包括ARM核心处理板、单片机控制板和接口控制电路3部分组成。硬件总体结构如图 2 所示:

图 2 硬件总体结构图

如图 2 所示,单片机作为底层核心控制器,利用其IO引脚对逻辑信号进行控制,完成对 DTMF 信号的编解码、PTT 发射键控制和对接收信号监控的功能。对讲机组成的中继台产生的语音信号,通过阻抗网络,连接到ARM核心处理器中。同时 ARM 处理器从网络接收到的语音信号也经由阻抗网络送至中继台发送出去。

2)DTMF 收发模块设计:

常见的双音频编解码的方式有模拟电路方式、DSP方式和FPGA的方式实现。这里采用标准IC芯片实现的方式。本次设计采用了敏特尔 MT8880CE 芯片实现DTMF编解码功能,系统采用STC89C52RC单片机作为控制芯片,完成对该芯片的初始化设置,实现双音多频的编码与解码功能。基本电路设计参考手册中给出的推荐电路,接口接入单片机。参考电路及相应参数如图 3 所示:

3 MT8880 参考功能电路

3 中元件参数为:R1 R2 = 100 kR3 = 3741% R4 = 3.3 kRL = 10 kC1 = 100 nFC2 = 100 nFC3 =100 nFC4 = 10 nF10%X-tal = 3.579545 MHz

与单片机连接后设计电路如图 4 所示:

4 MT8880ce 单片机控制电路

3)语音与控制信号接口设计:

中继网关接口的电气连接需要进行简单处理。针对语音信号,在AD和DA的输入输出接口前,需要对语音信号进行调整。在这里通过使用集成运放设计电路调理网络来实现。另外,考虑到单片机与 ARM 核心处理器之间的引脚工作电平不兼容,需要在单片机和 ARM 处理器之间进行电平调整,完成数据传输。最后设计一个开关电路,将开关信号连接至对讲机PTT发射键上。至此硬件基础基本完成。

3 软件设计

1)软件总体设计:

本次设计中,需要编写三大部分的应用软件。分别是针对单片机的控制软件、针对ARM核心处理器的应用软件和针对服务器中的服务代码。单片机中的控制代码主要负责监控中继台中发出的接收信号,并根据上层 ARM 处理器给予的信息完成PTT的开关。另外还要完成对MT8880DTMF芯片的操作,完成对双音频信号的编解码功能。这里的ARM核心处理器选择三星公司的Scs2440处理器,该处理器运算速率高,完美支持Linux嵌入式操作系统,本次设计中利用 Linux 系统对网络的强大支持,移植SIP和RTP协议,完成中继网关之间的远距离通信功能。同时,编写驱动程序,完成IO引脚与单片机的通信功能。最后服务器上的程序是将挂载到网络上的各路语音网关列入状态表中,并初始化状态,记录各自 IP。当有语音网关发起服务请求时,查找被请求目标网关的 IP 发送发起请求网关。

2)单片机及 MT8880 控制程序:

对于芯片的驱动程序,由于该芯片接收到信号并解码后会产生中断脉冲信号,首先要对单片机进行初始化,初始化之后应当对芯片进行初始化设置,即读写芯片内部相应寄存器。将常用操作分成四个独立模块:

读状态寄存器:char readreg()

写控制寄存器:void writereg(char d) 读数据寄存器:char readdat()

写数据寄存器:void writedat(char d) 实现以上各功能之后将芯片工作模式设置成为:发送50ms的DTMF双音多频音频段,使能接收DTMF双音多频信号并解码,解码和发送完数据之后有中断脉冲产生。

设置参数方式为:

writereg(0);writereg(0);writereg(8);writereg(0); d=readreg();delay(1000);writereg(13); writereg(0);

之后应当设置好外部中断,并在外部中断的响应中编写相应的处理程序。主要步骤为:开总中断:EA=1;开外部中断:EX0=1;设置外部中断为上升沿:TCON=0x01;

在中断处理程序中要首先查询芯片状态寄存器,判断是接收到信号还是发送完毕的信号。然后根据不同结果执行不同功能。控制程序流程图如图 5 所示:

5 控制程序流程图

3)系统主代码编写:

整个系统由多个线程并行执行,主要由SIP、RTP的收发线程和核心调度线程组成。主要负责监控整个中继台状态,根据各种信号发起结束会话;管理中继台的收发设置;设置侦听循环,来获取客户端输入命令;创建SIP用户代理客户端线程和SIP用户代理服务器端线程,以实现两个角色的不停切换;创建RTP接收和RTP发送线程,实现全双工通信。主要代码如:

pthread_create(&ids,NULL,(void *) sip_uas,NULL); //创建 sip_uas 线程

pthread_create(&idc,NULL,(void *) sip_uac,NULL); //创建 sip_uac 线程

pthread_create(&id,NULL,(void *) rtpsend,NULL); //创建 rtpsend 线程

pthread_create(&id,NULL(, void *) rtprecv,NULL); // 创建 rtprecv 线程

pthread_create(&id,NULL(, void *) centr_contr,NULL); //创建主控线程

创建线程后,初始化每个线程需要的驱动模块,包括音频 OSS 驱动,通用IO引脚读写驱动。然后初始化网络协议模块,设定IP和端口地址。然后开始侦听和检测。完成中继网关功能。主程序代码流程图如图6所示:

6 系统主程序流程图

4  总结

完成要求的线缆链接,将四部对讲机中所需信号引出,接到中继网关接口处,完成两台中继网关 A、B,设置两部网关工作于不同频点,这样方便本地测试。使用两部对讲机,并工作于不同频点中。给中继网关各模块设备上电,开始正常工作。手持对讲机,将频率调整至中继网关A工作频点,按住发射键,讲话。可以在另一端将另一部对讲机调整至网关B发送频点,此时可以看到另一部对讲机的busy指示灯被点亮,对讲机中有一侧对讲机内讲话的声音,至此测试完成。

经测试表明,本设计可以在使用多个对讲机时,利用对讲机搭建简易但是传播距离更远的中继台。该中继台设计使用因特网 VOIP 的技术,凭借网络的巨大便利和强大功能,突破了传统中继台在中继距离上的限制,具有很强的创新性和实用性。仅需要对两部对讲机进行简易链接就可以完成传统中继台无法实现的远距离中继,对未来相关语音通信产品有较强的指导意义。

收藏

我的评论

最新评论

找回密码 注册

注册成功!

继续浏览 用户中心