Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр Вертолеты
Содержание
  1. С чего все начиналось
  2. Шаг 2: что такое робот?
  3. Сборка машинки
  4. Прошивка Arduino
  5. 4 Прошивка микроконтроллера
  6. Управление
  7. 1 ИК Порт.
  8. 2 Bluetooth
  9. Прочие прошивки
  10. Апгрейды, улучшения и т.п.
  11. Батарея, точнее уровень ее заряда
  12. Как и чем управлять
  13. Какой же танк без пушки
  14. Многоканальное управление
  15. Надо заставить это двигаться
  16. Передатчик
  17. Передающая часть
  18. Питание
  19. Питание и проводка
  20. Подключаем камеру
  21. Программная реализация
  22. Пуск!
  23. Радиоуправляемый танк на arduino nano – схемы.ру – каталог схем и самоделок
  24. Реализация в железе
  25. Результат
  26. Риски использования литий-полимерных аккумуляторов
  27. Сборка
  28. Скетч
  29. Схема подключения
  30. Шаг 1. комплектующие
  31. Шаг 1: компоненты
  32. Шаг 1: нужные части и инструмент
  33. Шаг 10: входы / датчики
  34. Шаг 11: источник питания
  35. Шаг 12: установка компонентов
  36. Шаг 14: логика управления
  37. Шаг 15: софт
  38. Шаг 16: тестирование
  39. Шаг 17: планы на будущее
  40. Шаг 2. шасси
  41. Шаг 2: собираем двухмоторный редуктор
  42. Шаг 3. моторы (приводы)
  43. Шаг 3: собираем шасси
  44. Шаг 3: структура / шасси
  45. Шаг 4. установка двигателей
  46. Шаг 4: монтируем микроконтроллер и драйвер электродвигателей
  47. Шаг 4: приводы
  48. Шаг 5. ардуино контроллер
  49. Шаг 5: подключаем модуль bluetooth
  50. Шаг 6. h-мост (модуль lm 298)
  51. Шаг 6: подключаем fpv-камеру
  52. Шаг 6: устанавливаем мотор
  53. Шаг 7. источник питания
  54. Шаг 7: подключаем питание
  55. Шаг 7: устанавливаем крышу
  56. Шаг 8. электрические соединения
  57. Шаг 8: контроллер
  58. Шаг 9. логика управления
  59. Шаг 9: законченная самоходная установка

С чего все начиналось

Давным-давно была у меня мечта сделать робота на гусеничном шасси, которым можно было бы удаленно рулить. Основной проблемой было отсутствие непосредственно гусеничного шасси. В конце концов я уже решился купить радиоуправляемый танк на разборку, но мне повезло, в магазине среди хлама нашелся танк Snow Leopard (Pershing) — USA M26 с погоревшей электроникой, но полностью исправной механической частью. Это было ровно то, что нужно.

Смотрите про коптеры:  Как сделать BEAM-робота

Вдогонку к шасси были докуплены два регулятора напряжения для коллекторных двигателей, штатив для камеры из двух сервоприводов, веб-камера с аппаратной поддержкой mjpeg и внешняя WiFi карточка TP-LINK TL-WN7200ND. Чуть позже к списку устройств добавились портативная колонка, USB звуковуха Creative SoundBlaster Play и простенький микрофон, а также пара USB хабов, чтоб все это подключить к модулю управления, которым стал Raspberry Pi.

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

Шаг 2: что такое робот?

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

Робот состоит из следующих компонентов:

  1. Структура / Шасси
  2. Привод / Мотор
  3. Контроллер
  4. Вводные устройства / Датчики
  5. Источник питания

В следующих шагах я опишу каждый из этих компонентов, и вы всё легко поймёте.

Сборка машинки

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

Прошивка Arduino

Фактически, ваша машина имеет неограниченное число функций, если вы знаете как ее программировать. Если нет, можно взять стандартный и загрузить его в микроконтроллер. Для этого нужно:

4 Прошивка микроконтроллера

Запускаем среду Arduino IDE и скетч. Для этого достаточно кликнуть на желаемом скетче расширения .ino
Подключаем плату Ардуино к ПК. Ардуино должно определиться в программе:

Image alt
В разделе “Плата” должна стоять “Arduino UNO”

После этого мы жмем кнопку “загрузить”

Image alt
И ждем пока пока программа загрузится в Ардуино.

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

Управление

Важный момент – если светодиоды у машинки горят, но она не двигается, то проблема, возможно, в батарейках, они быстро садятся и если тока в них недостаточно (особенно дешевые батарейки), то двигатели просто не работают.
Поэтому для тестирования лучше использовать блок питания 7-12В, подключив его напрямую к входу ардуино (DC Power Jack) или к коннектору.

1 ИК Порт.

Машинка управляется с пульта, для управления используются вот эти кнопки:
(где квадрат это “стоп”)

Image alt
Если машинка не едет, нужно нажать несколько раз вперед-назад.

2 Bluetooth

Управление с помощью Bluetooth осуществляется с помощью программы BLEJoystick (Android & IOS)

Image alt
Сначала нужно узнать MAC адрес bluetooth модуля. Для этого нужно подать питание на модуль, уйти подальше от других bluetooth устройств и просканировать MAC адреса с помощью программы.
Image alt
Один из адресов должен быть вашим (обычно он начинается на BT-05).
Адрес лучше записать.

Для подключения к машинке нужно нажать на соответствующий ей MAC адрес и нажать CONNECT.
Если у значка BT справа сверху появились две точки, это значит, что устройства сопряжены и можно продолжать, если нет, нужно попробовать еще раз, включив-выключив машинку.

Image alt
Управление – слева движение, Х – стоп.

В скетче вы также можете найти настройки Bluetooth и при необходимости использовать любое другое понравившееся приложение:

Символы A, C, B, D, G – это установки приложения BLEJoystick, другие приложения могут иметь другие управляющие символы.

Прочие прошивки

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

Апгрейды, улучшения и т.п.

Далее шел долгий процесс написания серверной и клиентской части на Python’е c использованием библиотеки

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

Батарея, точнее уровень ее заряда

На всех этапах оставалось непонятным, сколько еще можно кататься, не убив батарейку (Li-Po нельза разряжать ниже чем 3.3в на банку). Я не нашел способа замерить напряжение с помощью GPIO ног Raspberry, поэтому в качестве измерителя поставил Arduino Nano, к которому на будущее сразу подключил LCD экран c I2C адаптером.

Как и чем управлять

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

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Итак, если мы хотим установить привод в крайнее левое положение нужно слать импульсы длительностью 0,9мс с интервалом 20мс, если в крайнее правое — длительность 2,1мс, интервал тот же, ну со средними положениями аналогично. Как оказалось, регуляторы скорости управляются аналогично. Те, кто в теме скажут что это

, который реализовать на любом микроконтроллере — плевое дело. Вот и я так решил, купил в местном магазине сервомашинку и склепал на макетке для нее так называемый сервотестер на ATtiny13. И тут оказалось, что ШИМ не совсем простой, а с подводными камнями.

Как видно из вышеприведенной диаграммы, скважность (отношение длительности импульса к длительности периода) от 5% до 10% (в дальнейшем я за крайние положения принимаю импульсы длительностью 1,0мс и 2,0мс) для 256-значного ШИМ счетчика ATtiny13 это соответствует значениям от 25 до 50.

Но это при условии, что на заполнение счетчика уйдет 20мс, а на деле так не получится и для частоты 9,6МГц и предделителя 1024 нужно ограничить счетчик значением 187(ТОР), в таком случае у нас получится частота 50,134Гц. В большинстве (если не во всех) сервомашинок нету точного генератора опорной частоты и поэтому частота управляющего сигнала может немного плавать.

Если оставить ТОР счетчика 255, то частота управляющего сигнала будет 36,76Гц — на некоторых приводах оно будет работать (возможно с глюками), но далеко не на всех. Итак, теперь у нас 187-значный счетчик, для него 5-10% соответствуют значениям от 10 до 20 — всего 10 значений, немного дискретно получится. Если думаете поиграть с тактовой частотой и предделителем ниже привожу сравнительную табличку для 8-битного ШИМа:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр
Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Я не думаю, что для китайской сервомашинки есть существенная разница в 600 и 1200 значений, поэтому вопрос с точностью позиционирования можно считать закрытым.

Какой же танк без пушки

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

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

То есть куда смотрим (по вертикали), туда и стреляем. Для прицеливания на ствол пушки был примотан лазерный светодиод от указки. Чтоб лишний раз не тратить батарею и не светить лазером куда не надо, нужно было сделать пушку отключаемой. Процесс выстрела также не совсем прост.

Надо включить питание двигателя и ждать замыкания контакта, после чего двигатель выключить. В итоге управление выстрелом и питанием сервы и лазера было повешено на ардуину, а сигнал для сервы генерирует Raspberry. Для двигателя пушки также пришлось проводить отдельный силовой провод и включать его постепенно, используя ШИМ, так как иначе прилетает помеха по питанию и Arduino уходит в ребут. Для подачи снарядов, то есть шариков, была использована коробочка от драже TicTac с дыркой в дне.

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

Многоканальное управление

С одной сервомашинкой разобрались, но для самолета их нужно минимум три и еще регулятор скорости. Решение «в лоб» — взять микроконтроллер с четырьмя каналами 16-битного ШИМ, но такой контроллер будет стоять дорого и, скорее всего, займет много места на плате.

Второй вариант — запилить программный ШИМ, но занимать процессорное время — это тоже не вариант. Если снова посмотреть на диаграммы сигнала, то 80% времени он не несет никакой информации, поэтому рациональнее было бы ШИМом задавать только сам импульс 1-2мс.

Почему скважность изменяется в таких узких пределах, ведь проще было бы и формировать и считывать импульсы со скважностью хотя бы 10-90%? Зачем нужен тот неинформативный кусок сигнала занимающий 80% времени? Я заподозрил, что, возможно, эти 80% могут занимать импульсы для других исполнительных механизмов, а потом этот сигнал разделяется на несколько разных.

То есть, в периоде длительностью 20мс могут уместится 10 импульсов длительностью 1-2мс, затем этот сигнал каким-то демультиплексором разделяется на 10 различных с длительностью периода как раз 20мс. Сказано — сделано, нарисовал в PROTEUS такую схемку:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

В роли демультиплексора — 74HC238, на его вход E подаются импульсы с выхода микроконтроллера. Эти импульсы — ШИМ с периодом 2мс (500Гц) и скважностью 50-100%. У каждого импульса своя скважность, обозначающая состояние каждого канала. Вот так выглядит сигнал на входе Е:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Для того, чтобы 74HC238 знал на какой выход подать текущий сигнал используем PORTC микроконтроллера и входы A, B, C демультиплексора. В результате на выходах получаем такие сигналы:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр


Сигналы на выходе получаются правильной частоты (50Гц) и скважности (5-10%). Итак, нужно генерировать ШИМ частотой 500Гц и заполнением 50-100%, вот табличка для настройки предделителя и ТОР 16-битного счетчика:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Интересно, что возможное количество значений ШИМа ровно в 1000 раз меньше частоты таймера.

Надо заставить это двигаться

Надо было как-то это завести. Raspberry был выбран не случайно. Во-первых он позволяет поставить нормальный полноценный линух, а во-вторых имеет кучу GPIO ног, которые в том числе могут генерировать импульсный сигнал для сервоприводов и регуляторов хода. Генерировать такой сигнал можно с помощью утилиты

. После запуска она создает файл /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, то танк рванет вперед.

Передатчик

// Библиотека передатчика
#include <VirtualWire.h>

void setup() 
{ 
    // Запуск передатчика
    vw_set_ptt_inverted(true);
    vw_setup(1000); // Bits per sec 
}

void loop() 
{
    // чтение показаний с переменного резистора
    int sensorValue = analogRead(A0);

    // отправляем значение
    send(sensorValue); 
}

void send(int param) 
{ 
    // конвертируем int в массив из 2 байт
    uint8_t msg[2];
    int len = 2;
    msg[0] = highByte(param);
    msg[1] = lowByte(param);

    // отправляем непосредственно в радиоканал
    vw_send(msg, len);
    // ждем пока сообщение не уйдет целиком
    vw_wait_tx(); 

}

Передающая часть

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

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

Дабы отфильтровать сигнал от шумов, десятым байтом шлю XOR всех 9 предыдущих байт. Помогло, но слабо, добавил еще проверку на таймаут между байтами, если он превышается — вся посылка игнорится и прием начинается заново, с ожидания байта-идентификатора.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Число в нижнем левом углу — контрольная сумма. Передвигая ползунки на компе двигались рули на самолете! Вообщем отладил я все это и стал думать о пульте ДУ, купил для него вот такие джойстики:

image

Но потом меня посетила одна мысль. В свое время я тащился от всяких авиасимуляторов: «Ил-2 Штурмовик», «Lock On», «MSFSX», «Ка-50 Черная Акула» и др. Соответственно был у меня джойстик Genius F-23 и решил я прикрутить его к вышеописанной проге с ползунками. Погуглил как это реализовать, нашел этот

и получилось! Управлять самолетиком с помощью полноценного джойстика, мне кажется, гораздо круче, чем маленькой палочкой на пульте. Вообщем все вместе изображено на первой фотке — это нетбук, джойстик, преобразователь на FT232, и подключенный к нему передатчик HM-T868.

Питание

Радиомодуль MX-05V очень простой, из-за этого он очень восприимчив к внешним помехам. И даже такой маленький мотор как в серво-машинке способен нарушить его работу. Для того, чтобы минимизировать влияние электромотора (это касается только колекторных моторов), нужно разделить питание силовой части от приемника. При этом «минус» у них должен быть общий. Итоговая схема подключения приемника выглядит так.

Питание и проводка

image

В батарейный отсек я запихал самую большую Li-Po батарею, которая туда влезла. Ей оказалась двухбаночная батарейка на 3300 mAh в твердом корпусе, которая обычно используется в модельках машин. Паять мне было лень, поэтому для всей коммутации была использована стандартная макетная плата с шагом 2.54.

