Arduino танк с bluetooth управлением — прекрасный пример того, как легко и без особых знаний можно превратить обычный радиоуправляемый танчик в крутую игрушку управляемую с android устройства. Причем при этом даже код редактировать не придется, все сделает специализированный софт. Возможно вы читали мою предыдущую статью , посвященную переделке радиоуправляемой модели автомобиля на управление. С танком все почти то же самое, только он еще умеет вращать башней и меняет угол подъема ствола.

Для начала представляю краткий обзор возможностей моей поделки:

Теперь давайте разберем все по порядку.

Arduino танк с bluetooth управлением — аппаратная часть.

Самое главное в аппаратной части это шасси, то есть корпус . Без самого танчика у нас ничего не выйдет. При выборе корпуса обратите внимание на свободное место внутри. Нам придется разместить там внушительное количество компонентов. Мне в руки попался вот такой вариант, с ним и будем работать.

Донор для нашего проекта.

Изначально он был неисправен. Хотел восстановить, однако ужаснувшись качеством сборки рабочей платы, решил что переделка будет надежнее. Да и детей порадую старым гаджетом управляемым по-новому.

Габариты: 330х145х105 миллиметров без учета ствола. Корпус оснащен четырьмя двигателями: два для движения, один для башни и один для ствола. Изначально танк умел стрелять резиновыми пулями, но механизм был сломан, поэтому я его попросту срезал со ствола. После этого места для размещения начинки стало достаточно.

Скачиваете и устанавливаете программу с официального сайта и устанавливаете, портативную версию можно просто распаковать. Далее открываете в ней мой файл проекта и нажимаете на кнопку прошивки в верхней части интерфейса (седьмая слева).

Интерфейс FLProg

Откроется ArduinoIDE, ну а в ней вы работать умеете 😀 .

Arduino танк с bluetooth управлением — схема подключения

Подключение периферийных элементов к плате, в нашем случае блютуза, мостов и светодиодов выполняем по проекту.

Список использованных пинов

В списке показаны номера пинов ардуино и их назначение. Все прокомментировано. Контакты управления движением и башней со стволом подключаются напрямую от мостов, никакого дополнительного обвеса не требуется. Подключение аналогового входа для измерения напряжения необходимо выполнять через резистивный делитель так как бортовое напряжение ардуины составляет ПЯТЬ ВОЛЬТ!!! Это очень важно, при превышении порогового напряжения микросхемы контроллер отправляется в мир иной. Так что будьте внимательны. В моем случае использованы два li-ion аккумулятора формата 18650, делитель на резисторах 1 КОм и 680 Ом. Если ваше рабочее напряжение отличается от моего, то идете на любой онлайн-калькулятор для расчета резистивного делителя и рассчитываете самостоятельно, исходя из того что выходное его напряжение должно быть равно пяти вольтам. Если сомневаетесь в своих силах, то можете вообще не использовать измерение напряжения на аккумуляторе, работать будет и так. Перестал так ездить — пора на зарядку.

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

Arduino танк с bluetooth управлением — программа для планшета или смартфона.

Как и в предыдущей модели мы будем использовать программу для android-устройств под названием HmiKaskada. Выкладываю бесплатную версию этой программы, скачать которую можно с ЯндексДиска . Мой проект выполнен в платной версии и он не совместим с фрее-версией программы. Так что дальнейший материал посвящен созданию проекта в фрее-версии.

Интерфейс управления

В готовом проекте на планшете присутствует еще индикатор уровня заряда батареи, а это — подложка для проекта. Итак, приступим…

Для начала создадим проект с одним рабочим экраном, нам больше не понадобится. Далее подключим наш модуль блютуз к планшету. Для этого переходим в редактирование списка серверов и жмем плюс в правом верхнем углу. Выбираем из списка наш bluetooth и даем ему имя. Теперь он настроен и готов к работе. Следующий шаг это установка подложки для рабочей области. Для этого идем в меню «прочее — фон» основной рабочей области и загружаем картинку интерфейса. Можете использовать мою или создать свое изображение. На самом деле работать будет и без настройки фона, он только для красоты.

Теперь приступим к размещению органов управления. Идем в меню «задатчики» и перетягиваем кнопку в рабочую область. В меню кнопки кликаем на адрес и вводим например 1#0.12. Где 1 — адрес платы ардуино, а 12 — адрес переменной из проекта. Переменные использованные в проекте можно посмотреть в дереве проектов.

Список адресов флагов

С настройкой индикатора заряда аккумулятора точно так же. Создаем регистр хранения в формате Integer в проекте ардуино и присваиваем индикатору его адрес. Например 1#10, настраиваете индикатор на свой вкус.

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

Arduino танк с bluetooth управлением — сборка.

Сборка поделки отняла часа два моего времени, но результат превзошел все ожидания. Танк получился довольно шустрый, откликается на команды моментально. Пришлось повозиться с редуктором, приводящим в движение гусеницы танка. Он рассыпался, но к моему счастью шестеренки не повредились и немного клея, солидола и прямые руки вернули его в строй. Штатный аккумулятор пришлось заменить на два, подключенных последовательно, li-ion аккумулятора формата 18650 в холдере. Итоговое питающее напряжение получилось равно 6 — 8,4 вольта, в зависимости от уровня заряда батарей. Так же пришлось заменить моторчик, приводящий в движение башню, он был закорочен.

Заменил диоды на фарах моей игрушки. Желтые слаботочные абсолютно не радовали и были перепаяны на яркие белые из зажигалок с фонариками 🙂 . Теперь этим гусеничным чудом комфортно управлять даже в полной темноте. Фото до и после:

Прекрасно)

Итог финальной сборки выглядит не очень аккуратно, я решил не тратить дополнительное время на проектирование шилдов и прокладку проводов. И так все замечательно работает.

Вот такая получилась «начинка»

Arduino танк с bluetooth управлением — заключение.

Как видно из вышеизложенного материала, никаким копанием в коде при создании танка под управлением блютуз и не пахнет. Никаких сверх углубленных познаний в электронике нам тоже не потребуется. Все операции интуитивно понятны и ориентированы на новичков. Изначально программа HMIKaskada была разработана как альтернатива дорогущим промышленным HMI панелям, но пригодилась и в создании игрушки. Надеюсь что помог вам развеять миф о сложности создания многозадачных проектов на ардуино.

Буду рад любого рода комментариям к статье, а так же замечаниям. Ведь я тоже вместе с вами учусь…

Основной частью робота являются шасси от радиоуправляемого танка и других компонентов, их список будет написан ниже. Этот танк первый проект автора на платформе Arduino , и он был доволен что использовал именно её. Пользовался автор материалам и книгами из интернета.

Материалы и инструменты:
- Шасси для танка
- Arduino Uno
- Перемычки и макетная плата
- Драйвер двигателя интегральный SN754410NE
- Обычный сервопривод
- Дальномер ультразвуковой
- Батарея 9В с разъёмом для неё
- Батарейки типа D
- USB кабель для Arduino
- Основа для шасси
- Отвёртки
- Термопистолет и клей для него
- Паяльник и припой

Шаг первый. Шасси танка.
Шасси автор взял от старого танка Абрамс купленного на барахолке. Полученный танк разобрали так, чтоб можно было достать из него шасси. Совсем необязательно использовать тот же танк, подойдёт любой на радиоуправлении. Тем более что оригинальный мотор оставлял желать лучше, поэтому пришлось собирать свой, его сборка будет в следующем шаге. Имея подготовленные шасси, автор прикрепил к ним основу термоклеем. Не имеет значения где она будет закреплена, но было решено приклеить в центре.

Шаг второй. Драйвер двигателя.
Для управления двигателем используется драйвер SN754410NE, автор использовал именно его, так как он был в наличии, можно брать любой аналогичный.
Подключение драйвера к Arduino происходит следующим образом:

Все выводы GND подключают к выводам GND макетной платы.
- Контакты драйвера 1 и 16 к 9 и 10 Arduino.
- К контактам 3 и 4 Arduino подключают контакты 2 и 7 драйвера (они отвечают за управление левого двигателя).
- К выводам Arduino 5 и 6 подключают контакты драйвера 10 и 15 (они отвечают за управление правым двигателем).
- К левому мотору подключают контакты 3 и 6, а к правому 14 и 11.
- Контакты 8 и 16 обязаны быть подключены к питанию на Bredboard, источником питания служит батарея 9В.

