描述简介:基于武汉芯源半导体CW32F030C8T6和启英泰伦CI-C22GS02制作的智能语音分类垃圾桶,能够实现识别语音来判断垃圾种类,同时打开相应的垃圾桶,可外接普通按键或者触摸按键,也可以外接红外接近传感器来打开对应的垃圾桶。
项目说明
本次设计采用武汉芯源半导体的CW32F030C8T6作为主控,主要负责和离线语音模块的串口通讯,负责输出4路PWM信号、驱动IPS显示屏、控制2路MOS驱动电路(控制风扇和灯光)、驱动4个WS2812B灯。语音识模块采用启英泰伦CI-C22GS02模块(主芯片采用Cl1122,支持本地200条命令词以下的离线语音识别),主要负责语音识别和播报语音,可通过串口与MCU通讯。
项目相关功能介绍
介绍
1.离线语音模块的命令词可自行定制,最多可录入200个命令词,目前已录入了168条垃圾名词和一些控制指令。当语音模块识别到正确的命令词后,串口输出规定协议的数据。语音模块也可以接收规定协议的串口数据来播报指定的语音。离线语音模块的串口1和MCU主控的串口2使用跳线连接,方便分别开发调试。
2.主控输出4路PWM信号(周期20us,频率50Hz),可直接驱动4路舵机。
3.四个WS2812B灯作为4类垃圾的指示灯,语音模块在识别到正确的语音后,由CW32主控来控制指定的灯点亮对应的颜色。
4.电路采用直流12V供电,经DC-DC降压后输出5.2V,5.2V再经LDO降压后输出3.3V。其中CI-C22GS02模块、舵机、WS2812B、外部灯光和风扇供电均采用5.2V供电,MCU主控、IPS显示屏采用3.3V供电。
5.电路设计了2路MOS驱动电路,可外接5V的小风扇和5V供电的灯。另外预留了2种屏幕接口,支持8针的SPI接口的屏幕或者4针的I2C接口的屏幕。预留3组扩展接口,将剩余的IO口全部引出,方便扩展。
硬件部分介绍
智能语音分类垃圾桶主要包含主控板、显示屏、独立按键模块、加装舵机的垃圾桶模型、12V电源适配器。
软件部分介绍
软件分两部分,一部分是针对CW32F030C8T6的程序开发,另一部分是针对CI-C22GS02离线语音模块的命令词、语言模型、声学模型以及固件的制作。
1.CW32F030C8T6的程序开发。采用Keil5开发,借鉴了CW32官方例程和开源平台上一些大佬的程序。程序中涉及GPIO、DMA、定时器、ADC、UART、PWM、SPI等功能的实现。
因本人水平有限,写的程序只能说能用,但不保证好用。里面使用了大量的全局变量,还有很多改进的地方。
下面展示了部分程序。
(1)主程序
(2)串口发送程序
(3)串口接收程序(有BUG,接收两遍才能接收完整)
(4)舵机执行动作的程序
采用定时器和标志位,使舵机缓慢打开,一定时间后缓慢自动关闭,4路舵机相互不受影响。
2.CI-C22GS02离线语音模块的命令词、语言模型、声学模型以及固件的制作。具体制作教程建议参考启英泰伦文档中心
(1)命令词列表(根据自己需要定制)
(2)生成的语言模型相应的文件放在这里
(3)生成的声学模型相应的文件放在这里
(4)生成固件之前需要手动修改这里,这里按照数字顺序(16进制)来修改。
(5)合并烧录固件
(6)打包固件
(7)烧录固件。使用CH340串口工具,CH340的TX接语音模块串口0的RXD,CH340的RX接语音模块串口0的TXD,GNG接GND。CH340先插入电脑,烧录软件中出现对应的串口后,在右边的方框中打勾,然后按住UPDATE 按钮,CH340D的5V接语音模块+5V,此时烧录软件会显示开始烧录,直到烧录完成。
固件烧录成功后,喇叭应该会播报事先录入的欢迎词,这就说明烧录成功。
设计图
原理图_V1.0
原理图_V2.0
PCB_V2.0