ArtNet для управления WS2812b

artems
Offline
Зарегистрирован: 10.01.2020

Всем привет!

Стараюсь разобраться как запилить свой контроллер чтобы работать с Resolume или QLC+

Эти программы работают по протоколу ArtNet. Есть библиотеки для ардуино, например https://github.com/natcl/Artnet

Есть несколько вопросов.

Насколько я понял сам формат легко позволит 2048 пикселей в одном ряду (на частоте 24гц)

А ардуино может поддержать количество пикселей что могут уместиться в SRAM. то есть уно 666, а мега все 2664.

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

Кто-то пробовал на практике проверять максимальное количество пикселей? Верны ли мои расчеты? Мне нужно 1500 пикселей подключить. Если одной ардуинки не хватит, то нужно будет как-то делать сеть из двух или больше...

И еще вопрос. WiFi можно ставить платку для таких целей или лучше эзернет? 

Кстати, я вижу что в сети часто пишут ws2812 а ведут речь о ws2812b и наоборот. b насколько я понял это указатель на то что можно еще регулировать яркость. Это отдельный канал, то есть надо не 3 байта а 4? Если да, то еще меньше получается пикселей можно рулить с одной ардуинки) или там всё таки те же 3 байта, просто чип еще и сам транслирует со значений цветов и яркость этих цветов? (или я тут уже запутался, сори, если что)

Благодарю!

b707
Offline
Зарегистрирован: 26.05.2017

свой контроллер запилить, не рано ли?

Вы бы для начала попробовали собрать управление хотя бы 30 диодами на обычной ардуине, без тяжелых библиотек...

artems
Offline
Зарегистрирован: 10.01.2020

Даже не знаю) С техникой дружу, и сделать hello world проект как вы говорите смогу без проблем, но это 

- деньги на девайсы. если, в итоге, решить задачу не получится надо будет их продать

- время

Я лучше бы убедился что теоретически возможно решить вопрос одной платой мега (управлять 1500 пикселями с одной платы по ArtNet), например и тогда бы засел этим заняться, а иначе посмотрел бы в строну покупки готового контроллера на нужное мне количество пикселей.

И это не потому что мне неинтересна тема, а потому что еще много дел которым нужно уделять время. Если мне скажут что это возможно, то я с удовольствием ворвусь вот в это вот всё))

Спасибо!

rkit
Offline
Зарегистрирован: 23.11.2016

А у присутствующих никаких дел нет, так что сейчас все бросятся проектировать тебе решение.

sadman41
Offline
Зарегистрирован: 19.10.2016

На mega2560 теоретически возможно.

b707
Offline
Зарегистрирован: 26.05.2017

кроме потребной памяти с увеличением числа пикселей появляются и другие проблемы. Например, со временем. Чтобы обновить длинную линейку пикселей - на каждом кадре нужно последовательно отправить в шину данные для каждого диода, что ограничивает частоту обновления.  Например получить 24 fps на линейке в 1000 последовательных WS2812 в принципе нереально, какую бы ардуину  вы не взяли...

 

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

кроме потребной памяти с увеличением числа пикселей появляются и другие проблемы. Например, со временем. Чтобы обновить длинную линейку пикселей - на каждом кадре нужно последовательно отправить в шину данные для каждого диода, что ограничивает частоту обновления.  Например получить 24 fps на линейке в 1000 последовательных WS2812 в принципе нереально, какую бы ардуину  вы не взяли...

 

В принципе реально, если не ставить бесполезного ограничения в одну линейку.

artems
Offline
Зарегистрирован: 10.01.2020

Скорость работы этого стандарта - 800kbps, нужно 24бита для каждого пикселя и частоту 24фпс. 800000 / 24 * 24 = 1388

То есть, если железка позволит больше, а ограничиваемся в скорости работы стандарта, то можно сделать два юниверса, верно?

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

В принципе реально, если не ставить бесполезного ограничения в одну линейку.

теоретически да, но если брать именно ардуино - Уно, Нано или Мега - то запустить на них более одной линейки с ОДНОВРЕМЕННЫМ обновлением в принципе невозможно, там и одну-то приходится через ассемблерную вставку кодировать. чтобы успевало...

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

rkit пишет:

В принципе реально, если не ставить бесполезного ограничения в одну линейку.

теоретически да, но если брать именно ардуино - Уно, Нано или Мега - то запустить на них более одной линейки с ОДНОВРЕМЕННЫМ обновлением в принципе невозможно, там и одну-то приходится через ассемблерную вставку кодировать. чтобы успевало...

Есть и другие платы ардуино.

artems
Offline
Зарегистрирован: 10.01.2020

rkit пишет:

А у присутствующих никаких дел нет, так что сейчас все бросятся проектировать тебе решение.

да, я ожидал и подобный коментарий) 

