Files
x0gp/hardware/ASSEMBLY.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

510 lines
34 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ASSEMBLY.md - План сборки x0gp F1 1/27 MVP
Дата: 2026-06-28. Версия: 1.1 (синхронизировано с CART_MVP v13).
> **Что это**: пошаговая инструкция от распаковки коробок до работающей машины.
> **Цель**: собрать 1 машину, протестировать, потом дозаказать ещё 3.
> **Изменения v1.2 (2026-06-28)**: синхронизация с CART_MVP v14.
> - **Батарея Tattu — ВДОЛЬ оси (отмена v13 «поперёк»)**: поперёк 55мм вылезает за пределы кузова (колея 58мм, понтоны 22-24мм).
> - **Двухпалубная схема (v14)**: серво (нос) → батарея вдоль (центр) → мотор+дифф (корма). Электроника **НАВЕРХ через electronics_plate.stl** (возвращён в v14, был отказ в v10). Батарея полуутоплена в пропил деки на 3-4мм.
> - **ESC — не приклеивать к ESP32**: пластинка-проставка 1мм (текстолит/PETG) для воздушного зазора.
> - **Подшипники 6×10×2.5 (MR106-ZZ) — заказывать сразу** на AliExpress (не проставки 0.5мм).
> - **Пиньон-набор — строго Ø2.0мм посадка** в День 1.
> - **AliExpress п.1 — очищен** от старого текста про Ø1.5мм одиночный пиньон.
>
> **Изменения v1.1 (2026-06-28)**: синхронизация с CART_MVP v13.
> - ESP32-S3-DevKitC-1 → **ESP32-S3-Zero (Waveshare, 21×17.5мм)**.
> - Мотор 370 → **Mini-Z flat-can 130 (15×12мм, вал Ø2.0мм)**.
> - ESC 35A BL → **Micro Brushed ESC 20A/30A**.
> - Батарея GNB 350мАч XT30 → **Tattu 2S 300мАч PH2.0**, укладка **ПОПЕРЁК шасси**.
> - Серво 9г → **AFRC D1802MG 5г (21.3×11.5×17.6мм)**, крепление **горизонтально** через прорезь в деке.
> - Подшипники 684ZZ → **673ZZ (Ø3×6×2.5 перед)** + **686ZZ (Ø6×10×3 зад)**.
> - Dogbones → **УДАЛЕНЫ** (задний привод Mini-Z, мотор→пиньон→спур→дифф напрямую).
> - Силиконовое масло 30WT → **УДАЛЕНО** (печатные аморт. без уплотнений).
> - RUSHFPV Cherry антенна → **штатный диполь камеры AIO** (откусить «клевер»).
> - POSCAP 6.3V → **470мкФ×10V Low ESR**.
---
## 0. Что должно быть на столе перед сборкой
### Куплено и получено (Ozon + WB)
- ESP32-S3-Zero (Waveshare, 21×17.5мм, USB-C) — Wi-Fi агент
- MPU-6050 GY-521 (IMU, I2C)
- Tattu 2S 300мАч 7.6V 75C PH2.0 (батарея, 55×20×12мм)
- Micro Brushed ESC 20A/30A с реверсом и тормозом (BEC 5V/1A)
- **Mini-Z flat-can мотор 130 (15×12мм, вал Ø2.0мм)**
- Микро-серво AFRC D1802MG 5г, **металлическая шестерня** (21.3×11.5×17.6мм)
- Дифференциал Mini-Z MR02/MR03 1/28 (металл, со штатным спуром)
- 5.8G 800TVL AIO VTX+камера 25мВт 40CH
- **686ZZ 6×10×3 подшипник ×10шт (задние)**
- **673ZZ 3×6×2.5 подшипник ×10шт (передние)**
- Винты M2/M2.5/M3 набор (RC, под шестигранник)
### Заказано (AliExpress, ждём 14-30 дней)
- Набор алюминиевых пиньонов Surpass Hobby M0.4 13T-26T **с посадкой на вал Ø2.0мм** (SKU `1005008647925876`)
- Съёмник пиньонов AJRC (SKU `1005009341739110`)
### Напечатано (P1S, ~5.7 часа)
- chassis_deck.stl **v7** (с готовыми отверстиями Ø10/Ø6 + вырезом под Type-C)
- ~~electronics_plate.stl~~ — НЕ используется (в v10)
- body_post.stl ×4
- front_bumper.stl, rear_bumper.stl
- shock_tower_front.stl, shock_tower_rear.stl (без поршня и уплотнений)
- servo_mount.stl **v6** (горизонтальная укладка сервы, прорезь под качалку в деке)
- motor_mount.stl **v12** (Mini-Z flat-can, осевое отверстие Ø2.2мм под вал Ø2.0мм)
- battery_strap.stl, wire_clip.stl ×4, fpv_camera_mount.stl
- wheel_hub_front.stl **v4** (под 673ZZ Ø6мм), wheel_hub_rear.stl **v4** (под 686ZZ Ø10мм)
- tire_front.stl, tire_rear.stl (TPU 85A)
- body_shell.stl (PETG, ~100 мин, печатаем сами — Kyosho НЕ покупаем)
### Дополнительно нужно (если нет дома)
- Провода: силикон 30AWG 5 цветов набор (100м) — уже в корзине (~400₽)
- ~~Силиконовое масло 30WT~~ — УДАЛЕНО (печатные аморт. без уплотнений, масло вытечет)
- **POSCAP / Low ESR электролит 470мкФ×10V** (Ø6.3×8мм или Ø8×10мм, ~50₽) — ОБЯЗАТЕЛЬНО
- **Каптоновый скотч 10мм × 30м** (~250₽) — ОБЯЗАТЕЛЬНО (изоляция бутерброда ESP32+ESC+MPU)
- Двухсторонний скотч 3M VHB 0.1мм (~150₽) — фиксация плат
- Термоусадка 3мм и 5мм — 100₽
- Изолента, кабельные стяжки — есть дома
> Кузов печатаем сами на P1S (PETG, body_shell.stl, ~100 мин). Готовый кузов Kyosho НЕ покупается.
### Инструменты
- Паяльник 25-40W с тонким жалом
- Припой, флюс
- Крестовая отвёртка PH00 + PH0
- Пинцет
- Бокорезы
- Мультиметр
- USB-C кабель для ESP32
---
## 1. Распечатка и подготовка деталей
### Шаг 1.1 - Печать STL
1. Открыть Bambu Studio
2. Импортировать STL из D:/x0gp/hardware/print/stl/
3. Разложить на столе 256×256мм Bambu P1S:
- Большие: deck, electronics_plate, front_bumper, rear_bumper, battery_strap
- Средние: servo_mount, motor_mount, fpv_camera_mount, shock_tower×2
- Мелкие: 4× body_post, 4× wire_clip
4. **Все PETG детали**: профиль 0.16mm Strength @BBL P1S
5. **TPU детали** (front_bumper, rear_bumper, battery_strap): профиль 0.20mm Quality, AMS не нужен
6. Запустить печать (3 часа)
### Шаг 1.2 - Пост-обработка
1. Снять детали с стола
2. Убрать поддержки (если были)
3. Пройтись наждачкой 200 по отверстиям M2/M2.5 (если саморезы входят туго)
4. Проверить отверстия подшипников - вставить 673ZZ (Ø6мм) и 686ZZ (Ø10мм), должны входить с лёгким натягом
5. **Сверить размеры серво** с посадкой в `servo_mount.stl` v6 (21.3×11.5×17.6мм). Проверить, что прорезь под качалку Ø5мм на Y=+49 совпадает с нижней стороной деки.
6. **Сверить `motor_mount.stl` v12**: осевое отверстие Ø2.2мм должно пропускать вал мотора Ø2.0мм без трения.
---
## 2. Механика шасси (30 минут)
### Шаг 2.1 - Установка подшипников в деку
1. Берём chassis_deck.stl **v7** (напечатанный, отверстия уже есть — НЕ сверлить вручную)
2. Нажимаем **673ZZ** в отверстия **передней** оси (Ø6мм) — 2 шт
3. Нажимаем **686ZZ** в отверстия **задней** оси (Ø10мм) — 2 шт
4. Убеждаемся что вращаются свободно
5. **При получении дифференциала** — замерить штангенциркулем ширину посадочного места под задний подшипник. Оригинал Mini-Z MR02/03 = 2.5мм (НЕ 3мм). Если реально 2.5мм — напечатать PLA-проставку 0.5мм или дождаться AliExpress-партии 6×10×2.5.
### Шаг 2.2 - Установка мотора
1. Берём **motor_mount.stl v12** (под Mini-Z flat-can 15×12мм, осевое отверстие Ø2.2мм под вал Ø2.0мм)
2. Вставляем Mini-Z flat-can мотор в монтаж (посадочное окно 15×12мм)
3. Закрепляем 2×M1.6 винтами через торцевые отверстия мотора (НЕ M2 — резьба в моторе M1.6!)
4. **Снять штатную шестерню** с вала съёмником пиньонов AJRC (если мотор б/у)
5. Надеть пиньон M0.4 8T (посадка Ø2.0мм!) — **после приезда с AliExpress** (дни 21-30)
6. Устанавливаем motor_mount на деку: 2×M2 винтами через отверстия в motor_mount
### Шаг 2.3 - Установка серво (горизонтально)
1. Берём servo_mount.stl **v6**
2. Вставляем серво AFRC D1802MG (21.3×11.5×17.6мм) **горизонтально** — качалка вниз
3. Закрепляем 2×M2 винтами через servo_mount
4. Устанавливаем servo_mount на деку: 2×M2 винтами через отверстия
5. Качалка серво должна выходить **через прорезь Ø5мм в деке** на Y=+49 (rocker) — под деку, чтобы не торчать вверх в кокпит F1
6. **Внимание**: высота серво 17.6мм. Кузов F1 в носовой части обычно 12-15мм. Серво помещается только при горизонтальной укладке (проверено в CART_MVP v13).
### Шаг 2.4 - Установка ESC
1. Берём **Micro Brushed ESC 20A/30A**
2. Очистить от термоусадки и штатных толстых проводов — будем паять бутербродом с ESP32-S3-Zero
3. Устанавливаем ESC на деку **в носовой части** (X=0, Y=+30), между серво и передним краем
4. Фиксируем тонким двусторонним скотчем 3M VHB 0.1мм
### Шаг 2.5 - Установка shock towers
1. Берём shock_tower_front.stl (стойка Y=+20)
2. Крепим 2×M2.5 винтами к деке через отверстия на Y=+20
3. Берём shock_tower_rear.stl (стойка Y=-28)
4. Крепим 2×M2.5 винтами к деке через отверстия на Y=-28
5. Стойки направлены вверх, высота 25мм
6. **Амортизаторы**: shock_tower сделан без поршня и уплотнения — полая стойка. Трение «пластик по пластику». Масло НЕ нужно (УДАЛЕНО v13).
### Шаг 2.6 - Установка батареи (ВДОЛЬ центральной оси, v14)
1. Берём battery_strap.stl (напечатанный TPU 95A)
2. Протягиваем батарею **Tattu 2S 300мАч** через окно в strap **ВДОЛЬ** центральной оси (длинная сторона 55мм по Y, от носа к корме; ширина 20мм по X — по центру)
3. PH2.0 разъём направлен к корме (к ESC) для удобства подключения
4. **Полуутопить батарею** в пропил деки на 3-4мм (пропил вырезается напильником или фрезой в `chassis_deck.stl` v7+) — иначе высота стопки не закроется кузовом
5. Крепим strap к нижней стороне деки (через отверстия в деке или на двусторонний скотч)
6. Батарея лежит в средней части деки между серво (нос) и motor_mount (корма)
7. **НЕ ПОПЕРЁК** (v14 отмена v13): поперёк 55мм вылезает за пределы кузова как крылья
### Шаг 2.7 - Установка электроники ВТОРОЙ ПАЛУБОЙ (v14)
1. Берём 4× body_post.stl — устанавливаем в отверстия деки (FL/FR/RL/RR), высота стойки 10мм
2. **Возвращаем `electronics_plate.stl`** (в v14 — снова нужен) как «вторую палубу» над батареей
3. Берём ESP32-S3-Zero, MPU-6050 (с выпаянными пинами, тонкие силиконовые провода 30AWG)
4. Изолируем платы снизу каптоновым скотчем (ОБЯЗАТЕЛЬНО — иначе КЗ сожжёт ESP32)
5. **Между ESC и ESP32 — пластинка-проставка 1мм** (текстолит или кусочек плотного PETG от неудачной печати) — воздушный зазор для охлаждения феттов ESC (исправление v14)
6. Укладываем бутерброд **на верхнюю палубу (electronics_plate)** над батареей:
- ESC — у дальней переборки (над кормой батареи)
- ESP32-S3-Zero — рядом с ESC, вырезом под Type-C к краю деки
- MPU-6050 — на свободном пятачке, SDA→GPIO21, SCL→GPIO22
7. Надеваем electronics_plate на 4× body_post, фиксируем
8. Общая высота стопки: дека 1.5мм + батарея полуутопленная ~8мм + стойки 10мм + электроника 5-6мм = **~25мм**. Кузов F1 в кокпите 22-25мм — впритык, закроется.
### Шаг 2.8 - ~~Установка dogbones~~ — УДАЛЕНО
- Задний привод Mini-Z MR02/03: мотор → пиньон → спур дифференциала → колёса на оси дифф. Dogbones НЕ нужны (они для полноприводных MA020/AWD).
### Шаг 2.9 - Установка колёс (печатаем сами)
1. **Печатаем** wheel_hub_front.stl + tire_front.stl + wheel_hub_rear.stl + tire_rear.stl на P1S
2. Запрессовываем подшипники в ступицы: 673ZZ в передние, 686ZZ в задние
3. Устанавливаем на оси (перед — через ступицу 673ZZ, зад — на оси дифференциала через 686ZZ)
4. Проверить что колёса вращаются свободно
---
## 3. Электрика (60 минут)
### 3.1 Схема подключения (v13)
`
[BATTERY Tattu 2S 300мАч 7.6V PH2.0]
|
+---- PH2.0 ----[Micro Brushed ESC 20A/30A]----[Mini-Z flat-can мотор 130, вал Ø2.0мм]
| |
| +---- BEC 5V/1A ----+--[POSCAP 470мкФ×10V Low ESR]--GND (на линии 5V)
| | |
| | +---- ESP32-S3-Zero 5V (от BEC)
| | +---- SERVO VCC (красный)
| | +---- AIO VTX+Camera 5V (ОБЯЗАТЕЛЬНО от BEC!)
| |
| +---- GND (общая шина)
| |
| +---- Signal ----[SERVO сигнальный оранжевый]
| |
| +---- Signal ----[ESC сигнал PWM]
|
+---- [ESP32-S3-Zero GPIO21] ----[MPU-6050 SDA]
+---- [ESP32-S3-Zero GPIO22] ----[MPU-6050 SCL]
+---- [ESP32-S3-Zero 3V3] ----[MPU-6050 VCC]
+---- [ESP32-S3-Zero GND] ----[MPU-6050 GND]
Штатная антенна-«клевер» AIO камеры -> откусить у основания, оголить 12.3-12.5мм = диполь
`
### 3.2 Схема питания (v13)
`
Tattu 2S 300мАч (7.6V HV / 8.4V заряд)
|
+---- PH2.0 ----[Micro Brushed ESC 20A] (вход питания)
|
+---- BEC 5V/1A (выход для слаботочки)
|
+---- [POSCAP 470мкФ×10V Low ESR параллельно] (ОБЯЗАТЕЛЬНО)
|
+---- ESP32-S3-Zero 5V (350мА пик Wi-Fi)
+---- AIO VTX+Camera 5V (200-300мА)
+---- SERVO VCC (300-400мА пиково)
+---- МОТОР (Mini-Z flat-can 130, коллекторный, 2 провода) - силовая часть
`
**⚠️ ВАЖНО про камеру AIO (v13)**: НЕЛЬЗЯ питать от пина 3V3 ESP32-S3-Zero — встроенный LDO Waveshare 300-400мА перегружен (ESP32 сам ест 350мА в пике Wi-Fi). Только от **BEC 5V** параллельно POSCAP.
**⚠️ ВАЖНО про POSCAP (v13)**: 470мкФ×10V Low ESR электролит или POSCAP. НЕ 6.3V — слишком мало запаса по вольтажу (BEC даёт скачки при торможении мотора, 6.3V может пробить). POSCAP положить **НАБОК** вдоль деки (экономит 5мм высоты).
### 3.3 Схема данных (сигналы)
`
ESP32-S3-Zero (Waveshare, 21×17.5мм)
├── GPIO21 (SDA) -> MPU-6050 SDA
├── GPIO22 (SCL) -> MPU-6050 SCL
├── GPIO2/4/5/6/7/15/16/17/18 -> Servo PWM (любой LEDC-capable)
├── GPIO18 -> ESC Signal PWM
├── USB-C -> для прошивки
├── 3V3 -> MPU-6050 VCC (ТОЛЬКО для IMU! НЕ для AIO камеры!)
└── GND -> общая земля (ESC GND, MPU GND, SERVO GND, AIO VTX GND)
`
### Шаг 3.1 - Паяем силовую часть
1. **Батарея -> ESC**: провод PH2.0 (комплектный с Tattu) или припаять PH2.0 к ESC
2. **ESC -> Мотор**: 2 провода (Mini-Z flat-can коллекторный) — любой порядок, потом подобрать направление
3. Проверить: подключить батарею (без мотора), ESC должен пикнуть (инициализация)
### Шаг 3.2 - Паяем BEC + POSCAP (v13)
1. **ESC BEC 5V** -> общая шина 5V (красный провод BEC)
2. **BEC GND** -> общая шина GND (чёрный/коричневый)
3. **POSCAP 470мкФ×10V Low ESR** — припаять параллельно шинам 5V и GND максимально короткими выводами (ОБЯЗАТЕЛЬНО, иначе будут перезагрузки ESP32 и полосы на видео)
- Длинная ножка = «+» (5V), короткая = «−» (GND). **Перепутать = взрыв.**
- Положить **НАБОК** вдоль деки
4. Проверить мультиметром: 5.0-5.2V между красным и чёрным
### Шаг 3.3 - Паяем серво
1. **SERVO VCC (красный)** -> шина 5V (от BEC)
2. **SERVO GND (коричневый/чёрный)** -> шина GND
3. **SERVO Signal (оранжевый/белый)** -> ESP32-S3-Zero GPIO5 (или другой LEDC-capable: GPIO2/4/6/7/15/16/17/18)
### Шаг 3.4 - Паяем ESP32 + MPU
1. **ESP32 5V** -> шина 5V (от BEC)
2. **ESP32 GND** -> шина GND
3. **MPU VCC** -> ESP32 3V3 (ТОЛЬКО IMU, не камера!)
4. **MPU GND** -> ESP32 GND
5. **MPU SDA** -> ESP32 GPIO21
6. **MPU SCL** -> ESP32 GPIO22
7. **MPU INT** -> опционально ESP32 GPIO4 (для прерываний)
8. **Пины MPU-6050 ВЫПАЯТЬ**, припаять тонкий силикон 30AWG напрямую к ESP32-S3-Zero плашмя (экономия 7мм высоты)
### Шаг 3.5 - Паяем ESC сигнал
1. **ESC Signal (белый/оранжевый)** -> ESP32 GPIO18
2. **ESC GND (чёрный)** -> шина GND
### Шаг 3.6 - Паяем AIO VTX+Camera (v13 — СТРОГО ОТ BEC)
1. **AIO 5V (красный)** -> шина 5V (от BEC) — НЕ от 3V3 ESP32!
2. **AIO GND (чёрный)** -> шина GND
3. **AIO Video Out (жёлтый)** -> опционально, для теста можно не подключать
4. **POSCAP** на этой линии гасит полосы от наводок BEC
### Шаг 3.7 - Антенна (v13)
1. **Штатная антенна-«клевер»** на AIO камере -> **откусить у основания**, снять **12.3-12.5мм** внешней оплётки (коэффициент укорочения в изоляции на 5.8ГГц!), оголить жилу = готовый лёгкий диполь (~0.1г)
2. Вывести через отверстие в кузове (после установки body_shell.stl)
3. RUSHFPV Cherry **НЕ используется** — слишком тяжёлая и большая для масштаба 1/27
---
## 4. Прошивка ESP32 (30 минут)
### Шаг 4.1 - Установка toolchain
1. Установить **esptool** (Python пакет): pip install esptool
2. Скачать **ESP-IDF v5.x** или **Arduino-ESP32** (зависит от выбора firmware)
3. Для MVP рекомендую **MicroPython** (быстрый старт)
### Шаг 4.2 - Прошивка MicroPython
1. Скачать MicroPython firmware: https://micropython.org/download/ESP32-S3/
2. Стереть flash:
spefuse.py --chip esp32s3 erase_flash
3. Прошить MicroPython:
sptool.py --chip esp32s3 -p COM3 write_flash 0x0 esp32s3-20240602-v1.23.0.bin
4. Подключиться через REPL (mpremote или Thonny)
### Шаг 4.3 - Тестовая прошивка (agent_linker)
1. Скопировать oot.py + main.py из репозитория x0gp/server/cmd/agent-linker/
2. Настроить Wi-Fi SSID/пароль в config.py
3. Прошить через mpremote
4. Проверить логи - агент должен подключиться к Wi-Fi и WebSocket серверу
### Шаг 4.4 - Калибровка PWM
1. Подключить серво, ESC
2. Запустить тест PWM: 0%, 50%, 100%
3. Серво: проверить что диапазон 1000-2000 мкс (1-2 мс)
4. ESC: проверить что 1500 мкс = стоп, 1000 = полный назад, 2000 = полный вперёд
5. Записать калибровочные значения в config
### Шаг 4.5 - Проверка I2C (MPU-6050)
1. Сканировать I2C шину:
`python
from machine import I2C, Pin
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
print(i2c.scan()) # должно быть [104] (0x68)
`
2. Прочитать WHO_AM_I регистр (0x75) - должен вернуть 0x68
3. Прочитать accelerometer + gyroscope данные
4. Калибровать offsets (пока машина стоит ровно)
---
## 5. Установка батареи и кузова (15 минут)
### Шаг 5.1 - Установка батареи (ВДОЛЬ оси, v14)
1. Берём battery_strap.stl (напечатанный TPU 95A)
2. Протягиваем батарею **Tattu 2S 300мАч** через окно в strap **ВДОЛЬ** оси (длинная сторона 55мм по Y, от носа к корме; ширина 20мм по X — по центру)
3. **Полуутопить батарею** в пропил деки 3-4мм (пропил в `chassis_deck.stl` или напильником)
4. PH2.0 разъём направлен к корме (к ESC) для удобства подключения
5. Крепим strap к нижней стороне деки (через отверстия в деке или на двусторонний скотч)
6. Батарея лежит в средней части деки между серво (нос) и motor_mount (корма)
7. **НЕ ПОПЕРЁК** (v14 отмена v13): поперёк 55мм вылезает за пределы кузова
### Шаг 5.2 - Установка кузова
1. Берём **напечатанный** body_shell.stl (PETG)
2. Надеваем на 4× body_post
3. Кузов должен сесть плотно на деку (верхней плиты НЕТ — в v10)
4. Проверить: кузов не должен касаться колёс и серво (серво торчит на 17.6мм!)
5. Если касается - подрезать кузов ножом или подложить шайбы на body_posts
6. **Если высота кокпита в носовой части <17.6мм** — серво не помещается вертикально, только горизонтально (проверить Шаг 2.3)
### Шаг 5.3 - Установка FPV камеры + диполь (v13)
1. Берём fpv_camera_mount.stl
2. Вставляем AIO VTX+Camera в монтаж
3. Закрепляем 4×M2 (внутри) + 2×M2 (к деке)
4. **Штатная антенна-«клевер»** -> откусить у основания кусачками
5. Снять **12.3-12.5мм** внешней оплётки (точность ±0.5мм критична на 5.8ГГц из-за коэффициента укорочения в изоляции)
6. Оголить центральную жилу = готовый лёгкий диполь (~0.1г)
7. Вывести диполь через отверстие в кузове (в зоне шлема гонщика)
8. Проверить: камера должна смотреть вперёд
9. **RUSHFPV Cherry НЕ используется** — слишком тяжёлая для 1/27
### Шаг 5.4 - Установка бамперов (TPU)
1. front_bumper.stl - на передний край шасси (Y=+65)
2. rear_bumper.stl - на задний край (Y=-65)
3. Крепим 2×M2.5 винтами через кузов к бамперам (или приклеиваем)
---
## 6. Первый запуск (15 минут)
### Шаг 6.1 - Проверка безопасности
1. **Убрать колёса** (если ещё не установлены)
2. Поднять машину так чтобы колёса не касались стола
3. Подключить батарею XT30 к ESC
4. ESC должен пикнуть (1 короткий сигнал = готов)
### Шаг 6.2 - Проверка серво
1. Подключиться к WebSocket серверу (через PC)
2. Отправить команду "steer 0" - серво должна встать в нейтраль
3. Отправить "steer 50" - серво поворачивает вправо
4. Отправить "steer -50" - серво поворачивает влево
5. Проверить диапазон - рулевая тяга не должна клинить
### Шаг 6.3 - Проверка мотора
1. Отправить "throttle 0" - мотор стоит
2. Медленно увеличить: "throttle 10" - мотор крутится медленно
3. Проверить направление: если колесо крутится назад, поменять 2 провода мотора
4. **Внимание**: держите машину крепко! Mini-Z flat-can 130 на 2S с пиньоном 8T и спуром 44T — передача 5.5:1, машинка ОЧЕНЬ шустрая. **Ограничить газ до 40-50% в прошивке на первых тестах** (Dual Rates).
### Шаг 6.4 - Проверка Wi-Fi
1. ESP32 должен подключиться к Wi-Fi (SSID из config)
2. Проверить IP адрес (через mpremote REPL)
3. Пинговать с PC: ping 192.168.1.XXX
4. WebSocket соединение с сервером должно установиться
### Шаг 6.5 - Проверка MPU-6050
1. В REPL прочитать значения гироскопа:
`python
ax, ay, az = mpu.accel.xyz
gx, gy, gz = mpu.gyro.xyz
print(ax, ay, az, gx, gy, gz)
`
2. Наклонить машину - значения должны меняться
3. Калибровать offsets (вычесть среднее в покое)
---
## 7. Тест-драйв (30 минут)
### Шаг 7.1 - На столе (без трассы)
1. Поставить машину на стол колёсами вниз
2. Установить колёса (если были сняты)
3. Подключить батарею
4. Подключиться к серверу, попробовать ехать прямо
5. Проверить рулевое - повороты должны быть чёткие
### Шаг 7.2 - На полу
1. Поставить машину на пол
2. Аккуратно дать газ - проверить прямолинейность
3. Попробовать повороты - радиус должен быть небольшой
4. Проверить время работы от батареи (Tattu 300мАч ~8-12 минут на полном газу, до 15 минут в щадящем режиме)
### Шаг 7.3 - Тест дальности Wi-Fi
1. Отнести машину на 5-10 метров от роутера
2. Проверить стабильность соединения
3. Задержка управления: ~50-100мс (приемлемо)
### Шаг 7.4 - Тест FPV (если есть VRX)
1. Подключить VRX к PC через USB
2. Открыть видеоплеер (или специализированное ПО)
3. Увидеть картинку с AIO камеры
4. Задержка видео: ~100-200мс (нормально для аналога 5.8G)
---
## 8. Что делать если что-то не работает
### ESC не пищит при подключении батареи
- Проверить polarity XT30
- Проверить напряжение батареи (>6V)
- Проверить коннектор ESC -> батарея
### Серво не двигается
- Проверить PWM сигнал (осциллограф или другой серво)
- Проверить питание 5V на серво
- Калибровать ESC (многие ESC калибруют серво при первом подключении)
### Мотор не крутится
- Проверить подключение 3 проводов
- Проверить сигнал ESC
- Попробовать поменять любые 2 провода (реверс)
### Wi-Fi не подключается
- Проверить SSID/пароль в config
- Проверить диапазон (ESP32-S3 только 2.4GHz)
- Проверить что роутер не блокирует новые устройства
### MPU-6050 не отвечает
- Проверить подключение SDA/SCL
- Проверить адрес (0x68 по умолчанию)
- Попробовать i2c.scan() для диагностики
### FPV картинки нет
- Проверить что VTX включен (светодиод)
- Проверить частоту канала (должна совпадать с VRX)
- Проверить антенну (без антенны VTX может сгореть!)
---
## 9. После теста MVP (если всё работает)
### Дозаказать на оставшиеся 3 машины (см. CART_MVP.md v13)
- ESP32-S3-Zero ×3, MPU-6050 ×3, батарея Tattu ×3, Micro Brushed ESC ×3
- Кузов ×3 (печатаем), дифференциал ×3
- AIO камера+VTX ×3, подшипники ×2 пачки (686ZZ + 673ZZ)
- Mini-Z flat-can мотор ×3 (Ali/Avito)
- Пиньон-набор 1 шт хватит на 4 машины — НЕ дозаказывать
- ~~Dogbones~~ НЕ дозаказывать
- ~~RUSHFPV антенна~~ НЕ дозаказывать (штатный диполь камеры)
- **Итого дозаказ: ~21 103₽**
### Улучшения после MVP
- Brushless мотор RC0820 (вместо коллекторного Mini-Z 130) - быстрее
- Hobbywing Quicrun Micro Brushed ESC (водозащита + boost) - надёжнее
- Камера BETAFPV C03 + VTX M03 (отдельные, лучше качество)
- Гироскоп DasMikro (стабилизация FPV)
- VRX на PC (Eachine ProDVR)
- VRX goggles для FPV-пилотирования
---
## 10. Чек-лист перед первым заездом
- [ ] Батарея Tattu заряжена (7.6V HV / 8.4V заряженная, проверить мультиметром)
- [ ] POSCAP 470мкФ×10V Low ESR припаян параллельно 5V/GND
- [ ] AIO камера запитана от BEC 5V (НЕ от 3V3 ESP32!)
- [ ] Каптоновый скотч изолирует платы бутерброда ESP32+ESC+MPU
- [ ] **Между ESC и ESP32 — пластинка-проставка 1мм** (воздушный зазор для охлаждения)
- [ ] ESC пикает при подключении
- [ ] Серво AFRC D1802MG двигается в обе стороны
- [ ] Мотор Mini-Z flat-can крутится в правильую сторону
- [ ] Колеса установлены и вращаются (перед — 673ZZ, зад — 686ZZ/MR106-ZZ)
- [ ] Кузов не касается колёс и серво (серво 17.6мм торчит!)
- [ ] **Батарея уложена ВДОЛЬ оси, полуутоплена в пропил деки 3-4мм**
- [ ] Wi-Fi подключен, IP адрес известен
- [ ] WebSocket соединение с сервером активно
- [ ] MPU-6050 читает данные
- [ ] Антенна-диполь камеры AIO (12.3-12.5мм) выведена через кузов
- [ ] Бамперы не мешают колёсам
- [ ] Все винты затянуты
- [ ] В прошивке ограничен газ (Dual Rates 40-50%)
**Готово к запуску!**