语音开关设计

关键字

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

设计导入

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

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

演示视频

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

热释电红外调光开关

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

语音开关设计_第1张图片

image005

图1 开关和遥控器

语音开关设计_第2张图片

图2 主控器

语音开关设计_第3张图片

图3 LED灯板

设计评估

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

语音识别相关芯片

  • LD3320
  • A550
  • HR8S010
  • https://detail.1688.com/offer/524537441535.html

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

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

主控制器 MCU

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

  • STC10L08XE(2.6RMB) http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC11F-10Fxx.pdf

    • 工作电压: 2.4-3.6V
    • Flash: 8K
    • SRAM: 256
    • 串口: 1-2
    • 定时器: 2
  • STM32F103ZET6(16.4RMB) 该芯片不做考虑,因为价格昂贵,不适合该产品使用。

  • STM8S003F3P6(1.7RMB)

Device STM8S003K3 STM8S003F3
Pin count 32 20
Maximum number of GPIOs(I/Os) 28 16
Ext. interrupt pins 27 16
Timer CAPCOM channels 7 7
Timer complementary outputs 3 2
A/D converter channels 4 5
High sink I/Os 21 12
Low density Flash program memory(bytes) 8K 8K
RAM(bytes) 1K 1K
True data EEPROM(byters) 128 128
Peripheral set Multipurpose 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 语音识别芯片 1 1 32
STM8S003F3 MCU 1 1.47 1.47
PT4115 30V,1.2A,LED驱动芯片 1 0.61 0.61
CL6807 35V,1A,LED驱动芯片 1 0.44 0.44
MP2451DT 36V输入开关电源芯片 1 0.98 0.98
PCB 1 1.2 1.2
其它 <10

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

硬件设计实现

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

硬件框图

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

语音开关设计_第4张图片

图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设备的时候,应在硬件设计时做好隔离。

语音开关设计_第5张图片

图5 LD3320引脚

LD3320参考原理图

LD3320管脚说明

Pin Name IO Function
1,32 VDDIO P 数字IO电路用电源输入 +3.3V
2 Reserved
3 Reserved
4 Reserved
5 Reserved
6 Reserved
7 VDD P 数字逻辑电路用电源 +3.3V
8,33 GNDD IO和数字电路用接地 GND
9,10 MIC[P,N] AI 麦克风输入(正负端) MIC
11 MONO AI 麦克风输入LineIn输入
12 MBS 麦克风偏置 MIC
13,14 LIN[L,R] AI 立体声LineIn(左右端)
15,16 HPO[L,R] AO 耳机输出(左右端)
17 GNDA P 模拟电路用接地
18 VREF 声音信号参考电压
19,23 VDDA 模拟信号用电源
20 EQ1 AO 喇叭音量外部控制1
21 EQ2 AI 喇叭音量外部控制2
22 EQ3 AO 喇叭音量外部控制3
24 GNDA P GND
25,26 SPO[N,P] AO 喇叭输出
27,28 LOUT[L,R] AO LineOut输出
29 Reserved
30 Reserved
31 CLK I 时钟输入4-48(MHz)
34 P7 I/O 并行口(第7位)
35 P6 I/O 并行口(第6位)
36 P5 I/O 并行口(第5位)
37 P4 I/O 并行口(第4位)
38 P3 I/O 并行口(第3位)
39 P2/SDCK I/O 并行口(第2位)/共用SPI时钟 SCK
40 P1/SDO I/O 并行口(第1位)/共用SPI输出 MISO
41 P0/SDI I/O 并行口(第0位)/共用SPI输入 MOSI
42 WRB/SPIS I 写允许(低电平有效),共用SPI允许 SD_WR
43 CSB/SCS I 并行方式片选信号,共用SPI片选信号 NSS
44 A0 I 地址/数据选择
45 RDB I 读允许(低电平有效)
46 MD I 0:并行工作/1:串行工作
47 RSTB I 复位信号(低电平有效) LD_RST
48 INTB O 中断输出信号(低电平有效) LD_IRQ

MCU

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

  • MCU引脚定义
TSSOP20 Pin Name Type Function
1 PD4/BEEP/TIM2_CH1/UART1_CK
2 PD5/AIN5/UART1_TX I/O UART1_TX
3 PD6/AIN6/UART1_RX I/O UART1_RX
4 NRST I/O Reset
5 PA1/OSCIIN
6 PA2/OSCOUT
7 Vss S
8 VCAP S
9 Vdd S
10 PA3/TIM2_CH3[SPI_NSS] I/O SPI_NSS
11 PB5/I2C_SDA[TIM1_BKIN] I/O I2C_SDA
12 PB4/I2C_SCL I/O I2C_SCL
13 PC3/TIM1_CH3[TLI][TIM1_CH1N] I LD_IRQ
14 PC4/CLK_CCO/TIM1_CH4/AIN2/[TIM1_CH2N] O LD_RST
15 PC5/SPI_SCK[TIM2_CH1] I/O SPI_SCK
16 PC6/SPI_MOSI[TIM1_CH1] I/O SPI_MOSI
17 PC7/SPI_MISO[TIM1_CH2] I/O SPI_MISO
18 PD1/SWIM I/O SWIM Debug/Program
19 PD2/AIN3/[TIM2_CH3] AI Light AD
20 PD3/AIN4/TIM2_CH2/ADC_ETR O PWM

电源

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

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

语音开关设计_第6张图片

LED驱动

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

语音开关设计_第7张图片

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)

你可能感兴趣的:(产品设计)