Files
x0gp/hardware/PLAN.md
T
x0gp 76e33cfe62 feat(hardware): initial hardware documentation, 3D models, and ESP32 client code
- Add initial versions of hardware bills of materials (BOM v1-v4), shopping lists, plan, and assembly guides.
- Add STL models for 3D-printing the 1/27 scale OpenRC F1 car parts.
- Add Blender 3D project files (.blend) and camera renders of the car design iterations.
- Add ESP32 client firmware source (client.ino) for handling video streaming and car controls.
- Ignore Blender backup files (*.blend1, *.blend2) and IDE directories.
2026-07-06 12:41:04 +04:00

21 KiB
Raw Blame History

x0gp — Hardware Plan

Документ фиксирует решения по физической части проекта: шасси машинки, электроника на борту, трасса в квартире, лэп-тайминг и компьютерное зрение.

Дата фиксации архитектурных решений: 2026-06-18. Дата обновления (Bambu A1, своё шасси): 2026-06-18. Дата обновления v2 (compact 1/24/1/27, Orange Pi 5 Pro): 2026-06-18.


1. Исходные ограничения

Параметр Значение Комментарий
Самая большая комната 446 x 319 см (~14.2 м²) Внутри нужно оставить отступы под мебель и проход
Рабочая зона трассы (целевая) 250-300 x 180-200 см Только прямоугольный периметр, углы под мебель не используем
Ширина полосы трассы 20-25 см Под компактный масштаб 1/24-1/27, запас на ошибки руления
Число машинок в PoC 2-4 шт Этого достаточно для проверки race orchestration
Производство Bambu A1 (предварительно) + PETG / ASA / TPU Шасси, барьеры, маунты — печатаем сами, шасси полностью своё (не покупная дека)

Целевая длина круга: 6-9 м (в зависимости от конфигурации поворотов).


2. Масштаб и размеры машинки

Принято v2: машинку уменьшаем до компактного масштаба — 1/24 или 1/27. Причины: минимизация площади трассы в квартире, дешевле комплектующие, быстрее реакция (меньше инерция), меньше расход батарей. Цена — мельче детали = сложнее CAD/печать/ремонт, меньше выбор готовых RC-узлов.

Два класса машинок в проекте:

Класс Масштаб Длина шасси Ширина шасси Ширина полосы Применение
Compact 1/27 13-15 см 7-8 см 20-22 см Основной класс. Минимальная трасса, помещается в 200×130 см
Mini 1/32 10-12 см 6-7 см 16-18 см Для ещё более компактных трасс и юниоров
Standard 1/24 16-18 см 8-9 см 22-25 см Альтернатива Compact, если хочется чуть стабильнее

Целевой класс — Compact 1/27 (можно делать две версии для сравнения). Реальная F1 ~5 м, 1/27 -> ~18.5 см с кузовом, шасси ~13-15 см.

Почему не 1/10:

  • Слишком крупно для квартиры.

Почему не 1/18:

  • 18-22 см шасси всё ещё занимает заметную площадь.
  • Ширина полосы 30-40 см требует трассу ~300×200 см — много для квартиры.

Почему 1/27 лучше 1/32 как primary:

  • 1/32 (Tamiya TS/MT мини) — слишком мелкие детали: подшипники 3×6×2 мм, винты M1.4, серво весом 3-5 г. Сложно печатать точно и ремонтировать.
  • 1/27 — золотая середина: достаточно мелкий для квартиры, достаточно крупный для надёжной 3D-печати и удобного ремонта. Подшипники 4×8×3 мм, винты M2, серво ~5-8 г. Доступны готовые RC-узлы "Mini-Z" размера.

3. Шасси машинки

3.1. Конструктив

Решение: шасси полностью своё, спроектированное и напечатанное нами. Не покупаем готовую деку — делаем CAD с нуля под 1/27 Compact Formula-стиль (целевой wheelbase 100-115 мм). Это даёт:

  • полный контроль над геометрией (можно итеративно подгонять под трассу);
  • уникальный внешний вид (бренд x0gp);
  • минимум зависимости от поставщиков RC-деталей;
  • быстрые итерации — неудачная дека перепечатывается за вечер.

Базовая идея: кастомное шасси, напечатанное на 3D-принтере, с использованием готовых RC-узлов (подшипники, амортизаторы, серво, мотор, ESC). ДЕКА (нижняя плита + верхняя дека + бамперы + стойки) — напечатана нами.

Печатаем сами:

  • Основная дека (chassis plate) — PETG / ASA, 3-4 мм wall.
  • Передний и задний бамперы — TPU (амортизация ударов о барьеры).
  • Маунт серво, маунт ESC, маунт аккумулятора.
  • Верхняя дека (electronics plate) — отдельная, для быстрого доступа.
  • Защитный кожух для ESP32-S3 (snap-fit, вентиляция).
  • Петля IR-датчика (если выбран вариант "петля снизу" — см. раздел 7).
  • Крепление кузова (body posts) под 1/27 стандарт (100-115 мм wheelbase).

Покупаем готовые RC-узлы (в Mini-Z / 1/27 размере):

  • Амортизаторы (oil-filled, ~25-35 мм) — масштабные.
  • Шрусы / приводные валы (dogbones).
  • Подшипники (4×8×3 мм, 3×6×2 мм).
  • Колёса и шины (1/27 foam или rubber, диаметр ~25-30 мм).
  • Кузов (поликарбонат, Formula-стиль, лексан 0.4-0.6 мм) — покупаем готовый кузов 1/24 или 1/27 (Tamiya / Mon-Tech / Protoform), потом печатаем свой.

3.2. Целевая спецификация шасси

  • Wheelbase: 100-115 мм.
  • Track width: 70-80 мм.
  • Вес с батареей: 150-220 г.
  • Распределение веса: 40/60 (перед/зад) или 45/55 — настраивается под трассу.

3.3. CAD и печать

  • Принтер: Bambu A1 (предварительно). Плюсы: быстрый (CoreXY, ~500 мм/с), закрытая камера (для ASA/ABS), тихий, доступный по цене, AMS Lite для multi-color (полезно для тестовых деталей разного цвета). Минусы: меньше рабочий объём чем у P1S, нет enclosure для высокотемпературных пластиков в базе. Альтернатива: Bambu P1S (если решим печатать в enclosure).
  • CAD: Fusion 360 (бесплатная лицензия для хобби) или OnShape (free tier, удобно для совместной работы).
  • Слайсер: Bambu Studio (нативная поддержка A1) или OrcaSlicer (больше настроек).
  • Материалы:
    • Дека шасси: PETG (прочность, не крошится при ударе, легко шкурится).
    • Бамперы и амортизирующие элементы: TPU 95A (гнётся, не ломается).
    • Кузов: тонкостенный PETG / PETG-CF (карбон для жёсткости) или покупной поликарбонат лексан 0.5-0.8 мм (для первых тестов — купим готовый кузов 1/18, потом напечатаем свой).
    • Крепёж, маунты, кожухи: PETG / PLA+ (декоративные детали).
  • Постобработка: PETG шкурится и клеится эпоксидкой. PETG-CF можно оставить как есть.
  • Итерации: первая версия печатается за 1 вечер (A1 печатает деку 1/18 за ~2-4 часа), сразу видно косяки. Версия 2 — на следующий день.

4. Электроника на борту

4.1. Силовая часть (drivetrain)

Узел Спецификация Комментарий
Мотор Brushless sensorless 2440 / 2830 (или sensored 3650 если место) 1/18 обычно 2440 серия, 3800-4500 KV для 2S
ESC 30-40 A, с поддержкой 100-200 Hz refresh, программируемый (Hobbywing XeRun Mini, Quicrun 16BL30, или 3D-printed enclosure для Mini ESC) Без поддержки высокого refresh — steering будет "залипать"
Servo Mini digital, 9-12 г, скорость 0.06-0.08 s/60deg, момент 1.5-2.5 kg/cm, deadband <= 4 us Метал-редуктор обязателен
Аккумулятор 2S LiPo 350-450 mAh, 50-100 C, XT30 connector Быстрая замена через батарейный отсек
BEC Встроен в ESC (6V, 2-3 A) или отдельный buck 5V/3.3V для ESP32

4.2. Управляющая электроника (agent)

Узел Спецификация
MCU ESP32-S3-WROOM-1 (или ESP32-S3-DevKitC)
Wi-Fi 2.4 GHz 802.11 b/g/n, поддержка WPA3, ESP-IDF + Wi-Fi DTIM low-power
Альтернатива MCU ESP32-C5 (если нужен 5 GHz) или ESP32-S3 + внешний PA для дальности
Прошивка Go НЕ идёт на ESP32 напрямую. Варианты: (a) MicroPython + asyncio — быстрый PoC; (b) ESP-IDF C/C++ — production; (c) TinyGo — компромисс
Питание Buck 5V/3.3V от BEC ESC, отдельный LDO для аналоговых цепей (серво)
Сенсоры MPU-6050 / ICM-20948 IMU (детекция кренов/столкновений), опционально ToF (VL53L0X) для anti-collision
IR-магнитные TSOP1738 + ИК-светодиоды (или AS5600 магнитный енкодер для серво)
Хранилище Маленькая SPI flash для конфига, OTA

