ARTNET WIFI беспроводное устройство на базе ESP8266 своими руками

Как светотехнику, мне часто приходится прокладывать кабели по проходам, перемещать их в разные места, и не всегда было удобно прокладывать кабель. И я подумал, разве не плохо было бы передавать артнет по беспроводному каналу? Хотя существует множество коммерческих устройств, использующих различные протоколы, они либо дороги, либо ненадежны. Когда год назад я впервые увидел дешевые модули ESP8266, я решил, что попробую построить дешевый узел Artnet to DMX своими руками. Это учебное пособие поможет вам создать такое устройство.

ESP8266

ESP8266 — это супердешевый, но мощный микроконтроллер Wi-Fi, предназначенный для радиолюбителей. Он имеет быстрый процессор, хороший обьем оперативной и флэш-памяти, чем большинство Arduino, и (небольшой) набор GPIO, поддерживающих несколько различных протоколов. Он доступен в различных форматах, и я предпочитаю модель ESP8266 07, поскольку у нее есть внешняя антенна. ESP8266 также совместим с Arduino IDE: https://github.com/esp8266/Arduino , и я использую его, поскольку он очень знаком и, следовательно, прост.

АРТНЕТ

Artnet — это протокол, позволяющий отправлять DMX по стандартной IP-сети. Этот протокол поддерживается практически каждой современной консолью освещения или программным обеспечением (платным и бесплатным). Создание АРТНЕТ сети можете прочитать здесь.

DMX — это стандартный протокол для управления освещением для профессиональных шоу и диджеев. Он основан на протоколе RS485. Каждая вселенная DMX может иметь до 512 каналов, и каждый канал имеет значение от 0 до 255.

  • Конденсаторы — я использовал 4x 100 нФ, хотя на схеме их 5. C1 не нужен.
  • Регулятор 3,3 В — не помню, что я здесь использовал — подойдет любой регулятор на 3,3 В. ESP8266 требуется напряжение 3,3 В, но он не использует его в больших количествах.
  • Max485 — эти микросхемы производят выходной сигнал DMX (они также могут выполнять входной сигнал). Нам нужно 2 — по одному на каждую вселенную. Это чипы с напряжением 5 В, но, похоже, без каких-либо проблем принимают логику ESP 3,3 В. Доступна версия на 3,3 В, но она у меня была под рукой, и она работает…
  • Разъемы XLR — я использовал 3-контактный, но в стандарте указано 5-контактный. Вы можете использовать один 5-контактный разъем для обоих выходов, как это любит делать Avolites. Я использую 3-контактный разъем, так как у меня в основном дешевые китайские фонари с 3-контактным разъемом, их легче найти на складе и они немного прочнее.
  • Светодиоды . У меня есть 2 маленьких синих светодиода, по одному на каждую вселенную DMX, чтобы показывать активность. Они не являются обязательными, но рекомендуются.
  • Силовой провод — я использовал вход IEC. Они легко доступны и позволяют отсоединить провод для облегчения хранения.
  • Перфорированная плата, соединительный провод, разъемы, коробка для проекта, шурупы, клей.

схема artnet схема

Я начал с макетной платы. Ознакомьтесь с моей инструкцией по макетной плате ESP8266, чтобы узнать, как сделать макетную плату ESP8266 удобной, а затем подключить компоненты в соответствии со схемой.

Разместите компоненты на вашей плате таким образом, чтобы в дальнейшем можно было собрать это все в корпус, более компактно. Я делал устройство чтобы оно было как можно меньше.

На изображении вы можете видеть 3 разъема по 4 контакта. Два вверху — это выходы DMX, а один внизу — разъемы питания и светодиодов. 2-контактный черный разъем посередине — это RX/TX для программирования ESP8266. Обратите внимание, что на выводе RX имеется делитель напряжения (R5 и R6). Это потому, что я использую программатор на 5 В (мой Arduino Mega), и поэтому мне нужно понизить его до 3,3 В, чтобы ESP не сгорел. Эти резисторы можно удалить, если у вас есть программатор на 3,3 В.

Я не включил кнопки сброса или программирования, чтобы сэкономить место, и у меня их не было под рукой. Для сброса я просто выключаю и выключаю питание. Чтобы включить программирование, я подключил небольшую петлю провода к контакту сброса. Я подключаю зажим «крокодил» к проводной петле, а затем заземляю его на контакт GND разъема DMX. Хоть это и боль, но я включил ОТА-обновления в ПО, так что это только для первой перепрошивки.

