STM32蓝牙轮式机器人_手机APP远程控制

手机 APP 遥控一台小车在现在应该挺常见了,今天为大家分享一个基于 STM32F103 的蓝牙轮式机器人项目!
通过蓝牙通信实现手机远程控制,让你的创客梦想轻松实现。

设备.jpg

1. 核心硬件清单

  • STM32F103C8T6 微控制器(蓝丸板) - 核心处理单元
  • L298N 电机驱动模块 - 控制两个 DC 齿轮电机
  • JDY-31 蓝牙通信模块 - 负责与手机端通信
  • 2 个直流减速电机
  • 18650 锂电池组 - 提供足够的驱动能力
  • 杜邦线及连接器

Block Diagram.jpg

图示

接线

连接图

2. 工作原理

  1. 手机蓝牙 APP 发送指令 → 蓝牙模块接收控制命令(前进/后退/转向/停止)
  2. STM32 解析指令 → 微控制器通过串口读取蓝牙数据并解析动作类型
  3. 驱动电机执行 → L298N 驱动器根据指令控制两个轮子的转速和方向

2.1. 控制逻辑

  • 前进/后退:两轮同向转动
  • 左转/右转:两轮差速转动
  • 停止:断开电机信号

注:手机蓝牙连接方式可点击"阅读原文"查阅。

3. 软件架构

使用 Arduino IDE 作为开发环境,C/C++ 编程实现控制算法,实时响应蓝牙指令,确保操控流畅。

3.1. 通信协议

  • 使用 UART 硬件串口(9600 波特率)
  • 单字符指令系统:F/B/L/R/S 对应不同动作

3.2. 控制逻辑

  • 实时响应蓝牙指令,无延迟控制
  • PWM 调速实现电机速度控制
  • 差速转向算法实现灵活转向

3.3. 硬件接口

  • L298N 驱动器的 IN1-IN4 控制电机方向
  • ENA/ENB 引脚通过 PWM 控制电机速度
  • 数字 IO 口控制,模拟输出调速

3.4. 主程序初始化

// 硬件初始化
void setup() {
  Serial.begin(9600);           // 蓝牙串口通信初始化
  // 电机驱动引脚配置
  pinMode(motorAPin1, OUTPUT);  // 左电机正转
  pinMode(motorAPin2, OUTPUT);  // 左电机反转
  pinMode(motorBPin1, OUTPUT);  // 右电机正转
  pinMode(motorBPin2, OUTPUT);  // 右电机反转
  pinMode(enableA, OUTPUT);     // 左电机使能
  pinMode(enableB, OUTPUT);     // 右电机使能
}

3.5. 蓝牙指令接收与解析

void loop() {
  if (Serial.available()) {
    char command = Serial.read();  // 读取蓝牙指令
    switch(command) {
      case 'F': moveForward(); break;   // 前进
      case 'B': moveBackward(); break;  // 后退
      case 'L': turnLeft(); break;      // 左转
      case 'R': turnRight(); break;     // 右转
      case 'S': stopMotors(); break;    // 停止
    }
  }
}

3.6. 电机控制核心函数

// 前进控制
void moveForward() {
  digitalWrite(motorAPin1, HIGH);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, HIGH);
  digitalWrite(motorBPin2, LOW);
  analogWrite(enableA, 255);   // PWM调速
  analogWrite(enableB, 255);
}

// 转向控制(差速转向)
void turnLeft() {
  digitalWrite(motorAPin1, LOW);   // 左轮停止或反转
  digitalWrite(motorAPin2, HIGH);
  digitalWrite(motorBPin1, HIGH);  // 右轮前进
  digitalWrite(motorBPin2, LOW);
  analogWrite(enableA, 200);
  analogWrite(enableB, 255);
}

// 停止控制
void stopMotors() {
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, LOW);
}

4. 实际应用场景

  • 教育教学:适合电子工程、嵌入式系统课程实验
  • 创客项目:DIY 智能小车的理想起点
  • 竞赛培训:机器人大赛的基础平台
  • 产品原型:商业化产品的概念验证

5. 扩展开发建议

  • 添加超声波避障传感器
  • 集成摄像头实现图传功能
  • 支持 WiFi 远程控制
  • 增加语音识别控制

6. 总结

相比市面上动辄几百元的遥控车,这个 DIY 方案不仅成本低廉,更重要的是完全开源,可以根据需要自由定制功能。
对于学习嵌入式开发蓝牙通信的朋友来说,是个绝佳的实战项目。