ARDUINO Какая максимальная длина адресной LED ленты (WS2812b)?

Greyhom

✩✩✩✩✩✩✩
28 Авг 2020
17
1
Доброго дня! Предстоит собрать светодиодное табло на Arduino из LED ленты WS2812b. С питанием вроде как все понятно,- можно запитать по строкам параллельно (поправьте если ошибаюсь), а вот управляющий провод должен последовательно идти по всем строкам? Если так, то на какую максимальную длину ленты можно рассчитывать? Или библиотека позволяет разделять матрицу на блоки и управлять как одним целым?

З.Ы. Сильно не пинайте, с адресными лентами раньше не работал))
 

kDn

★★★★★✩✩
18 Ноя 2019
1,109
437
@Greyhom, вы ограничены RAM контроллера и временем на пересылку сигнала. Требуемое кол-во памяти по минимуму это 3 байта на светодиод - вот и считайте.
 

Greyhom

✩✩✩✩✩✩✩
28 Авг 2020
17
1
@Greyhom, вы ограничены RAM контроллера и временем на пересылку сигнала. Требуемое кол-во памяти по минимуму это 3 байта на светодиод - вот и считайте.
В Меге 8 Кб RAM. Соответственно потянет 2 730 светодиодов. При плотности 30 шт. на метр получается можно управлять лентой длиной 91 метр?
 

kDn

★★★★★✩✩
18 Ноя 2019
1,109
437
@Greyhom, меньше, т.к. RAM вам нужна не только на буфер для вывода, а еще и на работу программы, библиотеки также расходуют память. Я бы предложил создать пустой проект с интересующими библиотеками, поглядеть сколько RAM свободной есть, заложиться на какой-то резерв и дальше уже высчитывать от оставшегося.

* Альтернативный вариант - обойтись вообще без буфера, но тогда нужно точно соблюдать тайминги и отказаться от использования библиотек. В таком случае ограничений практически не будет, на лету генерируете посылку и ее же шлете. Но это потребует уже весьма серьезного понимания чего вы делаете и как :)
 
  • Лойс +1
Реакции: Sana956

Greyhom

✩✩✩✩✩✩✩
28 Авг 2020
17
1
@Greyhom, меньше, т.к. RAM вам нужна не только на буфер для вывода, а еще и на работу программы, библиотеки также расходуют память. Я бы предложил создать пустой проект с интересующими библиотеками, поглядеть сколько RAM свободной есть, заложиться на какой-то резерв и дальше уже высчитывать от оставшегося.
Ну пусть, условно возьмем 60-70 метров. Не ужели не будет помех при такой длине проводника? Можно как-то запараллеллить работу со светолиодами? И как быть если нужно управлять ещё большим количеством светодиодов? Есть для этого типовые пути решения? Может какой-то модуль памяти к Ардуино есть или лучше вообще другую платформу использовать??
 

Greyhom

✩✩✩✩✩✩✩
28 Авг 2020
17
1
Глянул спецификации, - в WeMos D1 mini 80 Кб ОЗУ?? Серьезно? В 10 раз больше чем в Меге?? Или я не туда смотрю?
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,695
472
@Greyhom, всё верно смотрите. Вот только скетч, который для 328-го чипа занимает пару килобайт, при компиляции для 8266 распухнет уже до десятков. С отжиранием оператиаы та же история.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,109
437
@Greyhom, всё верно смотрите. Вот только скетч, который для 328-го чипа занимает пару килобайт, при компиляции для 8266 распухнет уже до десятков. С отжиранием оператиаы та же история.
SDK отжирает где-то 30кб, т.е. доступной пользователю порядка 50кб. В любом случае это существенно больше, чем с мегой. К примеру вот состояние кучи в лампе, при том что около 1.5кб кешируются имена, пару буферов на матрицу в 256 диодов (768байт на буфер), работающий вебсервер с конфигами, микрофон, плеер, ну и плюс на сами эффекты еще доп. расход памяти. И тем не менее по большей мере доступно 20+кб памяти, что в общем-то неплохо.

1603880336789.png
 

bort707

★★★★★★✩
21 Сен 2020
2,860
850
Ну пусть, условно возьмем 60-70 метров. Не ужели не будет помех при такой длине проводника? Можно как-то запараллеллить работу со светолиодами? И как быть если нужно управлять ещё большим количеством светодиодов? Есть для этого типовые пути решения?
при большой длине цепочки проблема не только в памяти, но и в быстродействии. Вывод сигнала на один ЛЕД заниммает примерно 30 мкс, соответственно 3000 диодов будут обновляться почти 0.1 сек- что уже очень медленно для динамичных картинок.
Решением этих проблем является многоканальный вывод, то есть деление большой матрицы на несколько параллельных цепочек и вывод картинки сразу на все цепочки. Но это работает не на всех платах. В библиотеке FastLed есть поддержка многоканальной работы для Тенси, Дуе, ЕСП8266 и ЕСП32. если чуть модифицировать - можно добавить СТМ32.
Я сейчас участвую в проекте на 8 тыс диодов.... но пока на начальной стадии .
Если у вас есть вопросы - пишите
 
  • Лойс +1
Реакции: Greyhom

Greyhom