Шаг третий. Установка дальномера.
Ультразвуковой датчик позволяет роботу избегать препятствий на его пути при движении. Датчик расположен на стандартном сервоприводе, и будет установлен на передней части робота. В тот момент когда в пределах 10 см робот замечает препятствие, сервопривод начнёт поворачиваться в обе стороны, тем самым ища проход. Arduino считывает информацию с датчика и решает какая сторона более благоприятна для дальнейшего движения.
Первым делом к датчику прилепляют сервопривод. Сервопривод автор закрепляет так чтоб он мог повернуться только на 90 градусов в каждую сторону, иначе говоря, полный оборот сервопривода составит 180 градусов.

Датчик имеет три контакта GND, сигнал и 5В. Питание 5В подключают к питанию 5В Arduino, GND к GND, а сигнал к 7 контакту Arduino.

Шаг четвёртый. Питание.
Arduino получает питание через батарею 9В, подключается она в соответствующий разъём. Двигатели используют питание четырёх батареек типа D, устанавливаются они в держатель батареек. Для получения питания в двигатели, провода держателя подключают к плате, на которой уже установлен драйвер двигателя SN754410NE.

Шаг пятый. Сборка робота.
После завершения всех предыдущих шагов настало время собрать все детали вместе. В первую очередь Arduino крепится на основу танка. После этого, на переднюю часть робота с помощью термоклея прикрепляют ультразвуковой дальномер. Затем, автор закрепляет батареи рядом с Arduino. Батареи можно установить на любой части танка. После установки всех компонентов, все провода были подняты вверх и на плату подали питание, чтобы убедится в правильности сборки.

Шаг шестой. Программный код.
После завершения сборки танка настаёт время для написания программы для него. Программа должна показывать роботу когда нужно двигаться, а когда приостановить движение, для избежания столкновения с препятствием. При написании кода у автора

Этот пост будет первым тестовым, дабы понять, интересно ли такое кому-нибудь, кроме меня. В нем опишу общее строение, используемые технологии и устройства.

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 командой:

# servod --min=70 --max=230 --p1pins=7,11
Теперь, если записать в /dev/servoblaster строки 0=230 и 1=230, то танк рванет вперед.

Наверное, для первого раза хватит. Если статья понравится, буду потихоньку писать детали в следующих постах. И еще немного фоток напоследок, а также свежеснятое видео. Правда, качество получилось не очень, так что у эстетов заранее прошу прощения.


В прошлых материалах мы сделали обзоры видеороликов по изготовлению разных игрушек на радиоуправлении. Продолжим эту тематику. На этот раз предлагаем ознакомиться с процессом изготовления радиоуправляемого танка.

Нам понадобится:
- готовое шасси;
- Arduino Nano;
- 3 сервопривода;
- поворотная система;
- игрушечный пистолет;
- джойстик PS2;
- приемник к джойстику;
- коробка для аккумуляторов;
- аккумуляторные батарейки;
- провода;
- лазер.

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

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

Также снимаем крышку с редуктора.

Проделываем на крышке два отверстия, которые будут использованы для крепления крышки винтами.

Гайки, которыми зажали винты, заливаем клеем, чтобы они не раскрутились при езде и не упали в редуктор.

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

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

Собираем поворотную систему обратно.

Устанавливаем систему на корпусе танка.

В корпусе нужно проделать 3 дополнительных отверстия. Два из них нужны для проводов двигателя, а широкое отверстие понадобится для шины в управлении драйвера двигателя.

Пистолет нужно соединить с сервоприводом. Для этого достаточно проделать по отверстию на сервоприводе и корпусе пистолета и соединить винтом.

Следующим делом нужно соединить курок пистолета к сервоприводу. Для этого просверливаем отверстия на курке и насадке на сервоприводе. Соединяем элементы куском проволоки.

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

Перейдем к программированию платы Arduino Nano.

Собираем оставшиеся компоненты по представленной ниже схеме.

На верхней части шасси устанавливаем куски линейки, которые будут служить крыльями. На крыльях устанавливаем отсеки для аккумуляторов.

Лазер приклеиваем к дулу термоклеем.

Наш радиоуправляемый танк готов.