四轮 Arduino 机器人:Dabble App 蓝牙手柄遥控
项目简介
使用 Arduino UNO、L293D 双 H 桥驱动四个直流电机,配合 HC-05 蓝牙模块,通过 **STEMpedia Dabble App** 的**游戏手柄模块** 实现手机遥控。前进/后退/左转/右转对应手柄上下左右键,代码简洁,适合入门者快速上手机器人底盘搭建与无线控制。
硬件清单
- Arduino UNO ×1
- L293D 电机驱动板/模块 ×1 — 双 H 桥,驱动 4 电机
- 直流减速电机 (TT 马达) ×4
- 车轮 + 电机固定座 ×4
- 底盘板 ×1
- HC-05 蓝牙模块 ×1
- 面包板、跳线、DC 端子座、电池盒 (2×18650 或 7.4V 锂电) 若干
软件工具
- Arduino IDE
- Dabble 库 —
Sketch → Include Library → Manage Libraries搜索安装 - STEMpedia Dabble App — Google Play 下载安装
机械组装
- 底盘倒置,M3 螺丝固定 4 个电机座
- 电机用 M2 螺丝锁在电机座上
- 车轮压入电机输出轴
- 翻转底盘,机械部分完成
电路接线
| 信号 | Arduino 引脚 | 备注 |
|---|---|---|
| 左电机使能 (EN1) | D10 (PWM) | L293D 1,9 脚 |
| 左电机方向 1 | D4 | L293D 2,7 脚 |
| 左电机方向 2 | D5 | |
| 右电机使能 (EN2) | D11 (PWM) | L293D 15,10 脚 |
| 右电机方向 1 | D6 | |
| 右电机方向 2 | D7 | |
| HC-05 TX | D2 (SoftwareSerial RX) | 需分压至 3.3V |
| HC-05 RX | D3 (SoftwareSerial TX) | |
| 电机/驱动板 VCC | 外接电池正极 | 7.4V 接 L293D Vs |
| 所有 GND | 共地 | Arduino GND、电池负极、驱动板 GND |
左两电机并联接 M1 输出,右两电机并联接 M2 输出,实现差速转向。
固件核心代码
#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
#include <Dabble.h>
#define motor1_en 10
#define motor2_en 11
#define motor1_dir1 4
#define motor1_dir2 5
#define motor2_dir1 6
#define motor2_dir2 7
void setup() {
Serial.begin(9600);
Dabble.begin(38400); // UNO 限制波特率 ≤ 38400
for (int i=4; i<8; i++) pinMode(i, OUTPUT);
pinMode(motor1_en, OUTPUT);
pinMode(motor2_en, OUTPUT);
}
void loop() {
Dabble.processInput();
if (GamePad.isUpPressed()) forward();
else if (GamePad.isDownPressed()) backward();
else if (GamePad.isLeftPressed()) left();
else if (GamePad.isRightPressed()) right();
else Stop();
}
void forward() { setMotors(255, HIGH, LOW, 255, HIGH, LOW); }
void backward() { setMotors(255, LOW, HIGH, 255, LOW, HIGH); }
void left() { setMotors(255, LOW, HIGH, 255, HIGH, LOW); }
void right() { setMotors(255, HIGH, LOW, 255, LOW, HIGH); }
void Stop() { setMotors(0, LOW, LOW, 0, LOW, LOW); }
void setMotors(int sp1, int d1a, int d1b, int sp2, int d2a, int d2b) {
analogWrite(motor1_en, sp1);
digitalWrite(motor1_dir1, d1a);
digitalWrite(motor1_dir2, d1b);
analogWrite(motor2_en, sp2);
digitalWrite(motor2_dir1, d2a);
digitalWrite(motor2_dir2, d2b);
}
Dabble App 使用
- 打开 App,点击右上角蓝牙图标,配对并连接 HC-05
- 选择 **Gamepad** 模块 → **Digital 模式**
- 左侧方向键:↑ 前进、↓ 后退、← 左转、→ 右转
- 松开按键自动停车
常见问题与优化
- 电机抖动/不转:检查电池电量、L293D 供电引脚 (Vs) 是否接电池而非 5V
- 蓝牙频繁断连:HC-05 供电稳定,加 100µF 电解电容滤波;UNO 硬件串口被占用上传代码时需拔掉蓝牙
- 转向半径大:调整左右电机 PWM 差值,或改用编码器闭环控速
- 扩展:加超声波避障、循迹模块、舵机云台+摄像头、ESP32 替代 UNO+HC-05 实现 WiFi 远程控制
项目资源
完整 robot.ino、Dabble 库下载链接、Fritzing 原理图均可在项目页面获取。
制造工艺
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- Arduino与树莓派构建互联网控制视频流机器人完整指南
- 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
- Arduino Mega 按键 PWM 调光:三阶段渐变 LED 实战教程
- Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
- 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
- Arduino UNO 自制循迹小车:从零构建自主巡线机器人
- Arduino Mega 驱动 Wii Nunchuk 控制 6 自由度机械臂
- Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
- MobBob:3D 打印智能机器人,Android 手机无缝控制,语音视觉一体
- PiBot:Arduino驱动的88键钢琴机器人,精准演奏MIDI乐曲
- 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动