# Руководство по аппаратной интеграции: ESP32-C6
**Версия документа:** 1.0  
**Статус:** Одобрено (Release)  
**Область применения:** Аппаратная разработка, интеграция модулей ESP32-C6 (на примере ESP32-C6-WROOM-1), подключение UART и использование Zigbee 3.0.

---

## 1. Введение
Данный документ описывает требования и рекомендации по аппаратной интеграции системы-на-кристалле (SoC) **ESP32-C6**. Особенностью ESP32-C6 является встроенная поддержка Wi-Fi 6 (802.11ax), Bluetooth 5.3 (LE) и 802.15.4 (Zigbee 3.0 / Thread). 

В руководстве рассмотрены базовая распиновка, схемы подключения интерфейса UART и варианты использования ESP32-C6 в качестве Zigbee-координатора или радиосопроцессора (RCP - Radio Co-Processor).

---

## 2. Распиновка ESP32-C6 (Pinout)

В таблице ниже приведена базовая распиновка на примере стандартного модуля **ESP32-C6-WROOM-1**. ESP32-C6 имеет гибкую матрицу GPIO, поэтому большинство периферийных устройств может быть переназначено на другие пины, однако существуют пины с фиксированными или специальными функциями (Strapping pins).

### 2.1. Основные выводы (Power & System)
| Название пина | Тип | Описание |
| :--- | :---: | :--- |
| **3V3** | Power | Питание модуля, строго **3.0V - 3.6V**. |
| **GND** | Power | Общая земля. |
| **EN (CHIP_PU)** | Input | Включение чипа (High = ON, Low = OFF). Требуется подтяжка к 3V3 через резистор 10kΩ и конденсатор 1µF на GND (RC-цепь задержки). |

### 2.2. Конфигурационные выводы (Strapping Pins)
Состояние этих пинов считывается во время сброса (Boot) для определения режима работы.

| Пин | Функция при загрузке | Нормальное состояние | Режим прошивки (UART Download) |
| :--- | :--- | :---: | :---: |
| **GPIO9** | Boot Mode | **HIGH** (Pull-up) | **LOW** (Pull-down) |
| **GPIO8** | ROM Messages | Н/Д | HIGH / LOW (управляет выводом логов ROM) |
| **GPIO15** | JTAG Signal | HIGH (Pull-up) | Влияет на тайминги VDD_SDIO |

> ⚠️ **Внимание:** Не подключайте к GPIO9 внешнюю периферию, которая может притянуть пин к земле в момент подачи питания, иначе ESP32-C6 не загрузится в рабочий режим (останется в режиме прошивки).

### 2.3. Интерфейсы по умолчанию
| Пин | Функция | Описание |
| :--- | :--- | :--- |
| **GPIO16** | U0TXD | UART0 TX (Лог системы и прошивка) |
| **GPIO17** | U0RXD | UART0 RX (Лог системы и прошивка) |
| **GPIO12** | USB_D- | USB Serial/JTAG (Поддержка встроенного USB) |
| **GPIO13** | USB_D+ | USB Serial/JTAG (Поддержка встроенного USB) |

---

## 3. Подключение UART (UART Wiring)

ESP32-C6 использует логические уровни **3.3V**. Подключение к устройствам с 5V-логикой (например, к старым платам Arduino) требует использования конвертера логических уровней (Logic Level Shifter).

### 3.1. Базовое подключение (Прошивка и отладка)
Для программирования и чтения логов используется **UART0**.

*   **Host TX** ➔ **ESP32 GPIO17** (U0RXD)
*   **Host RX** ➔ **ESP32 GPIO16** (U0TXD)
*   **Host GND** ➔ **ESP32 GND** (Обязательное соединение!)

### 3.2. Подключение аппаратного контроля потока (Hardware Flow Control)
При передаче больших объемов данных (что критично для работы Zigbee RCP на высоких скоростях, например 115200 или 460800 бод), строго рекомендуется использовать аппаратный контроль потока.

Любые свободные GPIO могут быть назначены как RTS/CTS через матрицу GPIO. Пример конфигурации для **UART1**:
*   **UART1 TX:** GPIO4
*   **UART1 RX:** GPIO5
*   **UART1 CTS:** GPIO6 *(подключается к RTS хоста)*
*   **UART1 RTS:** GPIO7 *(подключается к CTS хоста)*