Рекомендация для PoC: ESP32-S3 + MicroPython. Простой, быстрый старт. К выходу на production-качество — переписать критичный цикл на ESP-IDF C.

4.3. Протокол "агент на борту" <-> "агент в помещении"

  • Wi-Fi STA mode на ESP32, подключается к выделенной точке.
  • WebSocket (или просто TCP) к локальному Go-агенту (см. раздел 9).
  • Бинарный формат (protobuf / msgpack), 60-120 Hz.
  • Heartbeat каждые 250 мс с состоянием (RSSI, батарея, температура ESC).
  • OTA-обновления прошивки через Wi-Fi (инициируются из gateway-агента).

5. Распределение массы и центр тяжести

  • Батарея крепится по центру (или смещается назад для Formula-стиля).
  • Мотор сзади, серво спереди.
  • Вся электроника сверху, доступна через съёмную деку.
  • Балансировка: подкладываем шайбы в крепления амортизаторов.

6. Трасса

6.1. Геометрия

  • Форма: сначала прямой овал, потом сложнее.
  • Полоса: 20-25 см шириной (под 1/27 Compact).
  • Покрытие: гладкий ПВХ-коврик или линолеум (не ковёр!).
  • Барьеры: 3D-printed секции 15-20 см, высота 3-4 см, соединяются пазами.
  • Разметка: линия старта/финиша, сектора (1/3, 2/3) — магнитная лента.

Целевая рабочая зона трассы (внутри комнаты 446×319 см с отступами):

  • Стандарт: 200×130 см (прямоугольный периметр, периметр ~6.6 м)
  • Compact: 180×110 см (для самой маленькой трассы, периметр ~5.8 м)
  • Aggressive (сложная конфигурация): 220×140 см, с шиканами (периметр ~7+ м)

6.2. Структура

  • Модульный каркас из 3D-printed уголков и алюминиевого профиля 2020.
  • Подложка: лист фанеры 6-8 мм или жёсткий ПВХ.
  • Поверхность: линолеум / резина / гладкий ПВХ — низкое трение = выше скорость.
  • Стыки модулей: фаски, чтобы не ловить колёсами.

6.3. Углы и прямые

  • Прямые: 40-70 см минимум для разгона (короче, чем 1/18).
  • Повороты: радиус 20-40 см (внутренний).
  • Шиканы: 10-18 см шириной.
  • Апекс-конусы: 3D-printed (маленькие, ~3 см высота).

6.4. Хранение и сборка

  • Модули 40x40 см — складываются стопкой.
  • Полная сборка трассы 200x130 см: 30-50 минут.
  • Полный разбор: 15 минут.

7. Лэп-тайминг и позиционирование

Выбран гибрид: IR-магнитные датчики + overhead-CV.

7.1. Старт/финиш и секторы (IR + магнит)

  • Магнитная лента 5 мм шириной, утоплена в покрытие.
  • На машинке: AS5600 / TLE4990 (магнитный енкодер), читает позицию ленты.
  • На каждой секции старта/секторов: TSOP1738 IR-приёмник + ИК-светодиод на машинке.
  • Логика: при пересечении линии в определённом направлении — инкремент сектора или фиксация lap.
  • Точность: 1-2 мс.

7.2. Overhead Computer Vision

  • 1-2 камеры над трассой (крепятся на штативе или раме 2020).
  • Камеры: USB UVC 1080p 60 fps, глобальный затвор (важно! rolling shutter даст смаз на скорости), например Arducam OV9281 или ELP USB GS-CMOS.
  • Хост: мини-ПК (см. раздел 9.2) с GPU или без (CPU хватит для 2-4 машинок на Jetson Orin Nano / RPi 5 + Hailo-8).
  • Стек: Python + OpenCV + YOLO/ByteTrack, или Go + gocv.
  • Что отдаём серверу:
    • позиция (x, y, heading) каждой машины @ 30-60 Hz;
    • ID-трекинг (ByteTrack / SORT);
    • replay-запись (буфер 60 секунд, по запросу пишется в S3-совместимое хранилище).

7.3. Синхронизация времени

  • NTP на gateway-агенте, drift < 5 мс.
  • На борту машинки — RTC (DS3231) опционально, для синхронных логов.

