Bluetooth rc car arduino скетч

Bluetooth Controlled Car

This is my first Arduino-based, Bluetooth-controlled RC car. It is controlled by a smart phone application.

Dual H-Bridge motor drivers L298

Maker Essentials — Micro-motors & Grippy Wheels

\t Arduino Bluetooth RC Car

Code for Arduino blootooth controlled RC Car

This is the code you will have to upload to your Arduino board.

1char t; 2 3void setup()  4pinMode(13,OUTPUT); //left motors forward 5pinMode(12,OUTPUT); //left motors reverse 6pinMode(11,OUTPUT); //right motors forward 7pinMode(10,OUTPUT); //right motors reverse 8pinMode(9,OUTPUT); //Led 9Serial.begin(9600); 10 11> 12 13void loop()  14if(Serial.available()) 15 t = Serial.read(); 16 Serial.println(t); 17> 18 19if(t == 'F') //move forward(all motors rotate in forward direction) 20 digitalWrite(13,HIGH); 21 digitalWrite(11,HIGH); 22> 23 24else if(t == 'B') //move reverse (all motors rotate in reverse direction) 25 digitalWrite(12,HIGH); 26 digitalWrite(10,HIGH); 27> 28 29else if(t == 'L') //turn right (left side motors rotate in forward direction, right side motors doesn't rotate) 30 digitalWrite(11,HIGH); 31> 32 33else if(t == 'R') //turn left (right side motors rotate in forward direction, left side motors doesn't rotate) 34 digitalWrite(13,HIGH); 35> 36 37else if(t == 'W') //turn led on or off) 38 digitalWrite(9,HIGH); 39> 40else if(t == 'w') 41 digitalWrite(9,LOW); 42> 43 44else if(t == 'S') //STOP (all motors stop) 45 digitalWrite(13,LOW); 46 digitalWrite(12,LOW); 47 digitalWrite(11,LOW); 48 digitalWrite(10,LOW); 49> 50delay(100); 51>

Источник

Ведроид-мобиль — робот на Arduino — Часть 3. Подключаем Bluetooth

arduino робот

В этот раз я опишу процесс подключения к моему роботу «Ведроид-мобиль» модуля Bluetooth JY-MCU и реализую управление через смартфон на Android.

Модернизация Motor Shield

Получилось так, что производители модуля Motor Shield лишили своих покупателей возможности устанавливать поверх своего продукта другой модуль. Видимо им нравится быть сверху или просто зажали нормальную панельку контактов.

arduino робот

Меня этот нюанс совсем не устраивает. Именно поэтому я решил взяться за паяльник и привести Motor Shield к удобному для меня виду.

arduino робот

Аккуратно выдрал родные панельки контактов и выкинул их нафиг.

arduino робот

Установил на их место нормальные.

arduino робот

В таком виде модулем стало пользоваться гораздо удобнее. Теперь я смогу нормально подключить провода от Bluetooth в разъемы, а не припаивать их намертво к контактам на Motor Shield.

Bluetooth модуль JY-MCU для Arduino

arduino робот

Сам Bluetooth модуль JY-MCU довольно миниатюрный. В комплект поставки входит кабель для подключения. Назначение выводов расписано на обратной стороне.

arduino робот

Запитать его можно от источника питания 3,6-6В. Это предоставляет нам возможность подключить его напрямую к Arduino без использования стабилизатора или делителя напряжения.

Код, используемый при подключении к устройству: 1234.

Подключение Bluetooth JY-MCU к Arduino Mega 2560

Подключение довольно простое.

Официальная схема подключения:

  • VCC на JY-MCU подключаем к +5В Arduino
  • GND на JY-MCU подключаем к GND Arduino
  • TXT на JY-MCU подключаем к RX (0) на Arduino
  • RXD на JY-MCU подключаем к TX (1) на Arduino

При таком варианте подключения придется каждый раз отключать питание модуля Bluetooth перед загрузкой скетча. Не забывайте про это.

Меня такой вариант не устраивает, поэтому я решил использовать дискретные порты с поддержкой Serial.

Неофициальная схема подключения:

  • VCC на JY-MCU подключаем к +5В Arduino
  • GND на JY-MCU подключаем к GND Arduino
  • TXT на JY-MCU подключаем к дискретному PIN 50 на Arduino
  • RXD на JY-MCU подключаем к дискретному PIN 51 на Arduino

Вот теперь можно загружать скетчи без отключения питания модуля Bluetooth.

Чтобы закрепить Bluetooth, я решил использовать плату Proto Shield и миниатюрную беспаечную макетную плату. К ней в будущем и буду подключать остальное оборудование, элементы управления и индикации.

arduino робот arduino робот arduino робот

Скетч для управления роботом на Arduino по Bluetooth через смартфон на Android

В своём скетче я реализовал следующие функции:

  • Движение вперед
  • Движение назад
  • Разворот влево
  • Разворот вправо
  • Плавный поворот влево при движении вперед
  • Плавный поворот вправо при движении вперед
  • Плавный поворот влево при движении назад
  • Плавный поворот вправо при движении назад
  • Остановка

В скетче использовал функции, чтобы не дублировать код при схожих событиях.

#include // Подключаем библиотеку для управления двигателями
#include // Подключаем библиотеку для сервоприводов
#include // Подключаем библиотеку для работы с Serial через дискретные порты

//Создаем объекты для двигателей
AF_DCMotor motor1(1); //канал М1 на Motor Shield — задний левый
AF_DCMotor motor2(2); //канал М2 на Motor Shield — задний правый
AF_DCMotor motor3(3); //канал М3 на Motor Shield — передний левый
AF_DCMotor motor4(4); //канал М4 на Motor Shield — передний правый

// Создаем объект для сервопривода
Servo vservo;

SoftwareSerial BTSerial(50, 51); // RX, TX

// Создаем переменную для команд Bluetooth
char vcmd;
// Создаем переменные для запоминания скорости двигателей
int vspdL, vspdR;
/* Создаем переменную, на значение которой будет уменьшаться скорость при плавных поворотах.
Текущая скорость должна быть больше этого значения. В противном случае двигатели со стороны направления поворота просто не будут вращаться */
int vspd = 200;

void setup() // Устанавливаем скорость передачи данных по Bluetooth
BTSerial.begin(9600);
// Устанавливаем скорость передачи данных по кабелю
Serial.begin(9600);
// Выбираем пин к которому подключен сервопривод
vservo.attach(9); // или 10, если воткнули в крайний разъём
// Поворачиваем сервопривод в положение 90 градусов при каждом включении
vservo.write(90);
// Устанавливаем максимальную скорость вращения двигателей
vspeed(255,255);
>

void loop() // Если есть данные
if (BTSerial.available())
// Читаем команды и заносим их в переменную. char преобразует код символа команды в символ
vcmd = (char)BTSerial.read();
// Отправляем команду в порт, чтобы можно было их проверить в «Мониторе порта»
Serial.println(vcmd);

// Вперед
if (vcmd == ‘F’) vforward();
>
// Назад
if (vcmd == ‘B’)
vbackward();
>
// Влево
if (vcmd == ‘L’)
vleft();
>
// Вправо
if (vcmd == ‘R’)
vright();
>
// Прямо и влево
if (vcmd == ‘G’)
vforwardleft();
>
// Прямо и вправо
if (vcmd == ‘I’)
vforwardright();
>
// Назад и влево
if (vcmd == ‘H’)
vbackwardleft();
>
// Назад и вправо
if (vcmd == ‘J’)
vbackwardright();
>
// Стоп
if (vcmd == ‘S’)
vrelease();
>
// Скорость 0%
if (vcmd == ‘0’)
vspeed(0,0);
>
// Скорость 10%
if (vcmd == ‘1’)
vspeed(25,25);
>
// Скорость 20%
if (vcmd == ‘2’)
vspeed(50,50);
>
// Скорость 30%
if (vcmd == ‘3’)
vspeed(75,75);
>
// Скорость 40%
if (vcmd == ‘4’)
vspeed(100,100);
>
// Скорость 50%
if (vcmd == ‘5’)
vspeed(125,125);
>
// Скорость 60%
if (vcmd == ‘6’)
vspeed(150,150);
>
// Скорость 70%
if (vcmd == ‘7’)
vspeed(175,175);
>
// Скорость 80%
if (vcmd == ‘8’)
vspeed(200,200);
>
// Скорость 90%
if (vcmd == ‘9’)
vspeed(225,225);
>
// Скорость 100%
if (vcmd == ‘q’)
vspeed(255,255);
>
>
>

// Вперед
void vforward() vspeed(vspdL,vspdR);
vforwardRL();
>

// Вперед для RL
void vforwardRL() motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
>

// Назад
void vbackward() vspeed(vspdL,vspdR);
vbackwardRL();
>

// Назад для RL
void vbackwardRL() motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
>

// Влево
void vleft() vspeed(vspdL,vspdR);
motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
>

// Вправо
void vright() vspeed(vspdL,vspdR);
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
>

// Вперед и влево
void vforwardleft() if (vspdL > vspd) vspeed(vspdL-vspd,vspdR);
>
else
vspeed(0,vspdR);
>
vforwardRL();
>