Позже появилась вторая на верхней крышке и шлейф, который их соединял. На каждый из двух двигателей у меня был свой регулятор напряжения, который в виде бонуса выдает стабилизированное питание около 5.6 вольт. С одного регулятора был запитан Raspberry и WiFi карта, питание со второго пошло на сервоприводы и USB хаб с периферией.

Подключаем камеру


Кататься взад-вперед было классно, но хотелось делать это хотя бы в соседней комнате, а в идеале вообще через интернет, поэтому надо было наладить видео в реальном времени. На просторах интернета нашелся простенький проект

Программная реализация

Для ATmega8 с тактовой частотой 16МГц в AtmelStudio6 все реализуется следующим образом: вначале задефайним значения счетчика для крайних положений сервомашинок:

#define LOW 16000U
#define HIGH 32000U

затем инициализируем генератор ШИМа на таймере/счетчике1:

OCR1A = HIGH; //Устанавливаем ТОР
TCCR1A = 0<<COM1A1 | 0<<COM1A0 | 1<<COM1B1 | 0<<COM1B0 | 0<<FOC1A | 0<<FOC1B | 1<<WGM11 | 1<<WGM10; //Запускаем неинвертированный Fast PWM на выходе OC1B с верхним значением счетчика, которое записанно в OCR1A
TCCR1B = 0<<ICNC1 | 0<<ICES1 | 1<<WGM13 | 1<<WGM12 | 0<<CS12 | 0<<CS11 | 1<<CS10; //предделитель 1
TIMSK = 1<<OCIE1A | 1<<OCIE1B | 0<<TOIE1; //Разрешаем прерывания по совпадению


Остается реализовать прерывания:

Пуск!

Итак, есть самолетик, есть радиоуправление — Поехали!(с) Первый полет производился над асфальтом, результат — сломанный пополам фюзеляж и полувырванный двигатель. Второй полет производился над более мягкой поверхностью:

Последующие полетов 10 были тоже не особо удачными. Основной причиной я считаю сильную дискретность джойстика — по крену он выдавал только 16 значений (вместо возможных 256), с осью тангажа — не лучше. Но так как в результате испытаний самолет был значительно поврежден и не подлежит ремонту:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Радиоуправляемый танк на arduino nano – схемы.ру – каталог схем и самоделок

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

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

Для ее изготовления необходимы следующие комплектующие:

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

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / ХабрГотовое шасси уже оснащено двумя двигателями, парой редукторов, переключателем, отсеком для помещения двух аккумуляторных батареек. Приобретение такого готового шасси выгоднее изготовленного самостоятельно.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / ХабрПервоочередной задачей является закрепление приемника от джойстика на шасси.

С этой целью демонтируйте крышку.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / ХабрОсвободить от крышки следует и редуктор.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / ХабрДалее проделайте на крышке два отверстия, используемые, в последующем, для монтажа посредством винтов.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр
Зажатые винтами гайки следует залить клеем для предотвращения их раскрутки в процессе езды и падения в редуктор.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

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

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

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

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Приведите после этого поворотную систему в исходное состояние.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

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

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

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

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Пришла очередь пистолета, предназначенного для дула танка. Отпилите его нижнюю часть.
Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр
На сервоприводе и пистолетном корпусе проделайте по одному отверстию. Используя винт, соедините пистолет с сервоприводом.
Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр
На курке пистолета и насадке сервопривода также просверлите отверстия. Посредством отрезка проволоки соедините между собой указанные выше элементы.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

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

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Осуществите программирование имеющейся у вас платы Arduino Nano.
Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр
Следуя приведенной ниже схеме, произведите сборку оставшихся компонентов устройства.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

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

Установите на них предназначенные для аккумуляторов отсеки.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / ХабрС помощью термоклея присоедините лазер к дулу.

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / ХабрРадиоуправляемый танк готов к эксплуатации.

,

Читайте также:Новости России Украины и мира

Реализация в железе

Ну с теорией разобрались, пришло время все это реализовать. Мозгом системы выбран микроконтроллер ATmega8A, тактируется от кварца на 16МГц (не потому, что я захотел 16000 позиций сервомашинки, а потому, что у меня такие валялись). Управляющий сигнал для МК будет поступать через UART. В результате получилась вот такая схемка:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр


Спустя некоторое время появилась вот такая платка:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Два трехштыревых разъема я не припаял потому, что они мне не нужны, а не подряд они впаяны поскольку у меня нету металлизации отверстий, а в нижнем разъеме дорожки с двух сторон, можно было бы заменить проволочкой, но программно нету проблемы выводить сигнал на любой разъем. Также отсутствует 78L05 ибо в моем регуляторе двигателя есть встроенный стабилизатор (ВЕС).

