WiFi对讲机的设计原理
如意彩目前模拟、数字对讲机已经得到了广泛应用,但是,在楼房、厂房等较为分散的有阻挡的区域之间,这些模拟和数字对讲机就失去了作用。现在,以太网和WiFi无线网络已经非常普遍,特别是特大型企业内部的局域网和WiFi无线网络基本上实现了网络全覆盖,在这些企业中,利用现有的有线和无线网络实现对讲通话等工作联络是非常需要的。为此,我们设计了WiFi对讲机,通过WiFi网络来实现远程对讲。
一、实现原理
通过MIC采集声音信号并进行A/D转换,MCU对A/D转换过的数字信号进行编码,再把编码后的数据以50ms为一包,按照选择的通道,通过WiFi的组播发送出去。在收到其他对讲机发来的组播数据包后,MCU进行解码,并缓存150ms的语音数据,待缓存满后开始取出缓存的数据进行D/A转换,把语音数据转换成模拟信号,再经功放后接入喇叭,播放出声音。
如意彩和传统对讲机一样,WiFi对讲机设置有通道选择旋钮,共16个通道,每一个通道对应一个组播地址,相同组播地址的对讲机能够实现语音数据的相互收发,实现分组对讲。
WiFi无线信号会随着对讲机的移动出现信号飘移,为了使语音播放更流畅,需要对收到的语音数据进行缓存,这样,偶尔出现传输延迟,也不至于引起语音播放的卡顿。缓存时间越长,播放越流畅,但时间过长就会有延迟的感觉。本设计采用150ms的缓存,这样,播放的声音听起来基本感觉不到延迟,而又起到了补偿传输延迟避免卡顿的作用。
无线传输语音数据要尽量少地占用带宽,以便减少传输时间,使MCU能够有丢包重传的处理时间,这就需要对语音数据进行编码和解码。比较ADPCM、G.711、G.721等语音编码,ADPCM编码把语音数据按1∶4的压缩比进行压缩,算法简单,占用MCU时间短,解码后语音质量良好。本设计采用了ADPCM编解码算法。
漫游是移动对讲必须要解决的问题,以便实现对讲机在跨越WiFi路由器时不中断对讲。对讲机中的WiFi模块在检测到连接的路由器的信号强度(RSSI)小于-80DB时,开始检测其他路由器的信号强度,当其他路由器的信号强度大于-70DB时,则立刻连接到信号强度较强的这台路由器。为了更快速地进行路由器连接切换,在部署路由器网络时,所有路由器全部配置成相同的名字(SSID),这样,漫游时,对讲机只检测SSID相同的路由器的信号强度,使路由检测和切换速度大大提高。
二、硬件设计
如意彩对讲机由WiFi模块、MCU、CODEC编解码、数字功放、MIC、SPEAK、电源部分等组成,其构成框图如图1所示。
选用意法的4系列ARM芯片作为MCU,ARM芯片本身带有128K RAM,完全满足语音数据缓存和WiFi收发所需内存,ARM芯片具有两个SPI,一个与WiFi模块通信,一个与编解码芯片通信,用于收发语音数据,还具有一个I2C接口,该接口与编解码芯片通信,用于对编解码芯片初始化和参数配置。
选用TI公司的内置2W数字功放的编解码(CODEC)芯片AIC3100,该芯片可直接接入MIC和4Ω喇叭。可以通过寄存器设置,进行语音滤波、回音抑制、音量调节等。该芯片的I2C接口用于寄存器配置和语音采集与播放控制,SPI接口用于传输语音数据。
通道选择旋钮驱动MCU上的GPIO,以便MCU检测出选择的通道,MCU检测到所选通道后,通过SPI接口,配置WiFi模块的组播地址,以便实现组内语音数据的组播收发,实现分组对讲功能。
如意彩音量调节旋钮接入MCU的一路A/D通道,以便MCU检测出调节的音量,MCU根据测得的音量旋钮的电阻值,通过I2C接口配置CODEC芯片的音量大小,达到音量调节的作用。
如意彩WiFi模块选用具备SPI透传接口的低功耗嵌入式模块,天线采用模块自带的板载天线,工作模式选择为STA模式,组播功能开启。
三、软件设计
如意彩软件系统包括MCU本身初始化、WiFi模块初始化、CODEC芯片初始化、语音采集播放控制、语音数据收发、通道检测、音量检测等环节。
整个软件系统采用UCOSII开源的实时多任务操作系统,分3个任务:按键旋钮扫描任务、语音采集与播放任务、WiFi通信任务。任务间通过消息进行协同操作。
任务划分及任务处理流程图分别如下。图2为任务分配图,图3为协议处理任务流程图,图4为消息处理流程图,图5为语音处理流程图。
如意彩把所有与PTT按键、通道选择旋钮、音量调节旋钮、开关机键等硬件相关的检测放在按键旋钮扫描任务中,当发现某个部件状态发生变化时,就向系统发出相应的消息。其他任务检测到该消息时,就做出相应的处理。
语音采集与播放任务主要用来管理MCU与CODEC芯片之间的通信。当收到PTT按下的消息时,就控制CODEC芯片开始进行MIC语音数据的采集,并从CODEC芯片中通过SPI口取出语音流数据,进行编码储存,等到语音数据达到约定的50ms数据时,就向系统发出传输语音数据的消息。另一方面,当收到外部语音数据时,就开始解码并缓存语音数据,当数据达到150ms时,MCU就控制CODEC芯片开始播放收到的语音数据。
WiFi通信任务主要是处理WiFi通信协议并进行双向的语音组播。
四、测试效果
对讲机样机做好后,对对讲的流畅性以及漫游特性进行了测试。在一个3000m2的厂房中部署了两台路由器,用4只对讲机进行测试。
如意彩把对讲机两两设置成相同的通道,对讲时,不同分组的对讲机可以同时对讲,而不会产生干扰,静止状态时,通话流畅,但在频繁转身时,偶尔会出现声音卡顿现象。
如意彩在对讲过程中,从一个路由器附近走向另一个路由,中间大约有一秒钟的卡顿。
如意彩整个对讲基本能够顺利进行。
结语
WiFi对讲机能够实现不同区域的远程对讲,是传统模拟或数字对讲机较难实现不同区域远程对讲的有力补充。测试表明,设计的WiFi对讲机从功能和性能上,能够满足对讲联络的要求。