# Подключение nRF24L01+

## Схема

```
     ESP32                    nRF24L01+
  ┌───────────┐             ┌─────────────┐
  │       3V3 ├─────────────┤ VCC         │
  │       GND ├─────────────┤ GND         │
  │     GPIO4 ├─────────────┤ CE          │
  │    GPIO27 ├─────────────┤ CSN         │
  │    GPIO18 ├─────────────┤ SCK         │
  │    GPIO19 ├─────────────┤ MISO        │
  │    GPIO23 ├─────────────┤ MOSI        │
  └───────────┘             └─────────────┘
```

Схема одинакова для обеих плат (передатчик и приёмник) — разница только в
том, какая роль зашита в прошивке (`ROLE_TRANSMITTER`/`ROLE_RECEIVER`,
см. [README.md](README.md#роли-и-окружения-platformio)).

## Таблица пинов

| nRF24L01+ | ESP32 (esp32dev) | Назначение |
|-----------|--------------------|------------|
| VCC       | 3V3                | Питание — **строго 3.3V**, 5V выведет чип из строя |
| GND       | GND                | Общий провод |
| CE        | GPIO4              | Chip Enable — переключает чип между режимами приёма/передачи |
| CSN       | GPIO27             | SPI Chip Select |
| SCK       | GPIO18             | SPI Clock |
| MISO      | GPIO19             | SPI Master In / Slave Out |
| MOSI      | GPIO23             | SPI Master Out / Slave In |

Пины `NRF_CE_PIN`/`NRF_CSN_PIN` заданы в [main.cpp:5-6](src/main.cpp#L5-L6) —
при необходимости смените их под свою распиновку. SPI-пины (SCK/MISO/MOSI)
используются автоматически как стандартный аппаратный SPI платы esp32dev.

## Конденсатор на питании — не опционально

nRF24L01+ (особенно версии с усилителем PA/LNA — большая антенна вместо
маленькой печатной) потребляет резкий пик тока в момент включения
радиопередатчика. Многие платы ESP32 не могут выдать этот пик стабильно
через встроенный стабилизатор 3.3V, из-за чего модуль либо не отвечает по
SPI, либо ESP32 неожиданно перезагружается в момент передачи.

**Решение**: поставить электролитический конденсатор ~470 мкФ между VCC и
GND модуля, максимально близко к самому nRF24L01+ (не на плате ESP32, а
прямо на проводах питания модуля). Это сглаживает пик тока и почти всегда
решает проблему "чип не найден"/случайных перезагрузок при первом включении.

## Типичные проблемы

| Симптом | Вероятная причина | Решение |
|---------|--------------------|---------|
| `[!] Чип не найден` при старте | Обрыв на SPI-линии или недостаточное питание | Проверить пайку SCK/MISO/MOSI, добавить конденсатор (см. выше) |
| `AckRate` всегда 0% | Не совпадает адрес трубы или канал на двух платах | Сверить `RADIO_ADDRESS`/`RADIO_CHANNEL` в `main.cpp` на обеих прошивках |
| Случайные перезагрузки при передаче | Просадка питания при включении PA | Конденсатор 470 мкФ, короткие толстые провода питания |
| `AckRate` плавает от 100% до 0% на близком расстоянии | Помехи в диапазоне 2.4 ГГц (Wi-Fi рядом) | Сменить `RADIO_CHANNEL` дальше от каналов Wi-Fi, см. [THEORY.md](THEORY.md#1-диапазон-24-ггц-общий-эфир-для-всех) |