Для получения данных к плате подключается

HM-R868:

Строим роботанк с управлением по Wifi, камерой, пушкой, блекджеком и т.д / Хабр

Изначально думал втыкать его прямо в плату, но эта конструкция не помещалась в самолетик, пришлось сделать через шлейф. Если изменить прошивку, то контакты разъема для программирования можно использовать для включения/отключения каких-нибудь системам (бортовые огни и т.п.)

Плата обошлась примерно в 20грн = $2.50, приемник — 30грн = $3,75.

Результат

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

Риски использования литий-полимерных аккумуляторов

Такие аккумуляторы могут вздуться, и тогда они становятся бесполезными. Эти аккумуляторы нужно обязательно перезаряжать раз в две недели, чтобы они не вздулись. Им нужно специальное балансировочное ЗУ, заряд малым током разрушит аккумулятор.

Лучшим вариантом будет использование внешнего аккумулятора для смартфонов, его можно подключить к Arduino USB-кабелем, идущим в комплекте.

Сборка

Можно купить готовое шасси для машинки сразу вместе с моторами и колёсами. Останется только установить электронику и всё подключить.

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

Из инструментов могут понадобиться:

  • Ручной или электрический лобзик (я пользовался ручным), чтобы отрезать нужные куски от материала.
  • Дрель или шуроповёрт, свёрла.
  • Крепёжные элементы — болты, гайки и саморезы любого подходящего диаметра.

Получилось дёшево и сердито. А главное работает.

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

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

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

У модуля Bluetooth особая проблема крепления — там отверстий для крепления нет вообще. Пришлось прижимать плату к раме другой деталью из оргстекла. Тут главное не сжать слишком сильно, чтобы не повредить.

Аккумулятор крепится аналогично Bluetooth модулю, только снизу.

И обязательно прикручиваем мебельное поворотное колесо, которое станет опорным, и не будет приводным. Следите за тем, чтобы вся конструкция была в горизонтальном положении, когда стоит на всех трёх колёсах.

Скетч

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

Схема подключения

Питание платы берётся от «Кроны» и подаётся на Arduino через пины VIN и GND. Также подаётся отдельно на драйвер двигателей через порты 12V и GND.

Blutooth модуль HC-06 получает питание в 3,3 вольта от Arduino. Если подключить к 5 вольтам, то тоже работает нормально. Выход RX модуля подключается к TX на Arduino, а TX — в RX, то есть наоборот.

На драйвере двигателей нужно снять две боковые перемычки — Enable. Пины под ними позволят нам управлять скоростью вращения двигателей. И эти пины подключаются к Arduino обязательно к ШИМ-портам (обозначенные знаком ~). На схеме это порты 3 и 5.

Питание моторов подаётся на Input драйвера от Arduino с портов 2 и 4, 6 и 7. А сами моторы подключаются к Output A и Output B драйвера.

Если после сборки и прошивки, вы подаёте на машинку сигнал двигаться вперёд, а оба колеса при этом вращаются в разных направления, то нужно поменять местами провода на одном из моторов в выходе Output.

Если при движении вперёд машинка едет назад, то нужно поменять местами провода Output обоих двигателей (хотя, кто знает, где у ней перед, а где зад…).

Если при повороте налево, машинка едет направо, то нужно поменять местами Output A и Output B.

Если подключить всё по схеме, то скетч переделывать не нужно будет.

Шаг 1. комплектующие

Для того, чтобы сделать модель машины на радиоуправлении (RC-машина) с использованием Ардуино и с возможностью контроля через смартфон, нам понадобятся следующие детали:

  1. Комплект шасси робота 4WD
  2. Arduino Uno
  3. Модуль H-моста LM298
  4. Модуль Bluetooth HC-05
  5. Батарея Li-po 12В
  6. Провода-перемычки
  7. Провода “папа-папа”
  8. Клейкая лента или любая другая лента
  9. Смартфон

Шаг 1: компоненты

Если вы не можете найти что-то из этого списка в магазинах, можно заказать онлайн.

Список компонентов:

Инструменты:

Шаг 1: нужные части и инструмент

Я воспользовался готовыми решениями, и все запчасти и инструменты были приобретены через интернет.

Запчасти:

  1. Набор шасси 4WD для робота (GearBest)
  2. Arduino Nano (GearBest)
  3. Модуль H-моста LM298 (GearBest)
  4. Модуль bluetooth HC-06 (Amazon)
  5. Литий-ионные батарейки 2 x 18650 (GearBest)
  6. Отсек для батареек 2x 18650 (GearBest)
  7. Небольшая макетная плата (GearBest)
  8. Провода сечением 0.5 мм2
  9. Провода с джамперами папа-мама (Amazon)
  10. Провода с джамперами мама-мама (Amazon)
  11. Малярная лента, изолента или что-то подобное (Amazon)

