带伺服电机的机器人避障
组件和用品
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
必要的工具和机器
![]() |
|
应用和在线服务
![]() |
|
关于这个项目
关于项目的一切
我是一名媒体艺术设计专业的学生,就读于马来西亚赛城多媒体大学。这是我学习媒体艺术的 Gamma 年,交互设计是教学生如何使用 Arduino 组件及其工作原理的主题。因此,在我的最终作业中,我选择了“避障机器人”作为我自己的项目,并了解每个组件的工作原理。
第 1 步:
准备并建造您的机器人底盘。包装内有几个组件,底盘,两个电机,两个轮子,一个前轮,一个电池座,一些螺丝,开关和跳线。下图:

第 2 步:
在将跨接导线焊接到两个电机上之前,我建议测试每个组件以确保它们都正常工作,例如:两个直流电机、Arduino 板、电机屏蔽、伺服电机和超声波传感器。然后我们将开始焊接两个电机上的红线和黑线,示例图如下:

第 3 步:
来到我们的电池底盘和开关部分。我们只需要从电池底盘上剪下一半的黑线,在一个孔焊接一根线,另一根黑线将焊接在另一个孔。我们的开关准备好了!
第 4 步:
我们需要堆叠Arduino板和Motor Shield板,Motor Shield将堆叠在Arduino板上。下面的例子:

第 5 步:
我们将继续讨论电机屏蔽板。这个屏蔽为电机和伺服电机提供电源,电机需要很大的电流,这个屏蔽可以为每个电机提供高达600mA的电流。我们需要在电机屏蔽板上焊接/固定直流电机线。如果你的直流电机线足够长到电机屏蔽会很好,如果不是你可能需要使用外部跳线(无论是公/母跳线),切断跳线头并确保在里面铜线出现。 (您需要剪去跳线橡胶,使铜线出现)。并且您需要将外部电线焊接到直流电机电线上。示例:

然后将左侧电机线连接到电机屏蔽的 M1 连接器。右侧电机线将从电机屏蔽板连接到 M3 连接器。示例:

第 6 步:
然后我们需要将电池开关的红线和黑线连接到电机屏蔽板上。

之后,我们需要准备公母跳线,将它们焊接到 5V、GND、模拟引脚 4 和模拟引脚 5。在此之前,我们需要找到相同颜色的母跳线和公跳线并将它们切成两半.为什么一定要同色?首先很容易让我们识别出哪根电线是哪个零件。其次,白色公跳线将与连接到 5V 的白色母跳线焊接。黑色公跳线将与母跳线焊接,公跳线将焊接到 GND。橙色公跳线将与橙色母跳线焊接,橙色公跳线将焊接在模拟引脚 5。最后但并非最不重要的是,棕色公跳线将与棕色母跳线焊接,然后棕色公跳线将焊接到模拟引脚 4. 示例:

第 7 步:
您可以使用双面胶带或热胶枪将两个防护罩连接到机器人底盘上。
第 8 步:来到超声波传感器部分
从我们刚刚焊接的母和公跳线中,白色跳线(5V)(女性站点跳线)将连接到超声波传感器 VCC 引脚。黑色跳线(GND)(女性站点跳线)将连接到 GND 引脚。棕色跳线(模拟针 4)(女性现场跳线)将连接到 Echo 针。橙色跳线(模拟针 5)(女性站点跳线)将连接到 TRIG 针。

第 9 步:
最后,对于伺服电机将连接到伺服_2 插槽。注意*(那里的伺服电机类型很少。您可能需要在网上找到它们以了解它们如何插入伺服_2 插槽)。下面是我自己版本的舵机插槽。

最后一步:代码
对于这个避障机器人,我们将需要 3 个库,即 Motor Shield 驱动程序的 Motor Shield 库,用于超声波传感器的 New Ping 库。第三个是Arduino IDE。以下是库的可下载链接:
电机屏蔽库
- 新建 Ping 库
我很感激你们观看我的项目。我希望这些说明足够清楚,让你们能够按照并为自己构建避障机器人。谢谢!
测试视频:
代码
- Arduino IDE
Arduino IDE C#
复制并粘贴 Arduino IDE 中的代码,然后上传到您的 Arduino 板#include#include #include #define TRIG_PIN A4 #define ECHO_PIN A5#define MAX_DISTANCE_POSSIBLE 1000 #define MAX_SPEED 150 // #define MOTORS_CALIBRATION_OFFSET 3#define COLL_DIST 20 #define TURN_DIST COLL_DIST+10 NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE_POSSIBLE);AF_DCMotor leftMotor(3, MOTORZ12)_8; AF_DCMotor rightMotor(1, MOTOR12_8KHZ);伺服颈部控制器ServoMotor;int pos =0; int maxDist =0;int maxAngle =0;int maxRight =0;int maxLeft =0;int maxFront =0;int course =0;int curDist =0;String motorSet ="";int speedSet =0;void setup() { 颈控制器伺服电机.attach(10);颈控制器伺服电机.write(90);延迟(2000);检查路径(); motorSet ="前进";颈控制器伺服电机.write(90); moveForward();}void loop() { checkForward(); checkPath();}void checkPath() { int curLeft =0;内部当前 =0; int curRight =0; int curDist =0;颈控制器伺服电机.write(144);延迟(120); for(pos =144; pos>=36; pos-=18) { 颈控制器伺服电机.write(pos);延迟(90); checkForward(); curDist =readPing(); if (curDist curDist) {maxAngle =pos;} if (pos> 90 &&curDist> curLeft) { curLeft =curDist;} if (pos ==90 &&curDist> curFront) {curFront =curDist;} if (pos <90 &&curDist> curRight) {curRight =curDist;} } maxLeft =curLeft; maxRight =curRight; maxFront =curFront;}void setCourse() { if (maxAngle <90) {turnRight();} if (maxAngle> 90) {turnLeft();} maxLeft =0;最大右 =0; maxFront =0;}void checkCourse() { moveBackward();延迟(500);移动停止(); setCourse();}void changePath() { if (pos <90) {lookLeft();} if (pos> 90) {lookRight();}}int readPing() { delay(70); }无符号 int uS =sonar.ping(); int cm =uS/US_ROUNDTRIP_CM; return cm;}void checkForward() { if (motorSet=="FORWARD") {leftMotor.run(FORWARD); rightMotor.run(FORWARD); } }void checkBackward() { if (motorSet=="BACKWARD") {leftMotor.run(BACKWARD); rightMotor.run(向后); } }void moveStop() {leftMotor.run(RELEASE); rightMotor.run(RELEASE);}void moveForward() { motorSet ="FORWARD"; leftMotor.run(FORWARD); rightMotor.run(FORWARD); for (speedSet =0; speedSet
示意图

制造工艺