Игрушка газ 66 на пульте управления

Обновлено: 06.05.2024

Небольшой обзор игрушки на р/у (модель WPL B-24) с полным приводом и рессорной подвеской в виде автомобиля ГАЗ-66.


Машинка приходит в огромной интересной коробке.


В комплекте к машинке WPL B-24 идет пульт, запасные рессоры и зарядка.


Внешний вид автомобиля WPL B-24

Пульт управления простой, пистолетного типа, колесо не переставляется под левую руку. Питается от двух АА батареек.

Машинка имеет размер около 35 см в длину и 15 см (высота, ширина). Весит машинка около 700 г. без батарейки.


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


Внешний вид заднего моста. Рессоры сменные.


Передний мост имеет поворотный привод.

Колеса мягкие, дутые, с ярковыраженным протектором.


Кстати, присутствует «запаска» — полноценное колесо, которое можно установить вместо одного из четырех колес автомобиля.

Кабина откидывается вперед (на защелках)


Под кабиной расположен аккумулятор NiCd 6V 700mA, и отсек с платой управления.


Также видно светодиоды фар головного света.


Внешний вид аккумулятора. Зарядное есть в комплекте (работает от USB)


Разбираем отсек, видим плату управления (2.4ГГц, 4 канала).

По железу: используется приемник — аналог mx1919 (4 канала: влево-вправо, вперед-назад) на 2.4ГГц и стоят пара H-bridge, правый аналог L9110 (маркировка 17V18), левый без маркировки.


Кстати, в отсек прекрасно входят пара 18650 (и остается место для DC-DC или другого оборудования.


Фары горят постоянно при работе.


В темноте выглядит достаточно внушительно


Ход подвески приличные, добавляет проходимости автомобилю.


Для сравнения — фотография рядом с краулером.


Несколько фотографий «покатушек» по снегу.

Небольшое видео

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

Своих денег машинка определенно стоит.

В ассортименте есть Шишига голубого цвета и зеленая. На обе действует купон WPLB24J7 при покупке (цена становится $35).


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

Масштаб. 1/16. Не измерял. По пропорциям очень даже ничего. Копийность на уровне. Ибо есть иммитация салона. Там есть даже выкмки под приборы. Выпуклости, на месте показометров. Причем все как должно быть. Даже у пассажира два указателя есть. И ручка. Короче круто. Кабина откидывается вперед. Открывается доступ к акб и электрике. Фары. Диодики стоят. Белые, аки ксенон у колхозников)))но это исправимо. Стекол в фарах нет. Фараискатель пустой. Зеркала есть. Зеркальных вставок нет. Но черт возьми, оставим эти мелочи. Боковые ручки и те есть, решетка радиатора почти настоящая. Бампер похож. В бампере муляж лебедки. Так и подмывает поставить настоящую)))

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

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

На задней части рамы иммитация панели с фонариками задними. Пластик. Один уже сломался. Задний бампер будем менять. Цена 700 р. Можно в него вставить нормальные диодики

На кузове есть брызговики. Покачто целы. Надо может нарастить резиновыми.

Шасси.
Привод полный. Постоянный. Без дифференциалов. Люфты в карданах приличные. Поворотные кулаки люфтят. Мосты пластик. Смазки в редукторах не было пости. Добавил циатима. Рессоры с настройкой по высоте. Немного регулировок есть. Потенциально мосты можно сменить на железо. Цена кусачая. 3500 за два. Но зато на подшипниках, герметичные, и без люфтов.

Карданы металл тоже существует. Около 1 рубля. Но вечные.

Рулевое управление. Все люфтит. Люфты бесят когда обращаешь на них внимание. А так пофигу. Управление не пропорциональное. Или до упора влево или до упора вправо. Сервомашинка нонейм. Слабовата. Но в целом с учетом цены, огонь.

Резина. Мягкая, цепляющейся. Диски без бедлоков, но в природе есть и с ними. 1500р комплект. Запаска полноценная. То есть может ставится вместо любого колеса. Протектор я бы доработал. Но пока нормально. Атэшка ни дать ни взять.

Акб. 700mA 6v. Имхо. Маловато. Хватает на 15-25 минут катаний по дому с препятствиями. Как на улице не знаю. Еще не ездил. Надо сначала все загерметизировать. А то можно укатать машинку быстро. Подозреваю что спокойно выдерживает погружения до середины колес. Дальше есть шанс замочить плату и двигатель.

