- Собираем свою Bluetooth машинку с управлением на Android
- Выбираем компоненты
- Соединяем bluetooth с управляющей платой
- Удалённое управление
- Соединяем управляющую плату с моторами
- Игрушки-шпионы и гоночные машинки управляемые со смартфона!
- Вступление
- Выбор моделей для покупки
- Silverlit Ferrari Enzo
- Silverlit 86068 Car Kit Porsche
- i-Spy Tank
- Rover 2.0 App-Controlled Wireless Spy Tank
- Машинка на Arduino, управляемая Android-устройством по Bluetooth, — полный цикл (часть 1)
- Введение
- Немного об уровне, авторе и предостережения
- Задача
- Понадобится
- Основа конструкции
- Установка Arduino
- Определение угла поворота
- Подключение угла и код
- Распараллеливание ходовых колес
- Подключение Bluetooth
- Система отправки команд
- Заключение первой части
Собираем свою Bluetooth машинку с управлением на Android
На последней сессии я как обычно тщательно готовился к экзаменам (то есть не знал, чем себя занять), и как по счастливой случайности, у меня образовалась радиоуправляемая машинка, большая и красивая, хотя и явно рассчитанная на детей. Поигравшись минут десять, я захотел ее модернизировать, а именно вместо неудобного джойстика с радиусом действия в 3 метра использовать коммуникатор с bluetooth. И удобнее, и дальность действия больше, и явно видны дальнейшие улучшения, о которых, как впрочем и о процессе прикручивания коммуникатора к детской машинке, и пойдет речь в данной статье.
Выбираем компоненты
В прошлом мы с приятелями написали собственную прошивку для роботов Lego Mindstorms NXT, поддерживающую удалённое управление роботом по bluetooth с Android-коммуникатора. Для экспериментов тогда была приобретена отладочная плата Olimex SAM7 с ARM7 на борту, которую в этот раз можно использовать в качестве управляющего контроллера.
В качестве шасси используем корпус игрушечной машинки.
Нужен bluetooth-модуль. Результат хотелось получить быстро, поэтому модуль был выбран из единственного доступного в магазине на тот момент BTM-112, хотя он оказался сравнительно дорогим.
Кроме того, оказалось, что управление с платы не может идти напрямую на моторы, нужен усиливающий контроллер (об этом чуть позже).
В сумме наши компоненты:
- Машинка
- Управляющий контроллер Olimex SAM7
- Bluetooth-модуль BTM-112
- Контроллер для управления моторами L298N
Теперь все необходимое у нас есть.
Соединяем bluetooth с управляющей платой
Для начала настроим доставку команд управляющему блоку. Схема соединения bluetooth-модуля и контроллера простая: по сути дела это UART с некоторыми управляющими ножками, то есть надо лишь присоединить модуль к интегрированному UART-контроллеру.
Программная составляющая не сильно сложнее. При соединении модуль пишет строку вида «CONNECT RE:MO:TE:BT:MA:CC xxx \r\n» , а при отсоединении — «DISCONNECT xxx \r\n» . Задача драйвера состоит в наблюдении за потоком символов и, в случае если сейчас активно соединение, передаче потока управляющему приложению. В итоге драйвер представляет собой конечный автомат, у которого переключение состояния означает переключение функции-обработчика.
Удалённое управление
Как было обещано, удаленное управление осуществляется с помощью Android-коммуникатора.
Наше прошлое приложение для Android (которое управляло Lego Mindstorms NXT, тоже посредством bluetooth) с помощью акселерометра отслеживало наклон коммуникатора и посылало соответствующие команды управления на NXT. Так что наиболее простым решением стало добавление протокола управления машинкой в уже существующее приложение. Сам протокол достаточно примитивен: фиксированная длина команды, фиксированный заголовок, после чего управление по осям X и Y.
Итак, на данном этапе мы можем “порулить” нашей платкой, правда моторы пока не подключены, так что индикация движений производится встроенными светодиодами (видео, к сожалению, нет, в этот момент снял только фотку), но всё равно прогресс есть, он виден, и это греет душу.
Соединяем управляющую плату с моторами
Изначально я думал, что смогу использовать управление со старой платы (зашитой в саму машинку), но оказалось, что использовать её в чистом виде нельзя, поскольку управление моторами было крепко сцеплено с радиочастью. Управлять моторами напрямую с ног головного контроллера тоже не получится из-за малой выходной мощности микросхемы. К сожалению, опыта в этой области у меня нет никакого (все-таки я программист, а не схемотехник), поэтому пришлось прибегнуть к помощи знакомых. По совету я взял микросхему усилителя L298N (избыточную для моих нужд, зато работающую из коробки) и собрал референсную схему.
Напомню, препарируемая машинка детская, и управление у нее немного хромает; когда я начал разбираться с моторами, я понял одну из причин. Для механизма поворота используется не сервопривод, а обычный электродвигатель, который может находиться в одном из трех состояний (выкл., вперед и назад). Таким образом, о плавном повороте мечтать не приходится.
В общем, функционально схема простая, один мотор используется как двигатель, второй мотор — как руль (у него стоит блокиратор на определенном угле поворота).
Для управления каждым мотором нужно подать напряжение на соответствующие управляющие ноги (положительное или отрицательное напряжение либо нуль). Напряжение измеряется между двумя точками (входными ногами управления), то есть мне нужно подавать напряжения на пару управляющих ног как-то так:
forward | reverse | off | ||
---|---|---|---|---|
PIN1 | 1 | 0 | 0 | 1 |
PIN2 | 0 | 1 | 0 | 1 |
Так как Android-приложение передает плавное управление, состояние моторов изменяется по преодолению заданного порога.
Код получился очень простой, я не буду приводить его здесь, но в конце поста есть ссылки на исходники всего проекта.
Понятно, есть недостатки:
- Дискретное управление лево/право, вперед/назад. Сейчас управление моторами осуществляется с помощью GPIO, но выбранные для управления линии могут быть переназначены под PWM контроллер. Таким образом, повороты и ускорение будут плавным.
- Дорогой усилитель. Тут всё просто, заменить на более дешёвую микросхему или схему на нескольких транзисторах.
- Скромные возможности. Раз управление осуществляется с помощью смартфона, то можно как-либо расширить функциональность по сравнению с просто пультом управления.
Источник
Игрушки-шпионы и гоночные машинки управляемые со смартфона!
Игрушечный автомобиль на дистанционном управлении для многих поколений мальчишек остается желанной мечтой. Никакая видеоигра не передаст ощущения того, что ты действительно можешь что-то физически контролировать, как это возможно с радиоуправляемой машинкой. Сегодня реализовать это все на практике стало еще проще благодаря мобильным технологиям.
Вступление
В этом обзоре мы решили рассмотреть интересную категорию компактных радиоуправляемых автомобилей и вездеходов. Такие игрушки всегда были весьма дорогим удовольствием, часто недоступным для многих покупателей. Однако сегодня появляется все больше устройств на дистанционном управлении, цена на которые существенно ниже, потому что в качестве пульта используется самый обыкновенный смартфон на Android или iOS.
Чтобы покупать модные гаджеты в США и отправлять покупки надежным способом в Россию, регистрируйтесь в Бандерольке. Вы получите адрес в штате Делавэр, на который будут поступать заказы. Со склада Бандерольки вы оформляете доставку в Россию до своего дома или в ближайший пункт ПВЗ.
И если маленький автомобиль оснащен лишь простой возможностью передвижения, то продвинутые вездеходы несут на борту беспроводную ИК-камеру ночного видения, передающую потоковое видео на экран устройства и ведущую фото/видеосъемку. Также, они поддерживают голосовую связь на расстоянии и прочие интересные функции.
Есть ряд моментов, которые стоит учитывать при покупке игрушки, а именно: экономичность потребления энергии, тип элемента питания (встроенный аккумулятор или батарейки), дальность контроля по радиочастотному каналу (для Bluetooth — до 10 м, для Wi-fi — до 50-100 м), скорость движения. Проблема игрушек на батарейках в том, что элементы питания необходимо регулярно заменять, либо же сразу покупать дорогие перезаряжаемые. К тому же, такие батарейки (NiMH и NiCD) придется держать на зарядке длительное время, а еще они подвержены «эффекту памяти» — потере емкости в случае нарушения рекомендованного режима зарядки. Для маленьких радиоуправляемых машин идеальным вариантом является наличие в стандартной комплектации литий-ионного аккумуляторного блока с подзарядкой от компьютера.
Выбор моделей для покупки
Помимо продаж через официальные магазины и сети дистрибьюторов, многие производители предлагают свою продукцию по выгодной цене на ]]> Амазоне ]]> , ведь именно эта интернет-площадка славится огромным притоком посетителей и всячески пытается поддерживать высокий уровень обслуживания (чего стоит один только ]]> Amazon Prime ]]> — подробнее о нем в нашей статье). Благодаря многочисленным отзывам посетителей, легко сделать выводы о качестве продукции того или иного бренда. В процессе самостоятельного поиска машинок и вездеходов с управлением на Android и iOS вы увидите достаточно много негативных откликов покупателей. Пользователи сетуют на многочисленные недостатки радиоуправляемых моделей. По этой причине мы сделали свою подборку товаров от проверенных производителей: ]]> ZenWheels ]]> , ]]> Silverlit ]]> , ]]> Happy Cow ]]> , ]]> Midea Tech ]]> , ]]> Brookstone ]]> .
One ZenWheels Micro Rc Car
Канадская компания ]]> ZenWheels ]]> занимается созданием миниатюрных машин с Bluetooth-управлением. Как это ни удивительно, но их товары по вкусу далеко не только детям! Суть в том, что в подвижном гаджете установлено реечное рулевое управление, которое, в свою очередь, обеспечивает плавность езды и высокую маневренность. Более того, в крошечных автомобилях работают поворотники, фары, звуковое оповещение (в том числе сигнализация). Такие приятные детали выделяют One ZenWheels Micro Rc Car среди аналогичных радиоуправляемых машинок.
Для управления машинкой достаточно скачать бесплатное приложение с официального сайта. К слову, ZenWheels разработали весьма удачный беспроводной протокол для контроля за функциями игрушки. В стандартной комплектации есть также 10 небольших конусов-препятствий для тренировки маневров любой сложности.
]]> Купить One ZenWheels Micro Rc Car на Амазоне за 89.99$ ]]>
Silverlit Ferrari Enzo
Silverlit — еще один отменный производитель гаджетов с управлением по Bluetooth для iPhone, iPod и iPad. Спорткар Silverlit Ferrari Enzo — это точная копия машины, выполненная по лицензии автогиганта Ferrari в масштабе 1:50. Нужно отметить прекрасное управление с помощью iOS-приложения, в котором программная оболочка повторяет своим дизайном приборную панель настоящего автомобиля.
Благодаря акселерометру управление и ускорение дается легче на интуитивном уровне, что также повышает маневренность машины.
]]> Купить Silverlit Ferrari Enzo на Амазоне за 61.99$ ]]>
Silverlit 86068 Car Kit Porsche
Еще одна интересная радиоуправляемая модель машины — точная копия Porsche 911 Carrera в масштабе 1:16. Благодаря датчику столкновений в игрушке и эффекту вибрации мобильного устройства, гонки будут ощущаться намного динамичнее. У модели работают фары, «аварийка». Нужное освещение включается автоматически в зависимости от направления. Для большей реалистичности разработчики внедрили звуковое сопровождение для мобильных устройств Apple (шум мотора).
]]> Купить Silverlit 86068 Car Kit Porsche на Амазоне за 43$ ]]>
i-Spy Tank
Это небольшой шпионский вездеход с управлением на «яблочных» устройствах от компании ]]> Happy Cow ]]> . Радиоуправляемая модель умеет транслировать потоковое изображение со звуком прямо на экран мобильного телефона или планшета, которое при помощи софта можно записать. Для этого на башне установлена поворотная камера, меняющая не только горизонтальный, но и вертикальный ракурс.
Режим ночного видения позволяет рассматривать предметы в темноте. Явное преимущество i-Spy Tank — это реализация беспроводного управления по Wi-Fi (4-канальность), так что радиус действия сигнала варьируется от 70 м на открытом пространстве, и до 35 м в помещении с учетом стен. Акселерометр смартфона обеспечивает реалистичное рулевое управление. Питается вездеход шестью аккумуляторными батарейками типа AA (в комплект не входят), которых достаточно для 80 минут активной эксплуатации.
]]> Купить i-Spy Tank на Амазоне за 79.99$ ]]>
Rover 2.0 App-Controlled Wireless Spy Tank
Это модель вездехода от ]]> Brookstone ]]> очень похожа на предыдущую, ведь совмещает те же самые функции и решает аналогичные задачи. С Rover 2.0 шпионские видеосъемки будут интересней, ведь в отличие от i-Spy Tank тут установлена широкоугольная поворотная видеокамера с улучшенным ночным видением.
Программное обеспечение для iOS и Android открывает множество функций, в том числе онлайн-трансляцию на смартфон/планшет, моментальную загрузку отснятого контента в социальные сети.
В комплекте идут 6 батареек AA, которых должно хватить лишь на первое время.
]]> Купить Rover 2.0 на Амазоне за 119.99$
Мир цифровых гаджетов не перестает удивлять. Игрушки с дистанционным управлением на смартфоне или планшете порадуют не только ребенка, но и позволят развлечься взрослым в скучной офисной обстановке. Если вы любите скоростные гонки, обратите внимание на продукты ZenWheels и Silverlit, тогда как вездеход с видеокамерой— настоящая находка для шпионов!
Ну вот и все, регистрируйтесь на нашем сайте и покупайте современные игрушки в США, ведь это просто и выгодно!
Источник
Машинка на Arduino, управляемая Android-устройством по Bluetooth, — полный цикл (часть 1)
Введение
Подробная история того, как из трех двигателей была собрана машина на Arduino, управляемая Android-устройством по Bluetooth. В нескольких десятках абзацев постараюсь максимально пошагово изложить, куда подключить каждый из проводов, как написать фирменное приложение и на каких детских граблях пришлось попрыгать больше недели.
Немного об уровне, авторе и предостережения
Я, автор, пацан 16-17 лет с подмосковной деревни, специализируюсь на написании android-приложений (а там сложнее что-то сжечь), поэтому ответственность за оптимальный подход к решению задач с себя снимаю.
Практически каждый из нижеописанных этапов занимал у меня больше, чем стоило бы, времени. Наверно, именно по этой причине хочу поделиться опытом. И при этом буду очень рад, если поругаете за ошибки и подскажите за оптимизацию.
Задача
Понадобится
Основа конструкции
За основу была взята машина Lego Outdoor Challenger (в реальности выглядит менее пафосно). Все, что от нее осталось: корпус (все элементы украшения сняты) и три двигателя.
У машинки была своя плата, но одна из задач подразумевала универсальность: это сделал я, это смогут повторить другие. Мозги вынул, поставил Arduino Uno.
Установка Arduino
Создатели почему-то не предусмотрели места для Arduino, потому крепил на шурупы, просверлив пластик. Под плату подложил фанеру, чтобы ничего не закоротило. Под шурупы лучше подсунуть что-то пластиковое (кусочек бутылки), ибо плата от железный болтов не защищена.
Поверх платы сразу поставил две motor shiled, так надо. Чтобы управлять второй, придется прокинуть один провод с любого digital порта на H1 (направление) и второй с пина с поддержкой шима (помечены знаком «
», обычно 10, 11) на E1 (скорость).
Определение угла поворота
За поворот машинки отвечает на удивление не сервопривод, а обычный двигатель. Встает проблема: хорошо бы было его не сжечь, ведь угол поворота ограничен, а крутиться двигатель может сколько угодно.
Вариант с методом тыка отпадает, так как при разном уровне батареи количество тока, подаваемое на двигатель, будет изменяться, что приведет к постоянно меняющемуся углу. Крутить до упора тоже нельзя, рано или поздно рассыплются шестеренки.
Решение проблемы: отслеживать угол через замыкание. На фото продемонстрирована небольшая штучка, которая крепится недалеко от поворотного механизма. На часть, которая крутится вместе с колесами влево/вправо двигателем, прикрепляется гребешок с железными контактами.
Принцип работы: к каждой линии припаивается провод (всего их четыре), нижний подключается к плюсу (он зажат гребешком всегда, см. картинку), остальные провода уходят на минус. Когда зубик гребешка попадает и на нижний ряд, и на, допустим, третий, происходит замыкание, ток течет, это замечает Arduino.
Благодаря различным комбинациям трех полос, можно определить до семи углов. Например, когда ток есть на всех линиях, колеса повернуты в крайнее правое положение, когда ток есть только на верхней, колеса повернуты максимально влево. В таблице предоставлены все варианты.
Подключение угла и код
Для каждого уровня был выбран свой цвет: нижний – зеленый, первый снизу – красный, второй – черный, третий – белый. На начальном этапе использовались breadboard и светодиоды для визуальной отладки.
Схема подключения показана на рисунке. Плюс тянем к зеленому, остальные протягиваем к минусу. Через резистор, установленный для устранения помех и отсутствия КЗ, подключаем провода к выходам A0-A2. Выбраны они просто из экономии остальных портов.
Код дан с комментариями. Подключаем пины и опрашиваем их через digitarRead(). Если напряжение есть, вернется значение true. Далее смотрим, если результат означает, что колеса в крайних положениях, запрещаем дальнейший поворот в эту сторону.
Небольшая хитрость: поскольку выходы на 5В и 3.3В понадобятся в будущем, можно поставить плюс на один из digital-пинов. Перед каждой проверкой угла выдавать ток через digitalWrite(whitePin), потом проверять угол и убирать ток.
Распараллеливание ходовых колес
Изначально два ходовых двигателя соединены вместе. Их рассоединил по двум причинам: поворот эффективней, если колеса крутятся в разные стороны, и два мощных двигателя одна плата не вытянет.
Проблема: у motor shield два выхода, каждый из которых выдает до 2 ампер. Каждый двигатель ест по 0,7А. Вроде меньше, но не при максимальных нагрузках. Допустим, машинка застряла в песке или уперлась, ток возрастает выше ампера. Не критично, но потенциально опасно.
А вот критичным оказалось то, что плата греется. Через минуты полторы после заезда, motor shield нагревалась и начинала работать безобразно: токи подаются не те, колеса не крутятся и прочее.
Решение обоих проблем: один двигатель подключил к одной motor shield, второй – к другой. Как ни странно, помогло. Температура упала, перегрев отсутствует. Можно было поставить радиатор, но крепить тяжело.
Подключение Bluetooth
Я использовал модель HC-05, что сыграло роковую шутку. Подключаются все блютузы одинаково: один провод на 3.3В (иногда начинал работать только от 5В), второй на минус, еще два на порт 0 и 1 (чтение и отправка соответственно). Провод, подписанный RXD на bluetooth, втыкается в TXD ардуино, а TXD в RXD (если перепутаете, то данных не увидите).
Есть оговорка: порты 0 и 1 по умолчанию используются Serial, через который заливает скетч. То есть, пока воткнут блютуз, скетч не зальется. Есть два выхода: вынимать блютуз на время заливки или переназначить входы и выходы блютуза. Второй вариант осуществляется двумя строчками
Подводный камень, съевший у меня трое суток работы – скорость общения. По привычке установил 9600 и пошел пробовать. То данные не приходили, то была каша символов. И в конце концов ответ – модель HC-05 общается на 38400! Очень сильно обратите внимание на то, что в Setup() я выполню BTSerial.begin(39400), хотя Serial.begin(9600).
Система отправки команд
Статья становится слишком длинной, поэтому рассмотрение кода Arduino и Android вынесу в отдельную вторую часть, а сейчас опишу принцип.
На андроид устройстве есть джойстик (круг, о реализации которого также во второй части). Андроид считывает показания с него и конвертирует их в подходящие для ардуино числа: скорость из пикселей превращает в значение от -255 до 255 (отрицательные – задний ход), а также определяет угол. Я сознательно отдал эту задачу телефону, так как он куда мощнее и спокойно справится с подсчетом нескольких сотен значений в секунду.
После установки сокета данные отправляются в следующем формате: @скорость#*угол#. @ — говорит о том, что следующие цифры содержат скорость, # — извещает об окончании значения скорости, * — начало значения угла, # — закончить запись угла. Цикл бесконечен, команды отправляются каждые 100 миллисекунд (цифра подобрана оптимальная). Если ничего не нажато на андроиде, то ничего и не отправляется.
Алгоритм приема данных подробно описан в коде скетча. Он не раз переписывался и, как по мне, работает идеально.
Заключение первой части
В этой статье я попытался раскрыть все, что касается физической части машинки. Вероятнее всего, что-то упустил, так что обязательно спрашивайте.
Но самое интересное, как по мне, осталось на второе – программа Arduino и приложение на Android, там творится настоящая магия, по крайней мере, для молодого меня.
Источник