语音开关设计

关键字

ASR - Auto speech recognition
VAD - voice activity detection/语音活动检测
FIFO - First in First out/先进先出

设计导入

2016年春节过后,赵师傅提供了一个《智能照明语音控制》的设计要求文档。赵师傅希望能够开发一款语音控制灯光亮度的开关设备,相关信息写在了该文档中。

春节前,赵师傅去了一趟重庆。在那里,有一个销售经理询问赵师傅是否可以设计一款用语音来控制开关等的设备。并且,提供了一款相关的产品宣传视频。我观看了这段视频。它是一个系统项目,在整个系统中,采用了一个声音是识别器,来控制家中的所有电器设备。开关灯,开关空调,开关窗帘,调整电视等操作,能够达到应用水平。

演示视频

回来后,赵师傅询问我是否能够设计一款简单的产品只是用来控制开关灯,实现调光控制等。这就是这个项目的由来。

热释电红外调光开关

下面为原有的热释电红外遥控开关产品实物图,供电电源为36VDC,LED灯板采用PWM方式控制,可以实现调光控制。遥控器可以用来实现对LED灯板的调光控制。原理图参考低端基板.SchDoc。下图为实物图和底板照片。

image003
image004
image005
image006

图1 开关和遥控器

image009
image010

图2 主控器

image007
image008

图3 LED灯板

设计评估

经过对输入信息的分析和在网络上的检索,初步锁定了一些专业的语音识别芯片,通过对专业语音识别的控制,达到我们的产品要求。

语音识别相关芯片

对于目前市场上的现有产品,发现LD3320提供了丰富和相信的信息。另外,也是市场上在售比较好的一款产品。对于目前的开发来讲,语音识别领域是我没有介入过的一个领域。经过多方评估,我决定在设计初期采用LD3320芯片来进行设计。同时,我也可以对语音识别技术进行了解和评估。代样机测试稳定后,可以委托语音识别公司进行方案定制。这样可以节约产品成本,降低产品销售价格。

  • 采用LD3320,该芯片是目前市场上比较流行的语音识别方案。
  • 采用一款低廉的MCU来实现对LD3320的控制。
  • 缺点是,该方案价格目前价格比较高,只是LD3320就高达32¥。
主控制器 MCU

官方提供的主控制器为STC10L08XE,该方案采用的是并行口的方式实现对LD3320的控制操作。waveshare也提供了一个参考方案,他们采用的是STM32F103ZET6主控芯片。采用的SPI串行口的方式对LD3320进行控制。对于这个项目来讲,我倾向于采用STM8S系列芯片,这个芯片的使用,需要更多的评估。

DeviceSTM8S003K3STM8S003F3
Pin count3220
Maximum number of GPIOs(I/Os)2816
Ext. interrupt pins2716
Timer CAPCOM channels77
Timer complementary outputs32
A/D converter channels45
High sink I/Os2112
Low density Flash program memory(bytes)8K8K
RAM(bytes)1K1K
True data EEPROM(byters)128128
Peripheral setMultipurpose timer(TIM1),SPI,I2C,UART,window WDG,independent WDG,ADC,PWM timer(TIM2),8-bit timer(TIM4)

从规格书上来看的话,STM8S相对STL10L08XE有很大的优势,性能上和价格上都比较合适。应该完全可以替代STL10L08XE,实现对LD3320的控制。

评估结果

设计分两步进行,第一步,采用LD3320进行样品阶段和小批量设计。可以快速提供成品给客户,了解市场的反馈。第二步,如果市场反馈良好,我们可以采用专用芯片设计,降低批量价格。

样品阶段采用LD3320进行设计
  • 优点

    • 设计容易,资料比较丰富
    • 采用独立的MCU继续设计,方便设计调整
    • 可以快速出样品
  • 缺点

    • 价格贵
批量采用专用芯片进行设计
  • 优点

    • 价格便宜,芯片价格能够控制在15元左右
  • 缺点

    • 芯片供应商完全控制开发
    • 芯片需要批量采购