Для робота, объезжающего препятствия:

Ультразвуковой модуль измерения расстояния HC — SR04 (GearBest)

Необходимый инструмент :

  1. Паяльник (Amazon)
  2. Кусачки (Amazon)
  3. Стриппер для провод (GearBest)
  4. Клеевой пистолет (GearBest)

Шаг 10: входы / датчики

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

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

Входящие сигналы могут идти от датчиков, удалённо, или со смартфона. В этом руководстве я использую смартфон в качестве девайса, отправляющего сигналы, управляющие роботом.

Шаг 11: источник питания

Чтобы управлять приводами (моторами) и питать контроллер, роботу нужен источник питания. Большинство роботов питается от батарей. Когда мы говорим о батареях, то имеем в виду множество вариантов:

  1. Алкалиновые батарейки AA (не заряжаются)
  2. Никель-металгидридные или никель-кадмиевые батарейки AA (заряжаются)
  3. Литий-ионные батареи
  4. Литий-полимерные батареи

В зависимости от ваших нужд, нужно выбрать подходящий вид батарей. По-моему мнению, нужно всегда выбирать заряжаемые батареи достаточной ёмкости. Я использовал 2 литий-ионные батареи стандарта 18650 ёмкостью 2600mAh. Если для автономности вам нужно больше мощности, используйте большой комплект батарей, например 5A turnigy.

Отсек для батарей:Отсек для батарей я заказал в Китае, он не подходил для батарей с плоским верхом, поэтому я использовал два неодимовых магнита для придания батарейкам нужной формы.

Зарядка:Для зарядки батарей нужен хороший зарядник. По моему опыту, эти зарядники хорошо зарекомендовали себя:

  1. PowerEx AA Charger-Analyzer (Amazon)
  2. XTAR LiIon Battery Charger (Amazon)
  3. Turnigy LiPo Battery Charger (Amazon)

Шаг 12: установка компонентов

Цельная схема устанавливается на крыше. Отсек для батарей, драйвер двигателей LM 298 и маленькую макетную плату я закрепил горячим клеем, но можно просто прикрутить их. Модуль bluetooth закрепляется скотчем. Ардуино нано вставьте в макетную плату.

Шаг 14: логика управления

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

Шаг 15: софт

Часть с фотом очень проста, она не требует никаких библиотек. Если вы поняли таблицу логики из прошлого шага, то сможете написать свой код. Я не тратил на код много времени и просто скопировал чей-то готовый вариант. Чтобы управлять роботом-машиной, я использую смартфон, соединённый с контроллером через модуль Bluetooth (HC-06).

Шаг 16: тестирование

Чтобы проверить робота-машину, я положил её на маленькую картонную коробку. Таким образом, колёса будут крутиться, но машинка будет оставаться на месте. Проверьте работоспособность, нажимая все доступные кнопки. Если всё работает, то можно по-настоящему управлять ей.

Заметка: если моторы вращаются в противоположном направлении, то просто поменяйте местами провода.

Шаг 17: планы на будущее

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

  1. Добавление ультразвукового датчика для объезда препятствий
  2. Использование модуля WiFi, например ESP8266 или Node MCU вместо Bluetooth, для удлинения дистанции управления.
  3. Добавление солнечной панели для зарядки батарей.

Шаг 2. шасси

Вы можете купить готовый комплект для сборки 4WD шасси или сделать его с помощью ПВХ или любого вида жесткой доски. Наш вариант на фото выше был куплен в онлайн-магазине. Вполне возможно сделать аналог этого шасси своими руками. Не имеет особого значения вид шасси, можно выбрать на свой вкус.

Шаг 2: собираем двухмоторный редуктор

Распакуйте коробку с набором. Следуйте приложенной инструкции или приведенному видео-уроку. В набор входят два стандартных электромотора, тюбик смазки, шестигранный ключ, части редуктора и корпус.

Особое напоминание: используйте передаточное отношение 58:1.

Смазку нужно наносить на шестерни после сборки редуктора, а не до.

Обязательно используйте металлические разделители, иначе редуктор будет визжать.Используйте передаточное отношение 58:1, так редуктор будет крутиться быстрее, чем на 204:1.

Шаг 3. моторы (приводы)

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

Отрежьте 4 кусочка красного и черного провода длиной примерно от 5 до 6 дюймов (12 – 15 см). Можно использовать провода 0,5 мм. Снимите изоляцию с проводов на каждом конце. Припаяйте провода к клеммам двигателей.

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

Шаг 3: собираем шасси

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

