欢迎来到另一个项目,在该项目中,我们将构建一个可以行走和跳舞的小型机器人。该项目旨在教您如何使用Arduino制造小型业余机器人以及如何为此类应用编程伺服电机。在项目结束时,您将能够制作一个步行和跳舞机器人,该机器人可以从Android手机接收命令以执行一些预定义的操作。您还可以使用该程序(在本教程结尾给出),通过使用串行监视器控制伺服电机的位置,轻松地操纵自己的机器人的动作。拥有3d打印机将使这个项目更加有趣并且看起来很酷。但是,如果您没有该服务,则可以使用任何一种在线服务,也可以使用一些硬纸板来构建该服务。
所需材料:
以下是构建此机器人所需的材料:
- Arduino纳米
- 伺服SG90 – 4号
- 男冰山棍
- HC-05 / HC-06蓝牙模块
- 3D打印机
如您所见,此3D打印机器人仅需极少的电子零件即可构建,以保持项目成本尽可能低。该项目仅出于概念和娱乐目的,到目前为止还没有任何实时应用程序。
3D打印所需零件:
3D打印是一个了不起的工具,在构建原型项目或尝试新的机械设计时可以做出很多贡献。如果您尚未发现3D打印机的优点或工作原理,则可以阅读3D打印入门指南。
在该项目中,上面显示的机器人的主体完全3D打印。您可以从此处下载STL文件。将这些文件加载到您的3D打印软件(如Cura)上并直接打印。我使用了我的一个非常基本的打印机来打印所有零件。该打印机是3ding的FABX v1,价格合理,打印量为10立方厘米。便宜的价格需要低打印分辨率,没有SD卡或打印恢复功能的折衷方案。我正在使用名为Cura的软件来打印STL文件。下面提供了我用于打印材料的设置,您可以使用相同的设置,也可以根据打印机进行更改。
打印完所有零件后,请清洁支撑架(如果有),然后确保腿部和腹部的孔足够大以适合螺钉。如果不是,请使用针将孔稍大一些。您的3D打印零件看起来像下面的东西。
硬件和原理图:
此手机控制的Biped Arduino机器人的硬件 非常简单。下图显示了完整的原理图
我使用了Perf板进行上述连接。确保电路也适合机器人的头部。一旦您的Perf开发板准备就绪,它应该如下所示。
组装机器人:
一旦硬件和3D打印零件准备就绪,我们就可以组装机器人。固定电动机之前,请确保将电动机以以下角度放置,以使程序正常运行。
电机编号 |
汽车地方 |
马达位置 |
1个 |
左髋关节马达 |
110 |
2 |
右髋关节马达 |
100 |
4 |
右脚踝运动 |
90 |
5 |
右髋关节马达 |
80 |
可以使用本教程结尾处提供的程序来设置这些角度。进行上述连接后,只需将程序上传到Arduino,然后在串行监视器中键入以下内容(注意:波特率是57600)。
1,100,110
2,90,100
4,80,90
5,70,80
将所有电机放置到位后,串行监视器应该看起来像这样。
一旦将电动机设置为相应的角度,请按照上图所示安装它们。
如果您对如何组装电动机感到困惑,请按照本教程末尾的视频进行操作。机器人组装好之后,就该对我们的跳舞机器人进行编程了
为Biped机器人编程Arduino:
对BBB机器人(蓝牙Biped Bob )进行编程 是本教程中最有趣,最有趣的部分。如果您非常擅长使用Arduino对伺服电机进行编程,那么我建议您编写程序。但是,如果您想学习如何将伺服电机用于此类机器人应用,那么该程序将非常有帮助。您可以在我们的arduino项目类别中了解有关arduino编程的更多信息。
完整的程序在本教程的结尾给出,或者您可以从此处下载完整的代码。我将在下面解释相同的部分。该程序能够通过串行监视器或蓝牙控制机器人的动作。您也可以通过使用串行监视器控制每个单独的电动机来进行自己的移动。
伺服1.attach(3); 伺服2.attach(5); 伺服4.attach(9); 伺服5.attach(10);
上面的代码行用于提及哪个伺服电机连接到Arduino的哪个引脚。在本例中,伺服1,2,4和5分别连接到引脚3,5,9和10。
Bot_BT.begin(9600); //以9600波特率Serial.begin(57600)启动蓝牙通信;
如前所述,我们的步行机器人可以处理蓝牙命令,也可以处理来自串行监视器的命令。因此,蓝牙串行通信的波特率为9600,而串行通信的波特率为57600。我们的蓝牙对象的名称为“ Bot_BT”。
开关(电动机){情况1://对于电动机一{Serial.println(“正在执行电动机一”); 如果(num1
上面所示的开关盒用于单独控制伺服电机。这将有助于您借助机器人做出自己的创意动作。使用这段代码,您可以简单地从角度和角度告诉电动机编号,以使特定电动机移至所需位置。
例如,如果我们要将左髋关节电机编号1从默认位置110度移动到60度。我们可以简单地在Arduino的串行监视器中写入“ 1,110,60”,然后按Enter。这将使您方便地使用机器人进行复杂的动作。一旦尝试了所有从角度到角度的角度,您就可以进行自己的动作并通过将其作为函数来重复它们。
if(Serial.available()> 0)//读取通过Serial {gmotor = Serial.parseInt(); Serial.print(“ selected Number->”); Serial.print(gmotor); Serial.print(“,”); gnum1 = Serial.parseInt(); Serial.print(gnum1); Serial.print(“ degree,”); gnum2 = Serial.parseInt(); Serial.print(gnum2); Serial.println(“ degree”); 标志= 1; }
如果有串行数据可用,则将第一个“,”之前的数字视为gmotor,然后将第二个“,”之前的数字视为gnum1,将第二个“,”之后的数字视为gnum2。
if(Bot_BT.available())//读取通过蓝牙传入的内容{BluetoothData = Bot_BT.read(); Serial.print(“来自BT的传入:”); Serial.println(BluetoothData); }
如果蓝牙接收到一些信息,则接收到的信息将存储在变量“ BluetoothData”中。然后将此变量与预定义值进行比较以执行特定操作。
如果(flag == 1)调用(gmotor,gnum1,gnum2); //调用相应的电动机以进行动作//如果通过(gmotor == 10)left_leg_up();则执行通过串行监视器或蓝牙接收的公用功能。如果(gmotor == 11)right_leg_up(); 如果(gmotor == 12)move_left_front(); 如果(gmotor == 13)move_right_front(); 如果(BluetoothData == 49-gmotor == 49)say_hi(); 如果(BluetoothData == 50-gmotor == 50)walk1(); 如果(BluetoothData == 51-gmotor == 51)walk2(); 如果(BluetoothData == 52-gmotor == 52)dance1(); 如果(BluetoothData == 53-gmotor == 53)dance2(); if(BluetoothData == 54-gmotor == 54){test(); test(); test();}
在此根据从串行监视器或蓝牙接收的值来调用功能。如上所示,变量gmotor将具有串行监视器的值,而BluetoothData将具有Bluetooth设备的值。数字10、11、12到53,54是预定义的数字。
例如,如果您在串行监视器中输入数字49。say_hi()函数将在机器人向您打招呼的地方执行。
所有功能都在“ Bot_Functions”页面中定义。您可以打开它,看看每个函数内部实际发生了什么。所有这些功能都是通过使用上述开关盒对每个电机的天使进行试验而创建的。如果您有任何疑问,可以使用评论部分进行发布,我们很乐意为您提供帮助。
基于处理的Android应用程序:
使用处理Android模式构建了用于控制机器人的Android应用程序。如果要对应用程序进行某些更改,可以从此处下载完整的处理程序。
如果您只想使用该应用程序,则可以从此处以APK文件的形式下载该应用程序,然后直接将其安装在手机上。
注意:您的蓝牙模块应命名为HC-06,否则应用程序将无法连接到您的蓝牙模块。
安装应用程序后,您可以将蓝牙模块与手机配对,然后启动应用程序。看起来应该像下面这样。
如果您想使您的应用更具吸引力或连接到Hc-06以外的任何其他设备。您可以使用处理代码并对其进行一些更改,然后将代码直接上传到手机。
蓝牙控制的Biped机器人的工作:
一旦您的硬件,Android应用程序和Arduino Sketch准备就绪,就可以尝试使用我们的机器人了。您可以使用应用程序中的按钮从蓝牙应用程序控制机器人,或者使用以下命令中的以下命令直接从串行监视器控制机器人,如下图所示。
每个命令都会使机器人执行一些特殊的任务,您还可以根据自己的创造力添加更多动作。
机器人也可以通过12V适配器供电,也可以使用9V电池供电。该电池可以轻松地放置在Perf板下方,也可以用机器人的头盖住。
可以在下面的视频中找到此智能手机控制机器人的完整工作。