版本协议

GPL 3.0

标签
专业版
#第十届立创电赛#stm32语音机械时钟

创建时间:4周前

66 0

视频

描述

<div> <p style="line-height:1.8;">注:* 为必填项</p> <p style="line-height:1.8;"><strong><span style="color:#0093e6;">请在报名阶段填写 ↓</span></strong></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">* 1、项目功能介绍</h3> <hr> <p style="line-height:1.8;">该语音机械时钟是一款创新型时钟,通过“机械动态显示+语音智能交互”的结合,重新定义了时钟的形态。该时钟具备多个模式,可通过语音控制实时显示时间,日期,年份,还可显示世界个别地区时间,如美国时间,另外还可显示个性化小表情,语音也可实现自定义,具有很强的可玩性。</p> <p style="line-height:1.8;">该项目使用stm32作为主控,将两个PCA9685舵机驱动板级联,通过I2C通信与单片机通信,从而实现同时控制30个舵机,通过时钟芯片实时获取时间,通过语音模块实现人机交互。</p> <p style="line-height:1.8;">实物图:</p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/5n3g261jmCeSQBTYDmMjRWINAmS3hE6cXlocp6bC.jpeg" alt="5n3g261jmCeSQBTYDmMjRWINAmS3hE6cXlocp6bC.jpeg"></p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/n6mO6qFRpBTU991mCJQBCACNTNFaWrrQ3RI9i6Xe.jpeg" alt="n6mO6qFRpBTU991mCJQBCACNTNFaWrrQ3RI9i6Xe.jpeg"></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*2、项目属性</h3> <hr> <p style="line-height:1.8;">本项目首次公开,未参加其他比赛,未在学校进行答辩。</p> <h3 style="line-height:1.8;">* 3、开源协议</h3> <hr> <p><em>GPL3.0开源协议</em></p> <p style="line-height:1.8;"><strong><span style="color:#0093e6;">请在竞赛阶段填写 ↓</span></strong></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*4、硬件部分</h3> <hr><strong>4.1 系统组成及工作流程</strong></div> <div> </div> <div> <p style="line-height:1.8;"><strong><img src="//image.lceda.cn/pullimage/o4FESqyTlyvUvcYFPkIQSyityvTB3a339qcVuR7l.png" alt="o4FESqyTlyvUvcYFPkIQSyityvTB3a339qcVuR7l.png"></strong></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><strong>通过观察上图可知该语音机械时钟的具体工作流程以及大致工作原理。</strong></p> <p style="line-height:1.8;"><strong>其中:</strong></p> <p style="line-height:1.8;"><strong>主控:STM32F103C8T6,价格低廉,资源广泛,易于开发,且性能足够。</strong></p> <p style="line-height:1.8;"><strong>语音模块:ASRPRO2.0,操作简单,识别率高,是进行语音控制的理想选择。</strong></p> <p style="line-height:1.8;"><strong>舵机驱动板:PCA9685,具有16路舵机驱动,非常适合需要同时控制多个舵机的项目,且相较于其他舵机驱动板而言,价格较低,性价比很高。</strong></p> <p style="line-height:1.8;"><strong>时钟芯片:DS1302,价格便宜,计时精准。</strong></p> <p style="line-height:1.8;"><strong>MG90S舵机30个</strong></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><strong>4.2 机械结构</strong></p> <p style="line-height:1.8;"><strong>定制一张70*30的亚克力板,作为表盘,上面切割出可以装上舵机的卡槽,然后将舵机按照下图所示进行编号并安装,然后将舵机按照编号插到舵机驱动板的对应引脚。(表盘CAD图纸见附件)</strong></p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/q1x2fx2Zf72pCaovycTpWPteB0TRUdDpkSp9JgXN.jpeg" alt="q1x2fx2Zf72pCaovycTpWPteB0TRUdDpkSp9JgXN.jpeg"></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/MLHaGaqu4dtsPYbVnX9jj4eC1egklZkU7KkC9qj0.jpeg" alt="MLHaGaqu4dtsPYbVnX9jj4eC1egklZkU7KkC9qj0.jpeg"></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><strong>将两块PCA9685舵机驱动板级联,右边那块驱动板上控制通信地址的两个引脚按下图所示焊接到一起,这样做的目的是改变其I2C通信地址</strong></p> <p style="line-height:1.8;"><strong><img src="//image.lceda.cn/pullimage/XiloJHL9sQSReYdgbGRy4Xqpe7EBEyENYWEvzBVM.jpeg" alt="XiloJHL9sQSReYdgbGRy4Xqpe7EBEyENYWEvzBVM.jpeg"></strong></p> <p style="line-height:1.8;"><strong><img src="//image.lceda.cn/pullimage/49AKvkjngLqJcuR5pCeHgw96RWx1gTFI7M4EW9Li.jpeg" alt="49AKvkjngLqJcuR5pCeHgw96RWx1gTFI7M4EW9Li.jpeg"></strong></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><strong>组成数字的色块是3D打印的,将色块按照如图装到舵机上,色块表面贴上白色贴纸,与黑色表盘形成反差。(3D打印文件见附件)</strong></p> <p style="line-height:1.8;"><strong><img src="//image.lceda.cn/pullimage/Pet6Ih0qv86VW0A9K1LLM7LpQHjSBrlUyGOWhlvC.png" alt="Pet6Ih0qv86VW0A9K1LLM7LpQHjSBrlUyGOWhlvC.png"></strong></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/662PJNaeObKYyh7fEFKFe5SNJHyheHVdfoLP64FS.jpeg" alt="662PJNaeObKYyh7fEFKFe5SNJHyheHVdfoLP64FS.jpeg"></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;">舵机供电是用一个5V10A的开关电源,因为30个舵机同时运转所产生的瞬时电流还是很大的,引出正负极接到舵机驱动板的V+和V-。</p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/FkO5CqRtMDmGyIMzjYlgYpzdggmc7ewiI7UGQFbN.jpeg" alt="FkO5CqRtMDmGyIMzjYlgYpzdggmc7ewiI7UGQFbN.jpeg"></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><strong>4.3 原理图</strong></p> <p style="line-height:1.8;"><strong><img src="//image.lceda.cn/pullimage/zPd85t9Ifp4nsGAKeNnADbeKEUArwP5616dUB0Fr.png" alt="zPd85t9Ifp4nsGAKeNnADbeKEUArwP5616dUB0Fr.png"></strong></p> <p style="line-height:1.8;"><strong>电路板基本都是靠各个模块堆出来的,所以没有什么电路设计,只画了个拓展版,大佬勿喷。</strong></p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><strong>PCB</strong></p> <p style="line-height:1.8;"><strong><img src="//image.lceda.cn/pullimage/mgUwMFu9NV4r3EwgQt6ChdnVF5fSXl8qel1p4zPg.png" alt="mgUwMFu9NV4r3EwgQt6ChdnVF5fSXl8qel1p4zPg.png"></strong></p> <p style="line-height:1.8;"><strong>语音模块需5V供电,我当时图方便直接引出两个引脚,各位可以搞个DC口。</strong></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*5、软件部分</h3> <p><strong>5.1 主体程序流程</strong></p> <hr> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/FvyVIaEKngPvxied39BF3guQYKMHIn99rrekynYA.png" alt="FvyVIaEKngPvxied39BF3guQYKMHIn99rrekynYA.png"></p> <p style="line-height:1.8;"> </p> <p><strong>5.2 STM32端</strong></p> <p><strong>  5.2.1 主体文件</strong></p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/9AXH7vilPqy2LEW3PS6zINMfPVgHfaoQSdponXdU.png" alt="9AXH7vilPqy2LEW3PS6zINMfPVgHfaoQSdponXdU.png"><strong> 5.2.1 核心代码(完整见附件)</strong></p> <p style="line-height:1.8;"><strong>PCA9685舵机驱动板代码:</strong></p> <p style="line-height:1.8;"><strong>stm32通过I2C通信控制PCA9685舵机驱动板。</strong></p> <p>// 初始化PCA9685<br>void PCA9685_M_Init(void)<br>{<br>    MyI2C_Init();<br>    <br>    // 复位PCA9685<br>    PCA9685_M_WriteReg(MODE1, 0x00);<br>    Delay_ms(10);<br>    <br>    // 设置为正常模式,不响应子地址,使用寄存器自动增量<br>    PCA9685_M_WriteReg(MODE1, 0x01);<br>    Delay_ms(10);<br>    <br>    // 设置输出模式为推挽输出,无反向<br>    PCA9685_M_WriteReg(MODE2, 0x04);<br>    Delay_ms(10);<br>    <br>    // 设置PWM频率为50Hz,适合舵机控制<br>    PCA9685_M_SetPWMFreq(50);<br>}</p> <p>// 向PCA9685寄存器写入数据<br>void PCA9685_M_WriteReg(uint8_t reg, uint8_t data)<br>{<br>    MyI2C_Start();<br>    MyI2C_SendByte(PCA9685_ADDR_M 8) & 0x0F);<br>    // 写入OFF值的低8位<br>    PCA9685_M_WriteReg(reg + 2, off & 0xFF);<br>    // 写入OFF值的高4位<br>    PCA9685_M_WriteReg(reg + 3, (off >> 8) & 0x0F);<br>}</p> <p>// 设置舵机角度(0-180度)<br>void PCA9685_M_SetAngle(uint8_t channel, uint8_t angle)<br>{<br>    uint16_t pulse;<br>    <br>    // 限制角度范围<br>    if (angle > 180) angle = 180;<br>    <br>    // 计算脉冲宽度对应的PWM值<br>    // SG90舵机: 0.5ms对应0度, 2.5ms对应180度<br>    // 50Hz频率下, 周期为20ms, 4096个刻度<br>    // 0.5ms = 2.5% of 20ms = 4096 * 0.025 = 102<br>    // 2.5ms = 12.5% of 20ms = 4096 * 0.125 = 512<br>    pulse = 102 + (uint16_t)((angle / 180.0f) * 410);<br>    <br>    // 设置PWM: on=0, off=pulse<br>    PCA9685_M_SetPWM(channel, 0, pulse);<br>} </p> <p> </p> <p>语音模块代码:</p> <p>语音编程软件为为天问51,该软件为图形化编程软件,即使不会编程的人也可快速上手操作。</p> <p><img src="//image.lceda.cn/pullimage/7uvgsGT0cr2dVGmlooqCS9vLRfjUUja1mtwV9I4F.png" alt="7uvgsGT0cr2dVGmlooqCS9vLRfjUUja1mtwV9I4F.png"></p> <p> </p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*6、BOM清单</h3> <hr> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/wtmAY2UVX9TLeTq3RaMQ5MIZmrWlMRGRAK4QVXFV.png" alt="wtmAY2UVX9TLeTq3RaMQ5MIZmrWlMRGRAK4QVXFV.png"></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">*7、大赛LOGO验证</h3> <hr> <p style="line-height:1.8;">该图为电路板背面</p> <p style="line-height:1.8;"><img src="//image.lceda.cn/pullimage/zpNihXkpUEyzTbLrmCk1mr0k8H51skd5Y6ZG4Wmu.jpeg" alt="zpNihXkpUEyzTbLrmCk1mr0k8H51skd5Y6ZG4Wmu.jpeg"></p> <p style="line-height:1.8;"> </p> <h3 style="line-height:1.8;">* 8、演示您的项目并录制成视频上传</h3> <hr> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"> </p> <p style="line-height:1.8;"><span style="font-size:14px;"><a href="/posts/42551e8f2f2548cabc1c36626a42da94" target="_blank">前往查看更多详情 ></a></span></p> <p style="line-height:1.8;"> </p> </div>

文档

BOM

暂无

附件

附件名 下载
语音机械时钟stm32源码.zip
语音控制代码.zip
表盘CAD文件以及色块3D打印文件.zip
物料清单.zip

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow