ElectronBotVoice

CzrTuringB:

2024年4月21日:

​ 大三时,第一次看到稚晖君大佬的ElectronBot便想要拥有一个,但是由于自己一方面还在学校学习没有多余的时间,另一方面学习硬件的成本是非常高的,身为学生的我没有那么多经济足以支撑我完成制作。所以就想要复刻电子的念头就一放在放…………​ 直到,我渐渐的有一定的时间和经济来进行电子制作。第一次焊接0402贴片,我拿起镊子的手就像犯了帕金森一样,所以这个项目我便没有选择录制视频,而是选择以博客的方式,记录我这段时间来所踩过的坑,学到的东西。复刻总结:​ 1、语音功能,声音较小,可以通过调整语音底板功放阻值放大音量,但是声音放大之后存在噪音。​ 2、白子是第一个组装的,所以内部空间布线并不是很好,导致外壳缝隙过大​ 3、黑子的语音底板在组装过程中出现了问题,手头也没有多余的芯片了,干脆直接删除语音功能,让黑子彻底闭嘴​ 4、软件代码方面还在学习,后续会将学习结果发出来。​ 5、改进思路:电子的存在依托与电脑,如果电脑断电,那么电子就丧失了一切功能,我更希望电子作为一个智能家居的管家出现,所以可以将电子连接树莓派等mini主机,由mini主机供电,开发mini主机的上位机以及软件代码,实现一定的智能家居控制功能,暂且将mini主机称之为电子的“小脑”,而电脑则通过USB连接mini主机,mini主机切到数据传输中转站的作用,电脑开机时电子的功能更加完善,在电脑关机后,电子仍然具备一些必要的功能,比如屏幕动作显示,人员检测、面部识别、智能家居控制、语音对话等功能。同时鉴于小卡版本的电子语音存在噪音问题一直没有得到很好的解决,完全可以使用树莓派设备上的音频作为电子的发声装置。


Electronbot

第一部分 硬件制作

第一章 工具准备

工具 备注
电烙铁 (必须)
隔热垫 (必须)
钢丝球 (必须)
热风枪 (必须)可惜宿舍功率带不动
加热台 推荐闲鱼65块钱的PD加热太,小巧迷你好用,虽然容易坏,但是好修
剥线钳 (必须)
万用电表 (必须)
镊子 (必须)最好有一整套
中低温锡膏 (必须)推荐用无铅的
焊锡丝 (必须)
吸锡带
吸锡器
剪线钳 (必须)
钢网 淘宝15块钱的,记得拼版
锡膏刮板 可以用雪糕板代替
带灯光、放大镜的焊接架 (必须)
精密螺丝刀 (必须)推荐用南旗的,毕竟修过擎天柱
手工刻刀
打磨机
示波器 能白嫖就白嫖,实在不行买正点原子的,小乔迷你方便携带
杜邦线若干
STlink烧录器 (必须)
表蒙子胶
双面胶
手工纸胶带

第二章 硬件焊接与测试

  • USB底座板的焊接:

    1
    2
    3
    CzrTuringB:
    这个板子上搭载了一颗PCM2912A音频编解码芯片,但是喇叭外设是外接在主控板上且USB并未直接连接至这个芯片,因此焊接完成后还不能检验其整体功能的好坏。
    推荐用钢网,然后加热台焊接,一次成型,基本上不会出太大问题
  1. 上电之前要检测电源与地之间是否短路。

  2. 可以根据PCM2912芯片的输出电压来判断芯片是否正常工作。

  3. 连锡解决方法:

    1
    2
    3
    4
    1、用热风枪加热PCB板子
    2、涂抹锡膏
    3、热风枪吹锡膏,使焊盘上挂锡,如果引脚之间存在连锡,用镊子刮掉即可
    4、放器件进行焊接即可
  4. 原理图如下所示:

USB语音底座原理图

  • 传感器板的焊接

    1
    2
    3
    4
    5
    CzrTuringB:
    板子上相关外设有手势识别传感器、USB摄像头、USB拓展芯片、五个舵机接口。
    MPU6050芯片及其外围电路可以不用焊接。
    摄像头在最后组装的时候用烙铁焊上去就行。
    推荐器件多的那一面用钢网加热台焊接即可,背面器件用热风枪吹
    1. 板子焊接难度简单,焊接上电前注意检测电源与地之间是否短路。

    2. 通过排线与USB语音底座板子进行连接,上电,之后检测电源网络电压是否正常。

    3. 用万用电表打到通断档,测试SDA、SCL、VCC、GND这些引脚是否存在虚焊,测试FPC座子之间是否存在连锡。

    4. 接入电脑,打开设备管理器,电脑会识别到以下设备:

      语音底座和传感器板测试

    5. 打开电脑的相机选项进行摄像头测试:

      摄像头测试

    6. 打开电脑设置—声音—麦克风进行测试:

      麦克风测试

    7. 原理图:

    传感器板原理图

  • 主控板的焊接

    1
    2
    3
    CzrTuringB:迎接焊接噩梦!!!!
    TF卡座子及其外围电路可以不用焊接
    非常不推荐用钢网加热台的方式进行焊接,因为出了问题不好排查,建议热风枪吹
    1. 首先焊接FPC座子,焊接完成后检查每个引脚的通断和是否连锡,跟前面焊好的板子连接起来,检测电源与地是否短路,上电测试电压

    2. 焊接LP2992及其外围电路,焊接完成后,测试电源与地是否短路、上电测试LP2992芯片能否正常输出3.3V电压

    3. 焊接CP2102及其外围电路,焊接完成后,测试电源与地是否短路,接入电脑,在设备管理器中能检测到CP2102即焊接正常

    4. 电脑安装稚晖君的驱动,打开Tools目录下的BotDriver文件夹,右键点击ElectronBot@PZH.inf进行安装,正常情况下第一次安装会报错,需要数字签名,解决方法如下:

      1
      2
      3
      4
      5
      6
      APACHE
      1、按住Shift键重启电脑
      2、选择疑难解答选项
      3、选择启动设置选项
      4、按下数字键7,金庸驱动程序强制签名
      5、再次重新安装驱动即可
    5. 焊接其余电路,焊接完成后测试电源与地是否短路。上电,STlink接入电脑,使用Clion打开Software目录下的ElectronBot-fw目录,进行编译与安装。【Clion开发STM32具体配置不在此过多介绍】

      1
      2
      3
      4
      5
      6
      ANGELSCRIPT
      1、正常上电之后,在设备管理器中会出现一个端口
      2、右键这个端口,选择更新驱动程序
      3、浏览我的电脑以查找驱动程序
      4、浏览到BotDriver目录,点击让我从计算机上的可用驱动程序列表中选取,选择ElectronBot@PZH.inf进行安装
      5、刷新设备管理器此时会出现ElectronBot@PZH设备
    6. 焊接屏幕,焊接完成后测试电源与地是否短路,上电,此时正常情况下屏幕是花屏幕状态,打开Firmware目录下的Windows EXE目录,双击Sample运行,此时屏幕会出现一个笑脸。

    7. 接上2Pin的喇叭测试音频的输出是否正常

    8. 主控板原理图:

    头部主控原理图

    头部主控原理图

  • 舵机驱动板的焊接

    舵机驱动原理图

    1
    2
    CzrTuringB:
    这个板子比较小,所以容易出现焊接问题,出了问题别怕,按照原理图相关功能进行排查就行,毕竟也没有多少个器件,排查起来也非常容易。
    1. 焊接STM32F030芯片。

      1
      2
      3
      4
      5
      6
      @Why?
      因为这个芯片很大,焊接的时候会加热整个板子,如果焊接了背面,那么加热的时候背面的器件就会掉,导致虚焊。
      @连锡处理方法:
      我发现可以用烙铁进行脱焊,先给所有引脚加上一大坨锡,然后用烙铁拖,脱的时候要快,这样才能把锡给弄到烙铁上,不然越托越均匀。
      如果还有少量引脚之间连锡了,那么加热引脚,用尖头镊子挑干净就行。
      焊接这东西,说起来容易,实际操作还是得看经验,我的方法不一定适合大家。
    2. 焊接另一面的器件。

    3. 用尖头烙铁焊接连接线与下载线,焊接完成后检查电源与地网络是否短路。

      舵机驱动板PCB

    4. 首先用排线将主控板、传感器板、USB底板连接起来,Stlink插在主板上,使用STM32 ST-LINK Utility烧写IAP固件。

      1
      2
      3
      4
      5
      6
      7
      8
      @操作步骤:
      1、打开烧写工具
      2、目标----连接
      3、打开文件:
      路径:ElectronBot-Debugger根目录/ElectronBot-IAP/ElectronBot-IAP.hex
      4、目标----擦除芯片
      5、目标----程序下载与程序验证
      6、断开Stlink
    5. 然后将刚才焊接好的舵机驱动板与传感器板连接起来,用STlink连接电脑,打开STM32 ST-LINK Utility工具,烧写舵机驱动固件:

      1
      2
      3
      4
      5
      6
      7
      8
      @操作步骤:
      1、打开烧写工具
      2、目标----连接
      3、打开文件:
      路径:ElectronBot003(小鹏)根目录/F030固件/ID12.hex
      4、目标----擦除芯片
      5、目标----程序下载与程序验证
      6、断开Stlink
    6. 测试舵机驱动板的IIC功能

      1
      2
      3
      4
      5
      6
      @操作步骤:
      1、打开ElectronBot-Debugger
      2、打开串口
      3、导入本地APP文件,选择ElectronBot-fw/app_rotation_test.bin,等待程序下载
      4、点击开始测试
      5、串口输出界面,会显示输出的角度等信息
    7. 用螺丝刀打开舵机后盖,注意别把前盖打开(我第一个舵机就是直接前盖开了,然后齿轮掉出来了),用M1*10固定舵机外壳,用烙铁把舵机原本的驱动板拆下来,焊接舵机与新的驱动板。

      舵机连接线

      1
      2
      3
      4
      CzrTuringB:
      1、参考舵机连接线图与舵机驱动板PCB进行焊接
      2、电机的红黑线不要在意,接法,接到OUT1、2上即可
      3、9g舵机接法跟4.3g舵机接法一样,注意拆9g舵机需要拿热风枪吹下来,然后9g舵机的驱动程序最好下载驱动增强版本的
    8. 连接舵机与传感器板,连接电子与电脑,打开ElectronBot-Debugger,进行调试:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      @操作:
      1、打开ElectronBot-Debugger
      2、打开串口
      3、点击开始测试
      5、串口输出界面,会显示输出的角度等信息
      6、观察舵机,此时舵机正常情况下会在幅度180左右来回转动,证明没有问题。
      7、停止测试
      8、舵机新ID根据自己做到哪了从2、4、6、8、10、进行更改,更改完后写舵机新ID到舵机驱动板
      9、等待完成后,断电,重新打开ElectronBot-Debugger
      10、打开串口
      11、选择舵机ID为刚才改的ID
      12、点击开始测试
      13、停止测试
      14、导入默认参数到当前面板
      15、导入本地APP文件,选择ElectronBot-fw/app_normal.bin,等待程序下载
      16、下载完成后,打开电子脑壳,等待连接电子,打开控制模式,调整对应的滑块来控制舵机,这个时候可能有的舵机幅度很小,这个没关系,因为参数还没调,到这里基本上一个舵机就完成了。
    9. 参考上面步骤处理其他的舵机。

  • 舵机常见问题处理:

    • IIC检测方法(焊接后一定得检查):

      1
      2
      3
      4
      5
      6
      1、检查主控板的STM32F4芯片IIC引脚是否有信号输出
      2、检查主控板的FPC座子IIC引脚、头部舵机座子IIC引脚、与主控板IIC引脚是否连通
      3、检查主控板的FPC座子IIC引脚与传感器板FPC座子IIC引脚是否连通
      4、检查传感器板FPC座子IIC引脚与每个IIC外设的IIC引脚是否连通
      5、检查传感器板子的舵机座子IIC引脚与舵机驱动板IIC引脚是否连通
      6、检查舵机驱动板IIC引脚与STM32F030的IIC引脚是否连通
  • 电压检测方法(焊接后一定得检查):

    1
    2
    3
    4
    5
    6
    1、默认主控板、传感器板、USB语音板电源没问题。
    2、检查传感器板子电源引脚与每个舵机座子是否连通。
    3、检查舵机驱动板5V电源是否正常
    4、检查舵机驱动板3.3V电源是否正常
    5、检查舵机驱动板STM32F030芯片供电是否正常
    6、检查舵机驱动板的复位引脚是否正常
    • 程序烧写不进去,STlink识别失败:

      1
      2
      3
      #解决方法:
      1、检查供电
      2、检查SWCLK、SWDIO引脚是否连锡或者虚焊
    • IIC读写失败:

    1
    2
     #解决方法:
    检查IIC相关线路是否存在虚焊或者连锡
    • 舵机线接反了的表现状况:

      1
      2
      3
      4
      5
       #可能遇到的情形
      情况一:舵机抖动(舵机摆臂左右来回小幅度转动)
      情况二:舵机一直转动
      #解决方法:
      更换舵机线输出顺序即可
    • 舵机完全不转:

      1
      2
      3
      4
       #解决方法:
      1、用镊子或者导线,连接GND或VCC到FM116B的PWM引脚,看舵机有没有反应
      2、如果没有反应,那么可以确定这个FM116B芯片坏了,更换芯片即可
      3、检查舵机的三个白线,是不是接错了,或者短路了。
    • 舵机不转,但是能听到里面齿轮在响:

      1
      2
      #解决方法:
      1、重新烧写舵机驱动程序即可