#### Диаграмма подключения UART RCP (Host ↔ ESP32-C6)
```mermaid
graph LR
    subgraph Host [Host CPU / Raspberry Pi]
        HTX[TXD]
        HRX[RXD]
        HRTS[RTS]
        HCTS[CTS]
        HGND[GND]
    end

    subgraph ESP [ESP32-C6 Zigbee RCP]
        ERX[RXD - GPIO5]
        ETX[TXD - GPIO4]
        ECTS[CTS - GPIO6]
        ERTS[RTS - GPIO7]
        EGND[GND]
    end

    HTX -->|3.3V| ERX
    ETX -->|3.3V| HRX
    HRTS -->|3.3V| ECTS
    ERTS -->|3.3V| HCTS
    HGND --- EGND
```

---

## 4. Подключение и интеграция Zigbee (Zigbee Module Connections)

ESP32-C6 содержит встроенный радиомодуль IEEE 802.15.4, что означает, что он **сам является Zigbee-модулем**. Внешний Zigbee-трансивер не требуется.

Архитектурно ESP32-C6 может использоваться в двух режимах интеграции:

### Вариант А: Режим "Radio Co-Processor" (RCP)
В этом режиме стек протоколов Zigbee (например, Z2M / Zigbee2MQTT / ZHA) работает на основном хосте (Linux, Raspberry Pi), а ESP32-C6 выступает только как радио-модем.

1.  **Интерфейс связи:** UART1 или USB (через пины GPIO12/13).
2.  **Прошивка:** ESP-Zigbee-RCP (компилируется через ESP-IDF).
3.  **Требования к железу:** 
    *   Обязательное подключение пинов CTS/RTS (см. раздел 3.2).
    *   Качественное питание 3.3V, способное обеспечить пиковые токи до **350 мА** во время передачи (TX) в режиме 802.15.4.

### Вариант Б: Режим "Standalone SoC" (Координатор / Роутер / Конечное устройство)
В этом режиме весь стек Zigbee-координатора (ZC), роутера (ZR) или конечного устройства (ZED) крутится на самом процессоре RISC-V внутри ESP32-C6.

1.  **Подключение датчиков:** Напрямую к пинам ESP32-C6 по I2C (обычно GPIO8/GPIO9), SPI или ADC.
2.  **Питание (Для ZED):** Если устройство работает от батарейки (Sleepy End Device), необходимо минимизировать энергопотребление.
    *   Использовать внешние подтягивающие резисторы большого номинала (от 100kΩ).
    *   Во время Deep Sleep ток потребления ESP32-C6 составляет **около 7 мкА**.
3.  **Интеграция антенны:**
    *   При использовании версии с PCB-антенной (ESP32-C6-WROOM-1): Запрещается размещать медь на печатной плате под антенной. Необходимо обеспечить "Keepout Zone" минимум 15 мм вокруг антенны.
    *   При использовании версии с U.FL (IPEX) коннектором (ESP32-C6-WROOM-1U): Убедиться, что ВЧ-кабель имеет импеданс строго 50 Ом.

---

## 5. Чек-лист проектирования печатной платы (PCB Layout)

- [ ] **Питание (LDO):** Стабилизатор 3.3V должен выдавать не менее 500 мА для обеспечения пиковых нагрузок Wi-Fi + Zigbee (Coexistence).
- [ ] **Конденсаторы (Bypass):** Возле пина 3V3 модуля ESP32-C6 должны быть размещены конденсаторы на 10µF и 0.1µF.
- [ ] **Кнопки BOOT/EN:** Для ручной прошивки добавьте тактовые кнопки:
  - Кнопка `RST` замыкает `EN` на `GND`.
  - Кнопка `BOOT` замыкает `GPIO9` на `GND`.
- [ ] **Изоляция радиочастот:** Если на плате присутствуют другие высокочастотные компоненты (USB 3.0, импульсные преобразователи), они должны быть экранированы для предотвращения деградации сигнала Zigbee 2.4 GHz.
- [ ] **Auto-Programmer Circuit:** При подключении к USB-UART мосту (CP2102, CH340), использовать стандартную схему с двумя NPN транзисторами (DTR/RTS) для автоматического перевода ESP32-C6 в режим загрузки.
