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

下面我将为你提供一个从零开始的、详细的 Arduino 机器人搭建指南,涵盖从核心概念、所需组件、组装步骤到编程示例的全过程。
第一部分:核心概念
一个基本的机器人通常由以下几个核心部分组成:
- 大脑:Arduino 主板,它接收传感器信息,根据代码做出决策,并向电机等执行器发出指令。
- 骨架:机器人底盘,承载所有电子元件和机械结构,提供轮子或履带以实现移动。
- 肌肉:执行器,通常是直流减速电机,它们负责驱动轮子,让机器人动起来。
- 感官:传感器,例如超声波传感器(测距)、红外巡线传感器(检测黑线)、光敏传感器(检测光线)等,让机器人感知环境。
- 神经系统:驱动模块,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:组装机械结构
- 固定底盘:将 TT 马机安装到底盘的预定位置,用螺丝固定好。
- 安装车轮:将车轮固定在电机的输出轴上。
- 安装 Arduino:将 Arduino UNO 主板用双面胶或螺丝固定在底盘上,确保位置平衡。
- 安装传感器:将超声波传感器固定在底盘前方,确保其超声波发射/接收头朝前,如果需要,也安装好红外巡线传感器。
- 安装电池盒:将电池盒固定在底盘后方,以平衡重量。
步骤 2:电路连接
这是最关键的一步,请务必仔细核对!

接线原则:先连接电源,再连接信号线。
电源连接
- 电池盒 -> L298N 驱动板:
- 电池盒的 正极 (+) -> L298N 的 +12V (或 VMS) 输入。
- 电池盒的 负极 -> L298N 的 GND 输入。
- L298N -> Arduino:
- L298N 的 +5V 输出 -> Arduino 的 5V 引脚。(注意:如果你的电机电压不高,可以直接从 L298N 取 5V 给 Arduino 供电,否则建议单独给 Arduino 供电)
- L298N 的 GND -> Arduino 的 GND 引脚。(非常重要! 必须共地,否则信号会不稳定。)
电机连接
- 将两个电机分别连接到 L298N 的输出端子:
- 左电机 ->
OUT1和OUT2 - 右电机 ->
OUT3和OUT4
- 左电机 ->
信号线连接 (Arduino -> L298N)

- L298N 需要 4 个数字引脚来控制两个电机的正转、反转和停止。
- 左电机:
- L298N
IN1-> Arduino 数字引脚7 - L298N
IN2-> Arduino 数字引脚6
- L298N
- 右电机:
- L298N
IN3-> Arduino 数字引脚5 - L298N
IN4-> Arduino 数字引脚4
- L298N
超声波传感器连接
- 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/IN2 或 IN3/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),当你用手在它前方制造障碍物时,观察机器人是否会后退并转向。
第五部分:进阶方向
当你掌握了基础后,可以尝试以下进阶玩法:
- 蓝牙/手机遥控:添加蓝牙模块,通过手机 App(如 "Arduino Bluetooth Controller")发送指令,实现遥控。
- 巡线机器人:在底盘底部安装红外巡线传感器,通过检测地上的黑线,编写 PID 算法,让机器人沿着黑线精确行驶。
- 循迹避障一体化:结合巡线和超声波传感器,让机器人既能沿着路线走,又能自动绕开途中的障碍物。
- 机械臂或云台:使用舵机控制,为你的机器人添加一个可以抓取物体或转动摄像头云台的功能。
- WiFi 控制:使用 ESP8266 或 ESP32 替代 Arduino UNO,它们自带 WiFi 功能,可以实现通过网页或 MQTT 协议远程控制机器人。
总结与建议
- 耐心:从零开始搭建机器人可能会遇到各种问题(接线错误、代码 bug、机械松动),保持耐心,逐一排查。
- 安全第一:接线时确保断开电源,特别是连接电机和电池时,避免短路。
- 享受过程:Arduino 机器人的魅力在于创造和探索,不要害怕失败,每一次调试都是一次宝贵的学习。
祝你搭建顺利,玩得开心!如果你在具体步骤中遇到问题,随时可以再提问。
标签: arduino机器人制作教程 arduino机器人入门搭建 arduino简易机器人搭建方法