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

Преамбула
Инженерное образование в казёном Политехе имеет такой специфический бонус, как дает его питомцам возможность делать себе всяческие игрушенции потехи ради. Это особенно актуально нынешними длинными зимними вечерами.
К тому же я полтора года на работе занимался разработкой прошивок для управления кузовной электроникой и у меня накопилась широкая экспертиза, как писать прошивки-спинеры.
В этом тексте я расскажу, как сделать игрушечную модель нашей замечательной УАЗ Буханки с дистанционным беспроволочным управлением по инфракрасному лучу.
Мне эта машина нисколько не чужда, так как и сам раз ездил на настоящей Буханке в качестве пассажира.
В прочем, обо всем по-порядку...
Постановка задачи:
Разработать дистанционно управляемую машинку. В модель должна быть заложена возможность регулировать крутящий момент на задней оси и на рулевой рейке. Машинка должна ездить вперед, двигаться назад, поворачивать вправо -->, поворачивать влево <--.
Не ��спользовать клей и изоленту. Изделие должно быть ремонтопригодным.
Что-ж. Задачи определены.... За работу!
Аппаратная часть
Я не собираюсь проектировать электронную плату и трассировать 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 надо соединить 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. Буханка проехала 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 км стала буксовать рулевая рейка.

Вывод: надо искать более надежную трансмиссию.
Что можно улучшить?
Всё что я тут собрал это, конечно же, паллиативное решение. По-хорошему можно много, что улучшить:
1--Прежде всего это конструктив и механику. SWD разъём и UART-CLI вывести под капот. Нужны шлейфы вместо перемычек. Потом по хорошему надо одну PCB для управления, а не 4 PCB, как сейчас.
2--Добавить поддержку большего количества IR протоколов. Имеет смысл расставить 4 IR приемника по периметру кузова.
3--Можно добавить PWM управление яркостью передних фар.
4--Вместо PWM попробовать Delta-Sigma модуляцию (PDM). Плавность хода окажется эффективнее. 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втомобильный Завод |
Ссылки
Вопросы
--Существую ли LoRa, GFSK или UWB совместимые пульты для дальнобойной радиосвязи в RC моделировании? Желательно с открытым и хорошо документированным интерфейсом и протоколом. Да. Хоть Game Pad от PS2
