Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

ArtNet ESP-NOW — DIY беспроводная DMX-система

Самодельная беспроводная DMX512-система на ESP32: Art-Net приходит по Ethernet, передаётся по ESP-NOW через Wi-Fi 2.4 ГГц, на Slave преобразуется обратно в физический DMX512.

Собрана из доступных модулей ESP32, W5500 и TTL-RS485. Рассчитана на сценическое освещение, где нужно передать DMX без прокладки кабеля между компьютером и приборами.


Архитектура

Световое ПО (QLC+ / FreeStyler / MagicQ)
        │ Art-Net, UDP 6454
        ▼
   ESP32 MASTER + W5500
        │ ESP-NOW, Wi-Fi 2.4 ГГц
        ├─────┬─────┐
        ▼     ▼     ▼
     Slave  Slave  Slave
        │
        │ UART → TTL-RS485
        ▼
      DMX512 → световые приборы

Master — принимает Art-Net по Ethernet, разбивает Universe на ESP-NOW-пакеты, рассылает их зарегистрированным Slave, следит за связью через PING/PONG.

Slave — принимает данные по ESP-NOW, регистрируется у Master, собирает DMX-фрейм и выдаёт его через RS-485 на XLR-3.

Подробности сборки: ArtNet-Master/README.md, ArtNet-Slave/README.md.


Структура проекта

ArtNet-ESP-NOW/
├── ArtNet-Master/
│   ├── src/main.cpp
│   ├── docs/esp32_w5500_power.drawio.svg
│   └── README.md
├── ArtNet-Slave/
│   ├── src/main.cpp
│   ├── docs/esp32_rs485_dmx_slave.drawio.svg
│   ├── docs/ttl-rs485.jpg
│   └── README.md
└── README.md

ESP-NOW

ESP-NOW работает поверх Wi-Fi-радио ESP32 (не отдельный радиочип). Master и Slave должны быть на одном канале:

#define ESPNOW_BROADCAST_CHANNEL 1

На спектроанализаторе сигнал выглядит как обычный Wi-Fi шириной ~20 МГц; максимальная мощность классического ESP32-WROOM — около 20 dBm (100 мВт), точное значение зависит от модуля и антенны.

Дальность и размещение

2.4 ГГц чувствителен к положению устройства — иногда сдвиг на 10–15 см восстанавливает связь. Рекомендации:

  • располагать выше пола, на столе или выше уровня оборудования;
  • не прятать за металлическими конструкциями и не размещать антенну внутри металлического корпуса без учёта этого;
  • на сцене учитывать большое количество металла вокруг.

DMX-фрейм

Один Universe (512 байт) разбивается на 3 ESP-NOW-пакета: 200 + 200 + 112. Каждый пакет несёт тип, Universe, offset, длину, sequence и данные; sequence защищает от устаревших пакетов.

Потеря связи

При потере ESP-NOW-связи Slave зажигает красный светодиод и продолжает выводить последний принятый DMX-кадр (last-known-good) — приборы не гаснут и не сбрасываются. После восстановления сигнала регистрация и синхронизация проходят автоматически, вручную ничего перезапускать не нужно. Опционально можно включить safety-blackout — гашение канала, если данных нет совсем долго (см. ArtNet-Slave/README.md).

Индикация на Master и Slave

RGB-светодиод на Master и Slave: красный — не зарегистрирован у Master; синий — зарегистрирован; короткая зеленая вспышка — пришли новые DMX-данные.


Быстрый первый запуск

  1. Соберите Master (ESP32 + W5500) и Slave (ESP32 + TTL-RS485).
  2. На Slave подключите минимум GPIO17 → TXD, питание, GND, A, B; A → XLR pin 3, B → XLR pin 2, GND → XLR pin 1.
  3. Прошейте оба устройства, задайте Slave нужный Universe.
  4. Подключите Master к компьютеру Ethernet-кабелем напрямую.
  5. На компьютере задайте IP 2.0.0.2 / 255.0.0.0, проверьте ping 2.0.0.1.
  6. В световом ПО укажите Art-Net destination 2.255.255.255, порт 6454 (broadcast) или прямой IP Master 2.0.0.1.
  7. Подключите DMX OUT Slave к прибору и проверьте передачу каналов.

Планируемые улучшения

  • System ID в заголовке пакета — защита от коллизий с устройствами, имеющими такую же прошивку, но принадлежащими другой системе. Также открывает возможность масштабирования сети за счёт ретрансляции Slave → Master на другой частоте.
  • TDMA — разделение эфирного времени по слотам/Universe. Нужна как защита от коллизий при росте числа Universe и Slave-устройств.
  • Сканирование эфира и автовыбор наименее загруженного Wi-Fi-канала, синхронизация канала между Master и Slave — аналог QoS: при старте устройства проверяются наименее загруженные каналы и выбирается оптимальный.
  • Передача только изменений с периодической полной ресинхронизацией — сейчас, если на приборах статичный цвет и DMX-кадр не меняется, а в этот момент подключается новый Slave, он остаётся без данных до следующего обновления кадра. Периодическая полная ресинхронизация решает эту проблему, а заодно даёт дополнительную защиту от потерянных пакетов при плохой радиообстановке.

Зависимости

Стандартные компоненты ESP32 Arduino Core: WiFi.h, esp_now.h, Ethernet/SPI (Master), Preferences.h, driver/uart.h (Slave).

Лицензия

MIT — используйте на свой страх и риск.

About

Проект реализует беспроводную передачу DMX512 данных с использованием ESP32 и протоколов Art-Net (по Ethernet) и ESP-NOW (Wi-Fi peer-to-peer)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages