# 🔌 Подключение: ESP32 DevKit v1 + HMMD mmWave

## Таблица подключения

| HMMD (разъём J2) | ESP32 DevKit v1 | Назначение |
| :--- | :--- | :--- |
| Pin1 3V3 | 3.3V | Питание. **Только 3.3V** — 3.0–3.6В по документации модуля. |
| Pin2 GND | GND | Земля |
| Pin3 TX  | GPIO16 (RX2) | UART: радар передаёт → ESP32 принимает |
| Pin4 RX  | GPIO17 (TX2) | UART: подключается для полноты интерфейса; в этой версии драйвер ничего не отправляет радару (см. THEORY.md) |
| Pin5 OT2 | не используется | Цифровой выход "есть цель" — в этом компоненте не читается, весь функционал реализован через UART-протокол (см. ниже) |

Пины GPIO16/17 заданы в [`main.cpp`](src/main.cpp#L5-L6) как `kRx2Pin`/`kTx2Pin` — поменяйте
их там при другой разводке. **TX радара идёт на RX2 ESP32 и наоборот** — типичная ошибка
проводки UART — перепутать TX↔RX местами.

## Почему не используется пин OT2

У HMMD есть отдельный цифровой выход OT2 (высокий уровень = обнаружена цель, по данным сторонних
источников) — это самый простой способ подключения без единой строчки кода, годится для прямого
управления реле. Этот компонент сознательно его не использует: датчик подключён по UART, а
дистанция до цели считывается из потока данных — OT2 такой детализации не даёт (только да/нет).
Если нужен вариант "без программирования" — можно попробовать подключить OT2 напрямую к модулю
реле, но поведение этого пина в рамках подготовки этого компонента не проверялось на реальном
железе.

## Проверка перед первым включением

1. Мультиметром между 3V3 и GND — должно быть ~3.3В.
2. TX радара → RX2 ESP32 (GPIO16), RX радара → TX2 ESP32 (GPIO17) — не перепутаны местами.
3. После прошивки в Serial Monitor (115200 бод) отправьте `r` (сырой HEX-дамп) — если данные
   идут, вы увидите поток байт. **Это первая проверка, которую стоит сделать на новом
   экземпляре датчика** — она подтверждает физическое подключение независимо от того, какой
   именно протокол (ASCII/бинарный) использует ваш модуль (см. THEORY.md, раздел 3). Если байт
   нет — UART не настроен или пины перепутаны (см. [README.md, "Устранение неисправностей"](README.md)).

## Если нужны другие GPIO

UART2 на ESP32 можно переключить почти на любые GPIO. Не годятся:
- `GPIO0`, `GPIO2` — участвуют в загрузке платы; `GPIO2` также используется в этом компоненте под
  статусный LED (см. [main.cpp](src/main.cpp#L7)) — не занимайте его под UART.
- `GPIO6–11` — заняты встроенной Flash-памятью.
- `GPIO34–39` — только вход, без подтяжки; для TX2 (выход ESP32 → радар) не подойдут.