но так как я сам не обламываюсь подсказать людям которые меня спрашивают, то и от других ожидаю такого)

не всегда и не на сто процентов, но на то он и коллективный разум (форум) что тут много людей и может у кого-то будет настроение сейчас подсказать

благодарю)

b707
Offline
Зарегистрирован: 26.05.2017

artems пишет:

Скорость работы этого стандарта - 800kbps, нужно 24бита для каждого пикселя и частоту 24фпс. 800000 / 24 * 24 = 1388

имхо, там не 800 kbps, а 800 КГц - почувствуйте разницу...

Цитата:
То есть, если железка позволит больше, а ограничиваемся в скорости работы стандарта, то можно сделать два юниверса, верно?

уже ответил выше - ни одна Ардуина на Атмеле - Уно или Мега - две линейки одновременно не потянут. Начинайте сразу смотреть на СТМ32

artems
Offline
Зарегистрирован: 10.01.2020

[/quote]

Есть и другие платы ардуино.

[/quote]

 

Буду признателен, если подскажите на какой ардуине моя задача будет реализуема)

artems
Offline
Зарегистрирован: 10.01.2020

имхо, там не 800 kbps, а 800 КГц - почувствуйте разницу...

 

я взял со спеки это значение. https://screencast.com/t/tcXgF0uikoIo

 

rkit
Offline
Зарегистрирован: 23.11.2016

artems пишет:

может у кого-то будет настроение сейчас подсказать

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

b707
Offline
Зарегистрирован: 26.05.2017

artems пишет:

Буду признателен, если подскажите на какой ардуине моя задача будет реализуема)

самое доступное - стм32 "bluepill"

artems
Offline
Зарегистрирован: 10.01.2020

b707 пишет:

artems пишет:

Буду признателен, если подскажите на какой ардуине моя задача будет реализуема)

самое доступное - стм32 "bluepill"

Благодарю!

b707
Offline
Зарегистрирован: 26.05.2017

artems пишет:

имхо, там не 800 kbps, а 800 КГц - почувствуйте разницу...

я взял со спеки это значение. https://screencast.com/t/tcXgF0uikoIo

в любом случае 1300 пикселей - теоретический предел. А на практике будет еще меньше, так что 1500 диодов или больше - в любом случае надо разбивать на несколько линеек

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

artems пишет:

Буду признателен, если подскажите на какой ардуине моя задача будет реализуема)

самое доступное - стм32 "bluepill"

Считал, или "подсказываешь"? А совместим блупил с библиотекой? А сетевой интерфейс в нем есть?

artems
Offline
Зарегистрирован: 10.01.2020

b707 пишет:

artems пишет:

имхо, там не 800 kbps, а 800 КГц - почувствуйте разницу...

я взял со спеки это значение. https://screencast.com/t/tcXgF0uikoIo

в любом случае 1300 пикселей - теоретический предел. А на практике будет еще меньше, так что 1500 диодов или больше - в любом случае надо разбивать на несколько линеек

 

Да, хорошо, разбить на юниверсы не проблема, главное чтобы на одной плате всё работало. иначе нужно будет платы коннектить еще дополнительно в одну сеть

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

Считал, или "подсказываешь"? А совместим блупил с библиотекой? А сетевой интерфейс в нем есть?

запускал через SPI + DMA. На блюпиле два независимых канала СПИ, при асинхронном ДМА времени на обновление картинки должно остаться прилично.

Про сетевой интерфейс пусть ТС сам думает, "детально прорабатывать его проект" за него никто не нанимался :)

rkit
Offline
Зарегистрирован: 23.11.2016

2812 не работают по spi. Подсказываешь, другими словами.

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

2812 не работают по spi.

работают

https://www.rogerclark.net/arduino-stm32-neopixels-ws2812b-using-spi-dma/

 

 

artems
Offline
Зарегистрирован: 10.01.2020

Посидел еще над вопросом и в итоге пришел к выводу, что мне, как новичку будет проще всего взять вот такую платку. 

https://arduino.ua/prod1581-plata-razrabotchika-na-esp8266

Тут и wifi и из Ардуино ИДЕ можно работать без доп конвертеров.

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

Так что остаётся лишь экспериментировать)

sadman41
Offline
Зарегистрирован: 19.10.2016

Очешуеешь этой еспшкой фонарики крутить при активной работе с сетью.

Если и смотреть из вифи доступного, то esp32

artems
Offline
Зарегистрирован: 10.01.2020

О Боги)))

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Очешуеешь этой еспшкой фонарики крутить при активной работе с сетью.

Если и смотреть из вифи доступного, то esp32

я, конечно, человек предвзятый - но я бы опять предложил СТМ32, а для ВайФая к ней через Сериал - маленькую ESP01. Критические участки кода (светодиоды и сеть) оказываются разнесены на 2 отдельных контроллера.

У меня такая связка отлично работает со светодиодными  DMD матрицами - СТМ матрицы крутит, а ЕСП в сеть ходит.

rkit
Offline
Зарегистрирован: 23.11.2016

b707 пишет:

rkit пишет:

2812 не работают по spi.

работают

https://www.rogerclark.net/arduino-stm32-neopixels-ws2812b-using-spi-dma/

 

 

По ссылке явно написано, что работают не по spi, а костыльным методом с использованием spi-периферийника.

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

По ссылке явно написано, что работают не по spi, а костыльным методом с использованием spi-периферийника.

вам обязательно надо сказать последнее слово в любом споре? :) - хорошо, успокойтесь, вы (как всегда :) правы, это не СПИ, а костыль.

Тем не менее, этот костыль позволяет задействовать канал ДМА, предназначенный для SPI - и таким образом разгрузить центральное ядро МК для выполнения других задач.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

куда МИР катится, раньше  ДМА отвечал полностью своему названию )))

sadman41
Offline
Зарегистрирован: 19.10.2016

b707 пишет:

я, конечно, человек предвзятый - но я бы опять предложил СТМ32, а для ВайФая к ней через Сериал - маленькую ESP01. Критические участки кода (светодиоды и сеть) оказываются разнесены на 2 отдельных контроллера.

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

artems
Offline
Зарегистрирован: 10.01.2020

Я вот как раз не приключений ищу, а реального человека кто имеет опыт с ws2812b и ArtNet)) 

Не прошу сделать за меня или туториал мне писать)

А вот хочу я знать какой сетап собрать чтобы управлять одной платкой 1500 пикселей именно по ArtNet.

Не теориетически

ИДЕ, кодить если надо, подключать, паять и тд, я уже сам с радостью займусь

Спасибо!

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня вопрос к Вам: если дать инженерам Феррари колеса, двигатель, фары, ещё там чего-то и тот же самый набор дать инженерам АвтоВАЗа - получится у них одно и то же? 

Вот и тут так же - железо без мозгов ничего не стоит. А Вы уверены, что сможете так же, как и кто-то другой, который уже набил себе шишек и точно знает, как и что делать, чтобы все быстро работало даже на слабой железке?

artems
Offline
Зарегистрирован: 10.01.2020

Я не уверен на 100% что смогу собрать и что оно будет работать.

Но Вы можете ощутить разницу в том чтобы заказать что-то и пытаться сделать не зная вообще возможно оно или нет и второй вариант - заказать то с чего точно можно сделать и даже если не получится понимать что причина в кривых руках а не то от того что я неверные железки купил. Да-да-да есть третий вариант начать во всём разбираться с нуля, прочитать все спецификации и тд. Но как я уже выше писал мне может проще будет купить контроллер готовый. Я хочу совместить и кайф от того чтобы сделать что-то руками но только если это можно сделать без магии и бубнов. Если потребуется полгода вникать в систему чтобы только потом понять из чего собрать то что мне нужно, то я пас) Если же окажется что есть подходящая конфигурация для моей задачи то я возьмусь. Пока как я вижу людей с таким опытом тут нет

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

В общем, всё в лучших традициях славянских комьюнити)

sadman41
Offline
Зарегистрирован: 19.10.2016

Возьмите Оранж пи или типа того - будет с запасом прям. 

А выбирать что-то впритык - это нужно немалый опыт иметь, который и за полгода не получить.

Я вот помню один был тут товарищ - он буфером вывода для ленты хотел использовать буфер сетевого чипа. Не знаю, что у него вышло - дальше расспросов дело не пошло.

artems
Offline
Зарегистрирован: 10.01.2020

Большое спасибо! Похоже на то что нужно)

Если всё получится, обязательно выложу отчет

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Нужна чатота от 40МГц и выше, памяти от 1500х3х3 (еще три - это потом поймешь зачем) то есть от 15 КБ примерно. Езернет на борту или по SPI  и всё получится! На двух-трёх ногах, так как 1500 на одной ноге - не проходит. Таких плат полно. Они все на АРМе. Есть Ардуино, есть СТМ32. Оба подойдут.

rkit
Offline
Зарегистрирован: 23.11.2016

sadman41 пишет:

Возьмите Оранж пи или типа того - будет с запасом прям. 

А выбирать что-то впритык - это нужно немалый опыт иметь, который и за полгода не получить.

Я вот помню один был тут товарищ - он буфером хотел использовать буфер сетевого чипа. Не знаю, что у него вышло - дальше расспросов дело не пошло.

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

 

artems
Offline
Зарегистрирован: 10.01.2020

кодить я могу на нескольких языках, да и на верилог фпга кодил)

но не думаю что будет просто, но попробую чуть

rkit
Offline
Зарегистрирован: 23.11.2016

artems пишет:

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

Вопрос не в том, слабые они или нет. Главный вопрос в том, есть ли под них готовое решение. Потому что если нет, то без полгода не обойдется. И пока ни один советчик этого не понял.

artems
Offline
Зарегистрирован: 10.01.2020

верно, мне интересен реальный опыт. 

вот чел сделал что я хочу - https://www.youtube.com/watch?v=ZOeLxpigZrg (хотя это другая лента)

вот еще полезная ссылка http://www.raspberrypi-dmx.org/raspberry-pi-art-net-dmx-out

rkit
Offline
Зарегистрирован: 23.11.2016

artems пишет:

верно, мне интересен реальный опыт. 

вот чел сделал что я хочу - https://www.youtube.com/watch?v=ZOeLxpigZrg

Опыт по интернету не передают. Тебе нужно готовое решение, чтобы сел и повторил по инструкции. Это ищется в гугле, и либо оно есть, либо нет. Скорее всего нет. 

Чел сделал совсем на других светодиодах, так что не то.

sadman41
Offline
Зарегистрирован: 19.10.2016

rkit пишет:
 

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

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

Человек хочет варианты - он их получает. Можно подумать, что ему можно найти какую-то другую платформу, где он с нуля за полдня всё сделает и обставит проклятых капиталистов, которые трудовому народу готовые изделия с тройной наценкой продадут.

rkit
Offline
Зарегистрирован: 23.11.2016

sadman41 пишет:

Человек хочет варианты - он их получает.

Человек просит чего-то, что сэкономит ему время. Вредные советы от умников, которые с задачей не сталкивались, не прорабатывали, но шило в заднице не дает не ляпнуть бред какой-нибудь - противоположное тому, что ему надо.

sadman41
Offline
Зарегистрирован: 19.10.2016

Не ляпай, никто не заставляет. Справа вверху крестик окна браузера нажимаешь и перестаешь нервничать 24 часа в сутки.

Больше, чем приобретение готового девайса, ему ничто время не сэкономит. Он это и сам понимает без специалистов мирового уровня, застрявших на любительском форуме.

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

Человек просит чего-то, что сэкономит ему время. Вредные советы от умников, которые с задачей не сталкивались, не прорабатывали, но шило в заднице не дает не ляпнуть бред какой-нибудь - противоположное тому, что ему надо.

давайте вы всезнайку из себя корчить не будете, ОК? Вы-то сами хоть один полезный совет ТС дали - или горазды лишь других оценивать?

СТМ32 + ЕСП, что я писал выше - совершенно рабочее решение, которое я пробовал сам. Сэкономит ли это ТС время - я сомневаюсь,  ведь он хочет сделать самоделку, ничего не изучая и не тратя на это полгода :) - но это уже исключительно его проблемы, как говорится "мечтать не вредно"

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

rkit пишет:

 выдержать интервалы в сотые доли мкс в вытесняющей ОС на почти не документированной платформе...

Тып, родное сердце брехать заканчивал. А то очень на Архата похоже... можешь судьбу его разделить.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

rkit пишет:

Чел сделал совсем на других светодиодах, так что не то.

Пока за жопу брать не стали за брехню, успей изложить тему принципиальных отличий ws2812 и ws2801, с точки зрения программирования на RPi.

rkit
Offline
Зарегистрирован: 23.11.2016

wdrakula пишет:

rkit пишет:

 выдержать интервалы в сотые доли мкс в вытесняющей ОС на почти не документированной платформе...

Тып, родное сердце брехать заканчивал. А то очень на Архата похоже... можешь судьбу его разделить.

Ну ок, чуть ошибся и неточно сформулировал. В +-десятые доли мкс. Не сильно проще.

Замечательно документированная платформа, просто фантастически: http://www.orangepi.org/Docs/Peripheralinterfacedevelopment.html

 

wdrakula пишет:

Пока за жопу брать не стали за брехню, успей изложить тему принципиальных отличий ws2812 и ws2801, с точки зрения программирования на RPi.

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

 

Что не получилось на понт взять, когда разговариваешь не с чайником, вчера взявшимся за ардуино, а кем-то, кто обладает фактами?

b707
Offline
Зарегистрирован: 26.05.2017

rkit пишет:

Что не получилось на понт взять, когда разговариваешь не с чайником, вчера взявшимся за ардуино, а кем-то, кто обладает фактами?

Какими фактами? - минуту назад надерганными из гугла? :)

rkit, вам "шило в заднице не дает не ляпнуть бред какой-нибудь" типа того, что с 2812 нельзя работать через spi ?

sadman41
Offline
Зарегистрирован: 19.10.2016

RPi, тот же бродкомовский чип, стандартный для платформы драйвер: https://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/READM...