arduino 搭建机器人

99ANYc3cd6 机器人 8

太棒了!使用 Arduino 搭建机器人是学习电子、编程和机械的绝佳方式,这个过程非常有趣,而且成就感十足。

arduino 搭建机器人-第1张图片-广州国自机器人
(图片来源网络,侵删)

下面我将为你提供一个从零开始的、详细的 Arduino 机器人搭建指南,涵盖从核心概念所需组件组装步骤编程示例的全过程。


第一部分:核心概念

一个基本的机器人通常由以下几个核心部分组成:

  1. 大脑Arduino 主板,它接收传感器信息,根据代码做出决策,并向电机等执行器发出指令。
  2. 骨架机器人底盘,承载所有电子元件和机械结构,提供轮子或履带以实现移动。
  3. 肌肉执行器,通常是直流减速电机,它们负责驱动轮子,让机器人动起来。
  4. 感官传感器,例如超声波传感器(测距)、红外巡线传感器(检测黑线)、光敏传感器(检测光线)等,让机器人感知环境。
  5. 神经系统驱动模块,Arduino 的引脚电流很小,无法直接驱动电机,需要一个电机驱动板(如 L298N)来放大电流,控制电机。

第二部分:所需组件清单

我们将以一个最经典的两轮驱动的智能小车为例来搭建。

组件名称 推荐型号/规格 数量 作用
Arduino 主板 Arduino UNO R3 或 Arduino Nano 1 机器人核心控制器
机器人底盘套件 带轮子的双轮底盘(含螺丝、螺母) 1 机器人骨架和驱动轮
直流减速电机 TT 马达 (带编码器更佳) 2 提供动力
电机驱动板 L298N 或 TB6612FNG 1 驱动电机,放大电流
电池盒 4xAA 或 7.4V 锂电池组 1 提供电源
超声波传感器 HC-SR04 1 测距,用于避障
杜邦线 公对母,母对母,公对公 若干 连接各个模块
可选 红外巡线传感器模块 2 用于巡线功能
可选 蓝牙模块 (HC-05/HC-06) 1 用于手机遥控

第三部分:组装步骤

步骤 1:组装机械结构

  1. 固定底盘:将 TT 马机安装到底盘的预定位置,用螺丝固定好。
  2. 安装车轮:将车轮固定在电机的输出轴上。
  3. 安装 Arduino:将 Arduino UNO 主板用双面胶或螺丝固定在底盘上,确保位置平衡。
  4. 安装传感器:将超声波传感器固定在底盘前方,确保其超声波发射/接收头朝前,如果需要,也安装好红外巡线传感器。
  5. 安装电池盒:将电池盒固定在底盘后方,以平衡重量。

步骤 2:电路连接

这是最关键的一步,请务必仔细核对!

arduino 搭建机器人-第2张图片-广州国自机器人
(图片来源网络,侵删)

接线原则:先连接电源,再连接信号线。

电源连接

  • 电池盒 -> L298N 驱动板
    • 电池盒的 正极 (+) -> L298N 的 +12V (或 VMS) 输入。
    • 电池盒的 负极 -> L298N 的 GND 输入。
  • L298N -> Arduino
    • L298N 的 +5V 输出 -> Arduino 的 5V 引脚。(注意:如果你的电机电压不高,可以直接从 L298N 取 5V 给 Arduino 供电,否则建议单独给 Arduino 供电
    • L298N 的 GND -> Arduino 的 GND 引脚。(非常重要! 必须共地,否则信号会不稳定。)

电机连接

  • 将两个电机分别连接到 L298N 的输出端子:
    • 左电机 -> OUT1OUT2
    • 右电机 -> OUT3OUT4

信号线连接 (Arduino -> L298N)

arduino 搭建机器人-第3张图片-广州国自机器人
(图片来源网络,侵删)
  • L298N 需要 4 个数字引脚来控制两个电机的正转、反转和停止。
  • 左电机
    • L298N IN1 -> Arduino 数字引脚 7
    • L298N IN2 -> Arduino 数字引脚 6
  • 右电机
    • L298N IN3 -> Arduino 数字引脚 5
    • L298N IN4 -> Arduino 数字引脚 4

超声波传感器连接

  • VCC -> Arduino 5V
  • GND -> Arduino GND
  • Trig (触发) -> Arduino 数字引脚 9
  • Echo (回声) -> Arduino 数字引脚 10

连接完成后的示意图:

[电池盒] --(+)--> [L298N VMS]
        --(-)--> [L298N GND] --(GND)--> [Arduino GND]
        --(-)--> [Arduino GND]  <--(5V)-- [L298N +5V] (如果从L298N取电)
[左电机] <-> [L298N OUT1/OUT2]
[右电机] <-> [L298N OUT3/OUT4]
[L298N IN1] -> [Arduino Pin 7]
[L298N IN2] -> [Arduino Pin 6]
[L298N IN3] -> [Arduino Pin 5]
[L298N IN4] -> [Arduino Pin 4]
[HC-SR04 VCC] -> [Arduino 5V]
[HC-SR04 GND] -> [Arduino GND]
[HC-SR04 Trig] -> [Arduino Pin 9]
[HC-SR04 Echo] -> [Arduino Pin 10]

第四部分:编程与测试

打开 Arduino IDE,将代码复制进去,上传到你的 Arduino。

基础运动控制代码

这段代码可以让机器人前进、后退、左转、右转和停止。

// 定义连接到 L298N 驱动板的引脚
const int IN1 = 7;
const int IN2 = 6;
const int IN3 = 5;
const int IN4 = 4;
void setup() {
  // 设置所有电机控制引脚为输出模式
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  // 初始化时停止所有电机
  stopMotors();
  Serial.begin(9600); // 初始化串口,用于调试
  Serial.println("Robot Ready!");
}
void loop() {
  // 机器人前进 2 秒
  forward();
  delay(2000);
  // 停止 0.5 秒
  stopMotors();
  delay(500);
  // 机器人后退 2 秒
  backward();
  delay(2000);
  // 停止 0.5 秒
  stopMotors();
  delay(500);
  // 左转 1 秒
  turnLeft();
  delay(1000);
  // 停止 0.5 秒
  stopMotors();
  delay(500);
  // 右转 1 秒
  turnRight();
  delay(1000);
  // 停止 0.5 秒
  stopMotors();
  delay(1000);
}
// --- 电机控制函数 ---
// 前进
void forward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  Serial.println("Moving Forward");
}
// 后退
void backward() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("Moving Backward");
}
// 左转
void turnLeft() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  Serial.println("Turning Left");
}
// 右转
void turnRight() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  Serial.println("Turning Right");
}
// 停止
void stopMotors() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  Serial.println("Motors Stopped");
}

测试:上传代码后,观察机器人是否按照 loop() 函数中的指令顺序执行动作,如果某个方向不对,很可能是电机线接反了,只需交换对应 IN1/IN2IN3/IN4 的两根线即可。

进阶功能:超声波避障

我们将结合超声波传感器,让机器人能够自动避开障碍物。

// (保留之前的引脚定义)
const int IN1 = 7;
const int IN2 = 6;
const int IN3 = 5;
const int IN4 = 4;
// 超声波传感器引脚
const int trigPin = 9;
const int echoPin = 10;
// 定义避障距离阈值 (单位: cm)
const int obstacleDistance = 20; 
void setup() {
  // 设置电机引脚
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);
  // 设置超声波传感器引脚
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
  Serial.println("Obstacle Avoidance Robot Ready!");
}
void loop() {
  // 1. 测量前方距离
  long distance = getDistance();
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  // 2. 根据距离做出决策
  if (distance > obstacleDistance && distance > 0) {
    // 如果距离大于阈值,且没有测量错误,则前进
    forward();
  } else {
    // 否则,停止并执行避障动作(例如后退和转向)
    stopMotors();
    delay(300);
    backward();
    delay(800);
    turnRight();
    delay(600); // 转向一个合适的角度
  }
}
// --- 电机控制函数 (与之前相同) ---
void forward() { /* ... */ }
void backward() { /* ... */ }
void turnLeft() { /* ... */ }
void turnRight() { /* ... */ }
void stopMotors() { /* ... */ }
// --- 超声波测距函数 ---
long getDistance() {
  // 发送一个 10us 的高电平来触发 Trig
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // 读取 Echo 返回的高电平的持续时间
  long duration = pulseIn(echoPin, HIGH);
  // 计算距离 (声速 = 340m/s, 往返距离所以要除以2)
  // distance = (duration * 0.034) / 2;
  return duration / 58.2; // 更简洁的计算方式
}

测试:将机器人放在一个空旷的地面,开启串口监视器(波特率 9600),当你用手在它前方制造障碍物时,观察机器人是否会后退并转向。


第五部分:进阶方向

当你掌握了基础后,可以尝试以下进阶玩法:

  1. 蓝牙/手机遥控:添加蓝牙模块,通过手机 App(如 "Arduino Bluetooth Controller")发送指令,实现遥控。
  2. 巡线机器人:在底盘底部安装红外巡线传感器,通过检测地上的黑线,编写 PID 算法,让机器人沿着黑线精确行驶。
  3. 循迹避障一体化:结合巡线和超声波传感器,让机器人既能沿着路线走,又能自动绕开途中的障碍物。
  4. 机械臂或云台:使用舵机控制,为你的机器人添加一个可以抓取物体或转动摄像头云台的功能。
  5. WiFi 控制:使用 ESP8266 或 ESP32 替代 Arduino UNO,它们自带 WiFi 功能,可以实现通过网页或 MQTT 协议远程控制机器人。

总结与建议

  • 耐心:从零开始搭建机器人可能会遇到各种问题(接线错误、代码 bug、机械松动),保持耐心,逐一排查。
  • 安全第一:接线时确保断开电源,特别是连接电机和电池时,避免短路。
  • 享受过程:Arduino 机器人的魅力在于创造和探索,不要害怕失败,每一次调试都是一次宝贵的学习。

祝你搭建顺利,玩得开心!如果你在具体步骤中遇到问题,随时可以再提问。

标签: arduino机器人制作教程 arduino机器人入门搭建 arduino简易机器人搭建方法

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