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

在家用 Arduino 和 MPU-6050 构建手势控制机器人

组件与材料

组件数量
Arduino UNO1
Arduino Nano R31
HC-05 蓝牙模块2
MPU-6050 三轴加速度计/陀螺仪1
12V 直流减速电机2
橡胶轮子1 套
L293D 双 H 桥驱动板1
9V 电池2

所需工具

应用与服务

项目原理

利用 MPU-6050 的 DMP (数字运动处理器) 解算姿态角 (Yaw/Pitch/Roll),根据 Pitch 和 Roll 角度阈值判断手势方向 (前进/后退/左转/右转/停止),通过两个 HC-05 蓝牙模块透传指令控制小车电机。

关键点:蓝牙模块配对。出厂默认从机模式,需配置一主一从并绑定地址,实现上电自动连接。

蓝牙模块配置步骤

  1. 配置从机 (接收端,装小车):
    • 接线:模块 TX→Uno D10, RX→D11 (软串口),按住模块按键上电进入 AT 模式 (LED 慢闪 2s/次)。
    • 烧录 configure 代码 (软串口透传),串口监视器 9600 波特率、NL+CR。
    • 发送指令序列:AT+ORGL (恢复出厂) → AT+RMAAD (清除配对) → AT+UART=38400,0,0 → AT+ROLE=0 (从机) → AT+ADDR? 记下地址 (如 98d3:31:fc1234)。
  2. 配置主机 (发射端,装手持遥控):
    • 同样进入 AT 模式,发送:AT+ORGL → AT+RMAAD → AT+UART=38400,0,0 → AT+ROLE=1 (主机) → AT+CMODE=0 (单设备连接) → AT+BIND="从机地址" 绑定。

硬件连接

代码

小车端代码

// Gesture_controled_Robot__car_unit_
int lm1=8, lm2=9, rm1=10, rm2=11;
char d=0;
void setup() {
  pinMode(lm1,OUTPUT); pinMode(lm2,OUTPUT);
  pinMode(rm1,OUTPUT); pinMode(rm2,OUTPUT);
  Serial.begin(38400);
  sTOP();
}
void loop() {
  if(Serial.available()>0) {
    d=Serial.read();
    if(d=='F') ForWard();
    else if(d=='B') BackWard();
    else if(d=='L') Left();
    else if(d=='R') Right();
    else if(d=='S') sTOP();
  }
}
void ForWard()  { digitalWrite(lm1,HIGH); digitalWrite(lm2,LOW); digitalWrite(rm1,HIGH); digitalWrite(rm2,LOW); }
void BackWard() { digitalWrite(lm1,LOW); digitalWrite(lm2,HIGH); digitalWrite(rm1,LOW); digitalWrite(rm2,HIGH); }
void Left()     { digitalWrite(lm1,LOW); digitalWrite(lm2,HIGH); digitalWrite(rm1,HIGH); digitalWrite(rm2,LOW); }
void Right()    { digitalWrite(lm1,HIGH); digitalWrite(lm2,LOW); digitalWrite(rm1,LOW); digitalWrite(rm2,HIGH); }
void sTOP()     { digitalWrite(lm1,LOW); digitalWrite(lm2,LOW); digitalWrite(rm1,LOW); digitalWrite(rm2,LOW); }

遥控端代码 (核心逻辑)

// 使用 I2Cdevlib + MPU6050_6Axis_MotionApps20.h
// 初始化 DMP,设置陀螺零偏,开启中断
// 主循环读取 FIFO,解算 ypr[3] (yaw, pitch, roll)
if ((ypr[1]*180/M_PI) <= -25) BTSerial.write('F'); // 前倾 >25° 前进
else if ((ypr[1]*180/M_PI) >= 25) BTSerial.write('B'); // 后倾 >25° 后退
else if ((ypr[2]*180/M_PI) <= -25) BTSerial.write('L'); // 左倾 >25° 左转
else if ((ypr[2]*180/M_PI) >= 20) BTSerial.write('R'); // 右倾 >20° 右转
else BTSerial.write('S'); // 平稳停止
// 按键按下切换 x 运行/暂停

原理图

在家用 Arduino 和 MPU-6050 构建手势控制机器人

PCB 订购链接:PCBWay 项目分享

制造工艺

  1. 树莓派与Arduino协作构建机器人:分步指南
  2. 自制家用作业书写机:Arduino + GRBL 控制的笔绘仪
  3. 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
  4. Arduino UNO 自制循迹小车:从零构建自主巡线机器人
  5. 自制可拳击的可编程键盘按钮:基于 Arduino 与压电元件的分步指南
  6. 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
  7. Arduino 合成乐音:从零实现 88 键钢琴全音域
  8. 基于 Arduino 和超声波传感器的自动门控制系统
  9. 通过专用 Android App 蓝牙控制 Arduino 机械臂
  10. 蓝牙遥控 Arduino 小车完整 DIY 指南
  11. 适用于 Arduino 项目的智能室内导航机器人套件
  12. DIY 迷你示波器:基于 Arduino Nano 与 OLED 显示屏的逐步教程