Arduino танк с bluetooth управлением
Теперь давайте разберем все по порядку.
Самое главное в аппаратной части это шасси, то есть корпус. Без самого танчика у нас ничего не выйдет. При выборе корпуса обратите внимание на свободное место внутри. Нам придется разместить там внушительное количество компонентов. Мне в руки попался вот такой вариант, с ним и будем работать.
Донор для нашего проекта.
Изначально он был неисправен. Хотел восстановить, однако ужаснувшись качеством сборки рабочей платы, решил что переделка будет надежнее. Да и детей порадую старым гаджетом управляемым по-новому.
Габариты: 330х145х105 миллиметров без учета ствола. Корпус оснащен четырьмя двигателями: два для движения, один для башни и один для ствола. Изначально танк умел стрелять резиновыми пулями, но механизм был сломан, поэтому я его попросту срезал со ствола. После этого места для размещения начинки стало достаточно.
Следующий компонент это Н-мост на микросхеме L298N . Нам их понадобится два: один для гусениц и один для башни и ствола. Подключение весьма банальное, думаю для вас не составит особого труда разобраться.
Данный модуль моста работает от напряжения 5-35 вольт и имеет выход 5 вольт для подключения логики, что весьма удобно. Кроме того его можно приобрести в Китае за смешные деньги. На момент написания статьи цена составляла около ста рублей.
Еще нам понадобится Bbluetooth модуль HC-06. Он так же прост в подключении и обладает низкой стоимостью.
HC-06 Bluetooth for arduino
Рассматривать его подробно нет необходимости. Этот bluetooth модуль для arduino очень популярен и широко применяется уже довольно давно.
Еще нам понадобятся провода, холдер для аккумуляторов и сами аккумуляторы, микро выключатель. Выбор аккумуляторов для питания поделки, а точнее их количество, зависит от питающего напряжения двигателей модели. Можно и простыми пальчиковыми батарейками запитать.
Прошивка для ардуино.
.Как я уже писал в начале, мы не будем копаться в коде. Для составления скетча воспользуемся специализированным софтом, а именно программой FLProg. Это целый комбайн для работы с контроллерами ATmega. Поддерживает практически все платы ардуино и датчики к ним. В программу интегрирована Scada для управления микроконтроллерами с персонального компьютера, написанная автором программы.
Вот мой проект для Arduino танка с bluetooth управлением, созданный в программе FLProg: скачать с ЯндексДиска
Скачиваете и устанавливаете программу с официального сайта и устанавливаете, портативную версию можно просто распаковать. Далее открываете в ней мой файл проекта и нажимаете на кнопку прошивки в верхней части интерфейса (седьмая слева).
Откроется ArduinoIDE, ну а в ней вы работать умеете 😀 .
Схема подключения
Подключение периферийных элементов к плате, в нашем случае блютуза, мостов и светодиодов выполняем по проекту.
Список использованных пинов
Светодиоды, если таковые имеются, необходимо подключать через токоограничивающие резисторы.
Как и в предыдущей модели мы будем использовать программу для android-устройств под названием HmiKaskada. Выкладываю бесплатную версию этой программы, скачать которую можно с ЯндексДиска. Мой проект выполнен в платной версии и он не совместим с фрее-версией программы. Так что дальнейший материал посвящен созданию проекта в фрее-версии.
Список адресов флагов
Используются адреса в диапазоне 0-16. Далее подгоняете размер кнопки бод рабочую область и делаете кнопку прозрачной. Это позволит при запуске проекта лицезреть красивую кнопку подложки.
Когда все органы управления созданы, настроены и расположены по своим местам кликаем на запуск проекта. Андроид подключится к танку, и вы сможете насладиться проделанной работой.
Заменил диоды на фарах моей игрушки. Желтые слаботочные абсолютно не радовали и были перепаяны на яркие белые из зажигалок с фонариками 🙂 . Теперь этим гусеничным чудом комфортно управлять даже в полной темноте. Фото до и после:
Итог финальной сборки выглядит не очень аккуратно, я решил не тратить дополнительное время на проектирование шилдов и прокладку проводов. И так все замечательно работает.
Как видно из вышеизложенного материала, никаким копанием в коде при создании танка под управлением блютуз и не пахнет. Никаких сверх углубленных познаний в электронике нам тоже не потребуется. Все операции интуитивно понятны и ориентированы на новичков. Изначально программа HMIKaskada была разработана как альтернатива дорогущим промышленным HMI панелям, но пригодилась и в создании игрушки. Надеюсь что помог вам развеять миф о сложности создания многозадачных проектов на ардуино.
Шаг первый. Собираем коробку передач
Чтобы собрать коробку передач, нужно следовать инструкции. В комплекте Tamiya должно иметься два двигателя, смазка, гаечный ключ, а также редуктор. Для того чтобы машинка работала правильно, нужно использовать передаточное соотношение «58: 1».
После сборки шестерни в коробке передач нужно тщательно смазать смазкой, которая идет в комплекте. При сборке нужно не забывать о металлических распорках коробки передач.
Как вариант можно применять даже двойной мотор КПП, однако в этом случае придется менять код устройства, поэтому лучше применять два моторчика.
Шаг второй. Собираем шасси.
После того как редукторы будут собраны, можно приступать к сборке шасси. Не нужно следовать инструкции, так как конструкция будет немного изменена. В наборе можно будет увидеть одну шестерню и три набора роликов.
Сборка состоит из нескольких этапов, как это происходит, можно увидеть на фото.
Шаг третий. Установка контроллера Arduino и драйвера двигателя
Контроллер крепится к корпусу с помощью винтов, для этого сперва нужно установить кусок акриловой пластины. Помимо этого можно использовать распорки, это позволит заменить пластиковую основу.
Работает все следующим образом. Программа отправляет определенные байты информации на Arduino, где она потом декодируется. Ну а дальше на основе этой информации устройство посылает нужные команды на двигатели.
Электросхема выглядит следующим образом:
- «ТХ модуль Bluetooth» подключается к «RX в Arduino»;
- «RX модуль Bluetooth»подключается к «ТХ Arduino»;
- «VCC модуля Bluetooth» подключается к «5В из Arduino»;
- «Земля из модуля Bluetooth» подключается к «GND Arduino».
Шаг пятый. Устанавливаем FPV камеру
Конкретно в этом проекте камера не была добавлена, но при необходимости это можно сделать. Благодаря этой камере можно будет видеть, куда едет автомобиль, не глядя на него. Вся информация будет транслироваться непосредственно с его борта. Подобные технологии можно встретить на беспилотниках и других подобных устройствах. Для работы такой камеры понадобится передатчик и приемник. Помимо этого потребуется дополнительная батарея для работы камеры.
Сегодня был чудесный весенний день, мы выбрались на природу, отлично провели время, проверили работу написанной нами программки Z-Controller.
И самое главное - протестировали на дальность работы блютуз модуль HC-06, а также радиомодули APC220.
Ну, обо всем по порядку.
Компоненты для повторения (купить в Китае):
• Управляющая плата
Arduino UNO 16U2, либо более дешевая Arduino UNO CH340G,
Arduino Nano CH340G, либо Arduino MEGA 16U2, либо более дешевая Arduino MEGA CH340G,
• Плата управления моторами
Плата расширения L293D, либо Модуль L298N, либо Плата расширения L298P (нет в статье)
Z- Motor Shield L293D (прекращен выпуск)
• Радиомодули
• Соединительные провода
Интересные платформы:
Платформа1 (акрил 2 колеса)
Платформа2 (металл гусеничная)
Платформа3 (металл гусеничная)
Итак, начнем с железной части. Сборка машинки производится элементарно. Одним движением руки вставляем шилд в плату Arduino, затем подключаем к винтовым клеммникам моторы и подаем на плату питание от аккумулятора либо батареек.
Остается только подключить блютуз или радиомодуль с помощью джамперов "папа-мама".
Bluetooth HC-06 | Arduino |
VCC | +5V |
GND | GND |
TX | RX |
RX | TX |
Дистанционное управление на bluetooth модуле HC-06
Начнем с блютуза. Про соединение с компьютером можно прочитать здесь
Программка получилась функциональной. В неё можно добавлять свои кнопки, называть их как хочешь, привязывать к ним какие хочешь клавиши на реальной клавиатуре, посылать в порт задаваемые значения при нажатии и отпускании клавиши. Иными словами - дай двум людям программу и у каждого она будет со своим интерфейсом.
В связи с этим, для управления танком необходимо будет загрузить в программу файл настроек под наш код (скачать).
• Управление танком без контрольного символа
Возьмем, к примеру, простой до безобразия код без контрольного символа.
В случае если вы не рассчитываете работать на предельном для блютуза расстоянии, где возможен обрыв связи либо обрыв связи не столь критичен, то можно остановится на этом легком скетче.
Как мы видим из скетча, при получении символа "W", наш танк поедет вперед и остановится когда мы отпустим клавишу и в порт будет послан символ "T" (т.к. символ "T" у нас задан на отпускание клавиши W).
На приведенно ниже видео мы и продемонстрируем потерю управляемости при выходе из радиуса действия блютуза.
Открываем Z-controller, подключаемся к порту которым отпределился блютуз и едем.
• Управление такном с контрольным символом
Перейдем к управлению с контрольным символом. Z-Controller по настройкам из конфигурационного файла спамит контрольный символ "P" каждые 100 мс. Теперь, если связь оборвалась, и в течении 150мс на контроллер не пришел сигнал "P", то танк остановится.
Код будет одинаковым и для HC-06 и для APC220
Как мы можем наблюдать, дистанция управления с контрольным символом стала меньше чем без него. Это обуславливается тем, что в первом случае танк "залипал", бесконтрольно уезжал вперед, потом снова пробивался сигнал, он входил в штатный режим и снова терял связь.
На втором видео уже видно, что устойчивая, без обрывов дистанция работы блютуза лежит в пределах 15 метров. Затем сигнал очень плохой, как видно на видео, сигнал все-таки будет местами доходить, и танк будет выполнять действия, но это уже не тот сигнал, который нужен для полноценного управления.
Дистанционное управление на радиомодуле APC220
Подключение модуля и программный код для работы точно такие же как и у bluetooth HC-06.
Руководство пользователя данного модуля с компьютером здесь
Радиомодули APC220 | Arduino |
VCC | +5V |
GND | GND |
TX | RX |
RX | TX |
Маневрирование танком на APC220
Управление танком на APC220 на дальней дистанции ( примерно 70-80м)
Хочется сказать пару слов об APC220. Радиомодули отличные, но есть некоторые особенности при работе. При расположении модуля на танке, он находился на высоте 5 см от земли ( т.е. на него распространялся фактор поглощения радиосигнала подстилающей поверхностью), и максимальная дистанция управления танком составила метров 100. Ради интереса я взял танк в руки, поднял на уровень груди и пошел дальше, зашел в лес, прошелся еще метров 200-250 и сигнал ловил отлично. Дальше не пошел т.к. тропка начала закругляться. В итоге можно прийти к выводу, что для получения хорошей дистанции, радиопередатчики следует крепить как можно выше от земли.
Сборка идентичной дистанционно управляемой машинки,
но на базе Arduino и модуля драйвера двигателей L298N
При сборке машинки на модуле L298N так же ничего сложного нет. Просто придется соединить модуль с платой Arduino с помощью джамперов "папа-мама" как показано на картинке.
пример программного кода:
Сборка идентичной дистанционно управляемой машинки,
но на базе Arduino и Adafruit Motor Shield
При сборке машинки на Adafruit motor shield могут возникнуть некоторые трудности если вы не умете паять. Производители шилда не комплектуют плату гребенками "папа-мама", по-этому соединить шилд с блютуз модулем с помощью джамперов не выйдет - придется подпаиваться.
Пример программного кода:
А как же комментарии?
В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.
Всем привет. У меня таки возникло непреодолимое желание поделиться с миром своим достижением. Достижением является танк, который рулится по WiFi с геймпада, транслирует на пульт видео в реальном времени, передает с пульта и на пульт звук, а также имеет пушку с лазерным прицелом, из которой можно в кого-нибудь пострелять.
Этот пост будет первым тестовым, дабы понять, интересно ли такое кому-нибудь, кроме меня. В нем опишу общее строение, используемые технологии и устройства.
UPD: добавлено видео.
Для начала маленькое видео для привлечения внимания. Звук идет из колонки танка.
Давным-давно была у меня мечта сделать робота на гусеничном шасси, которым можно было бы удаленно рулить. Основной проблемой было отсутствие непосредственно гусеничного шасси. В конце концов я уже решился купить радиоуправляемый танк на разборку, но мне повезло, в магазине среди хлама нашелся танк Snow Leopard (Pershing) — USA M26 с погоревшей электроникой, но полностью исправной механической частью. Это было ровно то, что нужно.
Вдогонку к шасси были докуплены два регулятора напряжения для коллекторных двигателей, штатив для камеры из двух сервоприводов, веб-камера с аппаратной поддержкой mjpeg и внешняя WiFi карточка TP-LINK TL-WN7200ND. Чуть позже к списку устройств добавились портативная колонка, USB звуковуха Creative SoundBlaster Play и простенький микрофон, а также пара USB хабов, чтоб все это подключить к модулю управления, которым стал Raspberry Pi. Башня с танка была демонтирована, рулить ею было очень неудобно, так как вся штатная механика была построена на обычных двигателях без обратной связи.
Сразу оговорюсь, что фотки делались, когда танк был почти готов, а не в процессе изготовления.
В батарейный отсек я запихал самую большую Li-Po батарею, которая туда влезла. Ей оказалась двухбаночная батарейка на 3300 mAh в твердом корпусе, которая обычно используется в модельках машин. Паять мне было лень, поэтому для всей коммутации была использована стандартная макетная плата с шагом 2.54. Позже появилась вторая на верхней крышке и шлейф, который их соединял. На каждый из двух двигателей у меня был свой регулятор напряжения, который в виде бонуса выдает стабилизированное питание около 5.6 вольт. С одного регулятора был запитан Raspberry и WiFi карта, питание со второго пошло на сервоприводы и USB хаб с периферией.
Надо было как-то это завести. Raspberry был выбран не случайно. Во-первых он позволяет поставить нормальный полноценный линух, а во-вторых имеет кучу GPIO ног, которые в том числе могут генерировать импульсный сигнал для сервоприводов и регуляторов хода. Генерировать такой сигнал можно с помощью утилиты ServoBlaster. После запуска она создает файл /dev/servoblaster, в который можно писать что-то типа 0=150, где 0 — номер канала, а 150 — длина импульса в десятках микросекунд, то есть 150 — это 1.5 миллисекунды (у большинства сервоприводов диапазон значений 700-2300 мс).
Итак, подключаем регуляторы на 7 и 11 GPIO пины и запускаем servoblaster командой:
Теперь, если записать в /dev/servoblaster строки 0=230 и 1=230, то танк рванет вперед.
Далее шел долгий процесс написания серверной и клиентской части на Python'е c использованием библиотеки pygame для получения событий от геймпада, допиливание tinycamd, чтоб он посылал видео поток по UDP и установка камеры на штатив из сервоприводов, чтобы была возможность оглядеться. После чего танк отправился в первое путешествие по офису за пределы прямой видимости. И в этот момент пришло понимание, что хочется не только смотреть видео, но и иметь двусторонний аудио канал, чтобы, например, попросить коллег открыть дверь или вызвать лифт.
Для воспроизведения звука была использована дешевая карманная USB колонка, купленная в супермаркете по акции. Она была подключена вместе с простеньким микрофоном через USB звуковуху. Для работы со звуком пригодилась библиотека pyalsaaudio. После допиливания сервера и клиента появилась возможность в процессе рассекания на танке говорить и слушать.
Следующей фичей оказалась фара. В какой-то момент стало понятно, что чувствительности камеры может легко не хватать и есть шанс заехать в темноту и не выехать. Первой идеей была инфракрасная подсветка. Была собрана линейка инфракрасных светодиодов, но, как показала практика, толку от них ноль. Светят очень плохо и мало. А готовые инфракрасные прожекторы требуют 12в питание (а у меня всего 2 банки, то есть 8в максимум), много жрут тока, громоздкие и стоят дорого. В итоге было решено перейти в видимый диапазон, были куплены два мощных белых SMD светодиода и линзы к ним. Для питания фары коллегами по работе был сотворен драйвер с регуляцией по току, который включался через полевой транзистор подачей единицы на GPIO ногу Raspberry. Отныне темные комнаты перестали быть препятствием.
На всех этапах оставалось непонятным, сколько еще можно кататься, не убив батарейку (Li-Po нельза разряжать ниже чем 3.3в на банку). Я не нашел способа замерить напряжение с помощью GPIO ног Raspberry, поэтому в качестве измерителя поставил Arduino Nano, к которому на будущее сразу подключил LCD экран c I2C адаптером. Батарейка подключается через половинный делитель на аналоговую ногу Arduino, после чего остается только откалибровать показания. Arduino по традиции общается с основным модулем через COM порт, который у Raspberry также выведен на GPIO ноги.
Одной из последних деталей танка стала пушка. Пушка была куплена там же, в магазине радиоуправляемых моделей в виде запчасти. Она, правда, предназначалась для другой модели танка, но суть ее от этого не изменилась. Пушка пневматическая, имеет двигатель, взводящий пружину поршня, и контакт, который замыкается при выстреле. От горизонтального поворота пушки я пока что отказался, чтоб не снести ей весь обвес, который прицеплен на верхнюю крышку, а для вертикального использовал мощный сервопривод. Чтоб было проще рулить, я сделал поворот пушки по синхронным с поворотом камеры. То есть куда смотрим (по вертикали), туда и стреляем. Для прицеливания на ствол пушки был примотан лазерный светодиод от указки. Чтоб лишний раз не тратить батарею и не светить лазером куда не надо, нужно было сделать пушку отключаемой. Процесс выстрела также не совсем прост. Надо включить питание двигателя и ждать замыкания контакта, после чего двигатель выключить. В итоге управление выстрелом и питанием сервы и лазера было повешено на ардуину, а сигнал для сервы генерирует Raspberry. Для двигателя пушки также пришлось проводить отдельный силовой провод и включать его постепенно, используя ШИМ, так как иначе прилетает помеха по питанию и Arduino уходит в ребут. Для подачи снарядов, то есть шариков, была использована коробочка от драже TicTac с дыркой в дне.
Наверное, для первого раза хватит. Если статья понравится, буду потихоньку писать детали в следующих постах. И еще немного фоток напоследок, а также свежеснятое видео. Правда, качество получилось не очень, так что у эстетов заранее прошу прощения. ссылка на github
Читайте также: