1. 项目概述与材料清单
想要亲手制作一台能用手机蓝牙遥控的小车吗?这个Arduino蓝牙小车项目非常适合刚接触硬件的创客爱好者。我去年带学生做这个项目时,发现它不仅能学习基础电路知识,还能理解无线通信原理。整个项目成本不到200元,周末下午就能完成。
必备材料清单:
- Arduino Uno开发板(兼容版也行)
- L298N电机驱动模块(建议买带散热片的版本)
- HC-05蓝牙模块(注意要买主从一体款)
- 直流减速电机(6V/200转的性价比最高)
- 小车底盘套件(含轮子、亚克力板等)
- 18650锂电池两节(带电池盒更安全)
- 杜邦线若干(建议买20cm长的公对公、公对母各10条)
我第一次做这个项目时,因为贪便宜买了杂牌电机驱动模块,结果调试时冒烟烧毁了。后来换成正规的L298N模块就再没出过问题。这里特别提醒:电机驱动一定要选带光耦隔离的,能有效保护Arduino主板。
2. 硬件组装与电路连接
2.1 机械结构组装
先从小车底盘开始组装。把亚克力板平铺在桌面,按照说明书用螺丝固定电机支架。这里有个小技巧:在电机轴和轮毂接触处滴一滴502胶水,等30秒再套上轮子,能防止后期跑动时轮子打滑。记得给电机接线留出足够长度,我建议预留15cm左右。
2.2 电路接线详解
核心接线原则:先接电源再连信号线。按照这个顺序操作能避免短路风险:
电源部分:
- 锂电池正极接L298N的+12V输入
- 负极接GND(共地很重要!)
- L298N的+5V输出接Arduino的VIN引脚
电机驱动:
- 左电机接OUT1和OUT2
- 右电机接OUT3和OUT4
- 用万用表测试电机正反转,如果方向反了调换接线即可
蓝牙模块:
- HC-05的VCC接Arduino 5V
- GND接GND
- TX接Arduino的RX(注意是交叉连接)
- RX接Arduino的TX
实测中发现,如果蓝牙模块接反了虽然不会烧毁,但会导致串口通信失败。有个判断技巧:正常工作时HC-05上的LED会间隔闪烁,如果常亮或完全不亮就要检查接线。
3. Arduino程序编写
3.1 基础控制逻辑
先定义电机控制引脚,建议使用PWM引脚(带~标记的)以便后期调速:
// 电机引脚定义 #define ENA 5 // 左电机使能 #define IN1 6 // 左电机方向1 #define IN2 7 // 左电机方向2 #define ENB 10 // 右电机使能 #define IN3 8 // 右电机方向1 #define IN4 9 // 右电机方向2 void setup() { // 所有电机控制引脚设为输出 pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); // ...其他引脚类似设置 Serial.begin(9600); // 蓝牙串口初始化 }3.2 运动函数封装
把常见动作封装成函数会大幅提高代码可读性。下面是经过优化的运动函数:
void moveForward(int speed) { analogWrite(ENA, speed); analogWrite(ENB, speed); digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void turnLeft(int speed) { analogWrite(ENA, speed); analogWrite(ENB, speed); digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); // 左轮反转 digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); // 右轮正转 }3.3 蓝牙指令解析
在loop()中添加蓝牙数据处理逻辑。建议使用switch语句提高效率:
void loop() { if(Serial.available()) { char cmd = Serial.read(); switch(cmd) { case 'F': moveForward(200); break; case 'B': moveBackward(200); break; case 'L': turnLeft(150); break; case 'R': turnRight(150); break; case 'S': stopMotors(); break; default: break; } } }调试时可以用串口监视器发送测试指令,输入F/B/L/R/S看小车反应。如果出现电机抖动,可能是PWM频率问题,可以在setup()里加上analogWriteFrequency(1000)调整。
4. 手机APP配置与调试
4.1 蓝牙配对连接
给手机安装"蓝牙串口助手"APP(推荐"Serial Bluetooth Terminal")。打开HC-05电源,在手机蓝牙设置里搜索并配对,默认密码通常是1234。配对成功后,APP里选择该设备建立连接。
有个常见问题:部分手机会自动断开蓝牙连接。解决方法是在APP设置里关闭"优化电池用量"选项,保持后台运行。
4.2 自定义控制界面
高级玩法是使用MIT App Inventor自己开发控制APP。我做过一个带摇杆控制的版本,核心逻辑是通过摇杆坐标生成方向指令:
- 水平摇杆X坐标>0时发送'R'
- X坐标<0时发送'L'
- 垂直摇杆Y坐标>0时发送'F'
- Y坐标<0时发送'B'
这样操作起来比按键更流畅,适合需要精准控制的场景。APP源码可以在我GitHub找到,链接在文末。
5. 进阶优化与问题排查
5.1 电源系统改进
基础版用两节18650电池供电,但连续运行20分钟后会出现电压下降导致电机无力。我的改进方案:
- 增加一块稳压模块,单独给Arduino供电
- 电机电源改用7.4V航模电池
- 在L298N的电源输入端加装470μF电容滤波
实测改进后小车动力提升40%,连续工作1小时以上不衰减。
5.2 常见故障排查
问题1:蓝牙连接不稳定
- 检查天线是否完好
- 确保模块与手机距离<10米
- 避开WiFi路由器等2.4G设备干扰
问题2:电机单边无力
- 用万用表测量电机两端电压
- 检查对应驱动通道的二极管是否损坏
- 尝试调换电机线测试是否为电机本身问题
问题3:小车跑偏
- 在代码中为左右电机设置不同的PWM补偿值
- 检查轮胎是否打滑
- 在平整地面重新校准
最后分享一个实用技巧:在车头加装超声波模块后,可以扩展自动避障功能。当检测到前方障碍物时自动刹车,结合蓝牙遥控就变成半自动小车了。相关代码和接线图我已经整理成完整教程,需要的朋友可以留言索取。