价格估算

  • 关键物料及评估价格,以批量(K)单位估价。
关键物料说明数量单价(RMB)总价(RMB)
LD3320语音识别芯片1132
STM8S003F3MCU11.471.47
PT411530V,1.2A,LED驱动芯片10.610.61
CL680735V,1A,LED驱动芯片10.440.44
MP2451DT36V输入开关电源芯片10.980.98
PCB11.21.2
其它<10

该价格仅为估价,仅供参考,物料清单出来后(BOM)才能有详细的报价

硬件设计实现

设计实现分两部分,硬件和软件。硬件采用赵师傅的建议,采用原来热释电红外感应开关的外壳。硬件电路基本上参考原来的线路和LD3320的参考线路。软件部分,应该需要多准备一些工作。需要对LD3320有更多的了解和测试。

硬件框图

初步根据现有的产品和模式绘制了一个简易的框图。该框图具备的基本的功能。

diagram block

图4 系统框图

语音识别芯片 LD3320

语音识别芯片是该产品的设计核心,语音识别的主要功能由该芯片实现。
LD3320是IRRoute公司推出的一款“语音识别”专用芯片。该芯片集成了语音识别处理器和一些外部电路,包括AD、DA转换器、麦克风接口、声音输出接口等。该芯片不需要接外部任何辅助的芯片,如Flash、RAM等,直接集成到现有的产品中即可以实现语音识别、声控、人机对话等功能。并且,识别的关键词语列表是可以任意动态编辑的。

LD3320接口有2种方式,我将采用串行口方式,这样可以减少MCU的引脚数量,减少MCU的尺寸。

  • 并行口方式(8bit)
  • 串行口方式SPI

串行口的引脚

  • MD - 设为高电平
  • SPIS - 设为低电平
  • SCS
  • SDCK
  • SDI
  • SDO

串行口使用注意事项:

  • LD3320接受的命令为写(0x04)和读(0x05)。
  • SDCK的下降沿有效。
  • 读数据的时候,每当遇到上升沿,LD3320芯片的SDO会发生数据变化。
  • LD芯片的SPI接口可以接受的最大SDCK的时钟频率是1.5MHz。
  • SDO在不使用的时候也会输出低电平,(包括SCS为搞得时候),所以如果MCU需要连接多个SPI设备的时候,应在硬件设计时做好隔离。

image002

图5 LD3320引脚

LD3320参考原理图

LD3320管脚说明

PinNameIOFunction
1,32VDDIOP数字IO电路用电源输入+3.3V
2Reserved
3Reserved
4Reserved
5Reserved
6Reserved
7VDDP数字逻辑电路用电源+3.3V
8,33GNDDIO和数字电路用接地GND
9,10MIC[P,N]AI麦克风输入(正负端)MIC
11MONOAI麦克风输入LineIn输入
12MBS麦克风偏置MIC
13,14LIN[L,R]AI立体声LineIn(左右端)
15,16HPO[L,R]AO耳机输出(左右端)
17GNDAP模拟电路用接地
18VREF声音信号参考电压
19,23VDDA模拟信号用电源
20EQ1AO喇叭音量外部控制1
21EQ2AI喇叭音量外部控制2
22EQ3AO喇叭音量外部控制3
24GNDAPGND
25,26SPO[N,P]AO喇叭输出
27,28LOUT[L,R]AOLineOut输出
29Reserved
30Reserved
31CLKI时钟输入4-48(MHz)
34P7I/O并行口(第7位)
35P6I/O并行口(第6位)
36P5I/O并行口(第5位)
37P4I/O并行口(第4位)
38P3I/O并行口(第3位)
39P2/SDCKI/O并行口(第2位)/共用SPI时钟SCK
40P1/SDOI/O并行口(第1位)/共用SPI输出MISO
41P0/SDII/O并行口(第0位)/共用SPI输入MOSI
42WRB/SPISI写允许(低电平有效),共用SPI允许SD_WR
43CSB/SCSI并行方式片选信号,共用SPI片选信号NSS
44A0I地址/数据选择
45RDBI读允许(低电平有效)
46MDI0:并行工作/1:串行工作
47RSTBI复位信号(低电平有效)LD_RST
48INTBO中断输出信号(低电平有效)LD_IRQ
MCU

