智能电子锁实战攻略之语音播报功能实现

1. 简介

       在智能电子锁行业,电子锁基本上都是拥有语音播报功能的,播报的内容大致可分为两种,分别为按键音和提示音。下面将以 NXP - LPC54101 为控制端主芯片,结合 WT588S 语音芯片为案例,以逐步实现电子锁中的语音播报功能。

2. WT588S 语音芯片应用方框图

 

图 1

 

       以 WT588S 语音芯片为核心的实际应用框图如上图所示,其中主要包括控制端芯片 (主控芯片) 、WT588S 语音芯片和音频输出模块(扬声器)。BUSY 输出用于向控制端反馈当前语音播放是否完成,如果完成,则会立即向控制端发送中断信号,控制端收到中断信号后可以发送下一条语音指令。

       SPI-Flash 以及 USB 下载用于语音库的导入以及 WT588S 从语音库 flash 中读取语音指令,这一部分可以寻求厂家定制完成。

3. WT588S 语音芯片的特性指标


图 2

 

      上图表中给出了 WT588S 工作中的相关特性指标。其中工作电压(VDD)为 3.3V。待机电流(Isb)为 5 uA,这项参数反映了电子锁在低功耗状态下的语音模块的功耗,是低功耗设计的一个极为重要的指标。工作电流(Iop 无负载)3mA 反映了控制端在和语音芯片通信的时候的功耗。

4. WT588S 语音芯片管脚分布图


图 3

       上表为语音芯片管脚说明,重点关注 PA1 (一线 DATA 数据输入脚)和 PA2 (BUSY 脚语音播放忙信号输出脚)。PA1 为数据和命令发送线,以 GPIO 输出电位控制加延时函数来实现。PA2 做为语音芯片的中断输出接口,为控制端提供反馈信号。

5. WT588S 语音芯片智能电子锁实战应用电路


图 4

 

       注意:电容 C1 离 VDD 管脚小于 1 厘米,电容 C2 离 VDD-SPI 管脚小于 1 厘米,VDD 供电电压为 2.4V - 3.6V,VDD - SPI 供电电压为 2.4V - 3.6V (VDD - SPI 为 flash 的电源脚,需要由外部电源供电)。BUSY 可以用来判断芯片是否有响应 MCU 的指令,是否播放声音。


图 5

6. 时序部分


图 6

 

       高低电平时序范围:50us:150us ~ 800us:2.4ms (注: 1 :2 < 1 :3 < 1 :5 其中的 1 推荐 200us)

       说明:

  • 先发高字节的低位,再发送低字节的低位。例如 F3 01 接收到的数据是这样的:1100 1111 1000 0000。
  • 将数据信号拉低 5ms,然后发送数据,每个字节发完后需拉高 2ms 再拉低 5ms,然后发送下一个字节。高电平与低电平数据占空比 1 :3 即代表数据位 0,高电平于低电平数据位占空比为 3 :1 代表数据位 1。

 7. 部分代码

(注:代码基于控制端 NXP - LPC54101 实现)

1)语音引脚初始化及功能模块初始化

/*******************************************************************************
Function Name : voice_pin_init
*******************************************************************************/
void voice_pin_init()
{
uint32_t pin_configure; // IO Pin mux

CLOCK_EnableClock(kCLOCK_Iocon);
pin_configure = (
IOCON_PIO_FUNC0 | /* pin function = 0, GPIO */
IOCON_PIO_MODE_PULLUP | /* Selects pull-up function */
IOCON_PIO_INV_DI | /* Input function is not inverted */
IOCON_PIO_DIGITAL_EN | /* Enables digital function */
IOCON_PIO_INPFILT_OFF | /* Input filter disabled */
IOCON_PIO_OPENDRAIN_DI /* Open drain is disabled */
);
IOCON_PinMuxSet(IOCON, WT588S_PORT, WT588S_data, pin_configure);
IOCON_PinMuxSet(IOCON, WT588S_PORT, WT588S_busy, pin_configure);

gpio_pin_config_t WT588S_config; // GPIO direction & outputlogic
WT588_GPIO_config.pinDirection = kGPIO_DigitalOutput;
WT588_GPIO_config.outputLogic = 1;
GPIO_PinInit (GPIO, WT588S_PORT, WT588S_data, &WT588S_config);
GPIO_PinInit (GPIO, WT588S_PORT, WT588S_busy, &WT588S_config);
}

2)语音播放接口

/*******************************************************************************
Function Name : voice_play
Parameters : voice_index,
see spec WT588S191019-24 -WT588S16-(中英文)20191021.pdf
Notes : play WT588T voice with SWP command
*******************************************************************************/

void voice_play(uint16_t voice_index )
{
// 该部分代码在 WT588S191019-24 -WT588S16-(中英文)20191021.pdf 文件中有提供,该文件在附件中有提供,虽然代码提供的是 8 位的数据指令,但是根据时序写出 16 位的写指令并不难,因此在此处的时序控制写指令函数接口代码就不详细给出了,读者可以在附件中查看。
}

3)语音中英文播放接口

/*******************************************************************************
Function Name : voice_play_with_language
Parameters :
Notes : play WT588T voice with SWP command+ and you can find out command of voice index in the "voice_indexform_t".
*******************************************************************************/
void voice_play_with_language(uint16_t voice, uint8_t language)
{
if(language == ChineseIndex)
{
voice_play(voice);
}

else if(language == EnglishIndex)
{
voice_play(voice + JUMP_ADDRESS);
}
}

 
8. 语音控制命令

   WT588S 提供了相应的指令集来应对语音的连读、暂停、静默等功能需求,具体如下所示:

  • 0000H ~ 03E7H (语音地址) :播放对应语音地址的内容;
  • FFE0H ~ FFEFH (音量调节) :在语音播放或者待机状态发此命令可以调节 16 级音量,FFE0H 最小,FFEFH 音量最大;
  • FFF2H (循环播放):在语音播放过程中发送此命令可循环播放当前地址语音。(没有播放语音时循环播放上一次播放的地址语音);
  • FFF3H + XXXX (连码播放) :FFF3H + 语音地址 A + FFF3H + 语音地址 B + FFF3H + 语音地址 C,… 待指令发送完毕,等待 100ms 开始播放语音,播完 A,再播放 B,之后播放 C…语音地址 XXXX 的范围为(0000H ~ 00DFH);
  • FFF8H + XXXX (插入静音) :FFF8H + 静音时间(10MS 为单位),播放完语音之后插入静音;在连码播放时,该静音指令的前后两个语音之间插入静音。这里的 XXXX 范围为(0000H ~ 00DFH);
  • FFFEH (停止语音播放) :停止播放语音命令;
  • FFFDH (释放指令) :语音芯片释放 FLASH 命令;
  • FFFCH (重新控制指令) :语音芯片重新控制 FLASH 命令。

 9. 参考文献

    【1】《 WT588S 语音芯片使用资料  V1.11 》

技术文档

类型标题档案
硬件Datasheet

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论