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.
This commit is contained in:
x0gp
2026-07-06 12:41:04 +04:00
parent 49351b4928
commit 76e33cfe62
73 changed files with 2353 additions and 0 deletions
+510
View File
@@ -0,0 +1,510 @@
# 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%)
**Готово к запуску!**