MCU采用STM8S003F3芯片,该芯片具有多种外部接口(SPI,UART,I2C等),功能强大,价格低廉,开发简单等特点。是一款性价比极高的一款芯片。

  • MCU引脚定义
TSSOP20Pin NameTypeFunction
1PD4/BEEP/TIM2_CH1/UART1_CK
2PD5/AIN5/UART1_TXI/OUART1_TX
3PD6/AIN6/UART1_RXI/OUART1_RX
4NRSTI/OReset
5PA1/OSCIIN
6PA2/OSCOUT
7VssS
8VCAPS
9VddS
10PA3/TIM2_CH3[SPI_NSS]I/OSPI_NSS
11PB5/I2C_SDA[TIM1_BKIN]I/OI2C_SDA
12PB4/I2C_SCLI/OI2C_SCL
13PC3/TIM1_CH3[TLI][TIM1_CH1N]ILD_IRQ
14PC4/CLK_CCO/TIM1_CH4/AIN2/[TIM1_CH2N]OLD_RST
15PC5/SPI_SCK[TIM2_CH1]I/OSPI_SCK
16PC6/SPI_MOSI[TIM1_CH1]I/OSPI_MOSI
17PC7/SPI_MISO[TIM1_CH2]I/OSPI_MISO
18PD1/SWIMI/OSWIM Debug/Program
19PD2/AIN3/[TIM2_CH3]AILight AD
20PD3/AIN4/TIM2_CH2/ADC_ETROPWM
电源

电源输入采用36V DC电源。MCU和LD3320的供电电源为3.3V。因而,我们需要一个3.3V的电源输出。

我选用的是MP2451(36V,2MHz,0.6A,STEP-DOWN CONVERTER)芯片,该芯片为的3.3V输出电路图参考下图。

image013

LED驱动

LED采用PWM的方式驱动。驱动部分参考原有的《热释电开关电路的驱动部分》。原本计划采用CL6807替代PT4115,从规格书上看的话,CL6807电压为35V,PT4115为30V。最佳的状态是替换过来。但是经过对PT4115的规格书进行仔细研读,发现它的最高耐压值为45V。而CL6807的最大电压值为35V。这就造成了我的误解。所以,我仍然才用PT4115进行设计。

image014

IR输入

软件设计实现

IRRoute提供了比较详细的资料。包括规格书,原理图,源代码等都有提供。因而,我可以很方便的进行软件测试。如果有ICRoute相应的开发版的话。waveshare 也提供了相关的开发板和资料。

STM8S003 SPI功能
  • SPI_CR1 - SPI control register 1

    • Bit7 - LSBFIRST: Frame format
      • 0: MSB is transmitted first
      • 1: LSB is transmitted first
    • Bit6 - SPE: SPI enable
      • 0: Peripheral disabled
      • 1: Peripheral enabled
    • Bits 5:3 BR[2:0]: Baud rate control
      • 000: fmaster/2
      • 001: fmaster/4
      • 010: fmaster/8
      • 011: fmaster/16
      • 100: fmaster/32
      • 101: fmaster/64
      • 110: fmaster/128
      • 111: fmaster/256
    • Bit2 MSTR: Master selection
      • 0: Salave configuration
      • 1: Master configuration
    • Bit1 CPOL: clock polarity
      • 0: SCK to 0 when idle
      • 1: SCK to 1 when idle
    • Bit0 CPHA: Clock phase
      • 0: The first clock transition is first data capture edge
      • 1: The seecond clock transition is the first data capture edge
  • SPI_CR2 - SPI control register 2

    • Bit 7 BDM: Bidirectional data mode enable // 双向数据模式
      • 0: 2-line unidirectional data mode selected
      • 1: 1-line biidirectional data mode selected
    • Bit 6 BDOE: Input/Output enable in bidirectional mode // 在双向模式下,输入/输出使能
      This bit selects the direction of transfer in bidirectional mode when BDM is set to 1.
      • 0: Input enabled(receive-only mode)
      • 1: Output enable(transmit-only mode)
        In master mode, the MOSI pin is used and in slave mode, the MISO pin is used.
    • Bit 5 CRCEN: Hardware CRC calculation enable
      • 0: CRC calculation disabled
      • 1: CRC calculation enabled
        Note: This bit should be written only when SPI is disabled(SPE=’0’) for correct operation
    • Bit 4 cRCNeXT: Transmit CRC next
      • 0: Next transmit value is for Tx buuffer
      • 1: Next transmit value is from Tx CRC register
    • Bit 3 Reserved
    • Bit 2 RXONLY: Receive only
      • 0: Full duplex (Transmit and recevie)
      • 1: Output disapled (Receive only mode)
        This bit combined with BDM bit selects the direction of transfer in 2 line uni-directional mode.
        This bit is also useful in a multi-slave system in which this particular slave is not accessed, thsi output from the accessed slave is not corrrupted.
    • Bit 1 SSM: software slave management
      • 0: Software slave management disabled
      • 1: Software slave management enabled
        When the SSM bit is set, the NSS pin input is replaced with the value coming from thee SSI bit
    • Bit 0 SSI: Internal slave select
      This bit has effect only when SSM bit is set. The value of this bit is forced onto the NSS pin and the I/O value of the NSS pin is ignored.
      • 0: Slave mode
      • 1: Master mode
  • SPI_ICR - SPI interrupt control register

    • Bit 7 TXIE: Tx buffer empty interrupt enable
      • 0: TXE interrupt masked
      • 1: TXE interrupt not masked.
    • Bit 6 RXIE: Rx buffer not empty interrupt enable
      • 0: RXNE interrupt masked
      • 1: RXNE interrupt not masked
    • Bit 5 ERRIE: Error interrupt enable
      • 0: Error interrupt is masked
      • 1: Error interrupt is enabled.
    • Bit 4 WKIE: Wakeup interrupt enable
      • 0: Wakeup interrupt masked
      • 1: Wakeup interrupt enabled.
    • Bit 3:0 Reserved
  • SPI_SR - SPI status register

    • Bit 7 BSY: Busy flag
      • 0: SPI not busy
      • 1: SPI is busy in communication
    • Bit 6 OVR: Overrun flag
      • 0: No Overrun occurred
      • 1: Overrun occurred
    • Bit 5 MODF: Mode fault // 模式故障
      • 0: No MOde fault occurred
      • 1: Mode fault occurred
    • Bit 4 CRCERR: CRC error flag
      • 0: CRC value received matches the SPI_RXCRCR value
      • 1: CRC value recevied does not match the SPI_RXCRCR value
    • Bit 3 WKUP: Wakeup flag
      • 0: No wakeup event occurred
      • 1: Wakeup event occurred
    • Bit 2 Reserved
    • Bit 1 TXE: Transmit bufer empty
      • Tx buffer not empty
      • Tx buffer empty
    • Bit 0 RXNE: Receive buffer not empty
      • 0: Rx buffer empty
      • 1: Rx buffer not empty
  • SPI_DR - SPI data register // SPI数据寄存器

  • SPI_CRCPR - SPI CRC polynomial register
  • SPI_RXCRCR - SPI Rx CRC register

改善

有源晶体振荡器价格昂贵

在设计初期忽略了有源晶体振荡器的价格(3RMB),该价格远远超过了MCU的价格。出去这样的目的考虑。有必要针对晶体振荡器进行优化考虑。

参考文档

LD3320 http://www.icroute.com/
LD3320_Board http://www.waveshare.net/wiki/LD3320_Board
LD3320_Board_(B) http://www.waveshare.net/wiki/LD3320_Board_(B)

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值