✩✩✩✩✩✩✩
28 Авг 2020
17
1
В библиотеке FastLed есть поддержка многоканальной работы
Спасибо, добрый человек! Я думаю это то что нужно!.. Ленты уже пришли, В наличии есть Ардуины: Уно, Нано, Мега и ЕСП8266. На днях буду приступать к тестам, думаю вопросы появятся... Пока надежны строю на ЕСП8266)) Но думаю на всякий случай заранее закажу Дуе.. А вы какую платформу для 8 тыс. диодов выбрали?

* Еще вопрос — У Вас был опыт работы с библиотекой Гайвера "microLED "? Если да: Она предусматривает деление матрицы на потоки? Как она вообще в целом в работе? По описанию вроде как самая быстрая и эффективная по памяти (Всего 1 байт на светодиод).
 
Изменено:

bort707

★★★★★★✩
21 Сен 2020
2,860
850
Пока надежны строю на ЕСП8266)) Но думаю на всякий случай заранее закажу Дуе.. А вы какую платформу для 8 тыс. диодов выбрали?
пока выбрана Дуе, в качестве "варианта Б" - СТМ32.
8266 я бы не брал(но это только мое мнение), если хотите платформу ЕСП - берите ЕСП32

библиотекой Гайвера "microLED "? Если да: Она предусматривает деление матрицы на потоки?
это библиотека только для чипов АВР (то есть ардуино уно - нано- мега). Многоканального режима там нет, насколько я вижу.
 

kDn

★★★★★✩✩
18 Ноя 2019
1,109
437
8266 я бы не брал(но это только мое мнение), если хотите платформу ЕСП - берите ЕСП32
Под ESP32 наблюдались артефакты у FastLed во время обмена по WiFi, возможно что-то цеплялось не на то ядро, с ESP8266 таких проблем не было. Вообще конечно у ESP32 и RAM больше, и производительность выше, но и подходы совершенно иные. Тут надо под RTOS писать. Если опыта нет, то может быть несколько непривычно по первому времени.
* Проект под ESP32 до сих пор висит в той же прошивке, что мы делаем, но весьма в заброшенном состоянии. Вот фреймворк допилим и можно будет его снова возродить.
 

kostyamat

★★★★★★✩
29 Окт 2019
1,097
630
Библиотека FastLED это не только вывод на светодиоды, это целая экосистема, включающая в себя десятки оптимизированых мат.функций, функций работы с пикселем/цветом, служебных функции и т.п. В случае с микроЛЕД они становятся вам недоступны.
Так как исторически вся эта фигня начиналась на Teensy, то если ресурсов мало в ардуино, и нужно больше, и деньги не жмут, то таки лучше брать Teensy, а не DUO или STM.
Под рукой окажутся сотни примеров и способов реализаций того или иного, сделанных именно для teensy. Также появится возможность использовать доп.библиотеки, и тоже для teensy. При этом даже не придется выкладывать кучу денег за версию 4, большинство работает еще с teensy 2.3 и выше.
 
  • Лойс +1
Реакции: Старик Похабыч

bort707

★★★★★★✩
21 Сен 2020
2,860
850
Под рукой окажутся сотни примеров и способов реализаций того или иного, сделанных именно для teensy.
тут не соглашусь. С учетом того, что младшие версии Тенси не подойдут, если не ошибаюсь, надо начиная с 3.2... - то тут играет вопрос распространенности платы. Китайцы Тенси почти не (под)делывают, а покупать оригинал за сколько там - 30-50 евро - даже за границей самодельщики особо не спешат.Так что хоть тенси и появились уже давно - примеров для них на пару порядков меньше, чем на АВР или СТМ. В том числе проектов по работе с лентой.
 
Изменено:

Greyhom

✩✩✩✩✩✩✩
28 Авг 2020
17
1
@bort707, Подключил 2000 диодов к WeMos D1 mini. По моим наблюдениям 1 светодиод съедает не 3 байта, а 23!.. Сейчас занято 71% ОЗУ, каждые 150 диодов добавляют 2,7 - 3%. Что я делаю не правильно?))

ebda7728-dbd1-49fa-a123-aefd3bd61e21.jpg
 

bort707

★★★★★★✩
21 Сен 2020
2,860
850
По моим наблюдениям 1 светодиод съедает не 3 байта, а 23!..
Должно быть либо 3, либо 24 :) в некоторых библиотеках для ускорения (упрощения) вывода каждый бит цвета лежит в отдельном байте

Какой библиотекой пользуетесь?
И какая точно плата у вас?
Обычно 24 байта на каждый пиксель используют там, где есть DMA. На Вемосе DMA нет, насколько мне известно.
 

Greyhom

✩✩✩✩✩✩✩
28 Авг 2020
17
1

bort707

★★★★★★✩
21 Сен 2020
2,860
850
1000 - 43512 байт (53%)
2000 - 59512 байт (72%)
И где тут 23 байта на диод? - ровно 16

ЕСП8266 - закрытая платформа, куда он девает память, никто не знает

Сравните с результатами на СТМ - только что скомпилировал
1000 - 5360 байт
2000 - 8360 байт

То есть ровно 3 байта на пиксель, как и прописано
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,159
1,267
Москва
Когда я компилировал всякие демки для WiF на ESP меня сразу напрягла одна штука - мелькание слова microsoft... видимо не спроста это все было.