Бегущая строка на WS2812b

RainMan
Offline
Зарегистрирован: 21.06.2011

Привет всем. Возникла идея реализовать бегущую строку на WS2812. Размер матрицы 20х160 диодов (2х20 знакомест).  Набираться матрица будет из лент, подключенных последовательно. Возникли два вопроса.

1) На Хабре была статья, где указано потребление 1 светодиода - 60мА/ч в максимальном режиме. За  20ма - можно принять усредненное потреблене 1 диода при уславии что матрица не светит исключительно белым. Отсюда расчеты по потреблению:

20*160*60мА=192А!!!!!;  192А*5В=960Вт    -  потребление в мах. режиме

20*218*20мА=64А;  64А*5В=320Вт   -  потребеление в среднем режиме 

Из расчетов видно что в мах. режиме потребление почти киловат, и ток в 192А необходимо обеспечить ! Где брать такой блок питания по 5В? Сразу возникает вопрос по организации охлаждения.

2) Количество светодиодов получается 20*160=3200. 

Время передачи одного бита составляет  0.8+0.45=1.25 мкС. Время передачи всего пакета из 24 бит для одного пикселя WS2812B составляет 24*1.25=30 мкС. Учитывая, что все светодиоды подключены последовательно, для 3200 штук — 3200*30= 96мС. Т.е если контроллер успеет подготовить и передать данные с такой скоростью, то получим расчетную максимальную частоту обновления табло 1000/96=10раз в сек

Есть программулина Glediator, которая позволяет через RS232 ардуины управлять этим таблом. Но мах. скорость RS232 = 120кБит. Для передачи данных для 3200 светодиодов необходимо 3200*8*3= 76800Бит информации. Отсюда следует , что через RS232 можно обновить матрицу 120000бит/76800бит= 1,56 раза в сек.

В спецификации к программе Glediator указано что скорость последовательного порта должна быть 1000000 бит/сек. Как на ардуину передавать данные с такой скоростью? Или данные на ардуину передаются через USB а не последовательный порт? 

Возникает резонный вопрос, как можно обновлять матрицу с частотой даже не 10раз с сек. как получилось в расчетном значении, а 24 р/сек? Думаю что в теории можно управлять каждой из 20 горизонтальных лент по одельному каналу.  Но пока не могу найти как на ардуине или группе контроллеров  это реализовать с имеющимися уже библиотеками.   Может быть есть программное обеспечение способное выдавать данные через параллельный интерфейс данные на ленту и тд? 

kasper007
Offline
Зарегистрирован: 23.05.2016

RainMan пишет:

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

Во-первых нужно подумать, а хватит ли вам памяти контроллера, если вы планируете использовать стандартные библиотеки. При использовании стандартной Ardafruit под каждый светодиод резервируется 3 байта, т.е. по ваши 3200 светодиодов нужно 9600 байт. Какой из контроллеров ардуино вам столько даст?

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

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

1) 20*160*0.06А=72A ...

2) На ATMega328 по UART сильно данные не погонишь, но мегабит вроде как выжимается: https://arduino.stackexchange.com/questions/296/how-high-of-a-baud-rate-...

FT232 по даташиту обещает: Data transfer rates from 300 baud to 3 Mbaud  (RS422, RS485, RS232) at TTL levels.

 

RainMan
Offline
Зарегистрирован: 21.06.2011

Что-то как ни крути, все равно 20*160*0.06А=192A  а не 72А. Как у вас так получилось?

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

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

А это я почему-то не на 160, а на 60 умножил вроде как. Слишком быстро по кнопкам стучал, наверное )) Ну, не знаю, где 200А взять.. Яркость может уменьшать начать.

По второму пункту вам тоже придется стараться очень сильно: как правильно заметили - есть проблема с памятью. Может, если по-простому, то на Распберри это все поднять - и гледиатор и ногодрыг.

RainMan
Offline
Зарегистрирован: 21.06.2011

впринципи данные не обязательно хранить во внутренней памяти. Они могут быть теоретически считаны с SD, если библиотеки вывода на ленту и чтения с SD не будуn конфликтовать. Могут быть получены расчетным путем. И в моем случае хочется чтобы данные подготавливались в ПК и передавались на ардуину или группу ардуин (20шт) 

kasper007
Offline
Зарегистрирован: 23.05.2016

RainMan пишет:

впринципи данные не обязательно хранить во внутренней памяти.

Я Вам не предлагаю данные хранить во внутренней памяти. Но вот только такая строка инициализации сразу съест у вас 9.6K памяти, это без всяго хранения:

Adafruit_NeoPixel strip = Adafruit_NeoPixel(3200, LED_PIN, NEO_GRB + NEO_KHZ800);

И зачем Вам "группа Ардуин (20 шт)". У Меги 54 цифровых входов/выходов. По идее должно перекрыть с головой ваши необходимые 20 каналов. Я пока не считаю временные затраты на все это дело, но портов вывода вам должно хватить с головой.

RainMan
Offline
Зарегистрирован: 21.06.2011

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

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