// Вперед и вправо
void vforwardright() if (vspdR > vspd) vspeed(vspdL,vspdR-vspd);
>
else
vspeed(vspdL,0);
>
vforwardRL();
>

// Назад и влево
void vbackwardleft() if (vspdL > vspd) vspeed(vspdL-vspd,vspdR);
>
else
vspeed(0,vspdR);
>
vbackwardRL();
>

// Назад и вправо
void vbackwardright() if (vspdR > vspd) vspeed(vspdL,vspdR-vspd);
>
else
vspeed(vspdL,0);
>
vbackwardRL();
>

// Стоп
void vrelease() motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
>

// Изменение скорости
void vspeed(int spdL,int spdR) if (spdL == spdR) vspdL=spdL;
vspdR=spdR;
>
motor1.setSpeed(spdL);
motor2.setSpeed(spdR);
motor3.setSpeed(spdL);
motor4.setSpeed(spdR);
>

Программа Bluetooth RC Car — управление роботом-машинкой со смартфона на Android

В свой смартфон я установил программу Bluetooth RC Car. На мой взгляд — это лучшая софтинка для управления роботом-машинкой.

arduino робот

Программа позволяет передавать команды при нажатии на кнопки или реагировать на данные с акселерометра в смартфоне, регулировать скорость движения ползунком, включать передние и задние фонари, включать и выключать звуковой сигнал, включать и выключать сигнал “аварийка”.

arduino робот

arduino робот

arduino робот

Для работы программы требуется Android версии 2.3.3 или выше. Размер программы 3 мегабайта.

  • F – вперед
  • B – назад
  • L – влево
  • R – вправо
  • G – прямо и влево
  • I – прямо и вправо
  • H – назад и влево
  • J – назад и вправо
  • S – стоп
  • W – передняя фара включена
  • w – передняя фара выключена
  • U – задняя фара включена
  • u – задняя фара выключена
  • V – звуковой сигнал включен
  • v – звуковой сигнал выключен
  • X – сигнал “аварийка” включен
  • x — сигнал “аварийка” выключен
  • 0 – скорость движения 0%
  • 1 – скорость движения 10%
  • 2 – скорость движения 20%
  • 3 – скорость движения 30%
  • 4 – скорость движения 40%
  • 5 – скорость движения 50%
  • 6 – скорость движения 60%
  • 7 – скорость движения 70%
  • 8 – скорость движения 80%
  • 9 – скорость движения 90%
  • q – скорость движения 100%

Как вы видите, полигон для творчества вполне неплохой. Я бы еще добавил возможность раздельного включения правых и левых фонарей для передних и задних фар.

Жирным я выделил команды, поддержка которых уже реализована в скетче. Остальные я собираюсь использовать по другому назначению.

Принцип передачи команд: при нажатии на кнопку в программе, команда передается по Bluetooth один раз, а при отпускании кнопки сразу передается команда S-остановка.

Демонстрация работы

В следующий раз я планирую подключить к роботу ультразвуковой дальномер и реализовать алгоритм объезда препятствий.

  • Автор: source
  • Миниатюра:
  • Рубрика: Arduino от А до ЯAndroid, Arduino, Arduino Mega 2560, Bluetooth, Bluetooth RC Car, JY-MCU, Motor Shield, Ведроид-мобиль, робот, смартфон —>
  • Опубликовано: 27.06.2023
  • Обновлено: 27.06.2023
  • Комментариев: 73
  • Просмотров: 43 415
    Дата Бот

Источник

Bluetooth rc car arduino скетч

Rather than buying something, make it.

Browse thousands of projects created by the Arduino community

792244 views • 605 comments • 415 respects

Arduino Based Mini CNC 2D Plotter

163842 views • 40 comments • 214 respects

211550 views • 90 comments • 57 respects

Ultrasonic Security System

162122 views • 140 comments • 188 respects

Measure Heart Rate and SpO2 with MAX30102

321145 views • 154 comments • 244 respects

156511 views • 63 comments • 60 respects

Share and Compete in Project of the Month!

Unlock amazing rewards by submitting your project today.

Create projects fast, with no coding

Import, use and customize ready-made templates for your IoT projects

Dream big, we will take care of the rest

See what you can create with Arduino Cloud

White Mountains Regional High School

Discover how this school is working with remote sensing applications that allow them to do things like automate lighting, regulate temperature, adjust humidity, and check on the greenhouse from their phones.

Smart ovens take a leap into the future

How a strong partnership and the Arduino Portenta Machine Control led historical company Rinaldi Superforni to revolutionize their business

The new Portenta X8 and Max Carrier

Industrial Arduino and Linux combined to get the best of both worlds

Источник

Читайте также:  Мерседес подключить айфон через блютуз
Оцените статью
Adblock
detector