Skip to the content
2 layers47 × 35 mmZigbee LED Controller, the printed circuit board in 3D

Zigbee-устройства для Алисы и умного дома Яндекса на ESP32-C6: прошивка, тесты и будущая PCB.

Size
47 × 35 mm
Copper layers
2
Thickness
1.6 mm
Parts
51
Nets
42
Pads
194
Tracks, vias
461, 11
Pours
7
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
24 Aug 2026
Updated
5 Sep 2026

Overview

Zigbee LED Controller is an open-source printed circuit board by VlasovLabTech, from the VlasovLabTech/Zigbee-ESP32-C6-Alice repository on GitHub, published under the MIT licence. It is a 2-layer board of 47 × 35 mm with 51 parts on 42 nets, routed with 461 tracks and 11 vias.

It is built around the UCC27517DBVR-TP, BSC014N04LSATMA1 and IPD068P03L3G. Its parts include 21 resistors, 13 capacitors, 8 connectors, 4 ICs and 4 transistors. It belongs with the radio and wireless and home automation and IoT boards and the ESP32 and RISC-V boards of this library.

Main components

3

README

README.md

Zigbee-контроллер для Алисы на ESP32-C6

Сборка прошивки Лицензия MIT Статус: beta

Открытый проект Zigbee 3.0-устройств на ESP32-C6 для Алисы, Яндекс Станции и умного дома Яндекса. Первая рабочая цель — контроллер света, который определяется как стандартное Zigbee-устройство и управляется из приложения «Дом с Алисой» и голосом через умную колонку Алиса.

Проект не ограничивается одним светильником: в дальнейшем здесь могут появиться простые кнопки, датчики, реле и другие Zigbee-устройства. Это не заявка на большую закрытую экосистему, а небольшой набор понятных и воспроизводимых устройств, которые можно собрать самостоятельно.

[!IMPORTANT] Текущая beta-версия — 0.1.0-beta.6. Прошивка и карта endpoint'ов ещё могут меняться. Сейчас проект предназначен для разработки и безопасных низковольтных экспериментов, а не для готового сетевого или силового изделия.

Проект независимый и не связан с компаниями Яндекс или Espressif. «Алиса», «Яндекс Станция» и «Дом с Алисой» упоминаются только для описания совместимости.

Что уже работает

ВозможностьСостояниеПодтверждение
Zigbee End Device на ESP32-C6✅прошивка собирается и запускается на nanoESP32-C6 V1.0/V1711
Минимальный On/Off MVP✅обнаружение и On/Off проверены с Яндекс Станцией 2
Основной профиль 2 Dimmable + 1 Addressable RGB✅после полного удаления старого узла Яндекс Станция 2 обнаружила все три endpoint
Реальные GPIO/PWM/RMT-выходы✅оба PWM проверены осциллографом; 93-пиксельная RGB-лента управляется цветом, яркостью и оттенками белого
Три локальные клавиши⚠️GPIO назначены, debounce и короткое нажатие реализованы; нужна физическая проверка
Физическая кнопка подключения⚠️логика удержания BOOT 5 секунд реализована; чистое сопряжение подтверждено Serial-командой, физическую кнопку ещё нужно проверить
Собственная PCB⚠️схема и предварительная PCB разрабатываются; плата ещё не изготовлена

Полный актуальный список задач и критериев готовности находится в TASKS.md. Наблюдённые результаты собраны в docs/compatibility.md.

Основной профиль

2 Dimmable + 1 Addressable RGB:

EndpointТип устройства
1Dimmable Light, PWM GPIO20
2Dimmable Light, PWM GPIO21
3Color Dimmable Light, физически одна адресная RGB-лента на GPIO22

Оба силовых выхода сразу представлены Алисе как диммируемые. Значение яркости 0 выключает канал, поэтому отдельные On/Off endpoint'ы не нужны. Адресная RGB-лента использует один цифровой DATA-выход, а не три PWM-линии. Эта карта одинакова для отладочной nanoESP32-C6 и собственной компактной PCB. Endpoint 3 поддерживает включение, отдельную регулировку яркости, цвет XY и цветовую температуру примерно 2000–6500 K. Все три карточки подтверждены в приложении «Дом с Алисой» с Яндекс Станцией 2.

Минимальный MVP

Один стандартный Home Automation On/Off Light (0x0100) на endpoint 1. Это самый простой проверенный пример для первого подключения к Яндекс Станции 2.

Как это устроено

mermaid
flowchart LR
    A[Алиса / приложение<br>«Дом с Алисой»] --> B[Яндекс Станция 2<br>Zigbee-координатор]
    B <-->|Zigbee 3.0| C[ESP32-C6<br>Zigbee End Device]
    C --> D[Стандартные Zigbee endpoint'ы]
    D --> E[GPIO20/21<br>2 × PWM 25 кГц]
    D --> F[GPIO22<br>Addressable RGB DATA]
    G[GPIO0/1/2<br>локальные кнопки] --> C
    H[BOOT / GPIO9<br>commissioning] --> C

ESP32-C6 самостоятельно работает как Zigbee End Device. Для управления не нужны Wi-Fi, MQTT, Raspberry Pi, внешний сервер или дополнительный микроконтроллер. Яндекс-специфичных кластеров и обходных решений в прошивке нет: обнаружение и управление строятся на стандартных Zigbee-кластерах.

Не любая колонка с Алисой является Zigbee-координатором. Нужна Яндекс Станция или отдельный хаб с поддержкой Zigbee. На данный момент фактически проверена только Яндекс Станция 2; совместимость с другими моделями пока не заявлена.

Два аппаратных варианта

Проект развивается сразу по двум практичным направлениям:

  1. Готовая отладочная плата ESP32-C6. Быстрый и недорогой способ повторить проект без изготовления PCB. Сейчас используется nanoESP32-C6 V1.0/V1711 с модулем ESP32-C6-WROOM-1-N16.
  2. Собственная компактная PCB в разработке. Вариант для законченного устройства с рассчитанным питанием, GPIO/PWM или релейными выходами, защитой, кнопками и проверенной тепловой и EMC-частью.

Отладочная плата не станет устаревшим вариантом после появления собственной PCB: обе ветки останутся полезными для разных сценариев. Подробнее — в docs/hardware.md.

Требования

  • Windows 10/11 и PowerShell 5.1 или PowerShell 7;
  • плата ESP32-C6 с доступным USB Serial/JTAG или USB-UART;
  • USB-кабель с передачей данных;
  • Яндекс Станция 2 для повторения подтверждённого Zigbee-теста;
  • интернет при первом запуске скрипта установки инструментов.

Скрипты используют проект-локальные Arduino CLI и Arduino-ESP32. Системная установка Arduino IDE не обязательна.

Быстрый старт

1. Клонирование и подготовка

powershell
git clone https://github.com/VlasovLabTech/Zigbee-ESP32-C6-Alice.git
Set-Location Zigbee-ESP32-C6-Alice
.\scripts\setup.ps1

2. Сборка

Проверка окружения и простого RGB-примера:

powershell
.\scripts\build.ps1 -Target smoke

Проверенный одноканальный Zigbee MVP:

powershell
.\scripts\build.ps1 -Target mvp

Основной профиль 2 Dimmable + 1 Addressable RGB для отладочной платы:

powershell
.\scripts\build.ps1 -Target universal

Проверка сборки того же профиля для компактной PCB:

powershell
.\scripts\build.ps1 -Target universal-pcb

3. Безопасное определение платы

Не выбирайте COM-порт по старой записи или наугад.

  1. Отключите плату и запомните текущий список последовательных устройств.
  2. При первом стирании подключите плату в ROM download mode: обычно нужно удерживать BOOT, кратко нажать RESET, отпустить RESET, затем BOOT.
  3. Найдите только что появившийся порт.
  4. Выполните неразрушающую идентификацию и убедитесь, что инструмент сообщает именно ESP32-C6.
  5. Если появилось несколько новых устройств или идентификация неоднозначна — остановитесь и проверьте подключение вручную.

Команды определения, первого стирания и загрузки описаны в docs/build-and-test.md. Полное стирание уничтожает прошивку и NVS выбранной платы, поэтому оно не выполняется автоматически.

4. Подключение к Алисе

  1. Соберите и загрузите mvp или основной universal-профиль.
  2. Откройте Serial Monitor на скорости 115200.
  3. Если устройство уже было добавлено, удалите из умного дома Яндекса весь старый физический Zigbee-узел или все его логические карточки. Убедитесь, что две Dimmable-лампы и прежняя RGB-карточка исчезли из раздела «Свет».
  4. В приложении «Дом с Алисой» нажмите + → Устройство умного дома → Поиск Zigbee → Найти одно устройство для Яндекс Станции 2.
  5. Если плата уже помнит сеть, после обычной загрузки нажмите и удерживайте штатную кнопку BOOT 5 секунд, затем отпустите. Нажимать её нужно только после запуска прошивки: удержание BOOT во время RESET включает ROM download mode.
  6. Прошивка очистит только привязку Zigbee, перезапустится и автоматически начнёт commissioning. Состояния каналов при этом сохраняются.
  7. Для основного universal-профиля дождитесь появления трёх устройств в приложении; для минимального mvp появится одна лампа. Затем проверьте строку zigbee=connected в ответе Serial-команды status.

Поиск хаба ограничен по времени, поэтому сначала запускайте его в приложении, а затем удерживайте и отпускайте BOOT. Актуальный интерфейс приложения описан в официальной инструкции Яндекса.

Если Zigbee-сети в NVS ещё нет, Zigbee.begin() начинает commissioning сразу, поэтому кнопку при самой первой чистой прошивке нажимать не требуется. Если сеть сохранена, устройство возвращается только в неё и не остаётся постоянно доступным для нового подключения.

Если Алиса голосом сообщает, что устройство найдено, но новые карточки не появляются, чаще всего хаб повторно использует старую запись того же физического узла. Удалите старые карточки полностью, затем очистите привязку на ESP командой zigbee-reset или удержанием и отпусканием BOOT и повторите поиск.

Резервный способ перевода MVP в новое сопряжение через Serial Monitor:

text
factory-reset

Для универсальной прошивки используется команда:

text
zigbee-reset

Она очищает только состояние Zigbee-сети и перезагружает устройство. Пользовательское состояние каналов хранится отдельно. Команда factory-reset универсальной прошивки сбрасывает и Zigbee-сеть, и пользовательское состояние.

[!WARNING] На отладочной плате сервисной кнопкой временно служит BOOT/GPIO9. Она не заменяет отдельную защищённую SERVICE-кнопку будущей PCB. Полный сброс пользовательского состояния по-прежнему выполняется только командой factory-reset, чтобы его нельзя было вызвать случайным нажатием.

Настройка универсальной прошивки

Публичные настройки находятся в firmware/universal_zigbee_device/UserConfig.h. По умолчанию выбран профиль 2 Dimmable + 1 Addressable RGB и backend для nanoESP32-C6 V1.0/V1711.

ФункцияGPIOЭлектрический смысл
Endpoint 1, Dimmable 120PWM 25 кГц, 11 бит; duty 0 выключает канал
Endpoint 2, Dimmable 221PWM 25 кГц, 11 бит; duty 0 выключает канал
Endpoint 3, Addressable RGB DATA22WS2812-совместимый RMT; порядок RGB/GRB настраивается, по умолчанию RGB
Клавиши endpoint'ов 1–30, 1, 2нормально разомкнутая кнопка между GPIO и GND
Сервисное сопряжение9штатная BOOT, удержать 5 секунд после загрузки и отпустить
Индикатор состояния8WS2812 на nanoESP32-C6; обычный active-low LED на компактной PCB

При включении индикатор GPIO8 вспыхивает три раза, затем делает одну короткую вспышку каждые 5 секунд. На отладочной плате цвет фиолетовый; обычный одноцветный светодиод компактной PCB повторяет тот же ритм без управления цветом.

По умолчанию задано 93 пикселя; пользователь может изменить число от 1 до 300 в UserConfig.h. Число пикселей и порядок цветовых байтов задаются через ZD_ADDRESSABLE_RGB_LED_COUNT и ZD_ADDRESSABLE_RGB_COLOR_ORDER. Стартовый стендовый рисунок удалён: после включения лента восстанавливает сохранённое состояние, а системную индикацию выполняет только отдельный GPIO8.

Основные Serial-команды:

text
help
status
key <1..3>
set dim <1..2> <on|off> <0..255>
set rgb <on|off> <r> <g> <b> <level>
all-off
save-now
reboot
zigbee-reset
factory-reset

Команда key 1…key 3 имитирует короткое нажатие соответствующей локальной клавиши и остаётся удобной для диагностики без физического подключения.

Точный список и примеры приведены в docs/build-and-test.md. Команда status намеренно не выводит сетевые ключи, адреса и другие приватные данные.

Сохранение состояния и безопасность

  • выходы переходят в безопасное состояние до чтения NVS;
  • Zigbee callback не пишет flash и не выполняет медленные операции;
  • изменения состояния объединяются и сохраняются с задержкой;
  • неизменившиеся snapshot'ы повторно не записываются;
  • карта endpoint'ов защищена версией, fingerprint и CRC32;
  • сброс Zigbee-сети отделён от сброса пользовательского состояния;
  • Wi-Fi и MQTT не инициализируются.

Встроенный адресный RGB-светодиод nanoESP32-C6 подключён к GPIO8 и используется только как индикатор состояния, а не как отдельный управляемый канал. Отсутствие свечения само по себе не доказывает отказ Zigbee: проверяйте Serial-команду status и сообщения [status-led].

GPIO20…GPIO22 являются только логическими выходами 3,3 В. Не подключайте к ним ленту, реле, MOSFET-затвор с большой ёмкостью, 12 В или сетевое напряжение без проверенного драйвера. Для WS2812 с питанием 5 В нужен подходящий level shifter, общее соединение GND и отдельное рассчитанное питание ленты.

Структура репозитория

text
firmware/
  led_smoke_test/             проверка встроенного RGB-светодиода
  zigbee_on_off_light/        минимальный подтверждённый On/Off MVP
  universal_zigbee_device/    основной профиль и два аппаратных backend'а
docs/
  build-and-test.md           сборка, загрузка и проверка
  compatibility.md            только наблюдённые результаты
  hardware.md                 отладочная плата и будущая PCB
  troubleshooting.md          диагностика типовых проблем
scripts/
  setup.ps1                   локальная установка инструментов
  build.ps1                   воспроизводимая сборка целей
TASKS.md                       живой план и критерии готовности
ROADMAP.md                     направления развития

Локальные настройки, журналы, дампы и рабочие материалы следует хранить в .local/ или output/. Эти каталоги исключены через .gitignore и не попадут в GitHub. Никогда не добавляйте в репозиторий Zigbee network key, PAN ID, IEEE/MAC-адреса, учётные данные, полный flash/NVS dump или персональные логи.

Документация

Участие в проекте

Сообщения о воспроизводимых ошибках, результаты совместимости с другими Яндекс Станциями и Zigbee-хабами, исправления документации и проверенные аппаратные предложения приветствуются. Перед публикацией удалите из журналов все сетевые и персональные идентификаторы. Правила описаны в CONTRIBUTING.md, а конфиденциальные уязвимости следует сообщать по инструкции из SECURITY.md.

Лицензия

Прошивка и документация распространяются по лицензии MIT. Лицензия будущих исходников PCB будет отдельно зафиксирована до их публикации.

Parts

51
QtyValueFootprintReferences
1010kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R3, R4, R5, R6, R8, R12, R18, R21
3100RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR7, R11, R15
3100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC8, C10, C12
31uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC9, C11, C13
2100kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR17, R20
210RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR9, R13
210uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC6, C7
2220u/25VCapacitor_Tantalum_SMD:CP_EIA-7343-31_Kemet-D_HandSolderC1, C2
247kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR10, R14
2BSC014N04LSZigbee_LED_Controller:Infineon_PG-TDSON-8_6.15x5.15mm_HandSolder_Pins1-8Q1, Q2
2UCC27517DBVRPackage_TO_SOT_SMD:SOT-23-5_HandSolderingU3, U4
1100n/50VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC5
110u/25VCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC4
112V INPUTZigbee_LED_Controller:TerminalBlock_WJ350_1x02_P3.5mmJ1
11kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR16
1220u/25V DNPCapacitor_Tantalum_SMD:CP_EIA-7343-31_Kemet-D_HandSolderC3
12N7002Package_TO_SOT_SMD:SOT-23_HandsolderingQ4
14.7kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR19
1BTN1Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6
1BTN2Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ7
1BTN3Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ8
1DOIT ESPC6-32-N4Zigbee_LED_Controller:ESP32-C6-WROOM-1_DOIT_ESPC6-32U2
1EP1 DIMMABLE OUTZigbee_LED_Controller:TerminalBlock_WJ350_1x02_P3.5mmJ3
1EP2 DIMMABLE OUTZigbee_LED_Controller:TerminalBlock_WJ350_1x02_P3.5mmJ4
1EP3 ARGB 12V / DATA / GNDZigbee_LED_Controller:TerminalBlock_WJ350_1x03_P3.5mmJ5
1IPD068P03L3GPackage_TO_SOT_SMD:TO-252-2Q3
1Mini360 / MP2307DN / 3.3VZigbee_LED_Controller:Mini360_17.9x12_PRELIMINARYU1
1STATUSLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1
1UART PROGRAMMER 2x3Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ2

Similar boards

  • 2 layers89.2 × 63.5 mmHF PA v10, the printed circuit board in 3D

    HF PA v10

    kholia/HF-PA-v10

    HF-PA-v10 ;) Is this the end of the search for a 5W Digital PA? HF-PA-v10 is now a rugged 10W PA! We also do 100W+ now ;)

    59 parts24
  • 2 layers137 × 84 mmESP32-Geiger Counter, the printed circuit board in 3D

    ESP32-Geiger Counter

    AronASzucs/Avalanche32

    Handheld ESP32-S3 Geiger counter with a firmware-regulated 400 V boost, SBM-20 tube, USB-C charging and OLED display.

    89 parts3
  • 2 layers90 × 70 mmWp10 stop control, the printed circuit board in 3D

    Wp10 stop control

    vehiclewaxberry/Space-Embodied-Robot-Complete

    航天服务星具身智能机械臂机器人 | Space Service Robot with Embodied Intelligence — mechanical, electrical & harness, power & thermal, and propulsion hardware design.

    107 parts2
  • 4 layers50 × 52 mmEsp32 Lightcontroller, the printed circuit board in 3D

    Esp32 Lightcontroller

    GodessOfBun/ESP32-LED-Strip-Controller

    A PCB Designed to control LED Strips with up to 5 optional channels

    94 parts1
  • 4 layers263 × 139.8 mmLV Board Mk2, the printed circuit board in 3D

    LV Board Mk2

    Lafayette-Motorsports/LVBoards

    LV Board repository for Motorsports created 09.02.2025

    184 parts1
  • 4 layers71 × 150.5 mmDual Half Bridge Board, the printed circuit board in 3D

    Dual Half Bridge Board

    EdamAbdelhedi/Half_Bridge_Board

    Half Bridge Board - KiCad project

    180 parts
  • 2 layers97 × 97 mmVanPom, the printed circuit board in 3D

    VanPom

    hl037/VanPom

    Power management PCB for vans + firmware

    162 parts
  • 2 layers56 × 50 mmBATTERY ISOLATOR V1.1 PCB, the printed circuit board in 3D

    BATTERY ISOLATOR V1.1 PCB

    Just-smart-enough/BATTERY_ISOLATOR_V1.1_PCB

    A prototype 12V RV battery isolator

    44 partsMIT

Questions

How big is the Zigbee LED Controller PCB?

It measures 47 × 35 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Zigbee LED Controller use?

51 parts, built around the UCC27517DBVR-TP, BSC014N04LSATMA1 and IPD068P03L3G. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Zigbee LED Controller KiCad files?

From the VlasovLabTech/Zigbee-ESP32-C6-Alice repository on GitHub, at the commit this page was made from: the board is hardware/zigbee_led_controller/Zigbee_LED_Controller.kicad_pcb and its schematic hardware/zigbee_led_controller/Zigbee_LED_Controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Zigbee LED Controller design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).