ASR - Auto speech recognition
VAD - voice activity detection/语音活动检测
FIFO - First in First out/先进先出
2016年春节过后,赵师傅提供了一个《智能照明语音控制》的设计要求文档。赵师傅希望能够开发一款语音控制灯光亮度的开关设备,相关信息写在了该文档中。
春节前,赵师傅去了一趟重庆。在那里,有一个销售经理询问赵师傅是否可以设计一款用语音来控制开关等的设备。并且,提供了一款相关的产品宣传视频。我观看了这段视频。它是一个系统项目,在整个系统中,采用了一个声音是识别器,来控制家中的所有电器设备。开关灯,开关空调,开关窗帘,调整电视等操作,能够达到应用水平。
演示视频
回来后,赵师傅询问我是否能够设计一款简单的产品只是用来控制开关灯,实现调光控制等。这就是这个项目的由来。
下面为原有的热释电红外遥控开关产品实物图,供电电源为36VDC,LED灯板采用PWM方式控制,可以实现调光控制。遥控器可以用来实现对LED灯板的调光控制。原理图参考低端基板.SchDoc。下图为实物图和底板照片。
图1 开关和遥控器
图2 主控器
图3 LED灯板
经过对输入信息的分析和在网络上的检索,初步锁定了一些专业的语音识别芯片,通过对专业语音识别的控制,达到我们的产品要求。
对于目前市场上的现有产品,发现LD3320提供了丰富和相信的信息。另外,也是市场上在售比较好的一款产品。对于目前的开发来讲,语音识别领域是我没有介入过的一个领域。经过多方评估,我决定在设计初期采用LD3320芯片来进行设计。同时,我也可以对语音识别技术进行了解和评估。代样机测试稳定后,可以委托语音识别公司进行方案定制。这样可以节约产品成本,降低产品销售价格。
官方提供的主控制器为STC10L08XE,该方案采用的是并行口的方式实现对LD3320的控制操作。waveshare也提供了一个参考方案,他们采用的是STM32F103ZET6主控芯片。采用的SPI串行口的方式对LD3320进行控制。对于这个项目来讲,我倾向于采用STM8S系列芯片,这个芯片的使用,需要更多的评估。
STC10L08XE(2.6RMB) http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC11F-10Fxx.pdf
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进行样品阶段和小批量设计。可以快速提供成品给客户,了解市场的反馈。第二步,如果市场反馈良好,我们可以采用专用芯片设计,降低批量价格。
优点
缺点
优点
缺点
关键物料 | 说明 | 数量 | 单价(RMB) | 总价(RMB) |
---|---|---|---|---|
LD3320 | 语音识别芯片 | 1 | 1 | 32 |
STM8S003F3 | MCU | 1 | 1.47 | 1.47 |
PT4115 | 30V,1.2A,LED驱动芯片 | 1 | 0.61 | 0.61 |
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 系统框图
语音识别芯片是该产品的设计核心,语音识别的主要功能由该芯片实现。
LD3320是IRRoute公司推出的一款“语音识别”专用芯片。该芯片集成了语音识别处理器和一些外部电路,包括AD、DA转换器、麦克风接口、声音输出接口等。该芯片不需要接外部任何辅助的芯片,如Flash、RAM等,直接集成到现有的产品中即可以实现语音识别、声控、人机对话等功能。并且,识别的关键词语列表是可以任意动态编辑的。
LD3320接口有2种方式,我将采用串行口方式,这样可以减少MCU的引脚数量,减少MCU的尺寸。
串行口的引脚
串行口使用注意事项:
图5 LD3320引脚
LD3320参考原理图
LD3320管脚说明
Pin | Name | IO | Function | |
---|---|---|---|---|
1,32 | VDDIO | P | 数字IO电路用电源输入 | +3.3V |
2 | ||||
3 | ||||
4 | ||||
5 | ||||
6 | ||||
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 | ||||
30 | ||||
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采用STM8S003F3芯片,该芯片具有多种外部接口(SPI,UART,I2C等),功能强大,价格低廉,开发简单等特点。是一款性价比极高的一款芯片。
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输出电路图参考下图。
LED采用PWM的方式驱动。驱动部分参考原有的《热释电开关电路的驱动部分》。原本计划采用CL6807替代PT4115,从规格书上看的话,CL6807电压为35V,PT4115为30V。最佳的状态是替换过来。但是经过对PT4115的规格书进行仔细研读,发现它的最高耐压值为45V。而CL6807的最大电压值为35V。这就造成了我的误解。所以,我仍然才用PT4115进行设计。
IRRoute提供了比较详细的资料。包括规格书,原理图,源代码等都有提供。因而,我可以很方便的进行软件测试。如果有ICRoute相应的开发版的话。waveshare 也提供了相关的开发板和资料。
SPI_CR1 - SPI control register 1
SPI_CR2 - SPI control register 2
SPI_ICR - SPI interrupt control register
SPI_SR - SPI status register
SPI_DR - SPI data register // SPI数据寄存器
在设计初期忽略了有源晶体振荡器的价格(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)