"Она настолько мощна и страшна, что среди тысяч танков стоит отдельно, как стратегическое оружие."

Преамбула

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

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

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

В прочем, обо всем по-порядку...

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

Не ��спользовать клей и изоленту. Изделие должно быть ремонтопригодным.

Что-ж. Задачи определены.... За работу!

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

Я не собираюсь проектировать электронную плату и трассировать PCB. Хочу всё собрать из готовых доступных в продаже деталей и электронных модулей. Заточить внутрь крутую твердотельную электронику и написать для неё top-notch прошивку.

Что надо из оборудования?

Компонент

Пояснение

DevEBox-STM32F4XX_M_V3.0

Управляющая электроника

программатор ST-Link/V2

Чтобы запрограммировать STM32F407VG

Переходник с USB-UART

для отладки через UART-CLI

Штангенциркуль

чтобы снять размеры с деталей и получить исходные данные для разработки чертежа скрепы

KLS5-18650-2W-L150 (TBH-18650-2B-W) (FC1-5217),

Батарейный отсек 2х18650

Оболочка машинки в виде Буханки

Корпус, чтобы скрыть ужасы самопальной электроники

A4 лист оргстекла

для крепления электроники

Две Li-ion MH12210 батареи 18650. Модель NCR18650B. 3.7 V каждая

для электропитания модели

Зарядное устройство для батарей LiitoKala Lii-PD2

Для зарядки Li-ion батарей в корпусе 18650

Пульт Samsung BN59-01198R

Для испускания команд на RC ровер.

ИК приемник TSOP22xx

Для приема команд от пульта BN59-01198R

Драйвер силовой электроники на DRV8870

Для непосредственного управления токами в обмотках мотора

Крепёж. Пластиковые стойки, гайки, болты

Для крепления электронных плат

Схемотехника

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

DevEBox-STM32F4XX_M_V3.0

Это учебно-треннировочная электронная плата DevEBox-STM32F4XX_M_V3.0. Буквально нашел это у себя на балконе. Что ей валяться без дела? Еще послужит. К слову, вот её блок- схема .

STM32F4XX M
STM32F4XX M

Чтобы запрограммировать плату DevEBox_STM32F4XX_M_V3_0 надо соединить PCB и программатор ST-Link/V2 ISOL по интерфейсу SWD. Мне очень повезло, что у меня программатор с гальванической изоляцией. Это позволило мне делать пошаговую отладку прошивки прямо при питании от батареи.

Для вращения DC моторов нужны микросхемы драйверы H-мостов. По теорию и практику вращения DC моторов у меня есть отдельный текст. Я выбрал чип DRV8870. На DRV8870 надо подавать напряжение от 6.5V. В качестве энергетической установки выбрал два Li-ion аккумулятора и пластиковый батарейный отсек для них.

В качестве ИК приемника подойдет компонент семейства TSOP22. Это очень удобный модуль, так как есть два отверстия для крепления на болтах. Плюс присутствует LED на проводе DATA, подтягивающий резистор и конденсатор на питании. Про теорию и практику декодирования ИК си��нала у меня есть отдельный текст.

Кристаллизировалась такая архитектура электронной начинки

Вот ключевые пины, с которыми работает прошивка. По сути задача Firmware это просто испускать PWM сигналы по командам с ИК пульта. Только и всего.

Программная часть

Команды передаются по IR протоколу Samsung. Каждая команда на движение имеет время жизни 500ms. Если она не приходит машинка автоматически останавливается. Есть команды для конфигурации. TV пультом можно выбрать заполнение PWM сигнала и тем самым косвенно управлять скоростью движения. Можно отдельно регулировать как крутящий момент на рулевой рейке так и на тяговом двигателе.

Для обратной связи, что всё работает я добавил писк при включении, и щелчок Buzzer-ом при приеме любой валидной команды.

Кнопка

Действие

PLAY_FORWARD

Увеличить частоту PWM тягового мотора на 100 Hz

PLAY_BACK

Уменьшить частоту PWM тягового мотора на 100 Hz

ENTER

Аварийный останов всех двигателей

SPORTS

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

STOP

Выйти из режима постоянной тяги.

0

PWM на тяговом моторе 0%

1

PWM на тяговом моторе 10%

2

PWM на тяговом моторе 20%

....

9

PWM на тяговом моторе 90%

PROG_NEXT

Увеличить на 1% заполнение PWM на моторе рулевой рейки

PROG_PREV

Уменьшить на 1% заполнение PWM на моторе рулевой рейки

LEFT

Повернуть налево

RIGHT

Повернуть направо

MUTE

Издать гудок клаксона

VOL_PLUS

Увеличить на 1% заполнение PWM на тяговом моторе

VOL_MINUS

Уменьшить на 1% заполнение PWM на тяговом моторе

INFO

Повернуть направо и двинуться вперед

TOOLS

Задний ход с поворотом налево

EXIT

Реверс с поворотом вправо

RETURN

Реверс с поворотом влево

UP

Движение вперед

DOWN

движение назад

Power

Перезагрузить MCU

STOP

Отключить PWM сигналы

В прошивку заложены отладочные механизмы:
—Как только принимается корректная команда LED мигает 100ms.
—Каждая успешно отработанная команда провоцирует щелчок пьезокерамическим звуко-излучателем.

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

Бинарь прошивки можно скачать тут.

Механика

В качестве шасси я решил просто купить на Ozon RC УАЗ Буханку. Выкинуть родную электронику и поставить туда другие электронные мозги в пластиковую оболочку. Благодаря покупке модели вы получаете готовую обшивку. Благо места внутри валом, что открывает перспективы глубочайшей модернизации. Из игрушки мы сразу получаем готовую силовую установку (powertrain), рулевую реку, 2 BDC мотора и корпус c защитой IP12.

Чтобы всё это выглядело хоть немного прилично, я вмонтировал отладочные модули на пластине из оргстекла и соединил их перемычками. Открыл программу MoI 3D и начертил скрепу для отладочной платы и модулей: IR, DRV8870, Buzzer, батарея. По сути получился старый-добрый поверхностный, навесной монтаж. При выборе компоновки главное не ошибиться в центровке. Надо стремиться сделать центр масс между осями колёс. Поэтому самую тяжелую деталь - батарею я поместил в самый центр Буханки.

Затем я открыл profi.ru и нашел мастера по лазерной резке. Договорился и отправил *.dxf файл скрепы за завод. Само оргстекло продается на Ozone. На следующий день мастер вырезал деталь 100W-ным лазерным лучом на CO2 CNC станке. Причем до этого я пробовал резку на 40W полупроводниковом лазере, однако мощности 40W оказалось не достаточно для 3мм оргстекла и первая заготовка ушла в утиль. Про техпроцесс изготовления подложек у меня есть отдельный текст.

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

чтобы любить электронику лучше не знать как она делается
УАЗ Буханка на стапелях

Так как пластик плохо пропускает инфракрасный диапазон, то IR приемник TSOP22xx пришлось вынести наружу и монтировать на крышу ровера.

Получился такой комплект. Теперь можно и погонять...

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

наземные испытания образца
наземные испытания образца

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

Ездить на такой машинке по тротуарам это что же что играть в GTA 3.
Ездить на такой машинке по тротуарам это что же что играть в GTA 3.

Ездить на такой машинке по тротуарам это что же, что играть в GTA 3. Буханка проехала 3.5 км. Как только почувствуете, что батарея подходит к концу, вы просто повышаете заполнение PWM и машинка опять едет на прежней скорости. После поездки обнаружил, что какая-то трава намоталась на левое заднее колесо.

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

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

В чем трудность?
Казалось бы слепить RC -машинку простая задача, но, как водится, были свои овраги.

1--Надо подавить питание на MCU со всех сторон. У MCU не случайно несколько пинов VCC. Если подать VCC на один пин, то получается так что, одни каналы PWM работают хорошо, а остальные не дотягивают до уровней и DC моторы просто не двигаются.

2--Бракованные детали. Из 4х купленных микросхем DRV8870 заработало только три. Пришлось заново разбирать механику, чтобы заменить плату драйвера DC-мотора. Потом для подложки я по ошибке сначала купил монолитный поликарбонат. При резке лазерным лучом поликарбонат сильно задымил и источал зловонию. Пришлось перейти на оргстекло.

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

4--Как всегда, USB-micro разъём отслаивается от платы. Для программирования приходилось придерживать USB-micro кабель рукой во время процесса загрузки firmware. Без этого SWD link пропадает по питанию и перепрошивка обрывается.

5--Подложку не удалось изготовить с первой попытки. Как оказалось полупроводникового 40W лазера оказалось слишком мало, чтобы прошибить оргстекло 3мм. Пришлось прибегнуть к более мощному лазеру: CO2 100W .

6--IR пульт не позволяет отправлять сразу две команды. Две кнопки. Для непрерывной езды и только руления пришлось добавить режим Sport. В этом режиме машинка непрерывно работает задним мостом. От оператора надо делать только руление. Только так можно ездить по автостраде.

7--При активном токе в обмотках IR-приемник пропускает команды. Надо остановиться или уменьшить заполнение PWM, чтобы просто принять следующую команду. Сначала я подумал что суперцикл не вертится. Поставил HB LED. Убедился, что суперцикл всё таки вертится. Затем я повысил приоритет внешних прерываний. Проблема осталась. Стал пошагово прочесывать прошивку. Оказалось, что прерывания по TIMER1 перебивали внешние прерывания по EXT_INT5. Поэтому ИК команды не поступали. Я отключил прерывания от всех аппаратных таймеров, повысил до мак��имума приоритет внешних прерываний по GPIO и управление в режиме постоянной тяги заметно улучшилось. Плюс добавил электролит конденсатор на 3,3V. По-хорошему, надо бы ещё повысить частоту ядра с 48MHz до 117 MHz.

8--Поломки трансмиссии. Так как корпус - это покупная деталь, то Вы не можете контролировать её качество. Из двух купленных оригинальных машинок Буханок на первой после 4 км пробега заклинил задний мост. Двигателю не хватало момент, чтобы его прокрутить. На второй после 5 км стала буксовать рулевая рейка.

HW Hot Fix
HW Hot Fix

Вывод: надо искать более надежную трансмиссию.

Что можно улучшить?

Всё что я тут собрал это, конечно же, паллиативное решение. По-хорошему можно много, что улучшить:

1--Прежде всего это конструктив и механику. SWD разъём и UART-CLI вывести под капот. Нужны шлейфы вместо перемычек. Потом по хорошему надо одну PCB для управления, а не 4 PCB, как сейчас.

2--Добавить поддержку большего количества IR протоколов. Имеет смысл расставить 4 IR приемника по периметру кузова.

3--Можно добавить PWM управление яркостью передних фар.

4--Вместо PWM попробовать Delta-Sigma модуляцию (PDM). Плавность хода окажется эффективнее. PDM лучше PWM, так как при том же заполнении амплитуда пульсаций тока в обмотках окажется меньше.

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

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

6--Можно подключить ESP-01 и управлять игрушкой с LapTop PC. Прямо с клавиатуры + выгребать любую телеметрию в режиме CLI. Или добавить LoRa модуль. Если передавать команды через UWB трансивер, то можно будет управлять сквозь бетонные стеы.

7--Можно сделать машинку, с головкой самонаведения (ГСН), которая по пятну на полу от лазерной указки будет ездить за модулированным световым пятном. Это называется инфракрасный ГСН. Так работают корректируемые артиллерийские снаряды. При этом не нужна камера. Достаточно двух фоторезисторов разделенных перегородкой и ЦОС.

8--Добавить в прошивку модели поддержку протоколов UDS и XCP. Прямо поверх UART.

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

10--Добавить режим защиты от детей. Чтобы без активации не разрешать гонять на полной скорости. При значениях заполнения PWM более 60-70%.

11--Буханка очень похоже на сундук на колёсиках. В связи с этим можно сделать дорожный пластиковый чемодан, который будет сам следовать за своим хозяином в аэропорту или на вокзале. Расстояние определять по UWB трансиверам.

12--Отказаться от ИК управления и подключить по SPI Game Pad PS2.

Итог

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

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

Потом, вендоры MCU могут выпускать отладочные платы с МК и двумя драйверами DC-моторов для привлечения внимания к своим МК. Эта же электроника может двигать шторы, поднимать столешницу, размагничивать наручные часы, заряжать Li-ion батареи, шевелить зеркала или управлять торшером. Отладочная плата с MCU и двумя H-мостами может быть отличным учебным инвентарём для изучения электроники и программирования в ВУЗах.

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

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

Словарь

Акроним

Расшифровка

VCC

Voltage at the Collector

UART

Universal asynchronous receiver/transmitter

PCB

printed circuit board

UDS

Unified Diagnostic Services

PWM

Pulse-width modulation

PDM

Pulse-density modulation

XCP

Universal Measurement and Calibration Protocol

CO2

Carbon dioxide

RC

Remote Control

SWD

Serial Wire Debug

CNC

Computer numerical control

УАЗ

Ульяновский Aвтомобильный Завод

Ссылки

Текст

URL

Подключение PlayStation2 Джойстика к Микроконтроллеру (или Переходник между человеком и компьютером)

https://habr.com/ru/articles/959628/

Список компонентов, их стоимость и URLs

https://docs.google.com/spreadsheets/d/15kFwD1q5RqWJALUV201oQUdyKhh9p-d0IAgZqRGbnNA/edit?gid=0#gid=0

Настройка ToolChain(а) для Win10+GCC+С+Makefile+ARM Cortex-Mx+GDB

https://habr.com/ru/articles/673522/

Как я сделал робота — что хотел и что получилось. Часть 1
@linearly

https://habr.com/ru/companies/selectel/articles/951770/

Тележка управляемая по ИК (IR) от стандартного пульта ДУ
@checkpoint

https://github.com/pointcheck/learning-fpga/blob/main/IR_RC_Cart.md

Пуск Беспроводной CLI на Микроконтроллере

https://habr.com/ru/articles/929086/

Прошивка для управляющей электроники

https://github.com/aabzel/Artifacts/tree/main/dev\_ebox\_stm32f4x\_ir\_car\_m

Как собрать машинку на дистанционном управлении
@AlexeyCamacho

https://habr.com/ru/articles/874738/

Декодирование IR сигнала с TV (или исследование пультовых лучей)

https://habr.com/ru/articles/950764/

RC Машинки: Первые покупки — шасси и силовая установка @DmitryOlkhovoi

https://habr.com/ru/articles/469733/

MoI 3D

https://moi3d.com/

RC Машинки: Введение @DmitryOlkhovoi

https://habr.com/ru/articles/469659/

Как с помощью нехитрых приспособлений превратить буханку в автомотрису
@Dovgaluk

https://habr.com/ru/articles/948040/

Обзор микросхемы DRV8870

https://habr.com/ru/articles/952484/

Изготовление Макета для Прототипа (или Как Буравить Пластмаски)

https://habr.com/ru/articles/709932/

DevEBox STM32F4XX_M Ver:3.0

https://docs.google.com/spreadsheets/d/1aSWalkhtTray5qG-jANEmSz_kLHJIIMHgEVXIpz_pdE/edit?gid=0#gid=0

Вопросы
--Существую ли LoRa, GFSK или UWB совместимые пульты для дальнобойной радиосвязи в RC моделировании? Желательно с открытым и хорошо документированным интерфейсом и протоколом. Да. Хоть Game Pad от PS2

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы катались на настоящей УАЗ Буханке?
5.26%нет6
58.77%да, причем как пассажир67
19.3%да, причем как шофёр22
1.75%не ездил, но ремонтировал Буханку2
14.91%я только видел, как Буханка проезжала по дороге мимо меня17
Проголосовали 114 пользователей. Воздержались 5 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы хотели бы поуправлять такой моделью Буханки?
78.95%да15
21.05%нет4
Проголосовали 19 пользователей. Воздержались 2 пользователя.