golang

Мой первый KitRover: попытка сделать машинку с управлением по сети. (часть 1)

  • суббота, 22 августа 2026 г. в 00:00:15
https://habr.com/ru/articles/1072754/

Данная статья берет свое начало из статьи (Покрути это колесо).

Вступление

После первой удачной попытки покрутить колёсами, о которой писал в предыдущeй статье, я начал думать о том, какой я хочу видеть свою сборку: из чего собирать, чем управлять, как делиться. И на тему последнего у меня две мысли...

План проекта

Основные требования к проекту

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

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

Я приверженец быстрого старта, поэтому хотелось иметь быстрый и простой запуск, без ввода команд в консоли, как это сделано в сборке Keyestudio. Возможность прошить микроконтроллер простым drag-and-drop, как это делается с файлами .uf2, хороший ориентир для этого пункта, а для настройки одноплатника должно хватить записи OS на SD Card.

Варианты ровера

Прежде чем начинать, нужно было сперва определиться с тем, каким хочется видеть результат. Первым делом вспомнил о продуктах Amazon prime, Uber и Яндекса, но все они сделаны для конкретной задачи, а мне хотелось чего-то универсального, с возможностью добавлять или убирать какие-либо части, или работать с несколькими модулями в паре.

Способы управления

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

Начало работ

Роверы: Яндекс, Uber и Amazon prime
Роверы: Яндекс, Uber и Amazon prime

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

Покрути это колесо

Прошерстив доску объявлений, я приобрел мотор-колеса и плату управления ZS-X11H v1 для работы с ними.

4 мотор-колеса 250W и ZS-X11H v1
4 мотор-колеса 250W и 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-моделирования.

Решение простое: засунуть вал в трубу и поджать. Для этого нужно:

  1. 8 резьбовых заклёпок;

  2. 8 гужонов;

  3. 4 куска полосы;

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

Выглядит решение следующим образом:

Втулка вала колеса
Втулка вала колеса
Готовая деталь
Готовая деталь

Основная конструкция

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

Визуализация первой сборки
Визуализация первой сборки

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

Визуализация второй сборки
Визуализация второй сборки

Такой вариант меня вполне устроил, и пара-тройка вечеров были проведены в гараже:

Нарезка и сборка конструкции
Нарезка и сборка конструкции
Сварка деталей
Сварка деталей
Результат
Результат

Быстрая сборка

Для удобства я взял Raspberry Pico, который уже умел управлять колесами. Устройством, которое передавало бы ему команды, а также позволяло посмотреть всё это в деле, я выбрал Raspberry Pi 4B. Накидав код для отправки в UART, получил следующий результат:

Итоги первой части

Здесь я попытался вспомнить и записать этапы проекта, проходившие осенью 2024 года. Как развивался проект дальше, я расскажу в следующих частях повествования. Мне удалось настроить управление ровером и побегать за ним, пытаясь предотвратить его столкновение с автомобилем, т.к. после удаления от меня на какое-то расстояние, случилась panic() в Go, и связь с устройством потерялась. Для управления продолжаю работать над мобильным приложением на Flutter & Dart, а прошивку для микроконтроллера пишу на TinyGo.

Это моя вторая статья, поэтому не стесняйтесь поддержать. Если данная тема кому-то интересна, дайте знать в комментариях. Любопытно мнение о проделанной работе.

Благодарю за прочтение.