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

手势控制机器人:ADXL335 加速度计 + 433MHz 无线遥控

项目概述

本项目实现一款基于手势识别的四轮差速驱动机器人。佩戴在手腕上的 ADXL335 三轴加速度计捕捉手掌倾斜姿态,Arduino Nano 采集模拟量并映射为前进/后退/左转/右转四种指令,经 HT12E 编码、433MHz RF 发射模块无线传输;接收端 Arduino Uno 经 HT12D 解码,驱动 Motor Shield 控制四路直流电机。通讯距离 ~10 米,适合入门级无线机器人教学。

系统架构

┌─────────────────────┐     433MHz RF      ┌─────────────────────┐
│  发射端 (手腕)       │ ─────────────────▶ │  接收端 (车身)       │
│  Arduino Nano       │                    │  Arduino UNO        │
│  ADXL335 (A0/A1/A2) │                    │  Motor Shield       │
│  HT12E 编码器        │                    │  HT12D 解码器       │
│  RF TX (D12)        │                    │  RF RX (D11)        │
└─────────────────────┘                    └─────────────────────┘

核心组件清单

模块数量关键参数
Arduino UNO1主控接收端
Arduino Nano1发射端,体积小适合穿戴
ADXL335 加速度计1±3g, 模拟输出, 3.3V 供电
RF 433MHz 收发对1套ASK 调制, 10m 范围
HT12E / HT12D各14数据位+8地址位, 地址全接地
Adafruit Motor Shield v11L293D 驱动, 4路 DC 电机
TT 减速电机 + 车轮4左右各两轮并联
9V 电池盒2-3并联供电 Motor Shield

发射端详解 (Arduino Nano)

ADXL335 接线

X轴 → A0
Y轴 → A1 (原文 A3 为笔误,应为 A1)
Z轴 → A2 (可选,本项目未用)
VCC → 3.3V (关键!5V 会损坏芯片)
GND → GND

HT12E 编码器接线

数据位映射

姿态判定阈值 (需实测标定)

// 示例阈值,需根据实测调整
const int X_CENTER = 512;  // 水平静止约 1.65V → 338
const int Y_CENTER = 512;
const int DEAD_ZONE = 50;  // 死区

int x = analogRead(A0);
int y = analogRead(A1);

if (y > Y_CENTER + DEAD_ZONE)      cmd = FORWARD;
else if (y < Y_CENTER - DEAD_ZONE) cmd = BACKWARD;
else if (x > X_CENTER + DEAD_ZONE) cmd = RIGHT;
else if (x < X_CENTER - DEAD_ZONE) cmd = LEFT;
else                               cmd = STOP;

接收端详解 (Arduino UNO + Motor Shield)

HT12D 解码器接线

Motor Shield 电机接线

左右两侧电机并联:左轮 → M3, 右轮 → M4 (或 M1/M2),库使用 AFMotor。

核心控制逻辑

#include 
AF_DCMotor motorL(3), motorR(4);

void loop() {
  bool fwd = digitalRead(A0);
  bool rev = digitalRead(A1);
  bool rig = digitalRead(A2);
  bool lef = digitalRead(A3);

  if (fwd) { motorL.run(FORWARD); motorR.run(FORWARD); }
  else if (rev) { motorL.run(BACKWARD); motorR.run(BACKWARD); }
  else if (rig) { motorL.run(FORWARD); motorR.run(RELEASE); }
  else if (lef) { motorL.run(RELEASE); motorR.run(FORWARD); }
  else { motorL.run(RELEASE); motorR.run(RELEASE); }
  delay(100);
}

供电设计要点

常见问题与调试

车不动 / 单边转
检查 Motor Shield 跳线帽 (PWR EXT)、电机接线、电池电量;串口打印 A0–A3 确认接收端解码正确。
手势识别混乱
串口绘图器观察 X/Y 原始波形,调整 CENTER 与 DEAD_ZONE;加软件滤波 (滑动平均 5 次)。
RF 通讯不稳
缩短天线、避开 WiFi/蓝牙干扰、发射端靠近接收端测试;HT12E TE 脚改为 MCU 控制,仅变化时发射,降低占空比。
电机转向反
交换电机正负极或代码中 FORWARD/BACKWARD 对调。

进阶改进方向

制造工艺

  1. 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
  2. Arduino 电源控制中心:N-FET/P-FET/继电器/RTC 多功能扩展板
  3. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  4. Arduino UNO 自制循迹小车:从零构建自主巡线机器人
  5. Arduino 串口简易计算器:两数四则运算演示
  6. DIY Arduino 加湿器控制器:继电器安全控制高压电路
  7. Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
  8. 自制便携式视觉暂留显示器:Arduino UNO 与 ATtiny85
  9. 使用 Arduino Uno 和蓝牙实现遥控小车:分步指南
  10. 通过专用 Android App 蓝牙控制 Arduino 机械臂
  11. Arduino 激光雕刻机:GRBL 固件 + Universal Gcode Sender 全流程实战
  12. Arduino Uno 控制 25kHz 4 针 PWM 风扇 - 硬件、代码与测试

Nano 引脚HT12E 数据位指令
D9D10前进
D10D11后退
D11D12左转
D12D13右转