Я также решил не изолировать линии DMX, потому что мне было лень :) Я также хотел сэкономить место на плате и снизить стоимость (преобразователи постоянного тока стоят дорого). Я бы порекомендовал оптическую и электронную изоляцию. Я сделал это в своих светодиодных лентах DMX Instructable, и здесь будет работать тот же процесс — просто поменяйте местами оптоизоляторы, поскольку мы здесь выводим, а не вводим. Вам понадобится DC-DC и оптрон на каждом выходе DMX.

На предыдущем этапе я спроектировал корпус вместе с печатной платой, чтобы все поместилось, но при этом использовалось минимальное пространство.

Я хотел, чтобы все разъемы были расположены на одной стороне, так как это выглядит красивее и упрощает прокладку кабелей. По этой причине разъемы были самым первым, что я сделал. Я просверлил отверстия для двух XLR, двух светодиодов и антенны. Я использовал нож, чтобы прорезать отверстие IEC. При вырезании отверстия я по глупости использовал гнездовой разъем IEC. Он имеет больший размер, чем самец - отсюда и весь горячий клей вокруг МЭК.

После того как отверстия вырезаны, я обрезал контакты USB-блока питания короче, чтобы он поместился в корпус. Я просверлил отверстия в штырях вилки и прикрепил провода — коричневый — под напряжением, а синий — нейтральный (стандарт Новой Зеландии/Австралии).

Подсоедините разъемы к разъемам XLR (синие кабели).

Подключите светодиоды и питание к 4-контактному разъему. Это все черные кабели на фотографиях. Для питания я использовал старый USB-кабель. Вы можете найти схемы в Google, но я использовал мультиметр, чтобы проверить провода 5 В и GND. Проверьте полярность светодиода – катод (короткий контакт) подключается к GND, а анод (длинный контакт) подключается к контакту 2 или 3 нашего разъема. Немного термоусадки сделает все красивым и остановит шорты.

Вкрутите XLR, закрепите/приклейте IEC, вкрутите антенну и приклейте светодиоды в их отверстия горячим клеем.

Вставьте печатную плату на место. Я просверлил одно отверстие в корпусе и плате для винта М4 и гайки. Если хотите, можете приклеить. Это гарантирует, что он не будет перемещаться.

Наконец вставьте разъем USB в блок питания. Я нанес на него немного горячего клея, чтобы он оставался на месте. Подключите 3 разъема и антенну.

Теперь пришло время прошить нашу прошивку….

Подключите программатор

Подключите USB → последовательный адаптер. Я использую свою Arduino Mega… на Mega, просто замкните Reset на GND и подключите megaTX → espTX, megaRX → espRX, megaGND → espGND. Убедитесь, что у вас есть последовательный порт 3,3 В — если это 5 В (как в случае с Mega), используйте делитель напряжения, как показано на странице схемы соединений.

Удерживайте мигающий контакт 0 на GND — я использую зажимы-крокодилы, как описано на странице конструкции.

Подключите питание (или нажмите сброс). Теперь ваше устройство должно находиться в режиме флэш-памяти.

Получение необходимых файлов

Я использую Arduino IDE с ядром Arduino для ESP8266 для кодирования и прошивки прошивки. Устанавливаем все по инструкции на их git.

Загрузите мою библиотеку espDMX в папку библиотеки Arduino IDE. Я написал эту библиотеку для вывода двух вселенных DMX с использованием прерываний, чтобы обеспечить точное время. Выход DMX имеет частоту обновления примерно 44 Гц — максимум, который вы можете получить при наличии полных 512 каналов. Если посмотреть на выходной сигнал с помощью осциллографа, то на обоих выходах изображение идеальное. Я использовал тайминги со страницы Ujjal DMX512 Pages. Библиотека в значительной степени основана на аппаратной последовательной библиотеке из основных файлов, ссылки на которые приведены выше. Аппаратная последовательная библиотека была немного раздута для этой цели и не использовала аппаратные прерывания, поэтому я модифицировал ее соответствующим образом. В будущем возможно включу приём DMX, но сомневаюсь - смысла в этом не вижу.

