零基础入门 Arduino 机器人:蓝牙遥控/避障/沿墙/走迷宫四合一
项目定位
面向 Arduino 初学者的「第一台机器人」教程。采用 UNO + L293D 电机驱动扩展板,集成 HC-SR04 超声波、HC-05 蓝牙,底盘用塑料盒 DIY,三节 9V 电池供电。一套硬件,四种玩法:蓝牙手机遥控、自主避障、沿墙巡航、走迷宫(合并模式)。
材料清单
- Arduino UNO R3 × 1
- Adafruit L293D Motor Shield × 1(低成本、库完善、免焊接)
- HC-SR04 超声波模块 × 1
- HC-05 蓝牙模块 × 1
- TT 减速电机 + 轮子 × 2
- 万向轮 × 2
- 9V 电池 × 3 + 电池扣 × 3(两节并联驱动电机,一节独立供 Arduino)
- 塑料盒底盘、跳线、热熔胶、螺丝刀、烙铁
底盘制作要点
- 塑料盒钻孔安装两侧电机、前后万向轮
- 电机接 Motor Shield M1 (左) 与 M3 (右),务必拔掉 Shield 上 PWR 跳线帽,外部电池接 EXT_PWR 端子
- 蓝牙模块:TX→RX(0)、RX→TX(1)、VCC→5V、GND→GND
- 超声波:VCC/GND→5V/GND、Trig→A1、Echo→A0
- 机箱侧面开孔引出 USB 口与 DC 口,便于烧录与供电
四大模式代码架构
所有模式合并为单一 Final Sketch,通过蓝牙指令字符切换:
| 指令 | 模式 | 核心逻辑 |
|---|---|---|
| F/B/L/R/I/J/G/H/S | 蓝牙遥控 | 差速转向,0-9/q 十档调速 |
| b | 避障 | 距离 <25cm 则原地右旋,否则前进 |
| m | 沿墙 | 距离 <30cm 右转贴墙,否则左转寻墙 |
| 组合 | 走迷宫 | 状态机融合以上逻辑(代码中已整合) |
关键代码片段:避障模式
case 'b': // 避障
motorRight.setSpeed(vel); motorLeft.setSpeed(vel);
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long dur = pulseIn(echoPin, HIGH);
int dist = (dur/2) / 29.1;
if (dist < 25) { // 发现障碍
motorLeft.run(BACKWARD); motorRight.run(FORWARD); // 原地右旋
} else { // 道路畅通
motorRight.run(FORWARD); motorLeft.run(FORWARD);
}
break;
手机端 App 配置
推荐「Bluetooth Electronics」或任意串口调试 App。按键布局映射:
- 方向键 → F/B/L/R
- 斜向键 → I/J/G/H
- 停止 → S
- 滑块 0-9/q → 速度档位
- 自定义按钮 b/m → 切换自主模式
常见坑点避雷
- 电机抖动/不转:检查电池电量,9V 电池内阻大,建议改用 2S 锂电或 6×AA 镍氢电池盒
- 蓝牙频繁断连:HC-05 供电纹波大,并联 100uF 电解电容
- 超声波读数跳变:在
pulseIn前后加delayMicroseconds(2),电源滤波 - 库冲突报错:确保安装
Adafruit Motor Shield library而非官方AFMotor旧版
进阶玩法
- 加入红外循迹模块,实现巡线
- 超声波舵机云台,扩展 180° 扫描视野
- 树莓派 Zero W 替代蓝牙,实现 WiFi 远程 + OpenCV 视觉
- 3D 打印一体化底盘,预留传感器卡槽
制造工艺