前言:
我们使用瓦力机器人的形象仅为技术分享与演示,无任何商业目的。
本篇为瓦力机器人接入小智AI的制作全过程。相对完全新手来说接入树莓方案难度会大一些,想简单快速制作的朋友建议可以先做小智AI的方案。
本项目附上代码、接线图、程序,有兴趣的伙伴自取。
瓦力机器人基本介绍
按照此方案制作的瓦力可以有以下功能:
1.每只眼睛都可以通过舵机独立控制升降。
2.每只眼睛都有空间可以装一个小摄像头。(这部分我们还没做,大家有兴趣可以先动手做看看)
3.头部可以使用舵机左右转动。(由于头部重量较大,所以建议头部使用空心打印)
4.颈部两个关节都有舵机驱动,可以让头部向上/向下看和抬起/降低。
5.每只手臂的肩部都有一个舵机让手臂上下移动。
6.手臂由压力配合关节、手和手指组成,可以手动摆姿势。
7.履带是完全3D打印的,可以使用两个12V直流减速电机驱动。
8.接入小智AI 的方案能实现与瓦力AI对话、语音控制瓦力的动作
具体实现效果可参考我们发布的视频:
3D图纸/模型文件
这份3D图纸最早来源国外GitHub的Simon Bluett chillibasket,因此3D文件为英文,打印前请按照下文的打印数量图对照和整理。
3D图纸下载
3D文件模型已经预留好对应的螺丝孔位无需额外打孔。
注:3D图纸我们使用的是solid works 软件打开的
点击打开: 瓦力机器人3D打印图纸
点击打开:瓦力机器人图纸STEP格式,可用于修改
(如果需要其他形式发送图纸文件请留言)
打印时请注意数量!!对照下图
自从原项目开源后,有其他创作者根据自身想实现的效果改进了部分零件,我们在做瓦力的时候并没有使用这些零件,大家也可以根据需要进行零件替换。
点击打开:其他创作者改进的部分零件
在技术交流群中也有创作者“3D生万物”优化了零件间的公差,适合在拓竹上打印,如有兴趣可在帖子底子留言“进群”交流。
关于打印的一些问题
- 打印材料:为了外形更好看,瓦力机器人我们采用的是光固化实心打印,瓦力的头部因重量问题用的是pla材料空心打印。
- 时长和花费:总体零件比较多,打印时间较长,如果只有一台机子打印的情况下,预估也至少需要200小时左右;关于花费,我们找人打印的光固化材料预计上千元,建议普通pla材料打印价格相对划算。
- 总得来说推荐使用pla材料普通打印即可,对细节要求不高的话可以用多色打印;如果有信心上色,可以打印纯色的零件,后期再喷漆上色。
材料购买清单
注:无论是小智版本的瓦力还是树莓派版本的瓦力,大部分使用的材料是相同的,使用ESP32开发板接入小智的,树莓派以及语音模块喇叭功放都不用再使用。
1.螺丝螺母(必看!模型组装需要)
-
M3 螺母*26个
-
M3内六角螺丝(10mm长)*14个
-
M3内六角螺丝(20mm长)*12个
-
M3内六角螺丝(6mm长)*2个
2.硬件和配件
-
Arduino R3控制板 *1个
-
舵机*7个,规格:国华金属壳大扭力9g数字数码舵机180°
- DC降压模块*2个,规格:5V/5A 降压电源模块
(两个降压模块,一个给舵机供电,一个给Arduino和ESP32开发板供电)
- ESP32-S3开发板*1个,规格:选择自带麦克风和功放喇叭的
- OLED显示屏*1个,规格:【未焊/1.3寸】OLED屏 4针(蓝色显示)
(注意:如果要把这个显示屏换成小智的显示屏,要注意瓦力模型上对应的屏幕位置的开孔大小)
- 凸透镜2个,规格:∅326mm无边透镜
- 步进直流电机驱动扩展板*1个,规格:L298P电机驱动板
- 正反转调速直流电机*2个,规格:JGB37-520微型减速正反转调速直流电机每分钟/107转1.2KG.CM电压:12V
- 舵机扩展板模块*1个,规格:PCA9685A 蓝色板子 已焊接
-
3S电池一块
-
胶水(类似502一样粘的牢的胶水就可以)
-
回形针若干
关于硬件选择的一些问题:
- arduino 只要是R3这个型号的基本可以,不放心的话也可以参考下文中接线图中arduino样式。
- 关于电源的问题,电池只要是3S电池基本没问题,电池影响的是整体的续航。重点是降压模块的选择,例如我使用的降压模块适配的电池是7~20v,因此这个区间的电池都可以。
3.上色喷漆材料(不考虑上色,可以跳过)
郡士模型油性漆
底漆-郡士补土(底漆)
- SF-287 【灰色万能水补土】1000#
上色油性漆
-
C-42【半光泽】红褐色
-
C-33【消光】消光黑
-
C-104【金属色】铬银
-
C-311【半光泽】灰白
-
C-108【半光泽】品红
-
C-307【半光泽】灰
-
C-59【光泽】橙红
-
C-113【半光泽】RLM04黄
-
T-102 油性蓝标稀释剂 110ml
瓦力模型组装
视频参考
模型组装视频来源Youtube上的Simon Bluett,可根据视频步骤安装。
点击下载视频:瓦力组装视频
(此视频仅做教学参考)
也可以参考参考我们实际组装的视频:
【新人up挑战从零复刻瓦力机器人!没想到组装就要这么久!】 https://www.bilibili.com/video/BV1rjfHYmEwf/?share_source=copy_web&vd_source=dca4f4e90d161d558c4bc0dc37c88e84
选择上色的模型,在上色前要先进行基础打磨以及模型试组装,试组装可以用双面胶暂时固定。
此视频是我们实际上色的视频:
【新人up挑战从零复刻瓦力机器人,喷色差点崩溃!!】 https://www.bilibili.com/video/BV1yufHYpEsm/?share_source=copy_web&vd_source=dca4f4e90d161d558c4bc0dc37c88e84
几个组装的注意事项:
-
模型组装时有些小部件需要用胶水粘合在一起,大部分的部件还是靠模型中的螺栓连接的。
-
在进行模型组装前组装时需要提前布线,确保舵机线有足够的长度连接电路板。
-
Youtube上的Simon Bluett视频中脖子结构与舵机的连接方式为订书钉连接,但实测表明其结构强度不足,因此建议使用回形针进行替代。
硬件组装(接线图)
实现思路
整体的实现思路是这样的:由ESP32开发板控制 Arduino,然后 Arduino 再去控制舵机和电机。
其实我们一开始尝试过让小智直接驱动舵机和电机,但调试下来效果不太稳定。所以这次我们选择了一个更保守但可靠的方案,用 Arduino 做中间层来分担控制任务。
接线图
此接线图是根据我们所做的瓦力机器人接入小智AI绘制的,请确保电子设备的接线与下图相符。
关于ESP32控制板我们选择的是带麦克风和喇叭一体化的版本,功放麦克风是直接集成在里面的,至于喇叭接线具体请参考你购买的ESP32接线位置。
舵机控制板和arduino的引脚连接
控制板ACC - arduino 5v
控制板GND - arduino GND
控制板SDA - arduino A4
控制板SCL - arduino A5
控制板EN - arduino 7
请注意:
-
无论接入的是树莓派的方案还是小智AI esp硬件的方案,Arduino的硬件连接部分都是一样的。
-
相比接入树莓派的接线图,ESP32版本的将原先树莓派的供电修改到esp32模块上,将原本的USB连接arduino修改为使用杜邦线将ESP32开发板与arduino相连。
-
电机驱动板需要对插在Arduino上方,因电机驱动板和Arduino的引脚相同,所以**接在Arduino的线也可以根据同样的位置接在电机驱动板上。**我们通过焊接的方式连接arduino的。
程序刷写
请先将程序写入Arduino和ESP32 开发板并校准舵机,测试通过后再将电路板安装至机器人内部。
Arduino控制操作:
请点击下载我们提供的修改程序+代码:
walle-replica-3.0 - 修改版程序-小智
Arduino
1.刷写前请确保硬件设备与上文接线图相符。
2.下载上文提供的程序代码包,打开后请下载/克隆文件夹wall-e。
3.在Arduino IDE中的打开wall-e.ino;。此外, MotorController.hpp 和 Queue.hpp文件也会自动在IDE的不同选项卡上打开。
4.安装Adafruit_PWMServoDriver.h库
前往 Sketch → Include Library → Manage Libraries
搜索 Adafruit PWM Servo Driver.
安装最新版本的库
5.用USB数据线连接电脑和控制器。确保在“工具”菜单中选择正确的板子和端口。
6.上传wall-e.ino 主程序
测试
-
将主程序上传到Arduino,在Arduino仍连接到计算机的情况下,连接12V(3S)电池通电。
-
打开串口检测(Arduino IDE右上方的按钮),将波特率设置为115200。
-
现在测试瓦力的移动,发送字符“w”,“a”,“s”或“d”,这几个分别代表瓦力向前,向左,向后或向右移动。发送‘q’可以停止移动。
-
现在测试瓦力的头部运动,发送字母“j”、“l”、“i”或“k”,使头部向左或向右倾斜,眼睛向上或向下。在这个阶段,由舵机控制的关节,由于没有做行程上的设置,所以转到范围可能会比实际更广,看起来不协调。这个问题将通过执行以下舵机校准步骤来解决。
舵机校准
-
从上文下载好的程序代码包,下载/克隆“wall-e_calibration”文件夹。
-
在Arduino IDE中打开wall-e_calibration.ino
-
将程序上传到Arduino ,打开串口监视器,设置波特率为115200。
-
该程序用于校准将每个舵机移动到对应位置所需运动范围,最大和最小PWM脉冲宽度。每个伺服器的标准LOW和HIGH位置如下:
-
在安装舵机之前,需要确保舵机的角度正确(范围可以参考下图),再安装舵机臂。由于我们使用的是180°舵机,如果舵机臂被固定在错误的角度,将无法正确控制关节。
-
当启动程序后,打开串行监视器。2-3秒后应该出现一条消息,表示准备校准第一个舵机的LOW位置(头部旋转)。
-
发送字符“a”和“d”来控制机器人前后移动,范围是-10和+10。如果需要更精细的控制,可以使用字符“z”和“c”移动机器人,范围是-1和+1。
-
一旦舵机定位在正确的位置(如下图所示),发送字符“n”以继续进行校准步骤。它将移动到同一伺服器的HIGH位置,之后机器人中的7个舵机将重复此过程。
-
当所有的关节校准后,程序将输出一个包含校准值的数组到串行监视器。
-
复制该数组,并将其粘贴到wall-e - ino程序的第144到150行。该数组看起来应该与下面类似:
int preset[][2] = {{410,120}, // head rotation
{532,178}, // neck top
{120,310}, // neck bottom
{465,271}, // eye right
{278,479}, // eye left
{340,135}, // arm left
{150,360}}; // arm right
电量检测
注:当使用电池为机器人供电时,需要实时检测电量。过放电可能会导致电池损坏,供电不足可能会损坏树莓派的SD卡。
-
使用Arduino上的电池电量检测功能时,请按照下图连接以下电阻并接线。
-
电阻(电位分压器)将12V电压降低到5V以下,可以让Arduino使用其模拟引脚对电压进行测量。电阻值建议设置为R1 = 100kΩ, R2 = 47kΩ。
-
在Arduino中,取消主程序 wall-e.ino 中的第54行。
-
如果您使用不同的电阻器值,请根据公式更改程序第54行电位分压器增益因子的值:POT_DIV = R2 / (R1 + R2)。
-
该程序现在应该每10秒自动检查一次电池电量,这个电量将显示在树莓派网络界面的“状态”。
oLed显示屏
此功能由GitHub上的hpkevertje分享,这是一个一个1.3英寸的小oLED显示屏,在电池指示面板上可以显示瓦力机器人的电池电量。这个功能需要启用上面所说的电量检测电路,每次计算电量时屏幕都会更新。
这个功能需要先完成上文所说的电量检测,每次计算电量时屏幕都会更新。
该函数在页面模式下使用u8g2显示库;
在Arduino UNO上,您可能会收到内存使用量高的警告,但此警告可以忽略。
1.在Arduino上使用oLed显示功能,请根据上文提供的接线图接线:
(如需获得高清版接线图请留言)
-
在Arduino库管理器中安装U8g2库:
-
在Sketch → Include Library → Manage Libraries
-
搜索U8gt
-
安装最新版本的库
-
在Arduino主程序wall-e.ino中定义OLED。
-
如果您使用的是库支持的另一种显示方式,则可以按照库参考页面上的文档更改第78行上的构造函数。默认是用于sh1106_128x64_name显示。
在ESP32中刷写小智固件
以下是ESP32固件源码文件,请自行下载解压使用。
点击下载:ESP32固件源码文件
1.选择烧录我编译好的固件
请注意刷小智固件前记得在小智后台关闭OTA升级
目前预编动作:
手臂动作:左手抬高放下,右手抬高放下
头部动作:摇头,点头,头左斜,头右斜,头回到中间
履带动作:前进,后退,左转,右转
组合动作:正常模式,敬礼,跳舞,开心表情
如果你不需要添加或修改其他动作,可以直接下载我们提供的编译好的文件(点击下载:ESP32固件源码文件)
下载打开后其中.bin文件就是预编译好的固件可以直接刷。
引脚定义:UART_TX_PIN 18 // ESP32 → Arduino RX
UART_RX_PIN19 // ESP32 → Arduino TX
之后根据小智的刷固件教程一步步刷入,就能运行了。
这个是小智官方教程地址,有需要可以参考:https://my.feishu.cn/wiki/Zpz4wXBtdimBrLk25WdcXzxcnNS
2.自行编译
使用源代码编译刷写的好处是可以添加自己的动作定义及一些功能。
如果想使用源代码自行编译,可以参考这个方法。
同样下载好文件(点击下载:ESP32固件源码文件)
打开文件夹walle-xiaozhi为源代码。
动作编辑主要文件路径:\esp32固件源码\walle-xiaozhi\main中walle.h和walle.cc文件。
之后再根据代码中的注释来添加自己想要的动作。
添加完成之后对文件进行保存,并编译和刷写。
注:该方式需要安装IDF编译环境,才能刷写固件,
具体方法点击参考官方文档:Windows搭建 ESP IDF 5.5.1开发环境以及编译小智





























