智能手机重力感应控制机器人小车:Arduino + 蓝牙 + RemoteXY
组件与物料清单
| 组件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 主控板 |
| HC-06 蓝牙模块 | 1 | 或HC-05,波特率9600 |
| L298N 电机驱动板 | 1 | 驱动两路直流减速电机 |
| 两轮差速底盘 | 1 | 含电机、车轮、万向轮、电池盒 |
软件与服务
- RemoteXY - 可视化生成手机APP界面与Arduino代码的在线平台
制作步骤
步骤1:硬件组装与接线
使用任意两轮差速底盘搭建车体。电子元件接线如下图:

核心连接:
- HC-06 TX → Arduino D2 (SoftwareSerial RX)
- HC-06 RX → Arduino D3 (SoftwareSerial TX) *需分压至3.3V*
- L298N IN1-IN4 → Arduino D4-D7
- L298N ENA/ENB → Arduino D9/D10 (PWM调速)
- 电机接L298N OUT1-OUT4
- 电池供电L298N 12V口,5V输出接Arduino VIN
步骤2:在RemoteXY编辑器创建界面
访问 RemoteXY编辑器,拖拽控件:
- 添加摇杆,勾选"G-sensor"启用重力感应控制
- 添加开关控制车灯/蜂鸣器等
- 点击"Get source code"生成代码

步骤3:导入Arduino IDE并添加库
下载生成的.ino文件,在Arduino IDE打开。需安装RemoteXY.h库:
https://remotexy.com/en/library/
此时可上传代码,配合手机APP测试蓝牙连接,但电机尚未驱动。
步骤4:添加电机驱动逻辑
在生成的框架代码中补充电机控制函数,将摇杆X/Y映射为左右电机差速转向。完整代码见下方。
步骤5:手机APP连接测试
- 安装RemoteXY APP:下载链接
- 打开APP,点击蓝牙连接,选择模块名(通常为"HC-06"或"INVOR")
- 倾斜手机,小车随重力感应移动!
完整Arduino代码
/////////////////////////////////////////////
// RemoteXY include library
/////////////////////////////////////////////
#define REMOTEXY_MODE__SOFTWARESERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600
// RemoteXY配置数据(由编辑器自动生成)
unsigned char RemoteXY_CONF[] = {
3,0,23,0,1,5,5,15,41,11,
43,43,1,2,0,6,5,27,11,5,
79,78,0,79,70,70,0
};
struct {
signed char joystick_1_x; // -100..100
signed char joystick_1_y; // -100..100
unsigned char switch_1; // 1=ON, 0=OFF
unsigned char connect_flag;
} RemoteXY;
/////////////////////////////////////////////
// 电机引脚定义
/////////////////////////////////////////////
#define PIN_MOTOR_RIGHT_UP 7
#define PIN_MOTOR_RIGHT_DN 6
#define PIN_MOTOR_RIGHT_SPEED 10
#define PIN_MOTOR_LEFT_UP 5
#define PIN_MOTOR_LEFT_DN 4
#define PIN_MOTOR_LEFT_SPEED 9
#define PIN_LED 13
unsigned char RightMotor[3] = {PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN, PIN_MOTOR_RIGHT_SPEED};
unsigned char LeftMotor[3] = {PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN, PIN_MOTOR_LEFT_SPEED};
void Wheel(unsigned char *motor, int v) {
if (v > 100) v = 100;
if (v < -100) v = -100;
if (v > 0) {
digitalWrite(motor[0], HIGH);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], v * 2.55); // 0-100映射到0-255
} else if (v < 0) {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], HIGH);
analogWrite(motor[2], (-v) * 2.55);
} else {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], 0);
}
}
void setup() {
pinMode(PIN_MOTOR_RIGHT_UP, OUTPUT);
pinMode(PIN_MOTOR_RIGHT_DN, OUTPUT);
pinMode(PIN_MOTOR_LEFT_UP, OUTPUT);
pinMode(PIN_MOTOR_LEFT_DN, OUTPUT);
pinMode(PIN_LED, OUTPUT);
RemoteXY_Init();
}
void loop() {
RemoteXY_Handler();
// LED指示连接状态
digitalWrite(PIN_LED, RemoteXY.switch_1 ? HIGH : LOW);
// 差速转向算法:Y轴前进后退,X轴左右转向
// 左电机 = Y + X,右电机 = Y - X
Wheel(RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
Wheel(LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
}
原理图

进阶玩法建议
- 加装超声波避障,自动防撞
- 接入MPU6050实现小车自平衡
- 用ESP32替代UNO+HC-06,支持WiFi/BLE双模控制
- 设计PCB集成电机驱动,告别飞线
制造工艺
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
- 仅用 Arduino 构建 DTMF 解码器 – 无需额外 IC
- 用 Arduino 打造绚丽显示器 Ambilight 系统
- SERENA:基于 Arduino Mega 2560 与 TFT 触摸屏的多级密码报警系统
- Arduino 与智能手机打造智能电压表——简单易做的 DIY 项目
- Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
- 废旧遥控车改装:Arduino + USB Host Shield 实现 Xbox 手柄无线控制
- Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
- MobBob:3D 打印智能机器人,Android 手机无缝控制,语音视觉一体
- Python 3 控制 Arduino UNO - 串口通信点亮内置 LED 入门教程
- 使用 Arduino Nano 和 RDA8057M 制作紧凑型 FM 收音机