Что в планах.
Замена мотора. На более мощный.
Замена коробки раздаточной на двухскоростную( что бы ползал как чернпаха но везде)
Замена сервомашинки и всей системы на пропорциональное руление.
Установка приличных фар и разводка электроники освещения. .
Замена карданных валов на металл
Замена мостов и рулевых тяг на металл.
Замена рессор на пружины для увеличения хода(хотя пока не уверен)
Установка лебедки.
Более мощный акб, до 1500 мА побольше чуть вольтажом 7v,
Часть свапа уже едет, и все таки я называю эту модель очень удачной, крутить маленькие гайки и болтики на столе в тепле и чистоте имхо, приятное занятие. А там посмотрим, что к чему)))

Но однозначно модельку советую. За эти деньги и что б ехала это супер! А вваливать бабочики и делать или не делать ее лучше, это личное дело каждого. .

main

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

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

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

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

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 для повышения мощности.



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 за ЛУТ моей платы. И Мурзику.

image

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

1. Как работает в 2-х словах

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

Теперь поговорим об используемых операционных системах.

Поскольку вся система базируется на Raspberry pi 3, то и использовалась официальная ОС под неё. На момент создания последней версией была Stretch, она была и выбрана для использования на машинке и пульте управления. Но оказалось, что в ней есть баг(промучился неделю) из-за которого невозможно поднять wifi точку доступа. Поэтому для поднятия точки доступа была взята предыдущая версия Jessie не имевшая таких проблем.

Пульт автоматически подключается к машинке, когда она поднимает точку доступа.
Автоматическое подключение к нашей точке, в файл /etc/network/interfaces добавить:

2. Язык

Выбрал python потому что легко и просто.

3. Сервер

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

Сервер состоит из 2-х частей. Видео сервера и сервера управления.

3.1 Видео сервер

Было 2 варианта, как работать с видео камерой. 1-ый использовать модуль picamera и 2-ой использовать ПО mjpg-streamer. Долго не думая я решил использовать их оба, а какой именно использовать вынести в настройки конфига.

Поскольку они берут одни и теже настройки, работают они на одном и том же адресе. Нет ни каких проблем при коммуникации с пультом при переходе с одного на другой. Единственное, как мне кажется mjpg-streamer работает побыстрее.

3.2 Сервер управления

3.2.1 Взаимодействие между клиентом и сервером

Сервер и клиент обмениваются командами в виде json строк:

  • type — 'remote' или 'car' в зависимости от того кто шлет команду(клиент или сервер)
  • cmd — строка с именем кнопки, соответствующей имени кнопки на Game HAT, например:
    • Start — кнопка Start
    • Select — кнопка Select
    • Y — кнопка Y
    • и т.д.
    • turn — команда изменения состояния джойстика, отвечает за поворот колес

    Дальше идет мой позор, переделать который руки не доходят. Машинка поднимает server socket и ожидает пока к ней не подключится клиент. При чем для каждого нового подключения она создает отдельный поток, и каждый новый клиент который будет подключаться к машинке сможет управлять ей )). Такого пока не может быть потому что, больше нет такого пульта ни у кого, и я поднимаю свою закрытую wifi сеть.

    3.2.2 Управление железом

    При работе с Raspberry использовалась система нумерации выводов GPIO.BCM.

    Управление светом осуществляется через gpio 17, оно соединено со 2-ым пином на L293. Далее каждый раз как приходит команда включить:

    вызываются соответствующие команды.

    Управление сервоприводом происходит через плату PCA9685 по I2C шине, поэтому нужна соответствующая библиотека для неё Adafruit_PCA9685. PCA9685 подключена к серво через 7 pin. Необходимая частота ШИМ для работы с серво составляет 50 Герц или период 20 мс.

    Принцип работы серво:

    image

    При подаче сигнала длиной 1.5 мс колеса будут стоять по центру. При 1 мс. серво повернется максимально вправо, 2 мс. максимально влево. Поворотные кулаки в мостах на такие повороты не рассчитаны, поэтому угол поворота пришлось подбирать экспериментально.

    Значения которые можно передавать в API Adafruit_PCA9685 составляют от 0..4095, 0 отсутствие сигнала, 4095 полное заполнение. Соответственно из этого диапазона нужно было подобрать значения подходящие для моих колес. Самое простое определить значения для ровно выставленных колес, это 1.5 мс перевести в значение из диапазона ~ 307.

    Максимальное значение для права 245, для лева 369.

    Значения приходящие от джойстика принимают значения от -100. 100, поэтому их нужно было транслировать в диапазон от 245 до 369. Опять центр самое легкое, если 0 то это 307. Влево и вправо по формуле:

    • HardwareSetting._turnCenter — 307
    • turn — значение от джойстика от -100. 100
    • HardwareSetting._turnDelta — 62, разница между центром и максимальным отклонением в сторону (307 — 245 = 62)
    • HardwareSetting.yZero — 100, максимальное значение получаемое от джойстика

    Управление двигателем происходит также через плату PCA9685 по I2C шине, поэтому используем Adafruit_PCA9685. Пины от 10 до 15 на PCA9685 подключены к L298N(использую на нем 2 канала, для увлечения мощности). 10 и 11 к ENA и ENB(наполняю их ШИМ-ом для регулирования скорости движения). 12, 13, 14, 15 к IN1, IN2, IN3, IN4 — отвечают за направление вращения мотора. Частота ШИМ здесь не особа важно, но я так же использую 50 Герц(мое значение по умолчанию).

    Машинка стоит на месте:

    4. Клиент

    4.1 Клавиатура

    С ней были определенные проблемы, вначале мне хотелось сделать её событийной(заняло ~ 2 недели мучений). Но механические кнопки внесли свою лепту, дребежание контактов приводило к постоянным и непредсказуемым сработкам(алгоритмы борьбы придуманные мной работали неидеально). Затем мой коллега рассказал мне как сделаны клавиатуры. И я решил сделать так же, теперь опрашиваю состояние каждые 0.005 секунды(почему так, а кто его знает). И если оно изменилось посылаю значение на сервер.

    4.2 Джойстик

    Чтение показаний происходит через плату ADS1115 по I2C шине, поэтому нужна соответствующая библиотека для неё Adafruit_PCA9685. Джойстик также подвержен дребезгу контактов, поэтому снимаю с него показания по аналогии с клавиатурой.

    При питании от 3.3 вольт диапазон значений которые выдает ADS1115 с джойстика от 0. 26500. Привожу это к диапазону от -100. 100. В моем диапазоне в районе 0 он всегда колеблется, поэтому если значения не превышают 5, то я считаю что это 0 (иначе будет флудить). Как только значения изменяются, посылаю их машинке.

    4.3 Подключение к серверу управления

    Коннект к серверу простая вещь:

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

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

    4.4 Проверка подключения к WiFi

    Проверяю состояние wifi, на предмет подключения к серверу. И если, что так же уведомляю себя о проблемах.

    4.5 Подключение к видео серверу

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

    Для отображения использовал:

    И на него вывел:

    Подключение к потоковому видео:

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

    Вот так выглядит когда все не работает:

    image

    • W — означает, что нет соединения с wifi
    • В — означает, что нет видео
    • У — означает, что нет управления

    Иначе нет красных букв, идет видео с камеры. Фотку и видео с работой выложу в дальнейшем ) Надеюсь, что крепление для камеры придет в ближайшее время и я её наконец прикреплю нормально.

    5 Настройка Raspberry ОС

    Кстати работу с камерой и прочими нужными вещами нужно включить(как на клиенте так и на сервере). После загрузки ОС:

    И включаем почти все: камеру, ssh, i2c, gpio

    image

    Демонстрация

    Нет только видео канала(камера на работе осталась). За его отсутствие извиняюсь, приделаю в понедельник.

    main

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

    1. Как все собрано

    1.1 Кабина

    video

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

    mount

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


    box

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

    1.2 Кузов

    box

    Всю начинку смонтировал в корпус для РЭА 189х113х66.6мм, встал идеально в кузов. К кузову прикрутил винтами.


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


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


    Таким сверлом с насадкой сверлил отверстия под вентиляторы. Вентилятор на крышке вдувает воздух, на задней стенке выдувает.


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

    1.3 Ходовая



    Металлические мосты, и новая подвеска.

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

    Всем спасибо за внимание.

    Демонстрация

    Видео работы с функционированием всех систем:

    Стоимость проекта

    1. Raspberry Pi 3 — 2856,57 руб.
    2. Raspberry Pi 3 Камера — 1384,02 руб.
    3. Raspberry Pi 3B игровой ЖК-дисплей — 2626,60 руб.
    4. Газ-66 — 2097,09 руб.
    5. L298N — 109,95 руб.
    6. L293 — 81,27 руб.
    7. Мосты — 469,02 руб.
    8. ADS1115 — 116,06 руб.
    9. Сервопривод DI-1181MG 17 г. — 471,66 руб.
    10. PCA9685 — 145,53 руб.
    11. Крепление камеры — 140,70 руб.
    12. Шлейфы для камеры — 270,13 руб.
    13. Mini-360 — 113,71 руб.
    14. Мотор — 1683,77 руб.
    15. 4S 40A BMS — 184,47 руб.
    16. Металлическая подвеска — 1158,93 руб.
    17. Металлические мосты — 2691,74 руб.
    18. Дополнительные рессоры — 262,36 руб.
    19. Т образные штекеры — 145,70 руб.
    20. Корпус для РЭА — 558,00 руб.

    Итого: ~17558 руб.
    Это без учета стоимости аккумуляторов, 2-ой Raspberry, карт памяти и прочей мелочи.

    Читайте также: