Arduino 机器人的核心概念
一个简单的 Arduino 机器人通常由以下几部分组成:

(图片来源网络,侵删)
-
大脑 - Arduino 主板
- 作用:接收传感器信息,根据编程逻辑进行计算,并控制执行器(如电机)。
- 常用型号:
- Arduino Uno:最经典、最通用的选择,资源丰富,社区支持强大。
- Arduino Nano:体积小,功能与 Uno 类似,适合对空间有要求的紧凑型机器人。
- Arduino Mega:引脚更多,适合需要连接大量传感器和执行器的复杂机器人。
-
感官 - 传感器
- 作用:让机器人感知外部世界。
- 常用传感器:
- 超声波传感器:测量前方障碍物的距离,是避障机器人的核心。
- 红外巡线传感器:检测地面上的黑线,是循线机器人的核心。
- 红外避障传感器:与超声波类似,但原理不同,近距离检测效果好。
- 陀螺仪/加速度计:检测机器人的姿态、倾斜和旋转,用于自平衡机器人。
- 蓝牙/WiFi 模块:实现与手机或电脑的无线通信,进行远程控制。
-
四肢 - 执行器
- 作用:让机器人行动起来。
- 常用执行器:
- 直流减速电机 + 轮子:最基础的动力单元,提供前进、后退、转向的动力。
- 舵机:可以精确控制角度,用于机械臂、云台、头部转动等。
- 步进电机:可以精确控制转动的步数和速度,适用于 3D 打印机、CNC 机器人等。
-
神经系统 - 驱动板和连接线
(图片来源网络,侵删)- 电机驱动板:
- 作用:Arduino 的引脚电流很小,无法直接驱动电机,驱动板起到了“放大器”的作用,接收 Arduino 的微弱控制信号,驱动大功率的电机。
- 常用型号:L298N 是最经典、最便宜的入门选择。TB6612FNG 是更高效、更小巧的升级版。
- 连接线:杜邦线、跳线,用于连接各个模块。
- 电机驱动板:
-
骨架 - 底盘
- 作用:将所有部件固定在一起,形成一个整体。
- 常用底盘:网上有各种尺寸和材质(亚克力、铝合金)的机器人底盘套件,通常已经预装了电机和轮子,非常方便。
一个经典的入门项目:智能避障小车
这是几乎所有 Arduino 机器人爱好者都会做的第一个项目,它能让你快速掌握机器人控制的核心逻辑。
所需组件清单:
| 组件名称 | 建议型号/规格 | 数量 | 备注 |
|---|---|---|---|
| 主控板 | Arduino Uno R3 | 1 | 机器人“大脑” |
| 电机驱动板 | L298N | 1 | 驱动两个直流电机 |
| 直流减速电机 | TT马达 (带轮子) | 2 | 提供动力 |
| 机器人底盘 | 两轮驱动的亚克力/金属底盘 | 1 | 包含电机、轮子、螺丝等 |
| 超声波传感器 | HC-SR04 | 1 | 测距,用于避障 |
| 电池盒 | 4xAA 或 7.4V 锂电池盒 | 1 | 为机器人供电 |
| 面包板和杜邦线 | - | 若干 | 用于临时连接和测试 |
组装步骤:
- 组装底盘:按照底盘说明书,将两个电机、轮子、万向轮(或前轮)安装好。
- 固定主板和驱动板:将 Arduino Uno 和 L298N 驱动板用双面胶或螺丝固定在底盘上。
- 连接电路:
- 电机连接:将两个电机的正负极分别接到 L298N 驱动板上的
OUT1/OUT2和OUT3/OUT4端口。 - 驱动板控制:将 L298N 的
IN1,IN2,IN3,IN4接到 Arduino 的数字引脚(IN1->D5,IN2->D4,IN3->D3,IN4->D2)。 - 使能端:将
ENA和ENB(控制电机速度)接到 Arduino 的 PWM 引脚(ENA->D6,ENB->D9)。 - 超声波传感器:将 VCC 接 5V, GND 接 GND, Trig 接一个数字引脚(
D12),Echo 接另一个数字引脚(D11)。 - 电源连接:
- 重要! 电池盒的正负极 必须 接到 L298N 驱动板的
+12V和GND端口,这将为电机提供动力。 - 从 L298N 驱动板的
+5V和GND端口引出线,为 Arduino 和超声波传感器供电。不要用电池直接给 Arduino 供电,以防电压不稳烧毁板子。
- 重要! 电池盒的正负极 必须 接到 L298N 驱动板的
- 电机连接:将两个电机的正负极分别接到 L298N 驱动板上的
- 上传代码:将编写好的代码通过 Arduino IDE 上传到 Arduino Uno。
Arduino 代码示例(避障逻辑):
// 定义引脚
const int enA = 6; // 左电机使能端 (PWM)
const int in1 = 5; // 左电机控制1
const int in2 = 4; // 左电机控制2
const int enB = 9; // 右电机使能端 (PWM)
const int in3 = 3; // 右电机控制1
const int in4 = 2; // 右电机控制2
const int trigPin = 12; // 超声波 Trig
const int echoPin = 11; // 超声波 Echo
// 定义一些常量
const int motorSpeed = 150; // 电机速度 (0-255)
const int obstacleDistance = 20; // 障碍物距离阈值 (cm)
void setup() {
// 设置所有电机引脚为输出
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// 设置超声波传感器引脚
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// 初始化串口通信,用于调试
Serial.begin(9600);
}
void loop() {
// 1. 测量距离
long duration, distance;
// 发送一个10us的高电平来触发Trig
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 读取回波时间
duration = pulseIn(echoPin, HIGH);
// 计算距离 (声速 = 340m/s = 0.034cm/us)
distance = duration * 0.034 / 2;
// 在串口监视器上打印距离,方便调试
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// 2. 根据距离做出决策
if (distance > obstacleDistance || distance == 0) {
// 没有障碍物或距离无效,直行
moveForward();
} else {
// 检测到障碍物,后退并转向
moveBackward();
delay(500);
turnRight();
delay(300); // 转向时间可以调整
}
}
// --- 电机控制函数 ---
void moveForward() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, motorSpeed);
analogWrite(enB, motorSpeed);
}
void moveBackward() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, motorSpeed);
analogWrite(enB, motorSpeed);
}
void turnRight() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, motorSpeed);
analogWrite(enB, motorSpeed);
}
void turnLeft() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, motorSpeed);
analogWrite(enB, motorSpeed);
}
void stopMotors() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
进阶项目方向
当你掌握了基础避障小车后,可以尝试以下更有趣的项目:
-
蓝牙/APP 遥控小车
- 新增组件:HC-05 或 HC-06 蓝牙模块。
- 实现原理:手机通过蓝牙 APP 发送指令(如 'F' 前进, 'B' 后退),Arduino 接收指令并控制电机,可以使用免费的 APP 如 "Arduino Bluetooth Controller"。
-
自动循线小车
- 新增组件:TCRT5000 红外巡线传感器模块(3-5 个)。
- 实现原理:传感器检测黑线和白色地面,根据传感器阵列的读差来判断小车是否偏离赛道,然后通过差速转向来修正路线。
-
自平衡机器人
- 新增组件:MPU-6050 陀螺仪/加速度计模块,两个大扭矩电机,更稳固的底盘。
- 实现原理:这是一个经典的倒立摆控制问题,通过 MPU-6050 实时读取机器人的倾角,使用 PID 控制算法,根据倾角大小和方向,快速调整两个电机的转速,以保持机器人直立不倒,这是难度较高但非常酷炫的项目。
-
机械臂
- 新增组件:4个或更多舵机,金属机械臂结构套件。
- 实现原理:每个舵机控制一个关节(底座旋转、大臂、小臂、夹爪),通过控制每个舵机的角度,实现抓取、移动等动作,可以配合超声波传感器实现自动抓取。
学习资源和社区
- 购买平台:
- 淘宝/天猫:搜索 "Arduino 机器人套件",可以买到几乎所有你需要的零件,非常方便。
- AliExpress:国外平台,选择更多,但 shipping 时间较长。
- 教程网站:
- Arduino 官网:https://www.arduino.cc/ (英文)
- DFRobot (DF创客社区):https://www.dfrobot.com.cn/ (中文,教程和社区非常活跃)
- Instructables:https://www.instructables.com/ (海量的 DIY 项目教程)
- 视频平台:
- Bilibili (B站):搜索 "Arduino 机器人",有大量详细的视频教程,从入门到精通。
- YouTube:https://www.youtube.com/ (搜索 "Arduino Robot Project")
制作 Arduino 机器人是一个充满乐趣和挑战的过程,建议你从 智能避障小车 开始,一步一步地搭建和调试,在这个过程中,你会遇到各种问题(如接线错误、代码 bug、机械结构不稳),解决这些问题的过程就是你成长的过程。
祝你玩得开心,创造出属于你自己的机器人!
标签: Arduino机器人入门教程 Arduino机器人制作零基础 Arduino机器人项目学习路径
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。