- Блютуз Машинка Ардуино с двумя моторами
- Bluetooth машинка на Arduino с двумя моторами
- Скетч для управления машиной Arduino по Bluetooth
- Приложение для управления машиной с телефона
- Простая Bluetooth машинка на Arduino
- Робомобиль на базе Arduino Mega 2560 с Bluetooth управлением и автономным движением с объездом препятствий
Блютуз Машинка Ардуино с двумя моторами
Машинка на Ардуино с управлением по Bluetooth с Android телефона — это очень простой, но интересный проект на микроконтроллере с использованием модуля Motor Shield. На этой странице вы найдете необходимые компоненты, для создания собственного авто, а также пошаговые инструкции по сборке схемы и программированию платы. Ссылки на скачивание приложения для смартфона Android и необходимых библиотек даны ниже.
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- моторчики постоянного тока
- motor shield L293D
- bluetooth модуль hc-06 или hc-05
- светодиоды и резисторы
- библиотека AFMotor.h и SoftwareSerial.h
- приложение car.apk
Если у вас есть все необходимые детали (можно обойтись без светодиодов и резисторов), то рассмотрим, как сделать автомобиль на Arduino своими руками. Прежде всего, нужно припаять провода к контактам двигателя и закрепить их изолентой, чтобы провода не оторвались. Провода от двигателей должны быть подключены к клеммам M1 и M2 моторного шилда (в дальнейшем полярность можно изменить на противоположную).
Bluetooth машинка на Arduino с двумя моторами
Порты TX и RX модуля Bluetooth будет удобнее припаять к аналоговым пинам A1 и A2 на плате расширения Motor Shield, чтобы каждый раз не отключать блютуз модуль от Ардуино при загрузке скетча. С помощью библиотеки SoftwareSerial.h на этих пинах создается программный порт коммуникации. Управление светодиодами фар автомобиля происходит через цифровой пин 2, а питание подключается через клемники на плате расширения.
Скетч для управления машиной Arduino по Bluetooth
#include "AFMotor.h" AF_DCMotor motor1(1); // подключаем мотор к клемме M1 AF_DCMotor motor2(2); // подключаем мотор к клемме M2 #include "SoftwareSerial.h" SoftwareSerial mySerial(A1, A2); // RX, TX #define LED 2 // пин подключения светодиодов int val; void setup() < Serial.begin(9600); pinMode(LED, OUTPUT); motor1.setSpeed(250); // максимальная скорость мотора motor1.run(RELEASE); motor2.setSpeed(250); // максимальная скорость мотора motor2.run(RELEASE); >void loop() < if (mySerial.available()) < val = mySerial.read(); if (val == f) < // едем вперед motor1.run(FORWARD); motor1.setSpeed(250); motor2.run(FORWARD); motor2.setSpeed(250); >if (val == b) < // едем назад motor1.run(BACKWARD); motor1.setSpeed(200); motor2.run(BACKWARD); motor2.setSpeed(200); >if (val == s) < // останавливаемся motor1.run(RELEASE); motor2.run(RELEASE); >if (val == l) < // поворачиваем налево motor1.run(FORWARD); motor1.setSpeed(100); motor2.run(BACKWARD); motor2.setSpeed(250); >if (val == r) < // поворачиваем направо motor1.run(BACKWARD); motor1.setSpeed(250); motor2.run(FORWARD); motor2.setSpeed(100); >if (val == 1) < digitalWrite(LED, HIGH); >if (val == 0) < digitalWrite(LED, LOW); >> >
Приложение для управления машиной с телефона
После того как вы убедились, что устройство работает, установите приложение на смартфон или планшет. При первом подключении к модулю Bluetooth вам нужно выполнить сопряжение с Android (затем сопряжение будет происходить автоматически). Если у вас возникли проблемы с подключением и настройкой машинки, прочитайте статью подключение bluetooth модуля к Arduino или задайте вопрос в комментариях.
Заключение. Для этого проекта мы использовали модуль Motor Shield L293D, два колеса с шестеренками, плату Arduino, модуль HC-05 и два светодиода для фар. Управление осуществляется дистанционно через сигнал Bluetooth со смартфона или планшета. После сборки модели и установки программ вы сможете поворачивать автомобиль, двигать его вперед и назад, включать и выключать фары через приложение на смартфоне.
Простая Bluetooth машинка на Arduino
Широкое распространение и дешевизна платформы Arduino и различных робоплатформ позволило любителям создавать радиоуправляемые машинки на любой вкус. А широкое распространение смартфонов позволило использовать их в качестве контроллеров этих машинок. Главной проблемой для многих любителей Arduino является отсутствие опыта в программировании под Android. Сегодня я расскажу, как легко решить эту проблему, используя среду визуальной разработки android-приложений App Inventor 2.
Постройку любой машинки надо начинать с «железа», поэтому вкратце опишу, что использовал для своей машинки:
arduino nano
bluetooth module HC-05
Z-Mini Motor Sensor Shield L293D
2WD Motor Chassis
Конфигурация «железа» не играет большой роли в этом проекте, поэтому шасси, шилд и саму ардуино можно заменить на любые аналоги.
Теперь перейдем к созданию приложения для Android. App Inventor — среда визуальной разработки android-приложений, работает из браузера. Заходим на сайт, разрешаем доступ к своему аккаунту в Google, нажимаем кнопку «create» и создаем новый проект. В новом проекте методом «Drag and Drop» создаем 4 кнопки для выбора направления движения и одну для подключения к нашему bluetooth модулю. Примерно так:
Далее нажимаем на кнопку «Blocks» в правом верхнем углу и все тем же методом перетаскивания элементов создаем логику работы нашего android-приложения примерно вот так:
Теперь остается скомпилировать приложение, нажав на кнопку «Build».
С написанием скетча я думаю у любителей ардуино проблем не возникнет, скажу лишь, что можно взять выбрать из готовых скетчей, где управление машинкой осуществляется с компьютера по sireal порту. Я использовал этот
int val;
int IN1 = 4;
int IN2 = 7;
int EN1 = 6;
int EN2 = 5;
void setup()
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(EN2, OUTPUT);
>
void loop()
if (Serial.available())
val = Serial.read();
// Задаём движение вперёд
if (val == ‘W’) // При нажатии клавиши «W»
// Выводы конфигурируются согласно работе Motor Shield’а
// Моторы крутятся вперед
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
>
// Задаём движение назад
if ( val == ‘S’)
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
>
// Задаём движение вправо
if ( val == ‘D’)
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
>
// Задаём движение влево
if ( val == ‘A’)
digitalWrite(EN1, HIGH);
digitalWrite(EN2, HIGH);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
>
// Стоп режим
// При отпускании клавиш в программе в порт шлется «T»
if ( val == ‘T’) // При нажатии клавиши «T»
// Выводы ENABLE притянуты к минусу, моторы не работают
digitalWrite(EN1, LOW);
digitalWrite(EN2, LOW);
>
>
>
Итак, вот такая у меня получилась машинка:
Те, кому нравится дизайн в приложениях, могут немного поменять. Подробно описывать как это делать не буду, там не сложно самому разобраться. Скажу лишь, что для этого в основном нужно использовать .png файлы, вместо .jpeg, которые не поддерживают прозрачный фон. Например, сделать такой дизайн за полчаса или час сможет любой неподготовленный человек:
P.S. Для тех, кто не сталкивался с разработкой приложений в App Inventor 2, я сделал более подробный гайд по разработке этого приложения (для просмотра нужно перейти на ютуб).
P.P.S. Сборник из более 100 обучающих материалов по ардуино для начинающих и профи тут.
Онлайн курс по ардуино на гиктаймс здесь.
UPD 1.02.2017: выложил приложение на play market.
Аналогичные проекты с другими шилдами здесь.
Робомобиль на базе Arduino Mega 2560 с Bluetooth управлением и автономным движением с объездом препятствий
Представляю свой проект робомобиля на Arduino. На просторах интернета есть масса подобных статей, наткнувшись на одну из них решил реализовать увиденное со своими изменениями в конструкцию и функционал. Реализованы следующие возможности: управление робомобилем по Bluetooth со смартфона; автономное движение робомобиля с объездом препятствий.
Для реализации нам понадобится:
Комплект: рама, моторы, колёса, крепления (Car Chassis Kit for Arduino — фото)
Arduino Mega 2560
Motor Control Shield for Arduino L293D
Сервопривод MG995
Ультразвуковой дальномер HC-SR04
Bluetooth модуль HC-05 JY-MCU
Active High Level Buzzer Alarm / Speaker Buzzer Module
Диоды для фар
Соединительные провода
Держатели для дальномера и Bluetooth модуля (делал сам)
Блок питания (я взял от кассового аппарата)
Приложение на Android для управления робомобилем по Bluetooth Arduino Bluetooth RC Car (фото, при подключении к Bluetooth модулю пин-код по умолчанию «1234»)
Подключение комплектующих
Моторы | Motor Shield L293D | Фары | Arduino Mega 2560 |
П.Л. | М3 | П.Л. | «-» на GND, «+» на Pin 22 |
П.П. | М4 | П.П. | «-» на GND, «+» на Pin 24 |
З.Л. | М1 | З.Л. | «-» на GND, «+» на Pin 34 |
З.П. | М2 | З.П. | «-» на GND, «+» на Pin 35 |
Дальномер HC-SR04 | Arduino Mega 2560 | Bluetooth HC-05 | Arduino Mega 2560 | Buzzer | Arduino Mega 2560 |
Vcc | 5V | VCC | 5V | SIG | Pin A9 |
Trig | Pin 31 | GND | GND | VCC | Pin A8 |
Echo | Pin 30 | TXD | Pin 50 | GND | GND |
Gnd | GND | RXD | Pin 51 |
Сервопривод MG995 | Motor Shield L293D |
тройная клема | SERVO_2 (центральный провод «+» откусываем и запитываем напрямую от «+» Motor Shield — фото; при управлении по Bluetooth — клему снимайте, чтобы серва не дёргалась) |
Процесс сборки
К моторам припаиваем провода, обратите внимание, на всех нижних контактах у меня чёрные провода, на верхних — красные, не перепутайте полярность при подключении к Motor Shield.
Крепим сервопривод к верхней части рамы, моторы к нижней, собираем раму, ставим колёса. Устанавливаем Motor Shield сверху Arduino Mega и крепим на раму, подключаем всё по схеме выше, заливаем соответствующий скетч (в конце статьи) — наслаждаемся.
Управление по Bluetooth — устанавливаете приложение на свой смартфон, запускаете, подключаетесь (Connect) к Bluetooth модулю (при необходимости вводите пин-код); управлять можно классическим способом по стрелкам (Buttons), а так же в меню программы можно выбрать Accelerometer и управлять с помощью наклонов смартфона.
Автономное движение с объездом препятствий — алгоритм следующий: дальномер измеряет расстояние впереди, если оно > 30 см (в скетче параметр const int vmindistance), то продолжаем двигаться вперед, если < 30 см, то: останавливаем моторы; крутим сервопривод на углы от 0° до 180° с шагом в 15° и измеряем расстояния на этих углах; заносим полученные значения в массив; поворачиваем сервопривод прямо на угол 90°; ищем в массиве позицию с максимальным значением данных; если это значение < 30 см, то едем назад, если >30 см, то проверяем какому углу поворота сервопривода оно соответствует и в зависимости от этого поворачиваем влево или вправо.