0 引言
随着短距离无线通信技术的发展,WLAN,Bluetooth,IrDA,HomeRF,ZigBee等技术已经被逐步应用于智能家居、工业控制及环境监测等众多领域,而语音识别技术作为一门交叉学科,也被广泛应用于工业、家电、医疗等领域。将语音识别与无线通信技术相结合应用于智能家居领域,使人们能够直接通过语音对家电进行控制,能够让人们享受现代科技在现实生活中的应用。基于IEEE 802.15.4协议的ZigBee通信技术具有功耗低、低成本、短距离、安全可靠、自组织网等特点。本文将凌阳科技的具有丰富语音处理功能的16位SPCE061A单片机与射频芯片CC2530相结合设计了ZigBee语音识别节点,它能够与基于SUMSUNG的S3C6410开发平台的智能家居控制网关进行串口通信,网关在处理信息后,能够显示控制设备的状态,并通过ZigBee无线网络与家庭内的多个子节点通信,从而实现了对家电设备的语音智能控制。
1 系统总体设计
系统总体结构如图1所示,主要包括基于Samsung的S3C6410平台的网关、基于SPCE061A的语音ZigBee子节点、电器继电器控制ZigBee子节点、电器红外控制ZigBee子节点等。其中各子节点与网关之间通过星型拓扑结构进行连接。
在对语音子节点进行训练之后,当语音节点采集接收到语音控制命令时,执行语音识别指令,通过CC2530收发模块发送相应的控制指令到网关的主节点上。主节点将接收到控制指令通过串口上传到网关主机,主机在处理信息之后,再通过主节点发送相应的控制指令到控制子节点上,控制子节点在接收到相应的命令之后就会执行相应的动作,对被控对象进行控制。
2 系统硬件设计
(1)网关。采用基于ARM11架构的三星S3C6410处理器,与ZigBee主节点之间通过串口方式进行通信。S3C6410是基于ARM1176JZF-S的16/
32位的低功率消耗、高性能的RSIC通用处理器。其开发平台具有丰富的外围接口资源。其中,可以支持4个UART接口,支持DMA和Interrupt模式,最高速度可达3 Mb/s。ZigBee主节点在系统启动时,作为协调器启动和控制ZigBee网络,当网络建立后,负责接收语音节点的控制信息以及发送相应的控制信息到各ZigBee子节点。
(2)语音子节点。由凌阳科技的SPCE061A单片机与ZigBec收发节点模块组成。SPCE061A是凌阳科技推出的以μ’nSPTM为核心的16位结构的微控制器。具有8通道10位A/D转换输入功能,内置自动增益控制功能的麦克风输入方式以及双通道10位DAC方式的音频输出功能。在使用SAC M_S240凌阳音频编码方式时,可以容纳长达210 s的语音数据。因此被广泛应用于数字语音识别领域中。
(3)电器控制继电器子节点。由继电器模块与ZigBee收发节点组成。由于我国市电电压在220 V左右,为了实现对部分家电开关的控制,采用继电器模块,并通过ZigBee通信模块的CC2530芯片的I/O引脚及其外围驱动电路,实现对继电器模块的吸合与释放控制。可以控制窗帘、灯光等开关型电器。
(4)红外控制子节点。由学习型红外控制模块与ZigBee收发子节点组成。目前,红外遥控类型的家用电器的比例正逐步攀升。因此本文在设计研究中采用了学习型的红外控制模块,它与ZigBee收发子节点之间通过串口进行通信。首先使用一个或多个红外模块对现有的家电(如电视机、DVD、空调、投影仪等)红外遥控器的信号进行学习,把相应的编码存放到红外模块的存储器E2PROM中,每条代码对应一个地址。当该
ZigBee节点接收到指令需要对某一家电进行控制时,红外模块就会根据指令调取该地址下的红外发射编码数据进行发射,从而实现对红外型家用电器的语音控制。
(5)基于CC2530的ZigBee无线收发模块。CC2530是TI公司推出的基于IEEE 802.15.4协议的片上系统。内嵌增强型单周期的8051CPU,具有8 KB的SRAM、2个支持多种串行通信协议的USART、21个通用的I/O引脚、宽电压范围(2~3.6 V)、低功耗(主动模式RX:24 mA;主动模式TX在1 dBm:29 mA)以及电源电量可监控等特点。在ZigBee协议栈中UART具有中断、DMA两种模式,本文设计中均采用了UART的中断模式。
3 系统软件设计
系统软件设计主要包括下位机软件与上位机软件设计。在下位机程序设计过程中有2个关键点:对数字语音信号的采集、处理与识别;ZigBee收发模块对控制信号的接收、发送与执行。而在上位机软件设计中,主要是基于Visual C++的串口通信的编程。
上位机主程序流程图如图2所示。
S3C6410开发平台具有4个UART接口,在研究设计中,采用了芯片MAX 3232来解决ZigBee通信模块的CC2530芯片与该开发平台之间的串口通信电平转换。上位机通过串口接收语音子节点的控制指令数据,将数据处理后用文字显示控制命令,并通过与ZigBee主节点之间的串口通信,向子节点发送控制指令数据。
单片机SPCE061A的UART数据格式只有一种,需按照规定的数据格式与CC2530模块进行串口通信。该程序在凌阳科技的μ’nSP IDE集成开发环境下进行开发,并采用凌阳科技提供的语音处理函数以及函数库。语音子节点程序流程图如图3所示。
由于单片机SPCE061A在进行语音识别时,一次性只能同时识别5条语音指令。为了增加其所能识别的语音指令,本文采用了分组法,能够在存储器允许的情况下识别多条语音指令。在烧录完程序首次使用该节点时,要对该节点进行训练。在该节点的语音提示下,依次录入4组命令,每组分5条语音指令,为了提高识别的质量,每条命令需要训练两遍。在语音训练结束后,启动该智能家居系统就能够对家居进行语音控制,且能够实现非特定人语音识别。
为了利用语音命令实现ZigBee语音子节点的“重新训练”,“停止识别”等控制,方便实际应用,本文在程序设计过程中采用goto无条件语句,部分程序源代码如下:
利用学习型红外收发模块对红外电器进行控制时,首先要对控制信号进行学习,将要发送的编码与CC2530输出的串口指令相对应。控制指令电器红外控制ZigBee子节点的程序流程图如图4所示。
4 实验及结果
4.1 实际应用举例
在对电动窗帘进行开关控制时,首先将本系统的电器控制继电器子节点与电动窗帘的开关量电机控制器相连接,准备好硬件电路。然后,通过串口编程使上位机的ZigBee主节点在接收到语音子节点的窗帘开关命令时,向ZigBee子节点发射窗帘控制信号,从而当控制窗帘的继电器子节点接收到控制指令时,能够控制窗帘执行相应的开关动作。通过如依次说出“控制器”、“打开”、“窗帘”的命令时,语音子节点语音提示设备打开,主机界面显示设备所处控制的状态,同时窗帘打开。
该语音控制智能家居系统能够实现家用电器的联动。例如,可以通过依次说出“控制器”、“家庭影院”的语音命令。这时上位机能够按照程序设定逐步延时:打开红外遥控投影仪,红外遥控幕帘,关闭窗帘,关闭部分灯光等来开启家庭影院模式。让人们体验真正的家居智能化。
4.2 ZigBee控制节点通信距离测试结果
(1)空旷场合测试。测试条件:CC2530模块采用PCB天线,发射功率在1 mW,发射频率在2.4 GHz。
测试结果:通信距离最远可达120 m。
(2)居家场合测试测试条件:同上。测试结果:由于墙体阻碍,通信距离约在20 m。
4.3 语音控制红外型电视开关测试
在语音识别程序设计中,为了增加语音节点所能识别命令的条数而采用了分组法。利用红外遥控子节点对电视遥控器的开/关信号进行学习,对语音子节点进行训练结束后,启动系统。依次说出“控制器”、“打开”、“电视”连续三条命令,再说出“控制器”、“关闭” “电视”连续三条命令。测试结果如表1所示。
5 结语
将具有数字语音识别功能的SPCE061A单片机与低功耗、低成本的ZigBee技术相结合,开发了基于单芯片CC2530的ZigBee语音节点,并利用ARM11架构的开发平台S3C6410作为网关,WinCE 6.0的操作系统,有着良好的人机交互界面,来共同应用于智能家居系统的语音控制中,实现了对开关型及红外型家电设备的语音控制和家居智能化,实现人与家电之间的对话,方便了人们的生活,具有广阔的应用前景。