mirror of
https://github.com/IS1DI/x0gp.git
synced 2026-07-16 20:47:55 +00:00
- 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.
329 lines
21 KiB
Markdown
329 lines
21 KiB
Markdown
# 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 под нагрузкой греется, нужен
|
||
радиатор + вентилятор. Уточнить, что уже стоит на твоей плате.
|