Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
系统架构
三层协作架构:
- Android 端:Cordova 应用读取加速度计数据,AJAX 发送至树莓派 Web 服务器
- 树莓派 2B (Windows 10 IoT Core):Web 服务器接收数据,通过 I2C 转发指令至 Arduino
- Arduino 101 + DK 电机扩展板:解析 I2C 指令,驱动两路直流电机(速度/方向)
硬件清单
- Raspberry Pi 2 Model B + 官方 WiFi 适配器 + 5V 移动电源
- Arduino 101 × 1
- DK Electronic Motor Shield (AFMotor 库兼容) × 1
- Android 手机(含加速度计)
- 底盘、直流电机、轮子等机械件
软件工具链
- Microsoft Visual Studio 2015 (Cordova / C#)
- Arduino IDE
- Windows 10 IoT Core Dashboard
关键技术实现
1. Arduino I2C 从机协议
- 地址
0x40,注册onReceive/onRequest回调 - 单字节指令编码:
X 轴(前进/后退/速度):100-254 映射
Y 轴(转向/速度):0-99 映射
中间区间(如 145-153, 45-53)为停止/死区 - 电机 3/4 分别控制速度与转向,
setSpeed()+run(FORWARD/BACKWARD/RELEASE) - Arduino 从树莓派 5V 引脚取电,无需独立供电
2. 树莓派 Web 服务器 (C#)
- 监听 HTTP POST,解析加速度计 X/Y 值
- 映射为 Arduino 协议字节,通过
I2CDevice.Write()发送 - 代码见项目附件
Windows IOT Web Server
3. Android 遥控应用 (Cordova/C#)
- 定时读取
navigator.accelerometer - AJAX POST 至树莓派 IP,含 X/Y 数值
- 代码见附件
Android Remote Controller(仅供下载)
接线参考
I2C 连接:树莓派 GPIO 2(SDA)/3(SCL) ↔ Arduino A4(SDA)/A5(SCL),共地。电机扩展板堆叠 Arduino 101,电机接 M3/M4 端子。
项目局限与改进方向
- Windows 10 IoT Core 已停止维护,建议迁移至 Linux + Node.js/Python Web 服务
- I2C 通信距离短,适合一体化机器人;远程控制可改用 WiFi/蓝牙直连 Arduino
- 加速度计控制非线性,引入 PID 或互补滤波可提升手感
制造工艺
- 树莓派 PIR 运动传感器控制 LED 实战指南
- Bridge Shield扩展板:树莓派与Arduino集成打造智能机器人
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- Arduino与树莓派构建互联网控制视频流机器人完整指南
- 树莓派手势控制机器人:告别按键,挥手即达
- 树莓派WiFi机器人:手机App远程控制实战
- 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
- 基于 Arduino Uno 的人体检测救援机器人:传感器集成分步指南
- DIY 蓝牙控制 Arduino 间谍小车
- 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
- 通过树莓派用 Alexa 控制 LED - 简单分步指南
- MobBob:3D 打印智能机器人,Android 手机无缝控制,语音视觉一体