Робот на Ардуино и машинка на Bluetooth своими руками
FAMAT › Блог › ROBOTяга ARDUINO — 5. БЛЮТУЗ управление.
И так работяга стал послушней – уже умеет слушаться пульт от телевизора 🙂 www.drive2.ru/b/2818339/
А давайте его научим слушаться телефон!
И поможет нам в этом Блютуз.
Необходимо:
— Блютуз модуль — HC-06 wireless Bluetooth (либо другой).
— Провода.
— Двухсторонний скотч.
— Софт — Bluetooth RC Controller.
В комплекте с роботом шел Блютуз модуль — HC-06.
Подойдут модули типа HC-04 или 05.
Но забегу вперед – если вы все же захотите когда-нибудь загружать работягу через Блютуз рекомендую именно НС-05 – о его достоинствах рассказал здесь:
www.drive2.ru/c/2749401/
Подключение:
Все, что нужно подключить — это Блютуз модуль.
Подключение простое – смотрите таблицу ниже.
ПРИМЕЧАНИЕ: Заодно я указал подключения Моторов – я буду в каждом примере указывать необходимые подключения.
Обратите внимание, что поскольку разъем TXD Блютуз подключен к разъему RХ Arduino, то пока включении Блютуз Arduino никого будет слушать — только Блютуз.
ВНИМАНИЕ! На время когда вы хотите работать с Arduino по USB – Блютуз нужно выключать. Я для этого поставил выключатель на питание «+» Блютуз.
Прикрепляем Блютуз к роботу – можно использовать двухсторонний скотч и место в «корме» робота.
Программирование.
Сначала немного теории.
Мы уже научили работягу слушать ИК волны…
Блютуз – это то же волны – только радио.
А в остальном принцип тот же – управляющее устройство будет передавать коды по блютуз, которые РОБОТяга будет выполнять.
Только предварительно нам считывать коды с устройства не нужно – мы их сами зададим.
Кодами для команд будут буквы:
F – вперед;
B – назад;
R – вправо;
L – влево;
S – стоп.
Посылать их может любое устройство:
— которое может подключиться по Блютуз к РОБОТяге;
— имеющее программу, которая может посылать через Блютуз сигналы — терминал RS232.
Сначала устанавливаем соединение между блютузами РОБОТяги и «устройства» — через настройки Блютуз «устройства» — пароль по умолчанию для модуля робота — 1234.
Что касается софта – для компьютера можно использовать, например ARDUINO IDE или Termite 3.2. Пример здесь: lesson.iarduino.ru/page/b…-ustroystvami-s-telefona/
Установив соединение и запустив программу мы через нее можем отправлять на робот коды и робот будет выполнять команды.
Но согласитесь, это не очень удобно… удобнее нажимать на кнопки – для этого можно написать программку, например для Android – что бы кнопкам соответствовали кодовые буквы.
Но мы даже этого делать не будем – поскольку уже есть готовая программа!
А для чего же, спросите вы, я все это писал?
Для того что бы развеять «магию» Блютуза и показать как на самом деле все банально
Для Android устройств будем использовать Bluetooth RC Controller – готовую к использованию программу, позволяющую управлять не только направлением движения, но и скоростью и даже фарами!
Управление скоростью и фарами в моем скетче нет – это домашнее задание для пытливых умов 🙂
geekelectronics.org/ardui…dklyuchaem-bluetooth.html
А вот еще одной функцией программки – управление движением робота с помощью наклона «телефона/планшета» мы обязательно воспользуемся.
Bluetooth RC Controller можно скачать на Play Market.
play.google.com/store/app…uetoothRCcontroller&hl=ru
Работа с программой интуитивно понятна.
Первое, что она попросит – включить Bluetooth.
Затем нужно подключиться к РОБОТяге – нажимаем на «шестереночку» — далее «Connect» выбрать его из перечня устройств нашего РОБОТягу и соединяемся…
Дальше жмем на кнопки и едем…
Все посылаемые данной программой коды-команды указаны в настройках Bluetooth RC Controller («шестереночка» — «Settings»).
ВНИМАНИЕ! Поступили замечания, что Bluetooth RC Controller у некоторых «работяг» реагирует с задержкой — около 10 секунд! Есть информация, что это лечится в настройках — пункте «Please select data stream frequency:» нужно выбрать режим «On change/touch».
Для того чтобы перевести в режим управления акселерометром «устройства» – через наклон, нужно нажать «шестереночку» и нажать закладку «Accelerometer».
Но предупреждаю! Данный режим работает с задержкой – управлять нужно осторожней. Пример на видео 🙂
СКЕТЧ:
[code]
//Управляем роботом с помощью BLUETOOTH.
//В качестве управляющего устройства используем ANDROID устройство с программой Bluetooth RC Controller.
// *********************** Установка выводов моторов ************************
int MotorLeftSpeed = 5; // Левый (А) мотор СКОРОСТЬ — ENA
int MotorLeftForward = 4; // Левый (А) мотор ВПЕРЕД — IN1
int MotorLeftBack = 2; // Левый (А) мотор НАЗАД — IN2
int MotorRightForward = 8; // Правый (В) мотор ВПЕРЕД — IN3
int MotorRightBack = 7; // Правый (В) мотор НАЗАД — IN4
int MotorRightSpeed = 6; // Правый (В) мотор СКОРОСТЬ — ENB
// ********************** Для управления по блютуз ****************************
char btCommand = ‘S’;// Задаем переменную BLUETOOTH команда — по умолчанию «S» — СТОП
//****************** Настраиваем параметры выводов ARDUINO ******************
pinMode (MotorLeftForward, OUTPUT);
pinMode (MotorLeftBack, OUTPUT);
pinMode (MotorLeftSpeed, OUTPUT);
Готовые Arduino роботы
Начинать изучать Arduino можно не только с самой платы и подробных видео-уроков, но и с покупки готового полноценного робота на базе этой платы. Для детей начальной школы или дошкольного возраста такое готовые проекты Arduino даже предпочтительней, т.к. «неожившая» плата выглядит скучновато. Такой способ подойдет и для тех, кого электрические схемы не особо привлекают.
Приобретая работающую модель робота, т.е. фактически готовую высокотехнологичную игрушку, можно разбудить интерес к самостоятельному проектированию и созданию роботов. Наигравшись в такую игрушку и разобравшись в том, как она работает, можно приступать к совершенствованию модели, разобрать все на части и начать собирать новые проекты на Arduino, используя высвободившиеся плату, приводы и датчики. Открытость платформы Arduino позволяет из одних и тех же составных частей мастерить себе новые игрушки.
Мы предлагаем небольшой обзор готовых роботов на плате Arduino.
Машинка на Arduino, управляемая через Bluetooth
Машинка, управляемая через Bluetooth, стоимостью чуть менее $100. Поставляется в разобранном виде. Помимо корпуса, мотора, колес, литиевой батарейки и зарядного устройства, получаем плату Arduino UNO328, контроллер мотора, Bluetooth адаптер, пульт дистанционного управления и прочее.
Видео с участием этого и еще одного робота:
Более подробное описание игрушки и возможность купить на сайте интернет-магазина DealExtreme.
Аналогичный набор на Aliexpress чуть дороже. Аналогичные роботы с тремя колесами дешевле. Например, можно купить за $59.
Робот-черепаха Arduino
Комплект для сборки робота-черепахи стоимостью около $90. Не хватает только панциря, все остальное, необходимое для жизни этого героя, в комплекте: плата Arduino Uno, сервоприводы, датчики, модули слежения, ИК-приемник и пульт, батарея.
Черепаху можно купить на сайте DealExtreme, аналогичный более дешевый робот на Aliexpress.
Гусеничная машина на Arduino, управляемая с сотового телефона
Гусеничная машина, управляемая по Bluetooth с сотового телефона, стоимостью $94. Помимо гусеничной базы получаем плату Arduino Uno и плату расширения, Bluetooth плату, аккумулятор и зарядное устройство.
Гусеничную машину также можно купить на сайте DealExtreme, там же подробное описание. Может быть, более интересный железный Arduino-танк на Aliexpress.
Arduino-автомобиль, проезжающий лабиринты
Автомобиль, проезжающий лабиринты, стоимостью $83. Помимо моторов, платы Arduino Uno и прочего необходимого cодержит модули слежения и модули обхода препятствий.
Видео с этим роботом:
Страница машины на сайте DealExtreme, такой же робот на Aliexpress стоит чуть дороже.
Arduino насекомое
Оригинальный мини-робот насекомое на базе Arduino-совместимой схемы стоимостью менее $50. Помимо Arduino-совместимой платы имеет микросервоприводы и датчик для обнаружения препятствий.
Подробный обзор этого проекта на Arduino мы выполнили здесь. Приобрести можно на сайте DealExtreme или Aliexpress.
Готовый робот или каркас для робота
Помимо рассмотренного в обзоре варианта использования готовых комплектов для создания роботов Arduino, можно купить отдельно каркас (корпус) робота — это может быть платформа на колесиках или гусенице, гуманоид, паук и другие модели. В этом случае начинку робота придется делать самостоятельно. Обзор таких корпусов приведен в нашей статье.
Где еще купить готовых роботов
В обзоре мы выбрали наиболее дешевых и интересных на наш взгляд готовых Arduino-роботов из китайских интернет-магазинов. Если нет времени ждать посылку из Китая — большой выбор готовых роботов в интернет-магазинах Амперка и DESSY. Низкие цены и быструю доставку предлагает интернет-магазин ROBstore. Список рекомендованных магазинов здесь.
Возможно вас также заинтересуют наши обзоры проектов на Arduino:
- Arduino робот-художник;
- arduino-робот Sparki;
- деревянный робот-машинка KAKU.
- робот-насекомое.
Обучение Arduino
Не знаете, с чего начать изучение Arduino? Подумайте, что вам ближе — сборка собственных простых моделей и постепенное их усложнение или знакомство с более сложными, но готовыми решениями?
Посты по урокам:
- Первый урок: Светодиод.
- Второй урок: Кнопка.
- Третий урок: Потенциометр.
- Четвертый урок: Сервопривод.
- Пятый урок: Трехцветный светодиод.
- Шестой урок: Пьезоэлемент.
- Седьмой урок: Фоторезистор.
- Восьмой урок: Датчик движения (PIR) на Arduino. Автоматическая отправка E-mail.
- Девятый урок: Подключение датчика температуры и влажности DHT.
Все посты сайта “Занимательная робототехника” по тегу Arduino.
Все цены приведены по состоянию на 30.03.14. Фото с сайта DealExtreme.
Робот, ездящий по линии под управлением Arduino
В данной статье будет описан процесс создания робота, ездящего по линии. Эта задача является классической, идейно простая, она может решаться много раз, и каждый раз вы будете открывать для себя что-то новое. Решение этой задачи и реализация полученного решения позволяют приобрести необходимые начальные навыки для дальнейшего совершенствования в робототехнике.
Существует множество подходов для решения задачи следования по линии. Выбор одного из них зависит от конкретной конструкции робота, от количества сенсоров, их расположения относительно колёс и друг друга.
В нашем примере будет собран робот на лёгкой платформе с двумя колёсами и двумя датчиками линии, расположенными на днище робота перед колёсами.
В результате выглядеть он будет так:
Что понадобится
Для нашего примера понадобятся следующие детали:
Вообще говоря, лучше было бы использовать NiMH-аккумуляторы: они лучше отдают ток и значительно дольше держат напряжение, но для целей этого проекта одной батарейки на 9 В вполне хватило.
Собираем робота
Сначала соберём робота, установим всю механику и электронику.
Собираем платформу
Для начала прикрепим колёса к моторам.
Затем с помощью пластиковых П-образных креплений прикручиваем моторчики к платформе. Обратите внимание на взаимное расположение крепления и моторчики: в креплении есть небольшие углубления, так что если всё соединить правильно, то моторчики будут крепко держаться и никуда не выскочат.
Теперь крепим балансировочный шар.
Отлично! Платформа собрана. Если вам кажется, что колёсам отведено слишком мало места и они трутся о платформу, то скорее всего вам нужно посильнее надавить на колёса, чтобы они плотнее сели на вал мотора.
Крепим сенсоры
Закрепим их, как показано на фото:
Можно было бы выбрать и другое место. Это могло бы сделать контроль проще или сложнее, а самого робота более или менее эффективным. Оптимальное расположение — вопрос серии экспериментов. Для этого проекта просто был выбран такой способ крепления.
Крепим Arduino
Arduino закрепим с противоположной стороны двумя винтиками и гайками.
Опять же, можно выбрать и другое место. Например над колёсами, если приподнять Arduino на латунных стойках. Это изменило бы положение центра масс и повлияло бы на эффективность робота в лучшую или худшую сторону.
Крепим Motor Shield и соединительные провода
Установим Motor Shield на Arduino и подсоединим соединительные провода. Обратите внимание, чтобы соотвествовать программному коду из примера ниже, моторчики соединены с Motor Shield так: правый — к клеммам M1 с прямой полярностью (плюс к плюсу), а левый — к M2 с обратной (плюс к минусу).
В этом проекте, для экономии времени концы соединительных проводов просто скручены с контактами моторов. При работе «начисто» стоит жёстко припаять провода к моторам.
Крепим Troyka Shield
Присоединяем сверху Troyka Shield и подключаем датчики к 8 и 9 цифровым контактам. В итоге получаем следующую конструкцию:
Программирование
Теперь напишем программу, которая заставит собранную конструкцию двигаться по нарисованной линии. В проекте мы будем использовать чёрную линию, напечатанную на белых листах бумаги.
Основная идея алгоритма
Пусть у нас усть белое поле, и на нём чёрным нарисован трек для нашего робота. Используемые датчики линии выдают логический ноль, когда «видят» чёрное и единицу, когда «видят» белое.
На прямой робот должен пропускать трек между сенсоров, то есть оба сенсора должны показывать единички.
При повороте траектории направо, правый сенсор наезжает на трек и начинает показывать логический ноль. При повороте налево, ноль показывает левый сенсор.
Таким образом получаем простую систему с тремя состояниями:
На вход системы поступает информация с сенсоров. Получаем следующую логику переходов:
Левый | Правый | Целевое состояние |
---|---|---|
0 | 0 | STATE_FORWARD |
0 | 1 | STATE_RIGHT |
1 | 0 | STATE_LEFT |
1 | 1 | STATE_FORWARD |
Реализация на Arduino
Проблема инертности и её решение
Однако если выставить скорость моторов побольше, мы столкнёмся со следующей проблемой: наш робот будет вылетать с трека, не успевая отреагировать на поворот. Это связано с тем, что наши моторчики не умеют тормозить мгновенно.
В этом легко убедиться поставив следующий эксперимент: с заданной скоростью робот будет двигаться по поверхности, и в некоторый момент будет установлена нулевая скорость и измерен тормозной путь робота. Пусть робот разгоняется по монотонной поверхности и тормозится при фиксировании импровизированной стоп-линии.
Эксперимент проведём для разных скоростей. Код программы для эксперимента таков:
На той поверхности, на которой проводился эксперимент, были получены следующие результаты:
Таким образом, начиная с некоторого момента у нашего робота нет никакой возможности успеть среагировать и остаться на треке.
Что можно сделать?! После того, как сенсоры улавливают поворот, можно остановиться и вернуться назад на некоторое расстояние, зависящее от скорости перед остановкой. Однако мы можем отдать команду роботу ехать с какой-то скоростью, но не можем приказать ему проехать какое-то расстояние.
Для того, чтобы понять зависимость расстояния при заднем ходе от времени, был проведён ещё один замер:
На скорости 50, например, робот проделывал путь, зависящий от времени следующим образом:
Полученные две зависимости были линейно аппроксимированы, затем была выведена формула зависимости времени, которое надо двигаться назад, от скорости перед остановкой.
Обратим внимание на то, что у вас значения могут оказаться другими: из-за особенностей сборки либо из-за поверхности, поэтому в общем случае лучше провести все измерения самостоятельно.
Адаптивное поведение
Перед финальным экспериментом произведём ещё несколько поправок.
Во-первых, нам необязательно давать команду ехать назад перед каждым поворотом, как мы помним, на маленькой скорости робот прекрасно справляется и без этого. К тому же лучше ему двигаться не прямо назад, а немного поворачивая, всё-таки робот находится перед поворотом.
Во-вторых, нам стоит различать состояния робота: когда он движется по прямой, и ничто ему не мешает ускоряться; и когда робот входит в поворот. В первом случае действительно будем увеличивать скорость робота для более динамичного прохождения трека, во втором случае будем сбрасывать скорость до значения, достаточного для успешного прохождения поворота, и будем держать эту скорость ещё какое-то время.
В итоге наш код будет выглядит следующим образом:
Результат
Что дальше?
Представленный алгоритм оставляет множество возможностей для улучшения и оптимизации. Скорость поворота можно так же менять адаптивно. Можно добавить контроль заноса. Можно поиграть с расположением сенсоров и центром масс. В конце концов можно получить непобедимого на треке робота.
Нет ничего лучше, чем обставить оппонента на секунду-другую.
Ведроид-мобиль — робот на Arduino — Часть 3. Подключаем Bluetooth
GeekElectronics » Arduino от А до Я » Ведроид-мобиль — робот на Arduino — Часть 3. Подключаем Bluetooth
В этот раз я опишу процесс подключения к моему роботу «Ведроид-мобиль» модуля Bluetooth JY-MCU и реализую управление через смартфон на Android.
Модернизация Motor Shield
Получилось так, что производители модуля Motor Shield лишили своих покупателей возможности устанавливать поверх своего продукта другой модуль. Видимо им нравится быть сверху или просто зажали нормальную панельку контактов.
Меня этот нюанс совсем не устраивает. Именно поэтому я решил взяться за паяльник и привести Motor Shield к удобному для меня виду.
Аккуратно выдрал родные панельки контактов и выкинул их нафиг.
Установил на их место нормальные.
В таком виде модулем стало пользоваться гораздо удобнее. Теперь я смогу нормально подключить провода от Bluetooth в разъемы, а не припаивать их намертво к контактам на Motor Shield.
Bluetooth модуль JY-MCU для Arduino
Сам Bluetooth модуль JY-MCU довольно миниатюрный. В комплект поставки входит кабель для подключения. Назначение выводов расписано на обратной стороне.
Запитать его можно от источника питания 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 по Bluetooth через смартфон на Android
В своём скетче я реализовал следующие функции:
- Движение вперед
- Движение назад
- Разворот влево
- Разворот вправо
- Плавный поворот влево при движении вперед
- Плавный поворот вправо при движении вперед
- Плавный поворот влево при движении назад
- Плавный поворот вправо при движении назад
- Остановка
В скетче использовал функции, чтобы не дублировать код при схожих событиях.
//Создаем объекты для двигателей
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. На мой взгляд — это лучшая софтинка для управления роботом-машинкой.
Программа позволяет передавать команды при нажатии на кнопки или реагировать на данные с акселерометра в смартфоне, регулировать скорость движения ползунком, включать передние и задние фонари, включать и выключать звуковой сигнал, включать и выключать сигнал “аварийка”.
Для работы программы требуется 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-остановка.
Демонстрация работы
В следующий раз я планирую подключить к роботу ультразвуковой дальномер и реализовать алгоритм объезда препятствий.
Робот на Ардуино и машинка на Bluetooth своими руками
Робот – машинка на Ардуино становятся одним из самым популярных инженерных проектов в школьной робототехнике. Именно с таких устройств, автономных или управляемых со смартфона и bluetooth, начинается путь в робототехнику “после Lego”. К счастью, сегодня можно без труда купить все необходимые компоненты и достаточно быстро создать своего первого робота для езды по линии или объезда препятствий. В этой статье вы найдете подробную видео инструкцию как сделать продвинутый автомобиль Arduino Car своими руками, с питанием, датчиками линии, расстояния и управлении через bluetooth.
Робот на ардуино своими руками
В отличие от других проектов, создание робота – автомобиля (Arduino Car) требует понимания и навыков работы сразу с несколькими важными компонентами, поэтому не стоит приступать к созданию машинок без получения базовых навыков работы с платформой Arduino. В любом случае, вам нужно будет но только подключить готовые модули, но и собрать конструкцию, шасси с двигателями, обеспечить правильное питание и управление. Все это потребует определенного терпения.
Робот машина на Ардуино
Вот список ключевых компонентов, которые обязательно встретятся в проекте.
Контроллер Ардуино
Куда уж без него, если мы говорим о проектах на этой платформе. Как правило, роботы машины делают на базе плат Arduino Uno и Nano. Mega будут слишком большие, Pro Mini сложнее подключать к компьютеру и соединять с остальными компонентами, а Leonardo требуют дополнительных навыков в программировании, они дороже и их основное преимущество (тесная интеграция с компьютером в качестве периферийного устройства) в данном случае не слишком востребована.
Есть еще вариант использования плат ESP8266 или ESP32, тогда в проекте появляется возможность управления машиной через WiFi. Но и сами платы и их программирование требует определенных навыков, в этой статье мы будем говорить преимущественно об Uno или Nano.
Конструкция, шасси и двигатели робота на Ардуино
Для того, чтобы что-то поехало или стало перемещаться, надо снабдить “это” колесами, гусеницами или манипуляторами-ногами. Вот тут выбор совершенно не ограничен, можно использовать совершенно любые комбинации и сочетания платформ. Как правило, в качестве начального варианта берутся уже готовые наборы платформ с Алиэкспресс.
Двигатель, шасси и колеса машинки на ардуино
Если работать со стандартными наборами вам не интересно, можно создать платформу своими руками. Например, разобрать игрушечные радиоуправляемые машинки или любые двигатели на 5-12 вольт, с редукторами или без. Колеса можно создать и самим, что тоже является интересной задачей.
Драйвер двигателей
Ардуино – достаточно ранимое устройство, не терпящее больших нагрузок по току. Соединяя его с “брутальными” мощными двигателями, не избежать беды. Поэтому для нормальной совместной работы нам нужно будет включить в схему робота компонент, отвечающий за управление двигателями – подающий и отключающий ток на их обмотки. Речь идет о микросхеме или готовом модуле, которые называют драйвером двигателя. На нашем сайте есть статьи, посвященные драйверам, построенным на схеме H-моста. Если вы покупаете готовые шасси, то обязательно предусмотрите возможность размещения на них подходящего драйвера.
Красивый корпус
Как правило, вся конструкция автомобиля строится вокруг его шасси. Если посмотреть примеры готовых проектов, то они часто выглядят как “провода на колесиках” – внешний вид их изобилует пучками соединительных проводов, ведущих от восседающего на троне контроллера Ардуино к драйверам, моторам и датчикам. Между тем, красивый и функциональный корпус не только вызывает правильные эстетические чувства и помогает выделить вашу модель от остальных. Хороший корпус может превратить игрушку в реальное устройство, помогает привить навыки конструирования и промышленного дизайна, что важно для инженеров любого возраста.
Питание робота
Обеспечение правильной схемы питания – это то, что очень часто оказывается на последнем месте в списке приоритетов начинающих ардуинщиков. Между тем, именно ошибки в схеме электропитания становятся основными причинами проблем, возникающих в процессе работы умных устройств на Ардуино. Создавая ардуино-машинку нужно предусмотреть питание контроллера, двигателей, драйвера и датчиков. У всех них есть свои ограничения и особенности работы, требуется создать оптимальное по весу и сложности решение, позволяющее учесть все эти ограничения.
Питание робота на Ардуино
Создавая по-настоящему автономное устройство робота, нужно побеспокоиться и о времени его работы, и о возможности быстрой подзарядки или смены батареек. Как правило, выбираются решения из следующих вариантов:
- Обычные батарейки AA. Тут нужно понимать, что платы Arduino Uno, Nano и большинство двигателей, используемых в Ардуино-робототехнике, требуют напряжения в диапазоне 6-9 вольт. Поэтому придется собрать вместе последовательно не менее 4 батареек на 1,5 В, причем сами батарейки должны быть хорошего качества и обеспечивать работу с достаточно большим током. Например, большинство солевых батареек этим критериям не удовлетворяют. Батарейки AAA при создании ардуино-машинок практически не используются из-за своей пониженной емкости (хотя могут использоваться в миниатюрных моделях, где размер имеет первостепенное значение).
- Аккумулятор AA. Здесь возникает еще большее ограничение по напряжению и току. Большинство аккумуляторов выдают напряжение 1,2 вольт, поэтому их требуется больше для “собирания” нужных нам 6-9 вольт. Несомненным плюсом является возможность перезарядки.
- Литиевые аккумуляторы 18650. Это уже “серьезная артиллерия”, позволяющая получить большое время автономной работы, возможность подзарядки и приемлемые характеристики по току и напряжению. Рабочее напряжение для таких элементов питания – 3,7 В, что позволяет собирать готовую схему питания всего из двух элементов.
- Другие источники питания. Сюда можно включить как более мощные и габаритные никель-металлгидридные, кадмиевые аккумуляторы, так и многочисленные литий-ионные “плоские” варианты, используемые в дронах, смартфонах или другой портативной цифровой технике.
Каким бы ни был источник питания, нужно обеспечить его надежное крепление, удобное расположение, защиту от воздействия недружелюбной окружающей среды. Если вы подключаете к одному источнику и контролер, и двигатели, и датчики, то нужно позаботиться о правильной схеме, включающей, например, надежную связь “по земле” всех устройств.
Где купить платформу и запчасти
Все, о чем говорится в этой статье, можно без проблем купить на всем известном сайте. К сожалению, подавляющее большинство предложений основываются на стандартной платформе 4WD автомобиля с двумя несущими планками, не очень надежными двигателями и колесами, любящими ездить в “развалочку”. Но эти варианты относительно не дороги и вполне подойдут для начала работы.
10 интересных вещей, которые можно сделать на Arduino
Если у вас есть тяга к технологиям (или ребёнок с такой тягой), рассмотрите Arduino. Эта штука озадачит вас и ребёнка на много часов, а на выходе получатся удивительные проекты.
Что за Arduino
Arduino — это программируемый микроконтроллер. То есть это плата, на которую можно записать вашу программу, и эта плата сможет управлять другими штуками: например, зажечь лампочку, издать звук, включить электроприбор, измерить температуру, отправить СМС.
На самом базовом уровне Arduino просто отправляет и считывает электрические импульсы. Например, можно подключить к нему термометр, и Arduino сможет считать температуру в комнате. А потом, в зависимости от программы, отправить сигнал на устройство, которое включит вентилятор.
Или можно подключить к Arduino датчик углекислого газа. Arduino можно научить считывать показания датчика каждые пять минут и, когда уровень углекислого газа превышает норму, запищать, замигать лампочкой или с помощью серии моторчиков открыть окно.
К Arduino есть много плат расширения и датчиков. Сферы применения платы почти безграничны: автоматизация, системы безопасности, умный дом, музыка, робототехника и многое другое. Вот что можно делать на этой умной итальянской плате и на её российских и зарубежных клонах.
1. Робот-бармен с Bluetooth-управлением
Сложность: 4/5.
Время: 5/5.
Незаменимое устройство для любой вечеринки: работает от восьми батареек, готовит много коктейлей и управляется без проводов. В основе механического бармена — плата Arduino, приводы для позиционирования шейкера и подачи напитков, датчики положений.
Главная сложность при изготовлении — инженерная. Нужно точно прикрутить все детали и соединить их между собой, чтобы ёмкость оказывалась точно под нужными бутылками.
2. Светящийся куб на 512 светодиодов
Сложность: 3/5.
Время: 3/5.
Красивая штука, которая может светиться в такт музыке как трёхмерный эквалайзер и показывать 3D-анимацию. А ещё это может работать как необычный ночник.
Для сборки понадобится деревянное шасси с отверстиями, чтобы каждый ярус был таким же по размеру и форме, что и остальные. Число светодиодов в каждой грани выбрано не случайно: 8 ламп = 8-битная логика, самая простая в программировании и управлении через контроллер.
3. Взломщик кодовых замков
Сложность: 5/5.
Время: 4/5.
Этот проект разработал хакер Сэми Камкар, и мы приводим его только в демонстрационных целях. Для взлома, кроме платы Arduino, автор взял серво- и шаговый двигатели для перебора комбинаций и соединил всё на самодельном шасси из алюминия. В основе алгоритма — простой перебор всех комбинаций, но робот это делает быстрее человека.
4. Nod Bang — киваем головой и делаем бит
Сложность: 2/5.
Время: 3/5.
Идея в том, чтобы не просто кивать в такт музыке, а кивками самому генерировать звук. Эндрю Ли сделал специальное устройство, которое следит за положением головы и в момент наклона воспроизводит нужный звук.
В наушники он встроил акселерометр, кнопки отвечают за выбор звука, а Arduino — за воспроизведение звука на компьютере через MIDI-интерфейс. Чтобы всё выглядело эффектнее, у кнопок есть подсветка, и они тоже делают бит.
5. Поющее растение
Сложность: 2/5.
Время: 2/5.
По сути это терменвокс, который сделали в виде растения. Все остальные принципы работы остались теми же: звук возникает при движении рук, и разные движения генерируют разную мелодию.
Плата регистрирует изменение амплитуды сигнала, для чего автор использует самодельный сенсорный детектор для анализа прикосновений к цветку. Кроме этого понадобилась плата расширения Gameduino и сам цветок.
6. Замок, который открывается на секретный стук
Сложность: 3/5.
Время: 2/5.
Интересная вещь для тех, кто хочет поиграть в шпионов или пускать в комнату только своих друзей. Замок распознаёт стук по двери и сравнивает его с базовым звучанием, которое установил владелец. Если совпадает — приводы отодвигают замок и дверь открывается, если нет — ничего не происходит, можно постучать заново.
Чтобы установить новый стук на открытие, нужно зажать кнопку на ручке и постучать по двери новым способом. Пьезосенсор распознаёт вибрации и записывает их в память платы.
7. Горшок для цветов с автополивом
Сложность: 4/5.
Время: 3/5.
Полезный горшок для тех, кто забывает полить цветы перед отъездом или просто не знает, как часто надо их поливать. Вся электроника, насосы и ёмкость для воды находятся внутри горшка. Для каждого растения можно запрограммировать свой режим полива в каждом горшке.
Основные характеристики чудо-горшка:
- встроенный резервуар для воды;
- датчик контроля уровня влажности почвы;
- насос для подачи воды;
- датчик уровня воды в резервуаре;
- светодиод, информирующий о недостатке воды в резервуаре.
8. Драм-машина
Сложность: 1/5.
Время: 2/5.
Простая драм-машина на Arduino. Проект интересен тем, что это не обычный перебор записанных семплов, а настоящая генерация звука с помощью встроенного железа. Ещё здесь есть анализатор спектра звука: через видеовыход можно посмотреть на диаграммы и частотные характеристики.
Математическая основа этого устройства — разложение в ряд Фурье, которое решается подключением стандартной библиотеки.
9. Шагающий робот
Сложность: 2/5.
Время: 1/5.
Простой в изготовлении четырёхногий робот, который шагает и самостоятельно преодолевает препятствия в сантиметр высотой.
Чтобы его сделать, вам понадобятся сервомоторы для ног, немного проволоки и любой пластик, из которого делается шасси. Для питания — аккумулятор любой модели, который крепится на спине робота.
10. Робот-пылесос
Сложность: 4/5.
Время: 5/5.
Дмитрий Иванов из Сочи собрал настоящий робот-пылесос, который делает всё то же самое, что и промышленные устройства, только с возможностью тонкой настройки под себя и свою квартиру.
Основные детали — плата Arduino, 6 инфракрасных датчиков, турбина с двигателем и щётками и аккумулятор. Ещё у робота есть датчики столкновения, которые помогают объезжать препятствия, и контроллер аккумулятора, который следит за уровнем батарей и предупреждает о том, что пылесос надо зарядить.
Дистанционное управление роботом на базе Ардуино своими руками
Автор: alexlevchenko
Дата записи
Сегодня никого не удивишь радиоуправляемыми самоделками. Но согласитесь, как-то «по старинке» нажимать на клавиши управления… Гораздо интереснее управлять поделками с помощью движений кисти, не так ли? В данной статье показан пример того, как можно организовать дистанционное управление при помощи платы Arduino и нескольких датчиков изгиба. В качестве подопытного будет выступать PHIRO Pro
Шаг 1: Что понадобится
- PHIRO Pro;
- Датчики изгиба;
- Bluetooth модуль HC-05;
Шаг 2: Загружаем стандарт Firmata на Arduino
Необходимо загрузить стандарт firmata на плату Ардуино, для того, что соединить её с Pocket Code. В данном проекте используем Arduino UNO, однако может быть использована любая плата Arduino.
- Подключаем плату Arduino к компьютеру/ноутбуку.
- В Arduino ID выбираем COM Port. Tools -> Serial Port -> Corresponding COM Port
- Далее выбираем тип платы. Tools -> Board -> Your Arduino Board
- Затем выбираем стандарт Firmata. Examples -> Firmata -> Standard Firmata
- Нажимаем «Upload» и загружаем код на плату.
Шаг 3: Соединяем датчики с платой и крепим их на перчатку
Датчики изгиба — это резистивные устройства, что могут использоваться для фиксации сгибания или наклона. Ниже приводится схема подключения датчиков на Arduino. Для того, чтобы надежно закрепить датчики на перчатке использовал согнутые скобки для степлера, однако вы можете при желании использовать пластиковые стяжки.
Шаг 4: Подсоединяем Bluetooth модуль HC-05 к Arduino
Соединяем выводы bluetooth модуля и платы Arduino следующим образом:
- HC05 Tx — Arduino Rx
- HC05 Rx — Arduino Tx
- Vcc — 5V
- GND — GND
Шаг 5: Соединяем Arduino с батареей
Используем 9В батарею для питания платы Arduino с Bluetooth модулем. Такой тип компоновки объясняется возможностью легкого монтажа на запястье/браслете. Чем компактнее тем лучше.
Шаг 6: Программа Pocket Code
Ниже представлены примеры использования программы. Прежде всего убедитесь, что PHIRO Pro находится в Mode 3 (Bluetooth Mode). Нажмите на кнопку Mode на PHIRO не раньше, чем синий светодиод, что расположен рядом с дисплеем на верху, включится.
Для программы, в общем есть 7 режимов.
- Указательный палец выпрямлен. Фары светятся красным. Программа показывает STOP.
- Указательный и средний палец выпрямлены. Фары светятся зеленым. Программа показывает STOP.
- Указательный, средний и безымянный пальцы выпрямлены. Фары светятся синим. Программа показывает STOP.
- Ладонь открыта. PHIRO движется вперёд. Фары светятся белым. Программа показывает FORWARD (вперёд).
- Ладонь сжата в кулак. PHIRO останавливается. Фары выключены. Программа показывает STOP.
- Ладонь сжата в кулак и наклонена влево (телефон наклонён влево). PHIRO поворачивает налево. Левая фара светится желтым. Программа показывает LEFT (влево).
- Ладонь сжата в кулак и наклонена вправо (телефон наклонён вправо). PHIRO поворачивает вправо. Правая фара светится желтым. Программа показывает RIGHT (право).
Шаг 7: Проводим финальный монтаж
Для крепления телефона на руке, можете воспользоваться наручной повязкой или сделать так, как сделал я.
Купил дешевую крышку под мой мобильник, прорезал отверстия и протянул ленту липучку. Наручная повязка с телефоном готова.
Машинка на Ардуино с Блютуз
Машинка на Ардуино с блютуз управлением ► собирается очень просто. На сайте вы узнаете схему сборки и сможете скачать программу для Arduino UNO и Android.
Машинка на Ардуино с Bluetooth управлением от Android телефона — это очень простой, но интересный проект на Arduino UNO с использованием модуля Motor Shield. На этой странице вы узнаете какие потребуются компоненты для изготовления робота машинки на Ардуино своими руками, пошаговую инструкцию по сборке электрической схемы и сможете скачать все необходимые программы для Android и Arduino.
Для этого проекта использовался модуль Motor Shield L293D, два колеса с редукторами, плата Arduino UNO, блютуз модуль HC-05 и два светодиода для фар. Управление происходит дистанционно через Bluetooth сигнал от смартфона или планшета. После сборки модели и установки программ, вы сможете через приложение на смартфоне поворачивать машинкой, ездить вперед и назад, включать и выключать фары.
Машинка на Ардуино своими руками
Для этого проекта нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- Motor Control Shield L293D;
- Bluetooth модуль HC-05/06;
- два мотора с редукторами и колесами;
- аккумулятор 9 Вольт (крона);
- 2 резистора и 2 светодиода;
- корпус и колеса от старой машинки;
- паяльник, термопистолет, провода, припой и т.д.
Детали для робота — машинки на Ардуино УНО
Схема сборки машинки на Ардуино
Если у вас есть все необходимые детали (в проекте можно обойтись без светодиодов и резисторов), то далее мы рассмотрим, как сделать машинку из ардуино своими руками. Для начала следует припаять к контактам моторчиков провода и зафиксировать их изолентой, чтобы контакты не оторвались. Провода необходимо соединить с клеммниками M1 и M2 на Motor Shield (полярность потом можно будет поменять).
Схема сборки машинки с Блютуз управлением
Питание на Bluetooth модуль идет от контактов для сервопривода, в проекте серво нам не понадобятся. А на питание идет стабилизированное напряжение 5 Вольт, что нам подходит. К портам TX и RX удобнее будет припаять коннекторы «мама», а к портам «Pin0» и «Pin1» на Motor Shield припаять штырьки (BLS). Таким образом, вы сможете легко отключать Bluetooth модуль от Arduino при необходимости загрузки скетча.
Управление светодиодами идет от порта «Pin2», здесь провод можно припаять напрямую к порту. Если вы делаете несколько машинок с Блютуз, которыми будете управлять одновременно, то рекомендуем сделать перепрошивку модуля HC-05. Делается прошивка модуля очень просто, а затем вы уже не будете путать машинки, так как у каждой будет отображаться свое уникальное имя на Андроиде.
Приложение и скетч для машинки на Ардуино
После сборки схемы загрузите следующий скетч для машинки (не забудьте отключать Bluetooth модуль от Ардуино при загрузке) и установите приложение на смартфоне. Все файлы для проекта (библиотека AFMotor.h, скетч для машинки и приложение для Android) можно скачать одним архивом по прямой ссылке здесь. Работу скетча можно проверить управлением машинки от компьютера через Serial Monitor по USB.
Пояснения к коду:
- для тестирования, можно отправлять команды с компьютера через USB;
- вращение моторов при подключении к аккумулятору будут отличаться;
- вы можете задавать свою скорость вращения моторами.
Управление машинкой на Ардуино через Андроид
После проверки работы машинки, установите приложение на смартфон или планшет. При первом подключении к Bluetooth модулю HC-05/06, потребуется сделать сопряжение с Андроид (затем сопряжение будет выполняться автоматически). Если у вас возникли сложности с подключением — прочитайте эту статью Подключение блютуз модуля к Ардуино или напишите вопрос в комментариях к этой записи.
Bluetooth машинка на arduino
Привет самоделкины! Так вот в данной статье мы рассмотрим, как сделать машинку на bluetooth управлении. В роли пульта управления будет смартфон.
Также прикрепляю ссылки на некоторые компоненты
Для данной самоделки нам понадобится:
1. Мотор-редуктор 4 шт. ссылка
2. Деревянная доска (платформа)
3. Холдер для аккумуляторов 18650 ссылка
4. Аккумуляторы 18650 ссылка
5. Провода для соединения модулей ссылка
6. Arduino uno ссылка
7. Драйвер для моторов ссылка
8. Bluetoth модуль ссылка
9. Колёса для моторов 4 шт. ссылка
Из инструментов нам также понадобится:
1. Дрель
2. Отвёртка
3. Паяльник
4. Карандаш
Ну чтож, приступим к сборке. Перед этим обратите внимание на плату arduino. В этой статье будет применена плата arduino uno, но можно использовать и другие, более компактные версии. Главное — соблюдать схему подключения!
Также аккумуляторы 18650 можно заменить на обычные батарейки.
Первым шагом нужно при помощи клея закрепить моторы на нашей платформе.
Далее припаиваем провода к нашим моторам.
Сверлим отверстия в платформе и при помощи болтов и гаек прикручиваем плату ардуино и драйвер для двигателей
Приклеиваем Bluetooth модуль и соединяем всё проводами.
Паяем провода к слоту для аккумуляторов и одеваем колеса на вал моторов
Готово! Подключаем ардуино к компьютеру и через программу загружаем код. Скачиваем приложение на смартфон и погнали!
Вот видео от автора с подробной сборкой: