![](https://habrastorage.org/files/d2d/9da/10f/d2d9da10f6474ff9a656b8e198b5f204.jpg)
Эта моя первая публикация на Хабре, в которой я хочу донести мой опыт использования и обозначить недостатки таких пикселей. За несколько последних лет я успел поработать со следующими LED драйверами: LPD6803, WS2801, WS2811, WS2812(B), TM1903, UCS1903, TM1804, TM1803, SM16716 и другими менее ходовыми. В интернете часто можно встретить такой термин как «светодиодная лента с пиксельной адресацией» — я с этим совершенно не согласен, и это является первым ограничением.
Информация в такие ленты/пиксели загружается по последовательному каналу, а именно через сдвиговые регистры с 24-х битной разрядностью (как правило), т.е. 3 канала по 8 бит для RGB. Никаких адресов такие LED пиксели не помнят и работают исключительно по последовательному принципу. Отсутствие сигнала управления на линии данных или синхронизации (если таковая есть), служит командой для преобразования значений в регистрах в PWM сигналы для RGB светодиодов. По этой причине, при выходе из строя информационного канала одного из пикселей, последующие пиксели перестанут корректно работать. Многие неопытные LED «рекламисты» наступили на эти грабли, применяя такие пиксели для уличных экранов.
Рисунок ниже демонстрирует «битые» полоски.
![](https://habrastorage.org/files/f80/c9a/cf2/f80c9acf215b4b5e80160847ba2980f3.png)
Второе ограничение связанно с температурой использования. В большинстве случаев у пикселей, что управляются только по одному проводу «DATA», к примеру, WS2812B — нижняя температура использования -25 градусов. На практике, часто от -15 градусов. Это связанно с отсутствием хорошего кварцевого блока регенерации сигнала внутри чипа. Таким образом, при низких температурах пиксель перестает корректно работать, наблюдаются «сверчки» и т.п. до полного отсутствия картинки. Другое дело — чипы с синхронизацией: WS2801, LPD6803, к примеру. Здесь имеется хорошая регенерация сигналов по уровням, по времени — регенерация не нужна, поскольку имеется линия синхронизации. Рабочая температура в этом случае от -40 градусов. Но и стоят эти чипы вдвое дороже.
Третье ограничение — глубина цвета.
Рисунок ниже демонстрирует экраны собранный на чипах WS2801.
![](https://habrastorage.org/files/8c1/ddd/685/8c1ddd6855144297aa66d68355c1310f.png)
Не вооруженным глазом заметно, что экран с фоном засвечен. Низкие уровни градиента «умные пиксели» (WS2812, WS2801 и т.п. практически все) не способны воспроизводить так, как это делают современные экраны. Это связанно с низкой разрядностью интегрированного в чип PWM генератора (всего 8 бит на канал) и как следствие – отсутствие полноценной гамма коррекции. Проще говоря, светодиод светит слишком ярко, когда хочется совсем чуть-чуть и ничего с этим нельзя поделать.
Ощутимым минусом, во всяком случае для меня, было отсутствие хорошего софта подготовки и конвертирования анимации, непосредственно для вывода на «железки». Это явилось четвертым ограничением.
Поначалу я использовал софт «LedEdit».
![](https://habrastorage.org/files/fb1/795/fd1/fb1795fd17b74f07a6a40d0ccc74eac6.jpg)
«LedEdit» обеспечивает возможность создания и редактирования видео анимации, захвата и последующего конвертирования на «железо». Но использовать этот софт я могу только совместно с их контроллерами. Также я выявил большие недостатки софта «LedEdit» в плане качества видео захвата и стабильности обработки кадров.
Поскольку в этой теме я был очень заинтересован и обладал неплохими знаниями в области программирования, в том числе микроконтроллеров, я написал свой «граббер» видео с последующей конвертацией на «пиксели». Идею объединить в одной программе возможности создания и конвертирования анимации я сразу отложил, поскольку это не профессиональный подход. Анимацию нужно создавать и редактировать в специализированных программах, к примеру, я выбрал FREE программное обеспечение «Jinx!».
![](https://habrastorage.org/files/30d/531/868/30d531868ccd40fda035ca8fa27eb553.png)
На выходе ПО «Jinx!» можно получить открытый бинарный файл *.out представляющих битовое представление данных прямоугольной матрицы из пикселей для каждого кадра. Теперь дело остается за немногим: сопоставить прямоугольную матрицу из данных для каждого кадра с реальным расположением «умного пикселя» на пиксельном поле и произвести граб анимации. Так у меня родилось FREE программное обеспечение «LS Terminal».
![](https://habrastorage.org/files/1c0/d72/f5a/1c0d72f5a82c4684a72fe65265f95d23.png)
Сейчас ПО «LS Terminal» позволяет работать с большинством видео форматов *.avi, *.flv и д.р., использовать десятки портов, качественно обрабатывать видео захват для десятков тысяч «умных пикселей» расставленных по полю пользователем. Для обработки и визуализации видео я использовал библиотеки OpenCV и OpenGL. Выгрузку данных на «умные пиксели» осуществляю посредством микроконтроллера, который считывает данных с SD карты.
В целом, я привел все основные недостатки «умных пикселей» и если их вынести за скобки, то мы можем увидеть десятки тысяч реализованных проектов. Вот некоторые из них выполненные с помощью моего граббера видео:
— для LED костюмов:
— небольшой изогнутый экран на WS2812:
— в этом объекте несколько тысяч «умных пикселей» WS2801:
Комментарии (22)
VBKesha
18.07.2016 20:22А есть ли российские магазины продающие WS2812 по приемлемой цене и с быстрой доставкой? Давно хочется попробовать но найти где купить не могу, а из китая ждать долго.
DenSvet
18.07.2016 21:15Покупайте сразу WS2813, он куда лучше, вот мой скромный обзор:
https://www.youtube.com/watch?v=hIJeXYO1EBUdsd_corp
19.07.2016 11:23Правильно ли я понимаю, что эта «защита линии» не стопроцентна и работает только для наиболее вероятного типа «поломок», когда выходит из строя произвольный чип?
То есть, если выйдут из строя два соседних чипа, идущих на линии подряд, все-таки «все сломается»?DenSvet
19.07.2016 11:35да, конечно не 100% защита. Верно Вы все поняли. Если 2 шт. подряд сломаются, то все… конец транспорта.
x893
18.07.2016 21:00Есть APA102 — управление по CLK и DATA (SPI).
Удобнее WS… и от температуры не так зависят.
https://cdn-shop.adafruit.com/datasheets/APA102.pdf
dcoder_mm
19.07.2016 00:29кварцевого блока регенерации сигнала внутри чипа
а это что такое и как правильно называется?
DenSvet
19.07.2016 00:56что-то вроде ретранслятора с функцией восстановления уровня сигнала и его временной диаграммы.
У чипа WS2801 этот блок называется «Data & Clock reconstruct»esaulenka
19.07.2016 10:51+1Справедливости ради, ни в одном из этих чипов никогда не было «кварцевого блока регенерации».
(*) Если, конечно, под словом «кварцевый» мы подразумеваем «кварцевый генератор».
RC-генератор там есть (для генерации ШИМа), в LPD6803 есть некая плохо документированная магия «build-in PLL circuit» для выходного сигнала.
У WS2801 — просто буфер для восстановления уровней сигналов, времянки никакие не меняются.
DuMOHsmol
19.07.2016 16:02Я бы ещё отметил низкую частоту ШИМ у WS2812. Боковым зрением легко заметить мерцание.
DenSvet
19.07.2016 16:03да, всего 400 Гц. у WS2813 уже 2000 Гц, существенный плюс.
DuMOHsmol
19.07.2016 16:17Мне в этом плане больше всего APA102 понравился с его 19.2 кГц. Вот здесь есть небольшой обзорчик: https://cpldcpu.wordpress.com/2014/08/27/apa102/
К сожалению, они не такие распространенные на китайских барахолках, как WS2812. И стоят дороже.DenSvet
19.07.2016 16:20гамма 2.2 коррекция есть? или просто линейный режим PWM?
DuMOHsmol
19.07.2016 16:24Насколько я понял из даташита, просто линейный режим. Там ещё есть 5 бит глобальной яркости (на каждый светодиод), которые могли бы помочь, но у этой яркости ШИМ на 580 Гц, что несколько снижает её пользу.
Самому мне светодиоды пока только идут, так что точнее сказать не могу.
grossws
Ваша статья фактически не имеет отношения ни к одному из указанных хабов.
Если бы вы описали, например, процесс разработки и используемые решения в рамках своей ls terminal, то оно могло бы относиться к хабу "разработка под windows"; если описали бы разработку под контроллер, который осуществляет выдачу на линейки — к "программированию микроконтроллеров".
Ну и акцентировать внимание словом free, да ещё и капсом — как-то смешно. Другое дело, если бы это было open source, тогда стоит указать под какой лицензией оно распространяется и где лежат исходники.