在这个项目中,我将向您展示如何使用3D打印部件制作一个简单的4腿行走蜘蛛机器人。该设计主要由上下板、臂接插件、腿和伺服支架五个部分组成。机器人的4条腿由4个手臂部分和4个腿部分组成。机器人的运动总共使用了8个业余伺服电机,4个在手臂上,4个在腿上。
在电路方面,首选ESP32板,但该项目可以很容易地控制与Arduino板。ESP板的蓝牙功能是无线通信的首选,并创建了一个简单的应用程序来控制。这款应用程序允许你用简单的命令控制机器人的动作,比如行走、转弯和跳跃。
该项目易于组装和使用,使其成为学生,教师或任何对机器人感兴趣的人的绝佳选择。我们开始吧!
步骤1:将手臂伺服器放在基座上
首先,在组装伺服系统之前,要放在基座上的手臂伺服系统必须调整到90度起始位置。我已经分享了初始位置的基本代码。正如你所看到的,我已经固定了3个伺服电机,让我们一起安装第四个和最后一个伺服电机。
根据伺服电机的类型,伺服底座上的支架可能会保持松弛,在这种情况下,可以借助一些热熔胶使其固定。
本项目使用了8台SG90微型伺服电机(或近似尺寸等效)。
•产品:SG90伺服
•扭矩:2.0kg/cm(4.8V), 2.2kg/cm(6V)
•速度:0.09s/60°(4.8V), 0.08s/60°(6V)
•旋转角度:180°
•工作电压:4.8 ~ 6V
•齿轮:塑料
•Dead band:7us
•重量:10.5克
•外形尺寸:22.8mm × 12.2mm × 28.5mm
步骤2:固定手臂和腿的连接器
在本节中,将由两个独立部分组成的“臂”和“腿”连接器用螺栓和螺母固定在一起。将固定连接器连接到伺服基座上。然后,与连接器成对角角,放置伺服喇叭,拧紧螺丝固定在伺服电机上。
最后,将伺服喇叭的末端固定到使用螺钉的连接器上,没有必要这样做,但固定它可以防止松动。现在手臂是完整的,让我们移动到腿组装。
步骤3:组装腿
在固定要在腿上使用的伺服电机之前,您需要将它们带到60度的起始角度。然后放置支架和支腿部分,用合适的螺钉将支腿部分固定在伺服电机上。
将支腿插入连接器并连接伺服喇叭,使支腿处于直角位置。然后用螺丝固定伺服喇叭。
现在准备其他三条腿,完成组装。现在手臂和腿的组装已经完成,我们可以继续到电路的电源部分。
步骤4:电路的电源
一个7.4伏的电池将是足够的电路,基础部分是设计为一个3S锂电池的大小,但电池在我的车间被损坏,我不得不使用11.1伏的电池。如果你打算使用7.4伏的电池,你可以跳过这一部分。
我把电池放在底座下面,用扎带固定。由于电池更换,我在电源电路中加入了一个电压降压模块。我借助模块上的调节螺丝将电压输出设置为7伏,并连接电池输入。
将模块放在底座上后,让我们继续组装电路板固定的上部底座。机器人的所有部件都组装好了,让我们来看看电路板!
步骤5:电路板
我设计了一个控制16个伺服电机的电路板,可以连接到ESP32板上。和往常一样,我选择pcb方式来打印高质量的电路板。您可以访问此链接订购PCB,电路和Gerber文件:
优先考虑易焊部件,具备基本的焊接知识即可。或者,您可以使用PCBWay的组装服务并订购现成的焊接电路。将所需组件安装在PCB上,并用烙铁和焊丝将其焊接到位。您可以在上传的图像中看到组件的位置。
•4个100uf 25V~16V电源电容
•4x 470uf 25V~16V伺服电机电容器
•1个SB560二极管用于电源
•1个7805CV电源稳压器
•2 x 3 mm-led
•16x 220欧姆伺服电机电阻
•2个330欧姆电阻,用于led
•1个2pin 5mm螺丝端子,用于电源输入
•2.54 ESP32板的母头
•2.54伺服电机连接公头
•做ESP32 Devkit V1开发板
步骤6:伺服电机的连接
我们把它放在机器人上,然后把伺服电机连接起来。以下是伺服电机连接的GPIO引脚:
机器人几乎准备好了,取出ESP32板并将其连接到您的计算机,然后打开共享源代码。现在是时候编写代码了!
步骤7:源代码
在Arduino IDE中打开代码
•首先,需要在Arduino IDE中打开所提供的代码。这将允许我们编辑和上传代码到ESP32板。
在“首选项”中添加ESP32单板的URL
•进入File > Preferences,添加ESP32板管理器URL
•此步骤确保我们可以安装必要的ESP32工具。
安装ESP32单板包
•进入Tools > Board > Board Manager,搜索“ESP32”,单击“Install”。
•此过程将ESP32板支持添加到Arduino IDE中。
包括所需的库
•代码包括两个库:
•用于处理蓝牙通信。
•ESP32Servo.h是一个专门设计用于控制带有ESP32板的伺服电机的库。
通过移动应用程序发送的命令
该应用程序通过蓝牙发送指定的数字来激活生成的命令,如上下行走等。这些数字在应用程序中定义,命令在代码中被解释以触发不同的机器人动作。
定义伺服电机的GPIO引脚
在本节中,我们指定伺服电机连接的GPIO引脚。机器人的每条手臂和腿都由单独的伺服电机控制。
设置移动限制和速度
机器人的动作被定义为手臂和腿的特定限制。这些动作的速度由speed变量控制。
蓝牙连接和数据处理
在循环部分,代码检查是否从蓝牙应用程序接收到任何数据。如果数据可用,则读取数据并将其存储在data变量中。基于这些数据,触发特定的机器人功能。
基于命令触发机器人动作
当接收到命令时,机器人会执行诸如行走-旋转或重置到稳定位置之类的动作。这就是代码的工作原理和要求,现在将代码上传到板子上,然后让我们转到应用程序端。
步骤8:蓝牙控制应用程序
我们将使用MIT App Inventor,这是一个用于开发Android应用程序的免费拖放工具。通过电子邮件登录App Inventor后,上传我创建的App的共享AIA文件。(这里不支持AIA扩展文件作为附件,所以我不得不将文件上传到PCB页面)这样你就可以检查模块并构建自己的Android安装文件,没有任何信任问题。然后你所需要做的就是在你的手机或平板电脑上安装应用程序!
现在我们来谈谈这个app的界面,有一个按钮列出蓝牙设备,在它下面我添加了一个Text Label显示连接状态。最后,我添加了6个按钮来触发机器人的运动功能。在块部分中,有几个条件在一开始就启动蓝牙通信。然后为每个移动按钮创建要发送的数据类型和数据函数。就是这么简单,现在我们有了一个应用程序!现在是控制机器人的时候了!
代码
#includeServo servo_footA;Servo servo_armA;Servo servo_footB;Servo servo_armB;Servo servo_footC;Servo servo_armC;Servo servo_footD;Servo servo_armD;// Connect servos to pinsint srv_footA = 13;int srv_armA = 12;int srv_footB = 15;int srv_armB = 2;int srv_footC = 26;int srv_armC = 25;int srv_footD = 17;int srv_armD = 5;void setup() {servo_footA.attach(srv_footA);servo_armA.attach(srv_armA);servo_footB.attach(srv_footB);servo_armB.attach(srv_armB);servo_footC.attach(srv_footC);servo_armC.attach(srv_armC);servo_footD.attach(srv_footD);servo_armD.attach(srv_armD);// Set mounting positionssetInitialPositions();}void loop() {}void setInitialPositions() {// Leg servos: 60servo_footA.write(60);servo_footB.write(60);servo_footC.write(60);servo_footD.write(60);// Arm servos: 90servo_armA.write(90);servo_armB.write(90);servo_armC.write(90);servo_armD.write(90);}