Всем привет. Нашел вот в интернете хорошую статью о том как сделать артнет гейт из ардуино. Решил и я себе такой сделать.
Сразу скажу, это не я автор. Просто здесь я делюсь опытом сборки своего гейта и пишу о “граблях” на которые может напороться тот, кто решит повторять эту конструкцию. Вот ссылки на оригинальные статьи:
-
http://www.deskontrol.net/blog/arduino-based-dmx-artnet-node/
-
http://www.deskontrol.net/blog/schematic-arduino-4-universes-dmx-shield/
В начале для себя важно решить главный вопрос - сколько Вам надо юниверсов. Если один (то есть 512 каналов DMX), то купить надо плату Arduino Uno. Если два, три или четыре, то придется купить Arduino Mega. Лично мне было нужно три. Потому буду говорить о гейте на три юниверса (это же справедливо и для одного, двух и четырех). Нам надо следующее:
-плата Arduino Uno или Arduino Mega;
-Ethernet шилд на базе W5100 (тут по словам автора статьи вопрос принципиальный);
-плата DMX (в архиве вложена схема и печатная плата);
-софт (также в архиве, это IDE версии 0023 и собственно код, который компилируется в этой IDE и потом заливается в плату Arduino);
-подходящий корпус;
-нужное Вам количество панельных разъемов XLR (кому как удобно: на три пина или на пять);
Кроме того, есть тонкости с питанием этой всей кухни. Если Ваш гейт будет на один юниверс, то питать всю конструкцию можно от USB разъема что стоит на самой плате Arduino (тот вариант если Вы всегда будете держать этот гейт на пультовой возле себя. Воткнул коорбку в ноутбук или комп и работаешь). Если гейт будете использовать в “полевых” условиях, то питание можно подавать от внешнего блока питания 12вольт 1ампер (хотя советую купить бескорпусной блок питания и прикрутить его рядом с гейтом в одном корпусе - так надежнее).
У меня получилось чуть сложнее с питанием. Уже по ходу сборки и проверки гейта в работе я на сложности и натолкнулся. Дело в том что питание всей кухни идет с платы Arduino. А там стоит на входе стабилизатор питания 5 вольт на 800-1000милиампер (у кого какая сборка платы попадется). На один юниверс этого хватает (проверено лично). Так вот если Вам надо больше одного юниверса, то придется заменить микросхему стабилизатора на плате Arduino на более мощную (я поставил себе L78S05CV).
Дальше делаете себе плату DMX. Можно заморочиться, но будет красиво, и сделать себе печатную плату. А можно сделать проще. Я купил макетную плату под свою Arduin’у. Все туда впаял и соединил проводками. Замечание по плате DMX. На схеме в оригинале не нарисованы третий резистор на 10 ом, который подключен к пятой ноге микросхемы SN75176 и конденсатор на 100нФ, который подключен между 8 и пятым выводами той же микросхемы. На печатных платах это все есть. В итоге на каждый юниверс нам надо взять: одну микросхему SN75176 (подойдет, как говорит автор, MAX485, MAX487, ST485), три резистора на 10 ом 0,25ватт, один низковольтный неэлектролитический конденсатор на 100нФ. Микросхему лично я ставил на цанговую дип панельку, чтобы в случае ее смерти заменить быстро на работе микросхему (всякое бывает).
Теперь прошиваем плату Arduino c Ethernet шилдом. Из архива распаковываете папку aruino-0023. В ней лежит папка artnet_node. Подключаете к компу по USB свою плату Aruino и Eternet шилдом, но обязательно без DMX платы. Запскаете файл arduino из папки. Жмем File, Open, выбираем файл artnet_node.h из папки artnet_node. Уже потом, полазив по коду и погуглив сей вопрос я выяснил где в коде можно указывать число выходов из платы (если их больше одного), а также сетевой адрес устройства (оказалось тут он статический).
Итак, перед тем как компилировать код, для того чтобы выставить число выходов (юниверсов) с платы, в коде надо найти такие строки:
#define USE_UNIVERSE_0 // remember universe 0 now is USART 0, Arduino output pin 1
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) && !defined(USE_TINKERKIT_SHIELD) #define USE_UNIVERSE_1 // remember universe 1 now is USART 1, Arduino output pin 18 // #define USE_UNIVERSE_2 // remember universe 2 now is USART 2, Arduino output pin 16
Чтобы добавить юниверс просто удалите две наклонные (слэши, вроде так их называют) перед фразой #define USE_UNIVERSE, короче раскомментируйте нужные строки.
Теперь, чтобы дать коробке сетевой адрес найдите строки в коде:
uint8_t factory_localIp [4] = { 2, 0, 0, 10}; // the IP address of node (в скобках как видно и есть сетевой адрес) uint8_t factory_broadcastIp [4] = { 2, 255, 255, 255}; // broadcast IP address (это широковещательный адрес гейта) uint8_t factory_gateway [4] = { 2, 0, 0, 1}; // gateway IP address (use ip address of controller) (адрес вашего роутера) uint8_t factory_subnetMask [4] = { 255, 0, 0, 0}; // network mask (art-net use ‘A’ network type) (маска подсети)
Адреса и прочее тут можно вписать свои, единственное не забывайте о правилах их назначения для ArtNet протокола.
После этого компилируете код и загружаете его в плату: жмете иконку Upload, ждете сообщения об успешном завершениии.
После этого соединяете все платы вместе (у меня получился “бутерброд” - снизу плата Arduino, в середине плата DMX и сверху Ethernet шилд. На фотках из архива видно) и подаете питание.
Проверить работу гейта можно прогой из архива. Это DMX Workshop (ее без проблем найдете в интернете на официальном сайте). Открываете прогу DMX Workshop, выбираете сетевое подключение к своему гейту. Если все ок, то в окне программы увидите свой гейт со всеми рабочими юниверсами и их статусом.
Вроде все. В архиве я вложил все что использовал для сборки своего гейта. Ну и фотки своей конструкции. Себе я в итоге оставил два юниверса, доставил кулер (это я себе сделал охлаждение на микросхему стабилизатор напряжения, поскольку радиатор у меня там ставить некуда). Короче, все на фото (будут вопросы - пишите).
P.S. Буду признателен тем, кто найдет хороший вариант стабилизатора на 5 вольт 2-3 ампера в корпусе SOT-223 и поделится им. А то у меня стоит микросхема в корпусе TO-220.
P.P.S. У кого есть вопросы, кому что непонятно, пишите. Всем все покажу, разъясню. Мой гейт далеко не шедевр (я не мега электронщик). Потому хотелось бы увидеть другие девайсы. Делитесь своими фотками, замечаниями.