ZigBee是一种低功耗、低成本的新型短距离无线通信开放性技术标准。它工作频段灵活,使用的频段分别为2.4 GHz、868MHz(欧洲)及915MHz(美国),均为免执照频段;传输速率为250kbps,有效传输距离为10~75m。通过在发射端加功率放大器还可以实现更远距离的通信。
ZigBee技术的低成本、低功耗特点,使其广泛地应用到库存管理、产品质量控制、工业过程控制、灾害地区监测、生物监测和监督、定位及消防安全等领域。虽然实现语音通信不是ZigBee联盟最初的目标,但是,在许多领域(如消防抢险)中没有语音通信功能,将使其应用受到很大的局限。本文正是考虑到这一点,并考虑到ZigBee理论通信速率为250 kps,实际速率也能满足语音通信要求的情况,充分利用本方案所选的MCU的性能特性,以及很少的外围器件,很好地实现了语音通信。
1 总体方案构架
ZigBee语音通信系统的架构为:以嵌入式处理器和射频发射芯片为核心,辅以外围的放大与滤波电路实现语音通信。总体框图如图1所示。
按功能分,主要包括以下几部分:
语音前置放大器:主要实现对麦克风接收的语音电信号进行放大处理。
语音前置滤波器:完成对高频电磁波的滤出,消除部分干扰,减小语音的失真。
嵌入式处理器:发送语音时,完成对语音模拟电信号的采集,将其转变为数字信号,并打包成数据帧,加上必要的帧头,发送到射频收发器。接收语音时,读取射频收发器缓存器的数据,并进行D/A变换,发送到语音接收电路。
射频收发器:完成数据的收/发,接收/发送该设备的数据,并将数据发送到嵌入式处理器。
语音后置滤波器:对经过D/A变换的语音信号滤波,得到所需的语音信号。
语音后置放大器:对经过滤波以后的语音信号放大,最后输出到耳机,实现最终的语音通信。
2 硬件电路实现
2.1 器件选型
嵌入式处理器选用ATmegal28L单片机。ATmegal28L是Atmel公司推出的低功耗、高性能MCU。其内核为AVR,具有先进的RISC架构,内部具有133条功能强大的指令系统,且大部分指令是单周期;具有2个8位定时器/计数器和2个具有比较/捕捉寄存器的16位定时器/计数器,2通道位数可编程PWM通道,8路10位A/D转换器,主/从SPI串行接口,可编程串行通信接口以及片内精确的模拟比较器等。CPU可工作在IDLE、POWERSAVE、POWERDOWN、STANDYBY等几种省电模式。
ATmegal28L的软件结构也是针对低功耗而设计的,具有内外多种中断模式;丰富的中断能力减少了系统设计中查询的需要,可以方便地设计出中断程序结构的控制程序、上电复位和可编程的低电压检测,工作电压为2.7~5.5V。该系统设计可以充分利用其8路10位A/D转换器和2通道位数可编程PWM通道,实现语音信号的A/D转换和D/A转换,从而省去独立的A/D转换器和D/A转换器,且成本更加低廉,系统更加精简,更加稳定可靠。同时,考虑到该MCU的低功耗特点,可以使系统一次工作更长的时间。
无线发射器选用Chipcon公司的CC2420。CC2420的主要特点:具有2Mchips/s直接扩频序列基带调制解调和250kbps的有效数据速率;适合简化功能装置和全功能装置操作;低电流消耗(接收19.7mA,发射17.4mA);低电源电压要求(使用内部电压调节器时2.1~3.6V,使用外部电压调节器时1.6~2.0V);可编程输出功率;独立的128字节发射、接收数据缓冲器;电池电量可监控。
放大电路及滤波器电路的放大器选用LMV324。LMV324(四通道)放大器在2.7 V以下消耗的最大供电电流为1 20μA,在5V下一般只消耗100μA,较同级器件的功耗低20%,而且价格低廉,该系统每个没备需要4个运算放大器,充分利用该器件。
2.2 系统硬件实现
语音传输系统的硬件电路如图2所示,连接麦克风的放大器是一个简单的反向放大器。增益通过R2和R3控制(G=R3/R2);R4给麦克风提供电压,C1阻止直流成分输入到放大器;R4和R5给放大器提供合适的偏置;Rll和C9构成一个简单的一级低通滤波器。另外,R5可以在放大器输出短路的情况下,对放大器起保护作用。语音接收电路由5级低通Chebychev滤波器和1级电压跟随器构成。滤波器电路由两个相互交错的2级Chebychev滤波器(R6、R7、R8、C2、C5和R8、R9、R10、C3、C6)和一个无源滤波器(R10,C7)构成。这3个滤波器的截止频率彼此稍微有点错位,这样可以限制整个滤波电路通带的纹波。整个电路的截止频率设置在4000Hz,电压跟随器用来防止电路从输出获得反馈。
3 软件实现
3.1 发送端软件实现
发送端软件主要完成语音电压信号的模/数转换,并将数据按照ZigBee协议规定的最大帧长度打包。本系统采取每帧84字节,并按照用户要求发送到特定网络设备。ATmegal28L的主频是8 MHz,ADC时钟采取64分频,每次转换需要13个ADC周期,完成一次转换需要112μs;采用单次转换模式,如果按照8 kHz采样,则每次采样时间是125μs;采用定时器T/C1,则每到125μs产生一次中断,并在中断处理程序中读取A/D转换的值,同时启动下一次转换。发送端程序流程如图3所示。
3.2 中间层软件实现
发送端获取了A/D转换的结果,并存储于所开设的缓存中;中间层在发送数据时,将存于缓存的数据按照ZigBee协议规定的格式,加上网络层MAC层和物理层的帧头,将数据通过SPI总线发送到射频发射芯片的发送FIFO中。ZigBee设备有两种寻址方式,分别通过64位的IEEE地址和16位的网络地址来寻找网络设备。一般来说,IEEE地址是固定的,而网络地址则是在组网时随机分配的。因此要对特定设备通信,必须用IEEE地址,但是在进行语音通信时,为了简化传输数据,一般采用16位网络地址寻址。这就需要在第一次通信时知道IEEE地址的前提下,获取设备的网络地址;以后采用网络地址通信。这部分工作通过Chipcon的ZigBee协议栈实现。程序功能实现流程如图4所示。接收数据时,首先射频发射芯片监听信道中的数据,通过判断数据是否发送该设备。如果是,则读取该数据到接收FIFO,然后触发,通过SPI总线将数据发送到MCU;通过MCU处理,去掉各层的帧头,最后将数据存放到指定的缓存区中。
3.3 接收端软件实现
接收端需要把数字语音信号还原为模拟信号。该系统充分利用MCU的功能,不采用分离的D/A器件,而是利用MCU的PWM功能,辅之外围的5级Cheychey滤波器实现D/A变换。MCU时钟频率是8MHz,采用T/C2的8位快速PWM模式,每次PWM需要256个系统时钟周期。在系统时钟频率为8MHz的情况下,PWM的频率接近32kHz,采用与发送端相同时间的定时中断,从而达到收发同步。用T/C3定时器,在125μs产生一次中断,并在中断处理程序中,将接收到的值发送到OCR2,发送到语音接收电路的滤波电路,实现滤波、放大,最后实现语音通信。在接收端开设两个缓存区,交替存储发送端的语音帧数据。接收端程序流程如图5所示。
3.4 主从模式转换
以上分析的是主从模式。要进行两个模式的切换,只需要通过按键,并控制不同的寄存器初始化,即可实现模式的切换。
4 结 论
通过测试验证。该系统可以很好地实现实时语音短距离无线传输。该系统硬件简单,没有使用分离的A/D及D/A器件,使得成本更加低廉.功耗更低;同时由于ZigBee技术本身的低功耗、低成本特性,使得该系统在仅用电池供电的情况下,可以一次工作很长时间。将ZigBee应用于消防、安全监控领域,能够提供更加方便、准确的服务。