main

Несколько последних лет хотелось заполучить игрушку на пульте управления и обязательно с видео. Но не купить готовую, а сделать самому. И в итоге заказал себе вот такую игрушку, с простенькой системой управления, но большим потенциалом для модернизации. На все работы от старта и до почти завершения ушло ~ 9 месяцев. Большую часть этого времени ждал комплектующие из Китая.
Статью пишу по большей части для себя, что бы в дальнейшем не забыть что делал, как, зачем и почему.
Она будет содержать две основные части: аппаратную и программную и возможно еще одну часть про компоновку железа. Сначала опишу аппаратную часть, из чего собирал, с какими проблемами сталкивался и как их решал.


1. Аппаратная часть


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


1.1 Пульт управления


Компоненты:


  • Raspberry pi 3
  • ADS1115 АЦП
  • Game HAT

Game HAT


Game HAT был выбран т.к. это уже готовое решение совмещающие в себе экран, джойстик и клавиатуру достаточную для управления машинкой.


Game HAT

Джойстиком на этой плате является KY-023. Его решил использовать вместо руля. Но оказалось, что в Raspberry нет АЦП и единственные значения которые можно было получить от него 0 и 1, что явно недостаточно для плавного поворота колес.


KY-023

ADS1115


Эту проблему решил модуль ADS1115.


ADS1115

Модуль был припаян к Game HAT и прикреплен к ней с помощью ленты 3M. Показания снимаются со средних ножек переменных резисторов на джойстике. Выглядит все так:


My Game HAT

Джойстик по аналогии впаян в Game HAT. Провода припаяны к разъемам Game HAT, которые соответствуют разъемам питания и I2C на Raspberry. Схема подключения:


remote

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


1.2 Машинка


Как это все ужасно выглядит под капотом:


car

Начнем разбираться.


Компоненты:


  • 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, что бы их можно было заряжать и не разрядить в ноль на покатушках.


4S 40A BMS

Но это плата предназначена для 4-х аккумуляторов, поэтому она была переделана для работы с 3-мя аккумуляторами. Почему была взята она, а не 3S 40A BMS. Потому что она была под рукой.


Схема переделки:


4S 40A BMS

Этим напряжением питается 370 мотор через драйвер L298N.


370
L298N

Для питания Raspberry используются напряжение с этих же аккумуляторов, но напряжение понижается модулем Mini-360 до 5 вольт.


mini-360

Raspberry запитал прямо на его ножки.


Движение


Теперь поговорим о том, как машинка ездит. Для управления рулевым механизмом используется сервопривод DI-1181MG, который управляется с помощью PCA9685. Так же PCA9685 отвечает за управление мотором регулируя его скорость и направление вращения через драйвер L298N. Raspberry же управляет PCA9685 по I2C шине. PCA9685 питается от 5 вольт с понижающего преобразователя. Этого вполне хватает для сервы и управления мотором. Мотор подключен к двум выходам L298N для повышения мощности.


DI-1181MG
PCA9685

Видео


Для видео использовал Camera v2 NoIR, она легко подключается к Raspberry. Но без доработок не обошлось. Стандартный шлейф камеры был в длину 15 см. чего не хватило для монтажных работ. Так же этот шлейф нестандартный, он имеет 15 пинов. На aliexpress за один длинный шлейф для этой камеры китайцы хотят больше 1000 рублей. По этому был куплен комплект из 10 стандартных 16 пиновых шлейфов ~ за 300 рублей. И с помощью высокотехнологичной технологии применения канцелярских ножниц переделан в 15 пиновый шлейф для камеры.


camera
string

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


Свет


На машинке уже установлен штатный свет, состоящий из фар с 2-мя желтыми светодиодами. Осталось их только запитать.
Управление светом осуществляется через мою плату, которая сделана на основе драйвера L293. Питание на диоды подается через резистор. Плата сделана по технологии ЛУТ. На ней так же куча дорожек для разводки питания.
Можно было бы для управления светом воспользоваться PCA9685, на том момент когда делал свою не знал про PCA9685 и обходился без нее.


Схема платы:


my driver

Представлю общую схему подключения:


all

А вот это, что стояло в машинке пока я не влез ))


old

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


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


Благодарность


Моим коллегам по работе: Андрею и Николаю за помощь с железом, Антону и Евгению за помощь в работе с видео. Самоделкин-22 за ЛУТ моей платы. И Мурзику.


Ссылки


Часть 2

Комментарии (31)


  1. al_sh
    02.08.2019 15:23

    Малина, вроде больше 2-х ампер ест. Не многовато, для машинки?


    1. Jessy_James Автор
      02.08.2019 15:54

      Почему многовато? Хотя в этом вопросе я не совсем компетентен ) Не думал о таком. Я считал, сколько нужно дать с запасом, что бы для всего хватило.


      1. al_sh
        02.08.2019 16:06

        Потому что, даже, если машинка будет стоять на месте малинка съест аккумы за немного времени. ИМХО >2A, для машинки это много


        1. Jessy_James Автор
          02.08.2019 16:11

          О таком я не думал, но она у меня пару раз минут по 30 стояла включенная пока я отлаживался и несколько раз минут по 5-10. И я пока аккумы не заряжал.


          1. al_sh
            02.08.2019 16:19
            +1

            spellfoundry.com/raspberry-pi-battery-runtime-calculator
            На 1200 банке живет часа 3, если я не ошибаюсь.


    1. jonic
      03.08.2019 11:28

      Больше двух не думаю, но потребление бешеное — на что надеятся автор я не знаю


      1. Jessy_James Автор
        03.08.2019 12:30

        Пульт управления на одной банке 18650. В нем тоже малина. Работает пару часов.
        Надеялся сделать то что хочу, так как смогу )


  1. An_private
    02.08.2019 15:34

    Немного не понял — а зачем так сложно? По сути я увидел всего две задачи — пропорциональное основное управление + дискретные каналы для подсветки + видео из кабины. Всё это спокойно реализуется на стандартных покупных компонентах.
    Если хочется именно джойстиковое управление, то любая средней стоимости аппаратура для квадрокоптеров (например FlySky FS-i6s). Если классическое для РУ автомобилей управление с колесом, то таких пультов тоже куча.
    Видео комплектов вообще просто немерянно.
    Или здесь планируется какие-то сложные автопилоты?


    1. Jessy_James Автор
      02.08.2019 15:45

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

      Хотя про автопилот я уже думал, мой коллега как раз с нейросетками балуется.


  1. de_arnst
    02.08.2019 15:45

    1. Почему выбор пал на малинку?
    2. Достаточно ли будет штатного света фар для камеры ночью?
    3. Можно подробностей про саму модель, не порвет ли ее таким двигателем?


    1. Jessy_James Автор
      02.08.2019 15:49

      1 Я пишу серверное ПО под Linux.
      2 В темноте не испытывал, но камеру взял которая заточена под темноту.
      3 Сейчас стоят металлические карданы, частенько бывает что они отлитают. Рама держит удары. Проблему решаю проточкой осей напильником и вкручиванием болтов крепления потуже. Про монтаж думаю написать в 3 статье. Пока пишу 2 часть про ПО. + заказал полностью металлические мосты, пока их жду.


  1. ua30
    02.08.2019 16:29
    +1

    Основательно подошли к вопросу. Очень не хватает видео работы (как «со стороны», так и «из кабины»). Ждем в продолжении.


    1. Jessy_James Автор
      02.08.2019 16:48

      Сделаю обязательно.


  1. osmanpasha
    03.08.2019 05:00
    +1

    Но зачем вам L293 для светодиодов? Они же не требуют смены полярности. Там нужна либо пара копеечных транзисторов, либо что-то вроде ULN2003


    1. shpaker
      03.08.2019 07:13

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


    1. Jessy_James Автор
      03.08.2019 12:26

      Точно уже не помню, но L293 изначально заказывал как драйвер для мотора. И стало их у меня 5 штук. Потом понял что для мотора лучше будет готовый L298N(и поять не надо)

      Про свет. Хотел что бы свет питался не от raspberry, а через драйвер. L293 потому что на ней 4 канала(и они у меня уже были =) ), и у меня осталось еще 3 свободных. Возможно поставлю стоп фары и по воротники. Каждый диод если не ошибаюсь ест порядка 20 мА. Raspberry максимум со своих ножек может выдать 400 мА. У меня уже 2 светодиода, это уже 40 мА. Если поставить еще 6 светодиодов будет 160 мА. Почти половину что малина выдать может.

      Собирал из того что было уже под рукой.


  1. shalm
    03.08.2019 08:32

    Модуль mini360 лучше переделать — заменить переменный резистор на смд, там кажется 21к требуется на 3.3Вольта, ибо рано или поздно контакт в нём может нарушиться и Ваша нагрузка получит 12 вольт.
    Так же я бы сделал сменные батареи, ибо они всегда разряжаются в самый неподходящий момент. В таком случае можно выкинуть балансировочную плату и всякие системы зарядки. Сделайте зарядное устройство и заряжайте батареи вне машинки.
    Ну и камера. По мне гораздо удобнее системы ФПВ на 5.8Гц. С ними Вы можете легко подключать камеру к ноутбукам, планшетам, смартфонам, очкам для управления дронами. Дальность выше, сигнал стабильнее и нет лага.


    1. Jessy_James Автор
      03.08.2019 12:28

      Спасибо. Поинтересуюсь.
      Про видео, сейчас wifi берет ~ не дальше 1 стенки(метров 10-12).


      1. shalm
        03.08.2019 20:22

        Дрон с wifi это дно, купите для опытов на али мини камеру с передатчиком и приёмник


    1. Jessy_James Автор
      03.08.2019 13:21

      Батареи сейчас сменные, но немного неудобно до них добраться. А плата балансировочная нужна все равно, что бы литий не разрядить меньше чем 20% иначе они умрут.


      1. shalm
        03.08.2019 20:11

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


        1. Jessy_James Автор
          03.08.2019 22:33

          Мне так парни из нашего аппаратного отдела посоветовали.


    1. trapwalker
      03.08.2019 17:57

      они же там с нейросеточками балуются. Может захотят гнездо для машины сделать, чтобы она как робот-пылесос сама заезжала заряжаться.
      Я, когда думал над реализацией похожего проекта, останавливался на WIFI-роутере MR3020 в качестве мозгов с USB-веб-камерой и ардуинкой для управления моторами и фарами.
      Такие мозги, ведь, куда меньше потреблять будут, как мне кажется.


      1. shalm
        03.08.2019 20:06

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


        1. trapwalker
          03.08.2019 20:34

          Это я и имел в виду. А про нейросеточку и автономность я заговорил в контексте ваших вот этих слов:

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

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


  1. corvair
    03.08.2019 10:44
    +2

    Планирую постройку канатного кран-экскаватора типа Э-10011, ЭО-5111Б под РУ. Исполнительных устройств довольно много, шесть моторов это минимум — два на ход, поворот платформы и три лебёдки — стреловая, грузовая и тяговая. И очень желательно иметь свободный сброс на грузовой и тяговой лебёдках для реалистичной работы с драглайном и возможности использования клин- и шар-бабы и самое главное — принятого у нас метода установки буроопускных свай путём свободного сброса. Для этого нужны какие-то НЗ муфты сцепления (разобщения) при использовании червячных мотор-редукторов. То есть ещё пара каналов управления. Возможно, потребуется и стопор поворота платформы, тоже НЗ, чтобы разгрузить моторедуктор поворота — ещё один канал. Между поворотной платформой и гусеничной тележкой видимо придётся ставить скользящие контакты, чтобы обеспечить разворот на 360?.
    Итого 6 моторов, две муфты сцепления и один стопор — 9 каналов. Опционально свет и звуковой сигнал — ещё два канала. Приборы безопасности крана могут быть сугубо автономными.
    Рабочее оборудование для начала — драглайн, кран и всё, что вешается на стрелу.
    Тема системы управления всем этим хозяйством остаётся открытой. Регулирование скорости в минимальном варианте требуется только для грузовой лебёдки, остальные механизмы могут обойтись только вкл/выкл. В качестве контроллера — геймпад с парой стиков, четырьмя шифтами и несколькими дополнительными кнопками.


    1. trapwalker
      03.08.2019 18:04

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


    1. shalm
      03.08.2019 20:31

      Вы можете сделать управление на ардуинах, соединённых с помощью nrf2401 или можно взять готовую систему управления такую например


      1. trapwalker
        03.08.2019 20:40

        Или esp8266 и веб-интерфейс=)


        1. shalm
          03.08.2019 21:00

          А не заблочат все Ваши веб-интерфейсы в грядущей чебурашке на всякий случай?


          1. trapwalker
            03.08.2019 21:44

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