Arduino UNO 是入门智能小车的最佳选择,价格便宜、资料丰富、上手简单。本文从硬件选型到代码编写,带你完整走一遍。
一、所需材料清单
主控部分:
Arduino UNO R3 开发板 × 1
Arduino 传感器扩展板(V5) × 1
USB 数据线(方口打印机线) × 1
驱动部分:
L298N 双路电机驱动模块 × 1
直流减速电机(带轮子,推荐 1:48 减速比) × 2
万向轮(牛眼轮) × 1
7.4V 18650 锂电池组(2S) × 1
杜邦线(公对公、公对母、母对母各若干)
传感器部分(可选):
HC-SR04 超声波测距模块 × 1
红外循迹传感器模块(TCRT5000)× 3~5 个
舵机(SG90,用于超声波摇头扫描) × 1
底盘部分:
亚克力小车底盘(2层或3层结构) × 1 套
铜柱、螺丝、螺母套装 × 1 套
电池盒或魔术贴扎带
二、电路连接
第一步:安装电机
将两个直流减速电机用螺丝固定在底盘底层,轮子朝外。注意电机线方向,左右电机尽量对称。万向轮装在底盘前方或后方中间位置。
第二步:安装驱动板和主控
用铜柱在底盘上层固定 Arduino UNO 和 L298N 驱动板。传感器扩展板直接插在 Arduino 上。
第三步:接线(核心步骤)
L298N 驱动板接线表:
L298N → Arduino
IN1 → 数字引脚 8
IN2 → 数字引脚 9
IN3 → 数字引脚 10
IN4 → 数字引脚 11
ENA(使能A)→ 5V(始终使能)
ENB(使能B)→ 5V(始终使能)
L298N 的 12V 输入端接 7.4V 锂电池正极(红线),GND 接电池负极和 Arduino GND 共地。L298N 的 5V 输出可作为 Arduino 的供电(将板载跳线帽插上)。
电机接线:
L298N OUT1/OUT2 → 左电机(正反无所谓,代码里可以调)
L298N OUT3/OUT4 → 右电机
超声波接线(避障功能):
HC-SR04 VCC → Arduino 5V
HC-SR04 GND → Arduino GND
HC-SR04 Trig → 数字引脚 3
HC-SR04 Echo → 数字引脚 2
(如果想用舵机让超声波摇头,SG90 信号线接引脚 5,VCC 接 5V,GND 接 GND)
三、编写代码
打开 Arduino IDE,新建项目,写入以下代码:
// 智能小车基础驱动代码
// L298N引脚定义
const int IN1 = 8;
const int IN2 = 9;
const int IN3 = 10;
const int IN4 = 11;
// 超声波引脚
const int TRIG = 3;
const int ECHO = 2;
void setup() {
// 电机引脚设为输出
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// 超声波引脚
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
Serial.begin(9600);
}
// 前进
void forward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
// 后退
void backward() {
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 stop() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
// 测距
long getDistance() {
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long duration = pulseIn(ECHO, HIGH);
return duration * 0.034 / 2;
}
void loop() {
long dist = getDistance();
Serial.print("距离: ");
Serial.print(dist);
Serial.println(" cm");
if (dist > 0 && dist < 20) {
stop();
delay(200);
backward();
delay(500);
stop();
delay(200);
turnRight();
delay(300);
} else {
forward();
}
delay(50);
}
四、调试与运行
1. 代码上传前先确认板卡型号选对:工具 → 开发板 → Arduino/Genuino UNO。
2. 选择正确的 COM 口(设备管理器里查看)。
3. 点击上传按钮,等待编译上传完成。
4. 上传成功后,打开串口监视器(Ctrl+Shift+M),波特率设 9600,可以看到距离数据。
5. 将小车放在地面,接通电池电源,小车应自动前进,遇到障碍物(20cm以内)自动后退并右转避开。
五、常见问题
Q:电机不动怎么办?
A:先检查接线,特别是 L298N 的 12V 供电和 GND 共地。然后用万用表测 OUT 引脚有无电压。
Q:小车不走直线?
A:左右电机转速有差异是正常的。可以在代码中通过 PWM 调节,将 ENA/ENB 接到支持 PWM 的引脚(如 5、6),用 analogWrite() 分别调速。
Q:超声波测距不准?
A:确保超声波模块前面没有遮挡物,接线稳固。测距范围约 2cm~400cm,超出范围会返回 0。
六、进阶扩展
学会基础驱动之后,可以加装蓝牙模块(HC-05)实现手机遥控,加装红外循迹传感器实现自动巡线,甚至配合 OpenMV 摄像头实现颜色追踪。一套 Arduino 小车可以玩出无限可能!

微信联系
淘宝联系