Робот-машина под управлением G-сенсора смартфона через Bluetooth и Arduino
Компоненты и материалы
| Arduino UNO | ×1 |
| Bluetooth-модуль HC-06 (или HC-05) | ×1 |
| Драйвер двигателей L298N | ×1 |
| Платформа робота-машины (двухколёсная) | ×1 |
Приложения и сервисы
- RemoteXY (веб-редактор и мобильное приложение)
О проекте

Шаг 1: Сборка робота
Соберите робота на любой двухколёсной платформе. Схема подключения электроники показана ниже. Нужен Arduino UNO (или совместимая плата), Bluetooth-модуль HC-05/06, драйвер двигателей L298N и батарея питания. Редукторы с двигателями устанавливаются на платформу и приводят колёса в движение.

Шаг 2: Создание интерфейса в RemoteXY
Перейдите на remotexy.com/en/editor/ и создайте графический интерфейс управления. Добавьте элемент управления «Joystick» с типом «G-sensor» (управление наклоном телефона). Пример интерфейса на скриншоте. Нажмите «Get source code».

Шаг 3: Работа с кодом в Arduino IDE
Скачайте исходный код GUI и откройте в Arduino IDE. Для компиляции нужна библиотека RemoteXY.h — скачайте по ссылке remotexy.com/en/library/. Можно уже загрузить код в Arduino и подключиться мобильным приложением, но это пока только «пустой» каркас — нужно добавить логику управления моторами.
Шаг 4: Добавление логики управления моторами
Добавьте функционал управления роботом через структуру RemoteXY, которая содержит все переменные элементов интерфейса. Готовый код приведён ниже — скомпилируйте и загрузите в Arduino.
Шаг 5: Установка мобильного приложения и запуск
Установите приложение RemoteXY с remotexy.com/en/download/. При запуске нажмите кнопку Bluetooth, выберите имя вашего модуля (обычно «INVOR» или «HC-06» для HC-05/06). Всё работает!
Код (C/C++)
/////////////////////////////////////////////
// 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
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;
/////////////////////////////////////////////
// END RemoteXY include
/////////////////////////////////////////////
#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);
} 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();
digitalWrite(PIN_LED, RemoteXY.switch_1 ? HIGH : LOW);
Wheel(RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
Wheel(LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
}
Схема подключения

Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство
- Создание DTMF-декодера на Arduino без внешних микросхем
- Создание потрясающей системы Ambilight для монитора на Arduino
- SERENA: Пользовательская система сигнализации на Arduino Mega 2560 с TFT Touchscreen
- Умный вольтметр на Arduino и смартфоне — простое DIY-проект
- Android-управляемая робот-платформа на Raspberry Pi и Motor Shield
- Превращаем старую радиоуправляемую машину в джойстик-контролируемый болид на Arduino
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- MobBob: Самостоятельная сборка Arduino-робота под управлением Android-смартфона