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

34 KiB
Raw Blame History

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%)

Готово к запуску!