Шаги сборки:

  • закрепите двухмоторный редуктор на платформе винтом, в отверстие в последнем ряду
  • наденьте ведомую шестерню на ось редуктора
  • привинтите 1-е отверстие Г-образного крепежа к 6-ому отверстию платформы
  • самый большой ролик крепим в первом отверстии Г-образного крепежа
  • закрепите задний ролик в последнее отверстие Г-образного крепежа
  • на заднюю часть платформы крепите ролики среднего размера
  • самые маленькие ролики вам не понадобятся

Шаг 3: структура / шасси

Структура состоит из физических компонентов. Робот имеет один или несколько физических компонентов, которые каким-либо образом двигаются для выполнения задания. В нашем случае структура робота – это шасси и колёса.

Шаг 4. установка двигателей

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

Шаг 4: монтируем микроконтроллер и драйвер электродвигателей

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

Так как у меня контроллер не Arduino, я подложил под него двухсторонний вспененный скотч, но это временное решение.Используйте драйвер электродвигателя L293D. Я пытался подключить драйвер двигателей от Arduino, но у них разная распиновка с моим контроллером. Чтобы он работал, нужно было внести много изменений в код.

Шаг 4: приводы

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

В нашем случае привод – это DC-мотор, скорость которого равна 3000 оборотам в минуту, а вращающий момент 0.002 Н•м. Теперь добавим к нему шестерню с передаточным числом 1:48. Новая скорость уменьшается на коэффициент 48 (в результате давая 3000/44 = 68 оборотов в минуту) и вращающий момент увеличивается на коэффициент 48 (в результате давая 0.002 x 48 = 0.096 Н•м).

Шаг 5. ардуино контроллер

Arduino UNO – это плата микроконтроллера с открытым исходным кодом, основой которой служит микроконтроллер Microchip ATmega328P и разработанная Arduino.cc.

Плата оснащена наборами цифровых и аналоговых пинов ввода/вывода (I/O), которые могут быть подключены к различным платам расширения (экранам) и другим цепям. Плата имеет 14 цифровых контактов, 6 аналоговых контактов и программируется с помощью Arduino IDE (интегрированная среда разработки)

Эталонный дизайн оборудования распространяется под лицензией Creative Commons Attribution Share-Alike 2.5 и доступен на веб-сайте Arduino. Макет и производственные файлы для некоторых версий оборудования также доступны. «Uno» означает один на итальянском языке и был выбран в честь выпуска Arduino Software (IDE) 1.0.

Плата Uno является первой в серии плат Arduino c USB и эталонной моделью для последующих платформ. ATmega328 на Arduino Uno поставляется с предварительно запрограммированным загрузчиком, который позволяет загружать новый код без использования внешнего аппаратного программера с использованием оригинального протокола STK500.

Микроконтроллеры обычно программируются с использованием диалекта функций из языков программирования C и C . В дополнение к использованию традиционных наборов инструментов компилятора проект Arduino предоставляет интегрированную среду разработки (IDE).

Шаг 5: подключаем модуль bluetooth

Модуль можно поместить в зазор между платой контроллера и редуктором. Или установить универсальную платформу сверху над редуктором и винтами М3 закрепить на ней контроллер и модуль.Как работает модуль?

Итак, мы знаем, что приложение посылает цифровой сигнал на плату Arduino через Bluetooth (последовательная передача). Контроллер раскодирует их, используя условные предложения.

Соединения проводов:

  • ТХ модуля ВТ – RX платы Arduino
  • RX модуля ВТ – TX платы Arduino
  • VCC модуля – 5В платы Arduino
  • GND модуля — GND платы Arduino

Можно использовать для связи RF/ xBee/ WiFI трансивер для большей дистанции связи, но если вы хотите пользоваться приложением на смартфоне, лучше остановиться на ВТ-модуле, хотя у него дальность сигнала всего 20 м.

Шаг 6. h-мост (модуль lm 298)

Термин H-мост (англ. H-bridge) выведен из типичного графического представления такой схемы. Это схема, которая может приводить двигатель постоянного тока в прямом и обратном направлении, см. рисунок выше для понимания работы H-моста.

Он состоит из 4 электронных переключателей S1, S2, S3 и S4 (транзисторы / МОП-транзисторы (MOSFET) / IGBTS). Когда переключатели S1 и S4 замкнуты (а S2 и S3 разомкнуты), на двигатель идет положительное напряжение. Поэтому он вращается в прямом направлении.

Примечание. Переключатели в одном и том же плече (S1, S2 или S3, S4) никогда не замыкаются в одно и то же время, это приведет к короткому замыканию.

H-мосты доступны в виде интегральных микросхем, или вы можете создать свой собственный, используя 4 обычных транзистора или полевых транзистора (MOSFET). В нашем случае мы используем микросхему H-моста LM298, которая позволяет контролировать скорость и направление вращения двигателей. Ниже перейдем к описанию пинов:

Выход 1: двигатель постоянного тока 1 ” ” или шаговый двигатель A

Выход 2: двигатель постоянного тока 1 “-” или шаговый двигатель A-

Выход 3: двигатель постоянного тока 2 ” ” или шаговый двигатель B

Выход 4: двигатель B выведен

12В контакт: 12В вход, но вы можете использовать от 7 до 35 В

GND: земля

Вывод 5В: выход 5 В, если перемычка 12 В на месте, идеально подходит для питания вашего Arduino

EnA: включает сигнал ШИМ для двигателя А

IN1: включить двигатель A

IN2: включить двигатель A

IN3: включить двигатель B

IN4: включить двигатель B

EnB: включает сигнал ШИМ для двигателя B

Шаг 6: подключаем fpv-камеру

В моей машине нет FPV-камеры, но, если вы хотите установить ее, следуйте приведенной ниже инструкции.Вид от первого лица (First-person view, FPV), или видео пилотирование – это метод пилотирования или вождения радиоуправляемых моделей от лица пилота или водителя.

Эти камеры хороши при управлении на дальних дистанциях, но сегодня я упомянул о них для общего ознакомления.Для использования FPV-камеры вам нужны будут передатчик и приемник. Их можно заказать на Амазоне, по отдельности или в наборе. Для работы камеры нужен будет элемент питания.

Шаг 6: устанавливаем мотор

Прикрепите две акриловые распорки к каждому мотору при помощи двух длинных болтов и двух гаек. Для наглядности вы можете посмотреть видео.

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

Шаг 7. источник питания

Для нашей радиоуправляемой модели машины на основе Ардуино и с контролем через смартфон могут быть использованы следующие батареи:

  1. Щелочная батарея типа АА (не перезаряжаемая)
  2. AA NiMh или NiCd аккумулятор
  3. Литий-ионный аккумулятор
  4. Батарея LiPo

Шаг 7: подключаем питание

Литий-полимерные аккумуляторы, возможно, самые мощные на сегодняшний день. Они маленькие, обладают большой емкостью и имеют высокий С-рейтинг. Они в 5-10 раз более мощные чем никель-кадмиевые/никель-металлгидридные батарейки типа АА.

Шаг 7: устанавливаем крышу

Послу установки 4 моторов нужно установить крышу. Приладьте 6 медных стоек при помощи гаек, клеммы проводов выведите сквозь отверстие в крыше.

Шаг 8. электрические соединения

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

Соединения двигателей

Out1 -> Красный провод левого бокового мотора ( )

Out2 -> Черный провод левого двигателя (-)

Out3 -> Красный провод правой стороны двигателя ( )

Out4 -> Черный провод правой стороны двигателя (-)

LM298 -> Arduino

IN1 -> D5

IN2-> D6

IN2 -> D9

IN2-> D10

Модуль Bluetooth -> Arduino

Rx-> Tx

Tx -> Rx

GND -> GND

Vcc -> 3,3 В

Питание

12V -> Подключите красный провод аккумулятора

GND -> Подключите черный провод аккумулятора и вывод Arduino GND

5V -> Подключение к контакту Arduino 5V

Шаг 8: контроллер

Теперь у нас установлены шасси и приводы, но нам не хватает контроллера. Шасси без контроллера никуда не поедут. Робот будет оставаться на месте, оставаясь безжизненным. Поэтому, для того чтобы робот перемещался, нам нужен мозг (контроллер).

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

Контроллер принимает входные данные (с датчиков, удалённо и т.д.), обрабатывает их и затем даёт команду приводам (моторам) выполнить выбранное задание.

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

Микроконтроллер можно использовать, чтобы вращать мотор в одном направлении, но если вам хочется с помощью микроконтроллера вращать мотор и вперёд, и назад, то вам нужна дополнительная схема – H-мост. В следующем шаге я объясню, что это такое.

Шаг 9. логика управления

Логика управления описывается в таблице ниже.

Шаг 9: законченная самоходная установка

Теперь у вас есть все, чтобы самому собрать машинку на радиоуправлении своими руками с Bluetooth-управлением. Просто и интересно.

Идеи по улучшению радиоуправления на Ардуино:

  • Ультразвуковые сенсоры для огибания препятствий
  • Модули Xbee для увеличения дальности сигнала
  • Камера FPV для съемки в режиме реального времени
  • Подвеска для улучшения шасси
  • Более мощные моторы для более быстрой езды
  • Установка мотор-шилда Pololu Dual VNH5019, для дальнейшей установки мощных моторов
Оцените статью
Радиокоптер.ру
Добавить комментарий