为了给大家些创作灵感,今天带来第十届立创电赛一等奖作品第十届立创电赛#stm32语音机械时钟案例分享!本文作者:@morefree66,禁止商用,未经许可禁止转载。
1、项目功能介绍
该语音机械时钟是一款创新型时钟,通过“机械动态显示+语音智能交互”的结合,重新定义了时钟的形态。
该时钟具备多个模式,可通过语音控制实时显示时间,日期,年份,还可显示世界个别地区时间,如美国时间,另外还可显示个性化小表情,语音也可实现自定义,具有很强的可玩性。
该项目使用stm32作为主控,将两个PCA9685舵机驱动板级联,通过I2C通信与单片机通信,从而实现同时控制30个舵机,通过时钟芯片实时获取时间,通过语音模块实现人机交互。
实物图:


*2、项目属性
本项目首次公开,未参加其他比赛,未在学校进行答辩。
* 3、开源协议
GPL3.0开源协议
请在竞赛阶段填写 ↓
*4、硬件部分
4.1 系统组成及工作流程

通过观察上图可知该语音机械时钟的具体工作流程以及大致工作原理。
其中:
- 主控:STM32F103C8T6,价格低廉,资源广泛,易于开发,且性能足够。
- 语音模块:ASRPRO2.0,操作简单,识别率高,是进行语音控制的理想选择。
- 舵机驱动板:PCA9685,具有16路舵机驱动,非常适合需要同时控制多个舵机的项目,且相较于其他舵机驱动板而言,价格较低,性价比很高。
- 时钟芯片:DS1302,价格便宜,计时精准。
- MG90S舵机30个
4.2 机械结构
定制一张70*30的亚克力板,作为表盘,上面切割出可以装上舵机的卡槽,然后将舵机按照下图所示进行编号并安装,然后将舵机按照编号插到舵机驱动板的对应引脚。(表盘CAD图纸见附件)


将两块PCA9685舵机驱动板级联,右边那块驱动板上控制通信地址的两个引脚按下图所示焊接到一起,这样做的目的是改变其I2C通信地址


组成数字的色块是3D打印的,将色块按照如图装到舵机上,色块表面贴上白色贴纸,与黑色表盘形成反差。(3D打印文件见附件)


舵机供电是用一个5V10A的开关电源,因为30个舵机同时运转所产生的瞬时电流还是很大的,引出正负极接到舵机驱动板的V+和V-。

4.3 原理图

电路板基本都是靠各个模块堆出来的,所以没有什么电路设计,只画了个拓展版,大佬勿喷。
PCB

语音模块需5V供电,我当时图方便直接引出两个引脚,各位可以搞个DC口。
*5、软件部分
5.1 主体程序流程

5.2 STM32端
5.2.1 主体文件

5.2.1 核心代码(完整见原链接)
6、BOM清单





