首页教程中心机器人组装你的第一个机器人
入门60分钟#机器人#组装#Arduino

组装你的第一个机器人

从零开始组装一台四轮驱动的智能小车机器人,学习电机驱动原理,并编写第一段控制代码让机器人动起来。

小米创客团队更新于 2024-02-10
组装你的第一个机器人

项目简介

本教程将指导你从零开始组装一台四轮驱动的智能小车机器人。完成后,你将拥有一台可以前进、后退、转弯的机器人底盘,为后续的循迹、避障等高级功能奠定基础。

完成后你将拥有:

  • 一台完整组装的四轮驱动小车
  • 理解直流电机和电机驱动模块的工作原理
  • 能够用代码控制机器人的运动

套件清单

请确认以下零件齐全:

零件名称数量说明
亚克力底盘(上层/下层)各1块机器人骨架
TT 减速电机4个驱动轮子
65mm 橡胶车轮4个
L298N 电机驱动模块1个控制电机方向和速度
Arduino Uno 主板1块大脑
18650 电池盒1个电源
M3 螺丝螺母套装若干固定零件
铜柱 M3×30mm4根连接上下层底盘
跳线若干

组装底盘

步骤1:安装电机

  1. 将 4 个 TT 电机分别安装到底盘下层的四个角
  2. 使用 M3 螺丝从底盘背面固定电机(每个电机 2 颗螺丝)
  3. 注意:左侧两个电机朝向相同,右侧两个电机朝向相同,但左右两侧方向相反

步骤2:安装车轮

将 4 个橡胶车轮压入电机轴,确保车轮安装牢固,用手转动车轮应该感觉阻力均匀。

步骤3:安装铜柱

在底盘下层的四个角安装 M3×30mm 铜柱,这些铜柱将支撑上层底盘。


安装电机驱动

L298N 是一款经典的双路 H 桥电机驱动芯片,可以同时控制两路电机的方向和速度。

将 L298N 模块固定在底盘上层,注意散热片朝向外侧以便散热。

L298N 引脚说明:

  • ENA/ENB: 使能引脚,控制电机速度(PWM)
  • IN1/IN2: 控制电机A的转向
  • IN3/IN4: 控制电机B的转向
  • OUT1-4: 连接电机
  • 12V: 电源输入(7.4V-12V)
  • 5V: 可为 Arduino 供电

电路连接

L298N 引脚Arduino 引脚
ENA数字引脚 5(PWM)
IN1数字引脚 6
IN2数字引脚 7
IN3数字引脚 8
IN4数字引脚 9
ENB数字引脚 10(PWM)
GNDGND
电机连接:
  • 左前 + 左后电机 → OUT1、OUT2
  • 右前 + 右后电机 → OUT3、OUT4

编写控制代码

cpp
// 四轮小车基础控制 // 小米创客 kidsbits 出品

// 电机引脚定义 const int ENA = 5; // 左电机使能(PWM速度控制) const int IN1 = 6; // 左电机方向1 const int IN2 = 7; // 左电机方向2 const int IN3 = 8; // 右电机方向1 const int IN4 = 9; // 右电机方向2 const int ENB = 10; // 右电机使能(PWM速度控制)

void setup() { pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT); }

// 前进 void moveForward(int speed) { analogWrite(ENA, speed); analogWrite(ENB, speed); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); }

// 后退 void moveBackward(int speed) { analogWrite(ENA, speed); analogWrite(ENB, speed); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); }

// 左转 void turnLeft(int speed) { analogWrite(ENA, speed); analogWrite(ENB, speed); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); }

// 右转 void turnRight(int speed) { analogWrite(ENA, speed); analogWrite(ENB, speed); 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() { // 测试运动序列 moveForward(150); // 以 150/255 的速度前进 delay(2000); // 前进 2 秒 stopMotors(); delay(500); turnLeft(150); // 左转 delay(800); stopMotors(); delay(500); moveForward(200); // 加速前进 delay(2000); stopMotors(); delay(2000); // 停止 2 秒后重复 }


测试与调试

上传代码后,将电池装入电池盒并接通电源,观察小车的运动:

  1. 如果某个轮子转向相反: 将该电机的两根连接线对调
  2. 如果速度不均匀: 调整 analogWrite() 的参数值(0-255)
  3. 如果小车跑偏: 微调左右电机的速度值使其一致

进阶挑战

挑战1:遥控小车 通过蓝牙模块(HC-05)和手机 App 遥控小车运动。

挑战2:循迹小车 安装红外循迹传感器,让小车自动沿黑线行驶。

挑战3:避障小车 安装超声波传感器,让小车自动检测并绕开障碍物。