Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Робот-машина под управлением G-сенсора смартфона через Bluetooth и Arduino

Компоненты и материалы

Arduino UNO ×1
Bluetooth-модуль HC-06 (или HC-05) ×1
Драйвер двигателей L298N ×1
Платформа робота-машины (двухколёсная) ×1

Приложения и сервисы

О проекте

Робот-машина под управлением G-сенсора смартфона через Bluetooth и Arduino

Шаг 1: Сборка робота

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

Робот-машина под управлением G-сенсора смартфона через Bluetooth и Arduino

Шаг 2: Создание интерфейса в RemoteXY

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

Робот-машина под управлением G-сенсора смартфона через Bluetooth и Arduino

Шаг 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);
}

Схема подключения

Робот-машина под управлением G-сенсора смартфона через Bluetooth и Arduino

Производственный процесс

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