Загрузите мой код esp8266_artnetnode_dmx в папку ваших проектов. Вы можете использовать предоставленный bin-файл и прошить OTA для получения последних обновлений. OTA-обновления означают, что компиляция кода не требуется. Подробнее об ОТА позже.

Это учебное пособие основано на версии v1.0.5, но я бы рекомендовал использовать последнюю версию. См. последний шаг для получения дополнительной информации.

Прошивка для прошивки

Откройте ESP8266_ArtNetNode_DMX.ino в Arduino IDE.

В меню «Инструменты» выберите «Общий модуль ESP8266».

Установите настройки согласно изображению выше. Обратите внимание, что размер флэш-памяти должен быть установлен в соответствии с размером вашего чипа. Используйте пример CheckFlashConfig (в разделе «Файл» > «Примеры» > ESP8266 в Arduino IDE), чтобы проверить размер вашего чипа. Первое число — это общий размер флэш-чипа. Номер SPIFFS определяет, какую часть следует назначить файловой системе. Мы не используем файловую систему, поэтому не имеет значения, какой это номер. Если размер вашей флэш-памяти меньше 1 МБ, я бы рекомендовал уменьшить размер SPIFFS, чтобы освободить больше места для нашей программы.

Выберите свой USB→ последовательный программатор в разделе «Порт».

Нажмите стрелку загрузки. Если библиотека и основные файлы установлены правильно, они должны скомпилироваться и прошить без особых проблем.

Настройки

Большинство настроек выполняются через веб-браузер. Я расскажу об этом на следующем этапе.

Контакты светодиодов установлены в прошивке. По умолчанию это контакты 12 и 13, но вы можете изменить их, если хотите.

Устранение неполадок

В верхней части файла ESP8266_ArtNetNode_DMX.ino закомментированы два оператора определения.

Раскомментируйте #define VERBOSE, чтобы устройство выдавало информацию о том, что происходит в любой момент времени, через последовательный порт 0 (последовательный порт, который вы уже подключили через USB → последовательный порт выше) . Это отключит один из ваших выходов DMX и отобразит пароли Wi-Fi в виде обычного текста, поэтому убедитесь, что он отключен перед развертыванием!

Раскомментируйте #define LOAD_DEFAULTS, чтобы очистить все настройки и перезагрузить заводские настройки. Обязательно закомментируйте эту строку и перепрошейте, иначе вы не сможете изменить какие-либо настройки - каждый раз при запуске устройства они будут очищать их все.

Подключение к точке доступа Wi-Fi.

При первом запуске устройства оно попытается подключиться к сети Wi-Fi по умолчаниюSSID (в существовании которого я сомневаюсь). Если он не сможет подключиться в течение 30 секунд, он запустит точку доступа. Горячая точка — имя_узла_XXXX (имя_узла по умолчанию — artNetNode, а XXXX — случайное число). Подключитесь к этой точке доступа, используя пароль artNodeXXXX (XXXX — это номер из SSID точки доступа).

Веб-страница настроек.

Направьте выбранный вами браузер на страницу настроек. Если вы подключаетесь через точку доступа, адрес веб-страницы будет 2.0.0.1 (или 192.168.4.1 в более старых версиях), но если ESP подключился к вашему Wi-Fi, используйте его IP-адрес (посмотрите на своем маршрутизаторе, назначен ли он DHCP или используйте назначенный вами статический адрес).

Вверху этой страницы вы увидите MAC-адрес. Используйте это, чтобы разрешить вашему устройству работать в сети с фильтрацией MAC-адресов (настоятельно рекомендуется).

Далее идет имя узла. Измените это значение на любое (менее 30 символов), чтобы устройство можно было легко идентифицировать в вашем программном обеспечении для освещения. Также будет изменено имя точки доступа Wi-Fi, однако пароль останется прежним.

Далее идут настройки Wi-Fi. Введите SSID и пароль вашей шоу-сети.

Тайм-аут точки доступа — это задержка перед запуском точки доступа (когда сеть Wi-Fi не подключается). Точка доступа запускается только после выключения и включения устройства, а не в случае разрыва соединения Wi-Fi после подключения.

Теперь о настройках Artnet. Подсеть — это ваша подсеть Artnet, не путать с подсетью вашей сети. Установите необходимые адреса юниверсов — они могут быть одинаковыми, если вы хотите, чтобы оба выхода были одинаковыми.

