亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

蓝牙遥控避障机器人:打造智能远程操控小车

零部件与物料

零部件 数量 备注
Arduino Nano R3 1 主控板
L298N 双 H 桥电机驱动板 1 驱动两路直流电机
HC-SR04 超声波测距模块 1 前向避障检测
HC-05 蓝牙模块 1 手机遥控通信
RGB 共阳 LED 1 状态指示
双向逻辑电平转换模块 1 HC-05 3.3V 与 Nano 5V 兼容
330Ω 电阻 1 LED 限流
面包板 1 原型搭建
面包板电源模块 5V/3.3V 1 为模块供电
12V 直流减速电机 2 左右驱动轮
公母杜邦线 若干 连接各模块

软件与在线服务

项目简介

作者在新冠封控期间重拾电子制作爱好,历经 12 年间歇后完成首个 Arduino 项目:一款通过手机蓝牙遥控、具备超声波避障功能的双轮差速驱动小车。项目展示了从电路搭建、代码编写到实测调试的完整过程。

蓝牙遥控避障机器人:打造智能远程操控小车

系统架构

蓝牙遥控避障机器人:打造智能远程操控小车
Arduino BlueControl 遥控界面

关键电路细节

蓝牙遥控避障机器人:打造智能远程操控小车

完整代码

/* 蓝牙遥控避障机器人
 * 作者: Alok Talukdar
 * 日期: 2020.05.09
 */
#include <SoftwareSerial.h>

// L298N 引脚定义
#define IN1 5   // 右电机方向
#define IN2 4
#define IN3 3   // 左电机方向
#define IN4 2
#define ENA 9   // 右电机 PWM
#define ENB 10  // 左电机 PWM

// RGB LED(共阳,低电平点亮)
#define RED_LED 8
#define GREEN_LED A0
#define BLUE_LED 11

// HC-SR04
const int TRIG_PIN = 6;
const int ECHO_PIN = 7;

// HC-05 蓝牙(软串口)
SoftwareSerial btSerial(12, 13); // RX, TX

String btData;
int btCmd = 0;
float duration, distance;

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  btSerial.begin(9600);

  pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
  pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT);

  pinMode(RED_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(BLUE_LED, OUTPUT);

  // 共阳 LED 全灭(高电平)
  analogWrite(RED_LED, 255);
  digitalWrite(GREEN_LED, HIGH);
  digitalWrite(BLUE_LED, HIGH);

  // 电机初始停止
  stopRobot();
}

void loop() {
  // 读取蓝牙指令
  while (btSerial.available()) {
    btData = btSerial.readStringUntil('\n');
  }
  btCmd = btData.toInt();

  switch (btCmd) {
    case 1: forward();  setColor(0, 255, 0); checkDistance(); break; // 前进-绿
    case 2: reverse();  setColor(255, 0, 0); break;                  // 后退-红
    case 3: left();     break;                                       // 左转
    case 4: right();    break;                                       // 右转
    case 5: stopRobot(); setColor(255, 0, 255); break;               // 停止-紫
    default: setColor(255, 255, 255); break;                         // 白-待机
  }
}

// 电机控制函数(带渐变加速)
void forward() {
  for (int i = 0; i <= 100; i++) {
    analogWrite(ENA, i); analogWrite(ENB, i);
    digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);  digitalWrite(IN4, HIGH);
    delay(5);
  }
}

void reverse() {
  for (int i = 0; i <= 100; i++) {
    analogWrite(ENA, i); analogWrite(ENB, i);
    digitalWrite(IN1, LOW);  digitalWrite(IN2, HIGH);
    digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
    delay(5);
  }
}

void left() {
  analogWrite(ENA, 127); analogWrite(ENB, 0);
  digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH); digitalWrite(IN4, HIGH);
}

void right() {
  analogWrite(ENA, 0); analogWrite(ENB, 127);
  digitalWrite(IN1, HIGH); digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);  digitalWrite(IN4, HIGH);
}

void stopRobot() {
  analogWrite(ENA, 0); analogWrite(ENB, 0);
  digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
}

// 超声波测距 + 避障停车
void checkDistance() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  duration = pulseIn(ECHO_PIN, HIGH);
  distance = (duration * 0.0343) / 2;  // cm

  if (distance < 20) {
    stopRobot();
    setColor(255, 0, 255); // 紫色报警
    delay(1000);
  }
  delay(100);
}

// RGB LED 控制(共阳:0=亮, 255=灭)
void setColor(int r, int g, int b) {
  analogWrite(RED_LED, 255 - r);
  analogWrite(GREEN_LED, 255 - g);
  analogWrite(BLUE_LED, 255 - b);
}

应用拓展

该平台可扩展为:家庭巡逻机器人、工厂物流 AGV 原型、室内导航实验平台等。只需在代码中加入路径规划、SLAM 或更多传感器即可。

原理图

蓝牙遥控避障机器人:打造智能远程操控小车
完整电路原理图

制造工艺

  1. 基于树莓派的视觉避障移动机器人
  2. 蓝牙控制树莓派机器人:语音反馈功能构建指南
  3. Arduino与树莓派构建互联网控制视频流机器人完整指南
  4. 树莓派手势控制机器人:告别按键,挥手即达
  5. 树莓派WiFi机器人:手机App远程控制实战
  6. 在树莓派 2 上用 Windows 10 IoT Core 构建语音控制机器人
  7. 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
  8. ROObockey:精准辅助的遥控街头曲棍球机器人
  9. Arduino 强化学习避障小车:Q-Learning 让机器人自主学会“右转”
  10. Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
  11. 以太网远程控制机械臂 — 基于 Arduino 101 与 WIZ750SR
  12. MobBob:3D 打印智能机器人,Android 手机无缝控制,语音视觉一体