Ног-то хватит, однако при создании экземпляра класса под каждую ногу произойдет выделение памяти по кол-ву светодиодов. Так что, если делать на библтотеках, то нужно иметь на. борту максимальный обьем память (1x3200 == 20x160). А если ставить перед собой цель обойтись одним мелким буфером под все сегменты, то придется поизвращаться в любом случае и тут лучше писать свои процедуры вывода.  

RainMan
Offline
Зарегистрирован: 21.06.2011

нашел библиотеки FastLED3.1 и OctoWS2811.  Умееют делать параллельный вывод на 8 каналов,и вроде как можно брать данные с ПК через USB. И там еще нужна ардуино -совместимая платформа Teensy 3 / 3.1

arduinec
Offline
Зарегистрирован: 01.09.2015

RainMan пишет:

И там еще нужна ардуино -совместимая платформа Teensy 3 / 3.1

Похожим аналогом данной платформы является Arduino Due (http://arduino.ru/Hardware/ArduinoDue).

Что касается питания, то есть блоки питания 5V на 200A и 300A. Однако, для передачи 192A потребуется кабель сечением не менее 30 кв.мм.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

А почему не взять какой нибудь OrangePi Zero ? 

https://github.com/joosteto/ws2812-spi

https://youtu.be/OLTufsrQZc0

Там аппаратный SPI может пару мегабит дать

все эфекты можно реализовать на нем же, плюс вайфай, LAN и памяти 256М

По питанию тоже реализуется путем кучи DC-DC коверторов и питаются от 24в - на выходе 5в 3А

Logik
Offline
Зарегистрирован: 05.08.2014

Так если 96мсек не устривют и нужно 24р/сек - то только разбивать на группы, никакой аппаратный SPI не поможет принимать инфу в 2 раза быстрей)) Разбиваем не на 20,  а на две 10х160. И логично одна ардуино - одна строка символов. Получится время обновления 48мсек, т.е. 20,8 р/сек. До 24р/сек дотягиваем за счет сокращения времени передачи бита, там допуски приличные.

RainMan
Offline
Зарегистрирован: 21.06.2011

Подсчитал бюджет и подрастроился. Прийдестя очевидно делать матрицу 8х136  (1х17знакомест). По длинне  если брать ленту с плотностью 60шт/м получается 2,3М. Как раз в салон машины влезет. И можно будет около 30 кадров в сек. получить

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Перечень неисправностей и условий, при которых запрещается эксплуатация транспортных средств

3.1 Количество, тип, цвет, расположение и режим работы внешних световых приборов не соответствуют требованиям конструкции транспортного средства.

Статья 12.5. Управление транспортным средством при наличии неисправностей или условий, при которых эксплуатация транспортных средств запрещена, или транспортным средством, на котором незаконно установлен опознавательный знак "Инвалид"

4. Управление транспортным средством, на котором без соответствующего разрешения установлены устройства для подачи специальных световых или звуковых сигналов (за исключением охранной сигнализации), -
влечет лишение права управления транспортными средствами на срок от одного года до полутора лет с конфискацией указанных устройств.
xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

тут есть одна лазейка, ВНЕШНИХ, табло за задним стеклом с натяжкой подходит под данное определение.

если на авто в подголовниках передних сидений стоят экраны, как быть ?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

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

По-моему, это подло.

RainMan
Offline
Зарегистрирован: 21.06.2011

ребята, вы во все тяжкие.... Я не собираюсь устраивать новогоднюю гирлянду - просто надо его перевозить будет:)

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

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

ToRcH2565
Offline
Зарегистрирован: 16.05.2015

andriano пишет:
3.1 Количество, тип, цвет, расположение и режим работы внешних световых приборов не соответствуют требованиям конструкции транспортного средства.

Не согласился бы с этим пунктом, ибо:

1) Авто не оборудованые ДХО - спокойно могут его ставить, если соответствует правилам(ГОСТУ)

2) Авто не оборудованые повторителем тормоза - обязаны его ставить уже как пару месяцев

 

Дисплей(хоть внутренний, хоть внешний) находящийся на заднем стекле не должен вводить в заблуждение водителей(красный свет - можно, синий\белый - нет).

 

RainMan
Offline
Зарегистрирован: 21.06.2011

хочется чтобы не просто табло было, а плавным скроллом, меньше 24кадров уже будут видны рывки

arduinec
Offline
Зарегистрирован: 01.09.2015

RainMan пишет:

Прийдестя очевидно делать матрицу 8х136  (1х17знакомест).

На Алиэкспресс есть готовые модули 8x32 с чипом ws2812, которые можно соединять последовательно.

arduinec
Offline
Зарегистрирован: 01.09.2015

Видео с бегущей строкой на лентах с чипом WS2812 (480 светодиодов):
https://yadi.sk/i/KjPlzioNjskYL
https://yadi.sk/i/RzuRDpZkkK32s

RainMan
Offline
Зарегистрирован: 21.06.2011

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

ginkiter
Offline
Зарегистрирован: 13.08.2019

моя реализация бегущей строки

https://youtu.be/X6JAT7oof_Q

RainMan
Offline
Зарегистрирован: 21.06.2011

че-то рывками скролл идет. Не интересно