本项目是一个桌面级小机器工具人,外观设计的灵感来源是WALL-E里面的EVE~机器人具备USB通信显示画面功能,具备6个自由度(手部roll、pitch,颈部,腰部各一个),使用自己修改的特制舵机支持关节角度回传。
本项目提供了配套的全套开发资料和对应SDK以供二次开发,SDK使用说明见后文。
注意:Issues里面是讨论项目开发相关话题的,不要在里面发无意义的消息,不然watch了仓库的人都会收到通知邮件会给别人造成困扰的!!!灌水可以在仓库的Discuss里讨论!
Hardware文件夹内是ElectronBot里面用到的所有电路的原理图和PCB文件,提供Altium Designer格式的源文件以及Gerber格式的光绘文件用于提供给厂家进行直接加工。
一共有如下几块板子:
-
ElectronBot:头部的主控板,包含主控MCUSTM32F405RGT6,圆形屏幕GC9A01,USB-HS的PHY芯片USB3300,以及SD卡。
-
SensorBoard:肚子里的传感器板子,包含一个手势传感器,一个USB-HUB芯片,5个I2C舵机的接口,一个MPU6050加速度计&陀螺仪等(USB摄像头也是连接到这个板子的)。
-
BaseConnector:底座上的USB Type-C插座,通过8-Pin的FFC排线和SensorBoard连接,因为机器人本体需要旋转所以使用了柔性排线。
-
ServoDrive:用于魔改舵机替换舵机驱动板的电路,通过I2C总线接口和SensorBoard以及头部主控连接。
-
ServoDrive-DK:同上,但是把PCB的触点接口换成了接插件,方便调试,调试完了下载代码到上面的板子(因为体积太小所以上面的板子没有下载口接插件,所以不方便调试,这里单独提供一个DK版本)。
Firmware中提供了上面所有板子的固件源码,主要包含以下两个工程:
- ElectronBot-fw:头部主控板的固件代码,用于驱动圆形屏幕,实现USB-CDC协议的自定义设备,以及进行舵机控制。
- ElectronBot-fw:ServoDrive板子的固件,包含舵机的电位器ADC采样,I2C从机通信和协议解析,电机控制的PWM输出,以及PID闭环算法实现。
工程都是基于STM32HAL实现的,所以提供了对应的.ioc
文件,可以自行用STM32CubeMX打开,生成对应的keil或者STM32IDE工程文件。当让也可以像我一样,用CLion进行编译和下载,把CLion变成STM32的IDE的方法参考我之前发的一篇教程:配置CLion用于STM32开发【优雅の嵌入式开发】 。
Software中提供了视频里演示的上位机软件ElectronStudio的Unity工程源码,以及SDK库和SDK源文件,库的层级关系由下至上分别是:
ElectronBotSDK-LowLevel
-> ElectronBotSDK-Player
-> ElectronBotSDK-UnityBridge
-> Electron-Studio
SDK的使用方法见后文。
此外文件夹里还包含了BotDriver也就是ElectronBot连接电脑需要安装的USB驱动文件,安装方法是在设备管理器里右键更新驱动,然后选择自定义目录导航到这个文件夹即可安装。
安装过程需要禁用Windows的强制驱动签名(没钱给M$买签名),禁用方法根据你的操作系统版本有不同,可以百度一下。
文件夹中包含了ElectronBot的结构设计图纸,.step
通用格式可以在所有软件里打开编辑;同时为了满足有的同学想要Fusion360里面的原始工程,我也共享了.f3d
格式源文件,源文件里包含了完整的编辑建模时间轴。
此目录下也包含了视频里演示的oooooohmygosh同学设计的表情包动画,其中每个表情的动画都包含了三个片段:进入-循环-退出,进入和退出是可以和其他动画进行无缝衔接的,因此可以方便用代码调用这些表情包实现很多效果。
相关的参考文件,包括芯片的Datasheet等。
此目录下还有个_LargeFiles文件夹,是软件过程项目中依赖的一些库(比如OpenCV)因为DLL比较大超过了100MB,GitHub需要开启LFS才能提交,而我不想开启LFS,因此单独拿出来压缩了提交到仓库,编译工程的时候需要把这些库放到对应工程目录下,具体的路径见 _path.txt
。