Настройки IP позволяют просмотреть текущие настройки IP (по умолчанию DHCP). При желании вы можете установить статические адреса. Сети Artnet должны работать в диапазонах 10.0.0.0 или 2.0.0.0, но будут работать и в других диапазонах.

Определенные настройки можно сохранить и они вступят в силу немедленно, например, изменение настроек Artnet. Другие настройки требуют сброса (IP и имя узла). Для этого используйте предусмотренные кнопки.

Обновление прошивки

Последний элемент на этой странице — это информация о прошивке и поле обновления. Это позволяет легко увидеть, какая версия прошивки установлена ​​на устройстве, и загрузить новую версию через Wi-Fi. Загрузка новой прошивки прекратит весь выход DMX и перестанет отвечать на artnet до завершения. Иногда это не удается, поэтому проверьте, что ожидаемая версия прошивки отображается после обновления OTA.

Чтобы создать двоичный файл OTA, выберите «Экспорт скомпилированного двоичного файла» в меню «Скетч» Arduino IDE. Это создаст файл .bin в каталоге вашего проекта.

ОТА-сбой

Если вы обнаружите, что OTA постоянно выходит из строя, Wi-Fi не подключается или точка доступа не запускается, проверьте настройку размера флэш-памяти в меню «Инструменты». Если он не соответствует размеру флэш-памяти вашего чипа, это может вызвать странные проблемы. Используйте пример CheckFlashConfig (в разделе «Файл» > «Примеры» > ESP8266 в Arduino IDE), чтобы убедиться, что вы используете правильные настройки.

К этому моменту ваше устройство должно быть подключено к вашей сети Wi-Fi, и вы сможете подключиться к странице настроек. Теперь настроим консоль освещения/программное обеспечение…

Сначала убедитесь, что ваша консоль подключена к сети с IP-адресом в том же диапазоне подсети, что и ваши устройства artnet. Это должен быть диапазон 10.0.0.0 или 2.0.0.0.

Все программы освещения различаются по особенностям реализации этих настроек, но все они следуют одним и тем же основным принципам… Установите определенную совокупность данных для вывода на определенный порт artnet (устанавливается подсетью и юниверсом). Эти данные могут быть многоадресными (отправленными на каждое устройство в сети) или одноадресными (отправленными на определенное устройство). Я рекомендую использовать одноадресную рассылку, поскольку она требует меньше сетевых затрат и поэтому должна работать лучше. Наш espArtnetNode получит либо при условии совпадения настроек подсети и юниверса. Он отвечает на запросы ArtPoll, поэтому должен корректно отображаться в выбранном вами программном обеспечении освещения.

Настройка Jands Vista

В качестве консоли я использую Jands Vista , поэтому покажу скриншоты процесса и объясню, где находятся настройки. Вы можете скачать и попробовать Vista бесплатно (Mac и ПК), но она будет вызывать случайные отключения, если вы не купите ключ канала.

Я предполагаю, что у вас уже есть исправленные источники света — я не буду рассказывать об этом, поскольку у Jands есть множество отличных руководств по этой и другим основам, доступным на их канале YouTube.

В Vista перейдите в представление «Патчи» и выберите «Соединить вселенные» в правом верхнем углу экрана. Будет список доступных выходов для всех обнаруженных консолей или крыльев.

Ваш espArtnetNode также должен быть указан с двумя доступными портами. Назначьте, какую совокупность данных вы хотите отправить на каждый из портов. Это установит одноадресное соединение artnet. Как только это будет сделано, светодиоды активности на вашем espArtnetNode должны начать мигать, показывая, что выводится DMX.

Вы также можете выбрать «Добавить сетевое подключение» в левом нижнем углу диалогового окна «Подключить юниверс» . Это позволит вам добавить широковещательный порт artnet. Используйте настройки подсети и юниверса на своем устройстве. Теперь назначьте юниверс данных широковещательному порту. Это установит трансляцию по артнету. Любые устройства в сети можно настроить на получение данных из этой подсети и вселенной artnet.

Подключите его

Я почти уверен, что вы уже это поняли… Подключите выходы DMX к выбранному вами источнику света и испытайте его. Я очень рекомендую эти замечательные контроллеры светодиодных лент RGB , которые я разработал пару лет назад. #shamelessPlug

Ваш комментарий. Вики-синтаксис разрешён: