Несколько последних лет хотелось заполучить игрушку на пульте управления и обязательно с видео. Но не купить готовую, а сделать самому. И в итоге заказал себе вот такую игрушку, с простенькой системой управления, но большим потенциалом для модернизации. На все работы от старта и до почти завершения ушло ~ 9 месяцев. Большую часть этого времени ждал комплектующие из Китая.
Статью пишу по большей части для себя, что бы в дальнейшем не забыть что делал, как, зачем и почему.
Она будет содержать две основные части: аппаратную и программную и возможно еще одну часть про компоновку железа. Сначала опишу аппаратную часть, из чего собирал, с какими проблемами сталкивался и как их решал.
1. Аппаратная часть
Система состоит из пульта управления и аппаратуры установленной на машинке. Рассмотрим их подробнее.
1.1 Пульт управления
Компоненты:
- Raspberry pi 3
- ADS1115 АЦП
- Game HAT
Game HAT
Game HAT был выбран т.к. это уже готовое решение совмещающие в себе экран, джойстик и клавиатуру достаточную для управления машинкой.
Джойстиком на этой плате является KY-023. Его решил использовать вместо руля. Но оказалось, что в Raspberry нет АЦП и единственные значения которые можно было получить от него 0 и 1, что явно недостаточно для плавного поворота колес.
ADS1115
Эту проблему решил модуль ADS1115.
Модуль был припаян к Game HAT и прикреплен к ней с помощью ленты 3M. Показания снимаются со средних ножек переменных резисторов на джойстике. Выглядит все так:
Джойстик по аналогии впаян в Game HAT. Провода припаяны к разъемам Game HAT, которые соответствуют разъемам питания и I2C на Raspberry. Схема подключения:
На этом аппаратный сбор пульта управления закончен. Внешне ни каких видимых изменений он не претерпел.
1.2 Машинка
Как это все ужасно выглядит под капотом:
Начнем разбираться.
Компоненты:
- Raspberry pi 3
- Raspberry Pi Camera v2 NoIR
- PCA9685 ШИМ генератор
- Mini-360 понижающий преобразователь питания
- BMS CF-4S30A-A контролер заряда
- L298N драйвер управления двигателем
- Моя плата управления светом на основе драйвера L293
- 3 литий-ионных батареи 18650
- 370 мотор
- DI-1181MG сервопривод
Питание
Начнем от питания, его обеспечивают три аккумулятора 18650, соединенных последовательно и дающих ~ 12 вольт.
Аккумуляторы подсоединены через плату BMS CF-4S30A-A, что бы их можно было заряжать и не разрядить в ноль на покатушках.
Но это плата предназначена для 4-х аккумуляторов, поэтому она была переделана для работы с 3-мя аккумуляторами. Почему была взята она, а не 3S 40A BMS. Потому что она была под рукой.
Схема переделки:
Этим напряжением питается 370 мотор через драйвер L298N.
Для питания Raspberry используются напряжение с этих же аккумуляторов, но напряжение понижается модулем Mini-360 до 5 вольт.
Raspberry запитал прямо на его ножки.
Движение
Теперь поговорим о том, как машинка ездит. Для управления рулевым механизмом используется сервопривод DI-1181MG, который управляется с помощью PCA9685. Так же PCA9685 отвечает за управление мотором регулируя его скорость и направление вращения через драйвер L298N. Raspberry же управляет PCA9685 по I2C шине. PCA9685 питается от 5 вольт с понижающего преобразователя. Этого вполне хватает для сервы и управления мотором. Мотор подключен к двум выходам L298N для повышения мощности.
Видео
Для видео использовал Camera v2 NoIR, она легко подключается к Raspberry. Но без доработок не обошлось. Стандартный шлейф камеры был в длину 15 см. чего не хватило для монтажных работ. Так же этот шлейф нестандартный, он имеет 15 пинов. На aliexpress за один длинный шлейф для этой камеры китайцы хотят больше 1000 рублей. По этому был куплен комплект из 10 стандартных 16 пиновых шлейфов ~ за 300 рублей. И с помощью высокотехнологичной технологии применения канцелярских ножниц переделан в 15 пиновый шлейф для камеры.
На момент написания статьи, 2-ой месяц жду крепление для камеры в кабину. Пока что машинка показывает только потолок )
Свет
На машинке уже установлен штатный свет, состоящий из фар с 2-мя желтыми светодиодами. Осталось их только запитать.
Управление светом осуществляется через мою плату, которая сделана на основе драйвера L293. Питание на диоды подается через резистор. Плата сделана по технологии ЛУТ. На ней так же куча дорожек для разводки питания.
Можно было бы для управления светом воспользоваться PCA9685, на том момент когда делал свою не знал про PCA9685 и обходился без нее.
Схема платы:
Представлю общую схему подключения:
А вот это, что стояло в машинке пока я не влез ))
К моменту написания уже начал забывать, что и как делал. Хотя прошло не больше месяца с момента монтирования.
По аппаратной части все. В следующей свое статье опишу программную часть, как оживлял железо.
Благодарность
Моим коллегам по работе: Андрею и Николаю за помощь с железом, Антону и Евгению за помощь в работе с видео. Самоделкин-22 за ЛУТ моей платы. И Мурзику.
Ссылки
Комментарии (31)
An_private
02.08.2019 15:34Немного не понял — а зачем так сложно? По сути я увидел всего две задачи — пропорциональное основное управление + дискретные каналы для подсветки + видео из кабины. Всё это спокойно реализуется на стандартных покупных компонентах.
Если хочется именно джойстиковое управление, то любая средней стоимости аппаратура для квадрокоптеров (например FlySky FS-i6s). Если классическое для РУ автомобилей управление с колесом, то таких пультов тоже куча.
Видео комплектов вообще просто немерянно.
Или здесь планируется какие-то сложные автопилоты?Jessy_James Автор
02.08.2019 15:45Для меня смысл был не в результате, а в процессе. Хотелось самому сделать, а делал так как умею. И изначально я хотел сделать управление с компа, но потом случайно увидел на алиексперсе вот такой пульт и понял, что он мне подходит.
Хотя про автопилот я уже думал, мой коллега как раз с нейросетками балуется.
de_arnst
02.08.2019 15:451. Почему выбор пал на малинку?
2. Достаточно ли будет штатного света фар для камеры ночью?
3. Можно подробностей про саму модель, не порвет ли ее таким двигателем?Jessy_James Автор
02.08.2019 15:491 Я пишу серверное ПО под Linux.
2 В темноте не испытывал, но камеру взял которая заточена под темноту.
3 Сейчас стоят металлические карданы, частенько бывает что они отлитают. Рама держит удары. Проблему решаю проточкой осей напильником и вкручиванием болтов крепления потуже. Про монтаж думаю написать в 3 статье. Пока пишу 2 часть про ПО. + заказал полностью металлические мосты, пока их жду.
ua30
02.08.2019 16:29+1Основательно подошли к вопросу. Очень не хватает видео работы (как «со стороны», так и «из кабины»). Ждем в продолжении.
osmanpasha
03.08.2019 05:00+1Но зачем вам L293 для светодиодов? Они же не требуют смены полярности. Там нужна либо пара копеечных транзисторов, либо что-то вроде ULN2003
Jessy_James Автор
03.08.2019 12:26Точно уже не помню, но L293 изначально заказывал как драйвер для мотора. И стало их у меня 5 штук. Потом понял что для мотора лучше будет готовый L298N(и поять не надо)
Про свет. Хотел что бы свет питался не от raspberry, а через драйвер. L293 потому что на ней 4 канала(и они у меня уже были =) ), и у меня осталось еще 3 свободных. Возможно поставлю стоп фары и по воротники. Каждый диод если не ошибаюсь ест порядка 20 мА. Raspberry максимум со своих ножек может выдать 400 мА. У меня уже 2 светодиода, это уже 40 мА. Если поставить еще 6 светодиодов будет 160 мА. Почти половину что малина выдать может.
Собирал из того что было уже под рукой.
shalm
03.08.2019 08:32Модуль mini360 лучше переделать — заменить переменный резистор на смд, там кажется 21к требуется на 3.3Вольта, ибо рано или поздно контакт в нём может нарушиться и Ваша нагрузка получит 12 вольт.
Так же я бы сделал сменные батареи, ибо они всегда разряжаются в самый неподходящий момент. В таком случае можно выкинуть балансировочную плату и всякие системы зарядки. Сделайте зарядное устройство и заряжайте батареи вне машинки.
Ну и камера. По мне гораздо удобнее системы ФПВ на 5.8Гц. С ними Вы можете легко подключать камеру к ноутбукам, планшетам, смартфонам, очкам для управления дронами. Дальность выше, сигнал стабильнее и нет лага.Jessy_James Автор
03.08.2019 12:28Спасибо. Поинтересуюсь.
Про видео, сейчас wifi берет ~ не дальше 1 стенки(метров 10-12).shalm
03.08.2019 20:22Дрон с wifi это дно, купите для опытов на али мини камеру с передатчиком и приёмник
Jessy_James Автор
03.08.2019 13:21Батареи сейчас сменные, но немного неудобно до них добраться. А плата балансировочная нужна все равно, что бы литий не разрядить меньше чем 20% иначе они умрут.
shalm
03.08.2019 20:11Я не использую балансировку, но есть пару машинок- самоделок, кораблик и ещё разные вещички, и ни одного 18650 не умерло, хотя они все из старых ноутбучных батарей. Мне кажется Вы преувеличиваете угрозу и усложняете устройства без нужды.
trapwalker
03.08.2019 17:57они же там с нейросеточками балуются. Может захотят гнездо для машины сделать, чтобы она как робот-пылесос сама заезжала заряжаться.
Я, когда думал над реализацией похожего проекта, останавливался на WIFI-роутере MR3020 в качестве мозгов с USB-веб-камерой и ардуинкой для управления моторами и фарами.
Такие мозги, ведь, куда меньше потреблять будут, как мне кажется.shalm
03.08.2019 20:06Если нейросеточка на компе, то какая ей разница как видео получать для обработки и управление через ардуину с nrf2401 запилить на вечер делов. То есть делать машику с автономными мозгами мне кажется не лучший вариант, достаточно чтоб она вещала видео и получала радиокоманды, а кто их будет слать человек с пультом или комп с нейросеткой это уже второй вопрос.
trapwalker
03.08.2019 20:34Это я и имел в виду. А про нейросеточку и автономность я заговорил в контексте ваших вот этих слов:
Так же я бы сделал сменные батареи, ибо они всегда разряжаются в самый неподходящий момент. В таком случае можно выкинуть балансировочную плату и всякие системы зарядки. Сделайте зарядное устройство и заряжайте батареи вне машинки.
Так-то я тоже согласен, что малинка, да ещё и вторая на пульте — штука вдвойне избыточная.
corvair
03.08.2019 10:44+2Планирую постройку канатного кран-экскаватора типа Э-10011, ЭО-5111Б под РУ. Исполнительных устройств довольно много, шесть моторов это минимум — два на ход, поворот платформы и три лебёдки — стреловая, грузовая и тяговая. И очень желательно иметь свободный сброс на грузовой и тяговой лебёдках для реалистичной работы с драглайном и возможности использования клин- и шар-бабы и самое главное — принятого у нас метода установки буроопускных свай путём свободного сброса. Для этого нужны какие-то НЗ муфты сцепления (разобщения) при использовании червячных мотор-редукторов. То есть ещё пара каналов управления. Возможно, потребуется и стопор поворота платформы, тоже НЗ, чтобы разгрузить моторедуктор поворота — ещё один канал. Между поворотной платформой и гусеничной тележкой видимо придётся ставить скользящие контакты, чтобы обеспечить разворот на 360?.
Итого 6 моторов, две муфты сцепления и один стопор — 9 каналов. Опционально свет и звуковой сигнал — ещё два канала. Приборы безопасности крана могут быть сугубо автономными.
Рабочее оборудование для начала — драглайн, кран и всё, что вешается на стрелу.
Тема системы управления всем этим хозяйством остаётся открытой. Регулирование скорости в минимальном варианте требуется только для грузовой лебёдки, остальные механизмы могут обойтись только вкл/выкл. В качестве контроллера — геймпад с парой стиков, четырьмя шифтами и несколькими дополнительными кнопками.trapwalker
03.08.2019 18:04Делайте веб-интерфейс и высовывайте в инет с аукционом позиции в очереди на управление. Если такую штуку поставить в песочнице вот этого проекта, то, мне кажется, отбоя желающих порулить не будет.
shalm
03.08.2019 20:31Вы можете сделать управление на ардуинах, соединённых с помощью nrf2401 или можно взять готовую систему управления такую например
trapwalker
03.08.2019 20:40Или esp8266 и веб-интерфейс=)
shalm
03.08.2019 21:00А не заблочат все Ваши веб-интерфейсы в грядущей чебурашке на всякий случай?
trapwalker
03.08.2019 21:44Да, блин, надо децентрализованный векторный гипертекстовый пиринговый интернет городить срочняк. Тот уже вряд ли заблочат.
al_sh
Малина, вроде больше 2-х ампер ест. Не многовато, для машинки?
Jessy_James Автор
Почему многовато? Хотя в этом вопросе я не совсем компетентен ) Не думал о таком. Я считал, сколько нужно дать с запасом, что бы для всего хватило.
al_sh
Потому что, даже, если машинка будет стоять на месте малинка съест аккумы за немного времени. ИМХО >2A, для машинки это много
Jessy_James Автор
О таком я не думал, но она у меня пару раз минут по 30 стояла включенная пока я отлаживался и несколько раз минут по 5-10. И я пока аккумы не заряжал.
al_sh
spellfoundry.com/raspberry-pi-battery-runtime-calculator
На 1200 банке живет часа 3, если я не ошибаюсь.
jonic
Больше двух не думаю, но потребление бешеное — на что надеятся автор я не знаю
Jessy_James Автор
Пульт управления на одной банке 18650. В нем тоже малина. Работает пару часов.
Надеялся сделать то что хочу, так как смогу )