8. Электрика в помещении

  • Зарядная станция: 4-6 портов ISDT / ToolkitRC, балансир 2S.
  • Запас батарей: 3-4 комплекта на машину (ротация).
  • UPS для gateway-агента (на случай кратковременных отключений).
  • Розетки: 220 В у трассы (для зарядки и gateway).

9. Локальная инфраструктура (квартира)

9.1. Wi-Fi

  • Один выделенный роутер 2.4/5 GHz, отдельный SSID "x0gp-track" (изолированный VLAN).
  • 5 GHz предпочтительно для агентов (меньше помех от соседей).
  • Шифрование: WPA3, только авторизованные MAC (whitelist).
  • Роутер в центре комнаты, на высоте 2 м, прямая видимость до всех точек трассы.

9.2. Gateway-агент (локальный "мозг" в помещении)

  • Мини-ПК: Intel NUC / Beelink EQ12 / RPi 5 (8 GB).
  • Софт: Go-агент из репозитория server (модуль cmd/agent-linker):
    • подключается к Edge-серверу по WebSocket (TLS);
    • держит WebSocket-сессии со всеми машинками;
    • буферизует команды на случай обрыва WAN (до 500 мс);
    • отдаёт на сервер телеметрию (CV-треки, IR-секторы, состояние ESC);
    • записывает replay на локальный диск, синкает в S3.

9.3. Крепёж и кабели

  • Камеры на алюминиевом профиле 2020, высота 2-2.2 м.
  • Кабели по потолку в кабель-каналах.
  • USB-удлинители с фиксацией.

10. Roadmap (hardware)

Фаза Срок (целевой) Что делаем
H0: PoC на столе 1-2 нед 1 машинка, маленькая трасса 100x60 см, без CV, только IR-сектор. Проверяем end-to-end Wi-Fi канал
H1: MVP квартира 4-6 нед 4 машинки, модульная трасса 250x180, overhead-CV, IR-сектор. Полный цикл команды и телеметрии
H2: 3D-итерация 8-12 нед Улучшаем шасси, аэродинамику кузова, диффы, подвеску. Сравниваем 1/18 и 1/20 классы
H3: Продакшн-помещение 3-6 мес Модульная трасса износостойкая, 8-12 машин, hot-swap батарей, резервный LTE-канал

11. Бюджет (примерный, ориентир на РФ, 2026)

Масштаб 1/27 Compact — комплектующие и кузова дешевле, чем 1/18, итого бюджет ниже.

Категория Сумма, тыс. руб.
3D-принтер Bambu A1 (или P1S, решим позже) 60-150
Filament: PETG ~8 кг, TPU ~1.5 кг, PETG-CF ~1.5 кг, PLA+ ~2 кг 12-20
Шасси 1/27 Compact на 4 машинки (PETG + RC-компоненты, своё) 18-35
Электроника (Mini ESC + мини-мотор + мини-серво + BEC) x4 20-35
ESP32-S3 + датчики + IMU x4 8-12
LiPo батареи 1S/2S 250-350 mAh (12 шт) 8-15
Кузов поликарбонат 1/24-1/27 x4 4-7
Камеры 2 шт + штатив (компактные) 6-12
Orange Pi 5 Pro уже есть 0
Wi-Fi роутер (TP-Link Deco / MikroTik) 5-15
Зарядная станция 5-8
Материалы трассы (профиль 2020, фанера, линолеум, меньше) 6-12
UPS, кабели, мелочёвка 5-10
ИТОГО PoC + MVP ~150-330

12. Открытые вопросы

  • Compact 1/27 vs Standard 1/24 — primary 1/27, но CAD должен предусматривать оба варианта (один файл с параметризованным wheelbase).
  • Overhead-CV: 1 широкая камера vs 2 узких (над прямыми и поворотами).
  • Точная ширина полосы (20 vs 22 vs 25 см) — определится после первых заездов с реальной машинкой.
  • Нужен ли onboard CV (ESP32-S3 + камера) для резервного трекинга.
  • Bambu A1 vs P1S — A1 дешевле и быстрее, P1S имеет enclosure для инженерных пластиков. Решим после тестов с PETG-CF и ASA.
  • Wheelbase: 100-115 мм — нужно сверить с доступными Mini-Z амортизаторами (Tamiya / PN Racing / GL Racing).
  • Кузов: первый кузов купим готовый 1/24 (Tamiya F1 / Mon-Tech F1), свой CAD начнём после первых тестов.
  • Orange Pi 5 Pro cooling — RK3588S под нагрузкой греется, нужен радиатор + вентилятор. Уточнить, что уже стоит на твоей плате.