第二章 硬件组装与调试

1
2
3
4
5
6
7
CzrTuringB:
组装的时候也是边学习边组装的,所以组装过程异常艰辛,经常拆了改,改了拆的。在这里就不放组装的照片了,以3D模型向大家讲述组装步骤。
重要事项:
1、9g舵机的线尽量短
2、左右臂膀展开舵机的线大约在6~7厘米
3、左右臂膀旋转舵机的线大于在3~4厘米
4、确定舵机没问题后,可以用热熔胶固定一下线,防止短路,但是一定要注意用量
  • 步骤一【安装轴承】:

    底座与轴承

    身体左壳与轴承

    身体右壳与轴承

  • 步骤二【身体前壳相关组装】:

    1
    2
    3
    CzrTuringB:
    1、摄像头通过热熔胶固定在主控板子上
    2、9g舵机线尽量剪短,4pin端子接入中间的母座

    安装身体前壳与传感器板

    固定9g舵机

    9g舵机走线

  • 步骤三【身体左右壳组装准备工作】:

    1
    2
    CzrTuringB:
    1、左右壳组装过程类似,只有微小的区别

    肩部转轴与手臂内壳的安装

    把肩部转轴塞入身体

    用401固定齿轮与肩部转轴,手臂转动可以带动齿轮转动

    1
    2
    3
    4
    5
    CzrTuringB:
    1、由于左右镜像,左臂推杆轴与右臂推杆轴的组装相反
    2、A处使用舵机自带摆臂裁剪,插入左臂推杆轴中,在使用胶水固定
    3、B处使用M2*25的螺栓与M2螺母进行固定。
    4、组装过程中发现,螺母会随着舵机转动,进而松动,所以固定好后使用热熔机粘死

    左臂推杆轴

    1
    2
    CzrTuringB:
    1、A处使用舵机自带摆臂裁剪,插入大齿轮中,在使用胶水固定

    大齿轮准备工作

  • 步骤四【左右臂膀展开舵机安装】:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    CzrTuringB:
    1、连接舵机4(舵机8)至传感器板,接入电子硬件电路至电脑。
    2、打开电子调试工具,打开串口,确保此时主控烧录的normal固件
    3、舵机id选为4或8,点击引入默认参数至面板,观察到此时的舵机参数是有一定问题的。
    4、设置角度最小值与角度最大值分别为0、30,点击当前舵机参数至主控
    5、断电
    6、打开电子脑壳至控制模式,将左臂展开(右臂展开)角度打到零,一定保持舵机不要在转了
    7、然后按照下图方式进行组装,千万注意此时推杆轴的角度
    8、组装完成后上电测试左臂展开状况

    左臂展开舵机1

    左臂展开舵机2

    左臂展开舵机3

    左臂展开舵机4

  • 步骤五【左右臂膀旋转舵机】:

    左臂旋转舵机1

    左身体成图

    舵机线路整理1:展开舵机的线路紧贴旋转舵机插入传感器板最左侧母座

    舵机线路整理2:旋转舵机的线路插入传感器板左侧第二个母座

  • 步骤六【颈部安装与身体组装】:

    1
    2
    3
    CzrTuringB:
    1、将排线穿过颈部
    2、注意身体内部线路的整理,不然最终3D打印件之间存在很大的缝隙

    颈部组装

    身体组装

  • 步骤七【底座安装】:

    1
    2
    3
    4
    5
    6
    7
    CzrTuringB:
    1、打开电子调试工具,打开串口,确保此时主控烧录的normal固件
    3、舵机id选为12,点击引入默认参数至面板,观察到此时的舵机参数是有一定问题的。
    4、设置角度最小值与角度最大值分别为-90、90,点击当前舵机参数至主控
    5、断电
    6、打开电子脑壳至控制模式,将左臂展开(右臂展开)角度打到零,一定保持舵机不要在转了
    7、底座下盖与9g舵机摆臂粘在一起

    固定底板与底座上盖

    固定下盖

  • 头部组装:

    1
    2
    3
    4
    5
    6
    7
    CzrTuringB:
    1、打开电子调试工具,打开串口,确保此时主控烧录的normal固件
    3、舵机id选为2,点击引入默认参数至面板,观察到此时的舵机参数是有一定问题的。
    4、设置角度最小值与角度最大值分别为-90、90,点击当前舵机参数至主控
    5、断电
    6、打开电子脑壳至控制模式,将左臂展开(右臂展开)角度打到零,一定保持舵机不要在转了
    7、头部下壳与头部舵机摆臂粘在一起

    头部下壳安装

    头部舵机固定

    头部上壳安装

  • 最终效果:

    ElectronBot

  • Key渲染图:

    1
    2
    3
    4
    5
    6
    MIPSASM
    CzrTuringB:
    配色经过与“呼呼大睡”同志沟通后:选定以亮光银色为辅,亮光黑色为主,哑光白色为主
    共两款,将其命名为:
    ElectronBot BlackBody 黑子
    ElectronBot WhiteBodt 白子

    ElectronBot黑子

    ElectronBot白子

  • 实物图:

    实物