Данная статья берет свое начало из статьи (Покрути это колесо).
Вступление
После первой удачной попытки покрутить колёсами, о которой писал в предыдущeй статье, я начал думать о том, какой я хочу видеть свою сборку: из чего собирать, чем управлять, как делиться. И на тему последнего у меня две мысли...
План проекта
Основные требования к проекту
Возможность собрать ровер из готовых модулей, которые можно найти на известных площадках. Требования в электронике на уровне соединения проводов, чтобы мог собрать и ребёнок.
Уменьшить порог входа, используя минимальное количество комплектующих, которые заставят сборку ездить по камнате. Увеличить доступность за счет дешевизны комплектующих при расширении ровера разными модулями.
Я приверженец быстрого старта, поэтому хотелось иметь быстрый и простой запуск, без ввода команд в консоли, как это сделано в сборке Keyestudio. Возможность прошить микроконтроллер простым drag-and-drop, как это делается с файлами .uf2, хороший ориентир для этого пункта, а для настройки одноплатника должно хватить записи OS на SD Card.
Варианты ровера
Прежде чем начинать, нужно было сперва определиться с тем, каким хочется видеть результат. Первым делом вспомнил о продуктах Amazon prime, Uber и Яндекса, но все они сделаны для конкретной задачи, а мне хотелось чего-то универсального, с возможностью добавлять или убирать какие-либо части, или работать с несколькими модулями в паре.
Способы управления
Про способ управления долго думать не пришлось. Это однозначно должен быть телефон. На момент разработки я не рассматривал больше никаких альтернатив, но запоздалая идея о том, что ничего не должно мешать возможности собрать пульт с использованием NRF24L01 и модулями двухосевого джойстика и подключить к микрононтроллеру, повлияла на формат принимаемых данных, о котором я расскажу чуть позже.
Начало работ

Фантазируя о том, как я в солнечный день иду с ПВЗ, а мои заказы трясутся в собственном ровере, напомнило мне доставщика из Яндекса. Так решил, что начну с большой версии. Я понимал, что, если не покручу это колесо, то двигаться дальше в проекте нет смысла.
Покрути это колесо
Прошерстив доску объявлений, я приобрел мотор-колеса и плату управления ZS-X11H v1 для работы с ними.

Для запуска колеса мне потребовалось замкнуть jump'ер, чтобы контроллер принимал сигнал с внешнего PWM, и соединить провода:
Колесо |
ZS-X11H v1 |
Raspberry Pico |
Блок питания |
Blue |
MA |
||
Green |
MB |
||
Yellow |
MC |
||
VCC |
36V |
||
GND |
GND |
||
Hall data |
Hall signal |
||
Reverse pin |
GPIO 2 |
||
Break pin |
GPIO 3 |
||
P: Signal input |
GPIO 4 (PWM) |
||
GND |
GND |
Для подключения Hall data пришлось разобрать колесо и подогнать соответствия букв на плате с цветами проводов. Пины GPIO условны, главное для Signal input использовать PWM-pin.
Трансмиссия для первой версии ровера (Rover V1)
Раз колеса начали вращаться, настало время соединить их вместе и иметь стенд для разработки. Главная задача - это сделать просто, дёшево и, по возможности, надежно. Использовать крепления как в гироскутерах мне не хотелось, как и хомуты для вала колеса, т. к. это съедает клиренс. Также хотелось спрятать сам вал, т.к. из него выходит кабель к плате управления. Фрезеровщика в моём городе не нашлось, да и мастера из других городов называли цену, которая меня огорчала и была нецелесообразна на данном этапе.
Втулка вала колеса
Возникшая идея для крепления колес требовала куска трубы, её нарезки и расточки у ближайшего токаря. Прежде чем прийти к нему с объяснением того, что я хочу, да и иметь возможность покрутить идеи, рассмотреть их с разных сторон, пришлось потратить пару вечеров на изучение 3D-моделирования.
Решение простое: засунуть вал в трубу и поджать. Для этого нужно:
8 резьбовых заклёпок;
8 гужонов;
4 куска полосы;
4 куска трубы после расточки и снятия части под зажим.
Выглядит решение следующим образом:


Основная конструкция
Каркас для ровера решил делать из профильной трубы 30x15x1.5 с запилами под 45°. Накидал делати в 3D и сделал сборку:

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



Быстрая сборка
Для удобства я взял Raspberry Pico, который уже умел управлять колесами. Устройством, которое передавало бы ему команды, а также позволяло посмотреть всё это в деле, я выбрал Raspberry Pi 4B. Накидав код для отправки в UART, получил следующий результат:
Итоги первой части
Здесь я попытался вспомнить и записать этапы проекта, проходившие осенью 2024 года. Как развивался проект дальше, я расскажу в следующих частях повествования. Мне удалось настроить управление ровером и побегать за ним, пытаясь предотвратить его столкновение с автомобилем, т.к. после удаления от меня на какое-то расстояние, случилась panic() в Go, и связь с устройством потерялась. Для управления продолжаю работать над мобильным приложением на Flutter & Dart, а прошивку для микроконтроллера пишу на TinyGo.
Это моя вторая статья, поэтому не стесняйтесь поддержать. Если данная тема кому-то интересна, дайте знать в комментариях. Любопытно мнение о проделанной работе.
Благодарю за прочтение.
meljohin
>пытаясь предотвратить его столкновение с автомобилем при панике в коде
На этот случай купите радио реле на полное отключение питания или систему резервного управления, т.к. этот случай будет не единственный. Используйте watchdog на случай зависания (перезагрузит МК) и двустороннюю связь (типа пингов), + реле на саму малинку, в случае потери связи с rp2040
eleimt Автор
Спасибо, ознакомлюсь.