如何轻松自制简单机器人?

99ANYc3cd6 机器人 2

太棒了!做一个机器人是一个非常有趣且有成就感的项目,我会为你提供一个从零开始的、详细的、分步的指南,专注于制作一个“入门级”的简单机器人

如何轻松自制简单机器人?-第1张图片-广州国自机器人
(图片来源网络,侵删)

这个机器人将具备以下功能:

  • 自动避障:能通过传感器检测前方是否有障碍物。
  • 自主转向:遇到障碍物时,会自动后退并向左或向右转,然后继续前进。
  • 易于编程和扩展:使用非常流行的Arduino平台。

核心思路:一个简单的避障机器人

这个机器人的基本逻辑就像一个非常简单的生物:

  1. 前进:一直向前走。
  2. 检测:用“眼睛”(超声波传感器)看前面有没有东西。
  3. 判断:如果距离太近(有障碍物),就执行“后退+转向”的动作。
  4. 循环:重复以上步骤。

第一步:准备工作(你需要什么?)

我们将使用“Arduino”作为机器人的“大脑”,因为它非常容易上手,社区庞大,教程丰富。

核心组件

组件名称 功能 中文别名 数量
Arduino UNO R3 机器人的“大脑”,负责处理所有指令和逻辑。 Arduino主控板 1
L298N 电机驱动模块 Arduino的“肌肉”,直接控制电机的转动和方向,Arduino本身电流很小,无法直接驱动电机。 电机驱动板 1
TT减速电机 + 轮子 机器人的“腿”,提供前进的动力,通常买两个,配轮子和万向轮。 减速电机、车轮 2套
超声波传感器 (HC-SR04) 机器人的“眼睛”,用来测量前方障碍物的距离。 超声波模块 1
电池盒 提供移动所需的电源,推荐使用4节AA电池盒或18650锂电池组。 电池盒 1
面包板 + 杜邦线 用于在搭建原型时,无需焊接即可连接各个组件。 面包板、杜邦线 1套
机器人底盘套件 一个包含底盘、螺丝、电机支架、轮子和万向轮的套件,能大大简化机械部分的搭建。 底盘套件 1套

工具

  • 螺丝刀:用于组装底盘。
  • 剪线钳:用于剪掉杜邦线多余的长度。
  • 热熔胶枪:可选,用于固定一些松动的部件(如电池盒)。

第二步:组装机械部分

  1. 搭建底盘:根据你购买的底盘套件的说明书,将两个电机固定在底盘的两侧,并装上轮子。
  2. 安装万向轮:在底盘的后部(或前部,取决于设计)安装一个万向轮,这样机器人就能平稳地移动了。
  3. 固定“大脑”和“肌肉”
    • 用双面胶或螺丝将Arduino UNO固定在底盘的某个位置(通常是中间)。
    • 将L298N电机驱动模块也固定在Arduino旁边。
  4. 固定“眼睛”

    将超声波传感器固定在底盘的最前端,确保它能“看”到正前方的路。

    如何轻松自制简单机器人?-第2张图片-广州国自机器人
    (图片来源网络,侵删)
  5. 安装电池盒

    将电池盒固定在底盘的合适位置,注意重心平衡。

现在你的机器人看起来应该像这样: 一个底盘,前面有两个驱动轮,后面有一个万向轮,上面“趴着”Arduino和电机驱动板,前面还“长着”一个超声波传感器。


第三步:连接电路(这是最关键的一步)

我们将使用面包板和杜邦线来连接所有组件。在连接前,请务必断开所有电源!

下面是详细的引脚连接对照表,请仔细核对,接错可能会导致元件损坏。

如何轻松自制简单机器人?-第3张图片-广州国自机器人
(图片来源网络,侵删)
Arduino UNO 引脚 连接到组件的引脚 功能说明
5V L298N的 +12V+5V 为L298N模块提供电源
GND L298N的 GND、超声波传感器的 GND、电池盒的负极 共地,所有组件的负极都连接到这里
数字引脚 7 超声波传感器的 Trig 触发超声波测距
数字引脚 6 超声波传感器的 Echo 接收回波,计算距离
数字引脚 5 L298N的 IN1 控制电机A(左轮)方向
数字引脚 4 L298N的 IN2 控制电机A(左轮)方向
数字引脚 3 L298N的 IN3 控制电机B(右轮)方向
数字引脚 2 L298N的 IN4 控制电机B(右轮)方向
数字引脚 9 L298N的 ENA 控制电机A(左轮)速度
数字引脚 10 L298N的 ENB 控制电机B(右轮)速度

电机连接:

  • 将左边的电机连接到L298N模块的 OUT1OUT2 接口。
  • 将右边的电机连接到L298N模块的 OUT3OUT4 接口。

电源连接:

  • 将电池盒的正极连接到L298N模块的 +12V 接口。
  • 将电池盒的负极连接到面包板的蓝色负极轨,然后从负极轨连接到Arduino的 GND 和L298N的 GND

连接示意图:

          +-----------------+
          |   Arduino UNO   |
          |                 |
 5V -------> L298N +5V/+12V
 GND -------> L298N GND
 7  -------> HC-SR04 Trig
 6  -------> HC-SR04 Echo
 5  -------> L298N IN1
 4  -------> L298N IN2
 3  -------> L298N IN3
 2  -------> L298N IN4
 9  -------> L298N ENA
 10 -------> L298N ENB
          +-----------------+
          |  电池盒         |
          |                 |
 正极 -----> L298N +12V
 负极 -----> (面包板GND) -----> Arduino GND & L298N GND
          +-----------------+
          |  HC-SR04        |
          |                 |
 VCC -------> (面包板5V)  (可选,如果5V不够用)
 GND -------> (面包板GND)
 Trig -----> Arduino 7
 Echo -----> Arduino 6

第四步:编写代码

  1. 安装Arduino IDE:如果你还没有,请从 Arduino官网 下载并安装。
  2. 连接Arduino:用USB线将Arduino连接到你的电脑。
  3. 选择开发板和端口
    • 打开Arduino IDE,点击 工具 -> 开发板 -> Arduino UNO
    • 点击 工具 -> 端口,选择你的Arduino连接的COM口。
  4. 复制并上传代码:将下面的代码复制到Arduino IDE中,然后点击“上传”按钮。
// 定义引脚
const int trigPin = 7;  // 超声波传感器Trig引脚
const int echoPin = 6;  // 超声波传感器Echo引脚
// 定义电机控制引脚
const int ENA = 9;  // 左电机使能
const int ENB = 10; // 右电机使能
const int IN1 = 5;  // 左电机方向1
const int IN2 = 4;  // 左电机方向2
const int IN3 = 3;  // 右电机方向1
const int IN4 = 2;  // 右电机方向2
// 定义避障距离阈值 (单位: 厘米)
const int obstacleDistance = 20;
void setup() {
  // 初始化串口通信,用于调试
  Serial.begin(9600);
  // 设置引脚模式
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  // 设置初始速度 (0-255)
  analogWrite(ENA, 200);
  analogWrite(ENB, 200);
}
// 获取距离函数
long getDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  // 计算距离 (声速 = 340m/s = 0.034cm/μs)
  // 距离 = (时间 * 声速) / 2 (因为一来一回)
  long distance = duration * 0.034 / 2;
  return distance;
}
// 电机控制函数
void moveForward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}
void moveBackward() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}
void turnLeft() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}
void turnRight() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}
void stopMotors() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}
void loop() {
  // 1. 获取前方距离
  long distance = getDistance();
  // 2. 通过串口打印距离,方便调试
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  // 3. 判断并执行动作
  if (distance < obstacleDistance && distance > 0) {
    // 如果距离小于阈值,说明有障碍物
    Serial.println("Obstacle detected!");
    // 1. 停止
    stopMotors();
    delay(200);
    // 2. 后退
    moveBackward();
    delay(500);
    // 3. 停止
    stopMotors();
    delay(200);
    // 4. 随机选择向左或向右转
    if (random(2) == 0) {
      turnLeft();
    } else {
      turnRight();
    }
    delay(800); // 转向时间
    // 5. 停止,准备前进
    stopMotors();
    delay(200);
  } else {
    // 如果没有障碍物,就前进
    moveForward();
  }
  // 短暂延时,避免过于频繁地读取传感器
  delay(100);
}

第五步:测试与调试

  1. 安全第一:确保机器人已经离开地面,比如用书本垫高轮子,以防它突然冲出去。
  2. 上电测试:将电池盒接上电源。
  3. 观察现象
    • 机器人应该会向前移动。
    • 当你用手在它面前晃动时,它应该会停下来,后退,然后转向。
  4. 使用串口监视器:将Arduino通过USB线连上电脑,在Arduino IDE中打开 工具 -> 串口监视器(波特率选9600),你会实时打印出它检测到的距离,这非常有助于调试。
  5. 调整参数
    • 如果转弯不够灵活,可以增加 turnLeft()turnRight() 函数中的 delay() 时间。
    • 如果速度太快或太慢,可以调整 analogWrite(ENA, 200)analogWrite(ENB, 200) 中的值(0-255)。
    • 如果避障距离不合适,可以修改 obstacleDistance 的值。

进阶与扩展

恭喜!你已经完成了你的第一个机器人!接下来可以尝试以下事情让它变得更酷:

  1. 添加蓝牙模块:让你的机器人可以通过手机App远程控制。
  2. 增加巡线功能:添加一个红外巡线传感器,让它能沿着地上的黑线行走。
  3. 增加舵机:在超声波传感器上安装一个舵机,让它的“头”可以左右摆动,实现更大范围的扫描。
  4. 制作外壳:用3D打印、亚克力板或卡纸为你的机器人设计一个酷炫的外壳。
  5. 学习PID控制:让机器人走直线更精确。

从简单开始,一步步来,你会发现创造的乐趣无穷!祝你玩得开心!

标签: 自制机器人新手教程 简易机器人制作方法 机器人DIY入门指南

抱歉,评论功能暂时关闭!