Подскажите с выбором аппаратной части
- Войдите на сайт для отправки комментариев
Позвольте всех поприветствовать!
Озадачился реализацией такого проекта... Управление пятью пятиметровыми лентами светодиодов.
Много разных реализаций просмотрел по работе Arduino с светодиодными лентами. Но похоже всё не то.
Суть: Считаем, что есть 5 лент по 5 метров это примерно 5*5*60~ будем считать 1500 светодиодов :)
Нужно софтом с PC задавать номер светодиода, например набрали "568" - этот светодиод должен загореться. Нажали "сброс" погас. Если подряд набрали несколько номеров например "28", "169", "814" то эти светодиоды и должны гореть пока не поступит "сброс".
Собственно посоветуйте (пусть схематично) в каком направлении идти, что лучше задействовать по аппаратной части.
Светодиодных лент пока нет, я хочу сказать, что буду брать те которые нужны, например с пиксельной адресацией.
Буду всем благодарен за любые советы! Простите если не в ту тему форума.
без светодиодов с пиксельной адресацией, тут не обойтись.
99.99$
xDriver спасибо за внимание к теме! Может встречалось что-то на просторах инета? Любые ссылки, советы - спасибо!
по отдельности только с адресацией, а это только rgb ленты на ws2812 например. а если хочется одноцветные то это только паять. а контроллеров светодиодов хватает. по простоте проще готовые конечно, но тут еще один момент что при такой длине процесс обновления не самый быстрый будет. а этот критерий вроде не прозвучал
На RGB лентах с WS2812 эта задача просто реализуется. Единственная проблема заключается в том, что на Uno/Nano не хватит оперативной памяти для 1500 светодиодов (если их использовать в RGB режиме). На Mega2560 памяти хватит.
Спасибо jeka_tm!
rgb лента на ws2812 это как раз хорошо т.к. в планах "зажигать" ещё и "по ситуации" светодиод разным цветом. Критерий времени конечно важен, время зажигания любого светодиода не должно превышать 2 сек с моменты подачи команды на включение.
Какие контроллеры посоветуете?
Спасибо arduinec!
Ок! Mega2560 и WS2812 берем за основу. Схематично как будет выглядеть? Нужно использовать регистры сдвига?
На RGB лентах с WS2812 эта задача просто реализуется. Единственная проблема заключается в том, что на Uno/Nano не хватит оперативной памяти для 1500 светодиодов (если их использовать в RGB режиме). На Mega2560 памяти хватит.
Почему ? Задача была такая, принял с порта "1 33 865 1024", надо зажечь эти светодиоды (про цвет пока опустим)
надо только выполнить
где i и есть номер светодиода, в чем проблема с нехваткой памяти ?
Я просто, чесно говоря не помню, как там организовано, ну если даже надо загнать весь масив на 1500 светодиодов, PROGMEM нам в помощь.
Mega2560 и WS2812 берем за основу. Схематично как будет выглядеть? Нужно использовать регистры сдвига?
Все ленты можно соединить последовательно и управлять ими всего по одному пину Ардуино (питание только на ленты нужно будет подавать через каждые 5 метров). Управлять можно с помощью библиотек: Adafruit_NeoPixel или FastLED.
в чем проблема с нехваткой памяти ?
При полноценном использовании WS2812 на каждый светодиод требуется 3 байта. Скорость передачи на ленту чуть меньше 1 МГц, поэтому PROGMEM не подходит. Получается что оперативной памяти Uno/Nano хватает только на 500 сетодиодов.
Если же использовать WS2812 в урезанном виде (например только на включение/выключение нужного цвета), то можно и 3000 светодиодов подключить (к Uno/Nano). Но в стандартных библиотеках такая возможность не предусмотрена, а ТС сам такой код не напишет.
в чем проблема с нехваткой памяти ?
При полноценном использовании WS2812 на каждый светодиод требуется 3 байта. Скорость передачи на ленту чуть меньше 1 МГц, поэтому PROGMEM не подходит. Получается что оперативной памяти Uno/Nano хватает только на 500 сетодиодов.
Если же использовать WS2812 в урезанном виде (например только на включение/выключение нужного цвета), то можно и 3000 светодиодов подключить (к Uno/Nano). Но в стандартных библиотеках такая возможность не предусмотрена, а ТС сам такой код не напишет.
Хорошо, если есть задача только зажечь светодиод одним из 8 цветов или потушить, то нужно 3 бита, и это проходит.
но я с вами согласен, что
а ТС сам такой код не напишет.
Я просто почитал, вспомнил, и понимаю, что PROGMEM не получится модифицировать, а там похоже , да, масив наполняется, а потом все уходит по команде
но три бита на цвет, пройдет даже для UNO/NANO!
Большое спасибо arduinec и xDriver !
Попробую реализовать этот вариант:
Все ленты можно соединить последовательно и управлять ими всего по одному пину Ардуино (питание только на ленты нужно будет подавать через каждые 5 метров). Управлять можно с помощью библиотек: Adafruit_NeoPixel или FastLED.
и вы правы на счет "ТС сам такой код не напишет".
А вот временную задержку на такой длинной линии в 1500 светодиодов всё же можно как-то посчитать? Загориться 1500-й светодиод в теч. 2 сек после команды "включить"?
Большое спасибо arduinec и xDriver !
Попробую реализовать этот вариант:
Все ленты можно соединить последовательно и управлять ими всего по одному пину Ардуино (питание только на ленты нужно будет подавать через каждые 5 метров). Управлять можно с помощью библиотек: Adafruit_NeoPixel или FastLED.
и вы правы на счет "ТС сам такой код не напишет".
А вот временную задержку на такой длинной линии в 1500 светодиодов всё же можно как-то посчитать? Загориться 1500-й светодиод в теч. 2 сек после команды "включить"?
Вы видимо не поняли, средствами Adafruit_NeoPixel или FastLED, это нельзя решить.
Я говорил о низкоуровнем программирование самих лент минуя эти библиотеки, что пока, как я понимаю, вам недоступно.
Вы видимо не поняли, средствами Adafruit_NeoPixel или FastLED, это нельзя решить.
На Arduino Mega2560 с библиотеками Adafruit_NeoPixel или FastLED можно полноценно управлять 1500 светодиодами.
А вот временную задержку на такой длинной линии в 1500 светодиодов всё же можно как-то посчитать? Загориться 1500-й светодиод в теч. 2 сек после команды "включить"?
Задержка считается очень просто: На передачу данных для одного светодиода требуется 30 мкс. Соответственно, последний 1500-й светодиод загорится через 45 мс. За 2 минуты лента успеет измениться более 40 раз.
На Arduino Mega2560 с библиотеками Adafruit_NeoPixel или FastLED можно полноценно управлять 1500 светодиодами.
Вы имеете ввиду, что библиотеки Adafruit_NeoPixel или FastLED + UNO/NANO не обеспечат нужный функционал, в отличии от Mega2560?
Спасибо!
Он спит уже, отвечу - ДА, не обеспечит.
Либо MEGA2560, ли бо хитро...й подход к управлению лентой на 328 UNO/NANO.
Он наверное не понял, что я иимено это и имел ввиду.
24бита на светодиод * 1500 светодиодов=36кбит оперативки только под буфер. даже в 2560 всего 8. то есть либо цвет задается математически, либо опреативки не хватит, либо цвет упрощать, например до основных 7, короче до 256 вариантов на самом деле, хранить их коды и расшифровки цветов, тогда 1500 легко
jeka_tm, в 2560 объем памяти составляет 64 кбит, что больше 36 кбит.
Всем xDriver, jeka_tm, andriano спасибо!
В целом понял в каком направлении идти. Псмотрю библиотеки Adafruit_NeoPixel или FastLED повнимательней.
А вот в голову пришла еще одна проблема которая может случиться.
Будем использовать WS2813 лента с запасным входом, который подключается параллельно входу предыдущего светодиода, таким образом, если один светодиод выходит из строя, то цепочка за ним не перестаёт работать.
Допустим 1 светодиод сгорел, вся адресация даст сбой я так понимаю, т.е. сгорел например 100-й и по команде "включить 101-й" реально засветиться 102-й? Если "Да" то это плохо, неправильно..... как жестко номер в этом случае привязать? Может обвязку добавить какую?
Да и насчет памяти у Mega2560 какое-то разночтение... ОЗУ в тех. характеристиках вроде - 8кб пишут или есть версии с 64кб?
Спасибо!
Да и насчет памяти у Mega2560 какое-то разночтение... ОЗУ в тех. характеристиках вроде - 8кб пишут или есть версии с 64кб?
В Mega2560 оперативная память 8 килобайт = 64 килобит.
Он наверное не понял, что я иимено это и имел ввиду.
Я-то как раз всё понял. Вот пример реализации бегущей строки на Uno/Nano (480 светодиодов управляются по одному пину):
https://yadi.sk/i/KjPlzioNjskYL
https://yadi.sk/i/RzuRDpZkkK32s
Использовал свой собственный код (без библиотек).
Во втором случае на светодиод в массиве тратится 2 байта (на ленту всё-равно нужно посылать 24 бита), что позволило увеличить количество светодиодов до 800.
Впечатляет arduinec!
Хорошо, что мне не нужно создавать бегущую строку или дисплей :)
Простите за повтор вопроса:
Будем использовать WS2813 лента с запасным входом, который подключается параллельно входу предыдущего светодиода, таким образом, если один светодиод выходит из строя, то цепочка за ним не перестаёт работать.
Допустим 1 светодиод сгорел, вся адресация даст сбой я так понимаю, т.е. сгорел например 100-й и по команде "включить 101-й" реально засветиться 102-й? Если "Да" то это плохо, неправильно в моём случае..... как жестко номер в этом случае привязать? Может обвязку добавить какую?
Может есть простое и дешевое решение?
Спасибо!
Есть простое решение. Используйте WS2812 или WS2812B. Светится другой не будет (они вообще дальше сдохшего светится не будут).
Если бы вы почитали спецификацию на WS2812/WS2813 таких вопросов не возникло бы. Обратной связи у этих чипов нет. Хотите контролировать каждый светодиод - используйте отдельные RGB светодиоды и подключайте их через драйверы. Для управления 1500 светодиодами RGB WS2812 таким образом как вам нужно понадобится 12 выводов микроконтроллера = по одному будет передаваться сигнал + 11 бит адрес светодиода. И каскад мультиплексоров. Могу сделать схему и дизайн PCB такого подключения, но это уже не бесплатно.
Есть простое решение. Используйте WS2812 или WS2812B. Светится другой не будет (они вообще дальше сдохшего светится не будут).
Это как сдохнет, сдохнет один их кристалов RGB, а контролер живой, все будет передоваться и дальше.
Если бы вы почитали спецификацию на WS2812/WS2813 таких вопросов не возникло бы. Обратной связи у этих чипов нет. Хотите контролировать каждый светодиод - используйте отдельные RGB светодиоды и подключайте их через драйверы. Для управления 1500 светодиодами RGB WS2812 таким образом как вам нужно понадобится 12 выводов микроконтроллера = по одному будет передаваться сигнал + 11 бит адрес светодиода. И каскад мультиплексоров. Могу сделать схему и дизайн PCB такого подключения, но это уже не бесплатно.
Ну да, 14 проводов (дорожек) вместо 4, плюс корпус мультиплексора через N светодиодов. Схематично представляю, в реализации - это костыли.
В данном случае, по моему все решили, MEGA и впред, остальное автору пока не доступно, в том числе и ваш вариант.
Есть простое решение. Используйте WS2812 или WS2812B. Светится другой не будет (они вообще дальше сдохшего светится не будут).
Это как сдохнет, сдохнет один их кристалов RGB, а контролер живой, все будет передоваться и дальше.
Ну тогда вообще будет как ТС хотел. Если контроллер живой, то он будет корректно дальше сигнал сдвигать. Просто один кристалл светиться не будет.
А насчет количества проводов - не факт, что ТС хочет расположить все светодиоды в одну линию. если разбить на части, то проводов по каждой линии меньше будет. Но мне почему то тоже кажется что ТС таких заморочек не нужно.
А насчет количества проводов - не факт, что ТС хочет расположить все светодиоды в одну линию. если разбить на части, то проводов по каждой линии меньше будет. Но мне почему то тоже кажется что ТС таких заморочек не нужно.
Слушайте не ипите мозг, если это не лента, а матрица, есть куча более рациональных решений.
а интересно. в одну линию 1500 светодиодов. допустим это 30 светодиодов на метр то 50 метров, если 60 то 25. кому нужна одна полоса полноцветная на 25-50 метров. либо это для освещения например заведения, реально, плюс это не одна линия наверно, а обводка теаста или что то подобное, либо взлетнопосадчная для беспилотников (малая длина). хотя зачем нужно отдельными светодиодами управлять. пожалуй эта теория про беспилотники отсеялась. хотя уже не удивляюсь что это реально окажутся самодельные беспилотники с ручным управлением на посадку. ту полгода год назад тема была, и я почти уверен был что человек хотел разработать систему для дистанционного боя, пулемета например. такие боевые точки охранные с ру управлением
во, во
если тема оформлена не по "регламенту"
1) что есть, и чего хочу от этого получить
2) схема, скетч
3) собственно вопрос, что не получается, в чем проблема
так давить такие темы без .....
но нет у админа, ни времени, ни сил такое реализвать.
:)))))))))))))))))))))))))))))))))))) Всем спасибо! Посмеялся от души, особенно про беспилотники и боевые точки.
Уж простите, но проекта как токового нет, есть идея. Благодаря нашей беседе приходит понимание возможности/невозможности реализации, предположительной стоимости не только аппаратной части, но и возможного привлечения специалистов в т.ч. с форума и т.д.
Попробую ещё раз объяснить суть.
Действительно нужен ряд светодиодов. Пусть не в одной ленте, а отдельные сведодиоды, но в один ряд. Таких рядов может быть не один, а как я писал в 1 посте, например пять. Каждый ряд около 5 метров. Но это просто разные ряды, а не бегущая строка или экран. Ну давайте предположим, что это подсветка огромной карты на стене. Вот и нужно, чтобы набрали "номер" и нужный светодиод (город) заморгал. Если нужно то 10 сразу заморгали и т.д.
Ни каких супер-пупер световых эффектов!
А решение желательно как всегда простое и дешевое.
Еще раз всем СПАСИБО!
Пиляд, развел нас всех, сразу бы сказал, мне нужно от Москвы до Владивостока, по ригионам
попиарить и ^.у показать, я токой стенд, лет 15 назад окучил.
Уважаемый xDriver и в мыслях не было кого-то развести или обмануть. Кстати участие ваше в этом обсуждении для меня очень важно, спасибо вам!
Нет, это не стенд для чиновников, не удачный я видимо пример придумал с картой.
Не могу раскрывать идею, она не моя. Я должен понять возможность её осуществления/реализации за не большие деньги и по результатам принять решение стоит всем этим заниматься или нет. Если бы количество контролируемых точек было 10 проблем нет, но 1500 а может и больше накладывает жесткое ограничение на стоимость одной точки :(
Ну давайте считать, что у нас штабеля одинаковых маленьких ящичков и найти нужный очень тяжело т.к. их 1500 штук, а если у нужного ящичка засветиться светодиод после набора его кода то "Вуаля!" мы его нашли. Так пойдет?
Еще раз прошу прощенья если кого-то обидел. Всё что написано в этом топике для меня важно.
Спасибо!
plazma50, поставь 200 сдвигающих регистров 74hc595 и 1600 светодиодов. С ценами на али уложишься в 1000 рупий.
Спасибо Andy !
Я думал об этом и даже в 6-м сообщении спрашивал "не нужно ли мне задействовать сдвигающие регистры?" Но если я правильно понимаю резко увеличится количество проводов вместо 4-х, а этого хочется избежать. Вот и ищу возможные решения.
Вместо 4 проводов будет 5, если не считать провода от светодиодов.
Ну давайте считать, что у нас штабеля одинаковых маленьких ящичков и найти нужный очень тяжело т.к. их 1500 штук, а если у нужного ящичка засветиться светодиод после набора его кода то "Вуаля!" мы его нашли. Так пойдет?
Вот и нужно было сразу описывать, для чего всё это нужно. Новички тут на форуме секретятся и в результате получают не всегда нужные советы.
Для варианта с ящичками ленты могут быть не очень удобны, так как у них фиксированное расстояние между светодиодами (и может быть не равно расстоянию между ящичками), а резать и паять ленту это не так уж и просто. Есть конечно варианты, где WS2812 отдельными элементами сделаны, но цены не дешёвые (порядка 10 руб за элемент).
Лучше обратить внимание на совет Andy и сделать на сдвиговых регистрах 595 и обычных светодиодах. Кроме дешевизны решается и проблема, затронутая выше - при выходе светодиода из строя не будет меняться нумерация других светодиодов.
...Для варианта с ящичками ленты могут быть не очень удобны, так как у них фиксированное расстояние между светодиодами (и может быть не равно расстоянию между ящичками)...
Вы абсолютно правы такая проблема есть и согласен, что сдвиговые регистры и обычные светодиоды решают много проблем, но как подумаю, что для одного пятиметрового ряда 300 светодиодов т.е. 300 проводов + еще несколько.... становится страшно. Как с таким количеством работать...жгуты плести?
Спасибо!
Впрочем, что это я.... ведь вдоль ряда будет идти только 5 проводов, а на отводах будут стоять "модули" из 595+8 светодиодов. Верно?
Ну что вас на этих 595 регистрах заклинило? Возьмите 16-битные или дешифраторы например.
А вообще конечно нужно сразу нормально задачу ставить полностью, а не в загадки играть. С ящичками я бы взял ленты, но покороче. Скажем если в 1 ряду 50 ящичков я бы прокинул по ленте на один ряд, по вертикали поставил 16-битные дешифраторы, это уже 50х16 = 800 светодиодов выходит. Ставим второй и получаем 1600. Вероятность выхода 1 светодиода из 50 не так уж и велика. А если сгорит - ну так оторвали эту ленту и новую наклеили. Дела то на 15 минут. Дешево и надежно. Что и требовалось.
Спасибо AlexeySh!
Интересное решение. Но разве дешифратор в любой момент времени не только на одном из выходов дает активный уровень? Это не позволит одновременно включить 2 и более светодиодов висящих на одном дешифраторе.
Так мы же используем ленты по 50 светодиодов WS2812. А у них есть защелка, т.е. они запоминают состояние сами. Записали на одной ленте сигнал, затем записали на второй и так далее. Более того, даже Mega не понадобится для этого, достаточно UNO использовать.
В общем надумаете, обращайтесь. Могу сделать и схему, и дизайн платы, и программу для микроконтроллера.
Так мы же используем ленты по 50 светодиодов WS2812. А у них есть защелка, т.е. они запоминают состояние сами. Записали на одной ленте сигнал, затем записали на второй и так далее. Более того, даже Mega не понадобится для этого, достаточно UNO использовать.
Сначала я написал так:
Лентами с WS2812 намного проще управлять по одному пину, чем коммутировать мультиплексором (млм самой Ардуиной) несколько лент. Для полноценного управления 1500 светодиодами WS2818 у Uno/Nano не хватит оперативной памяти.
Потом подумал:
Для экономии памяти можно подключть несколько лент (например по 300 светодиов в каждой) к разным пинам Ардуино. Сделать массив для 300 светодиодов и использовать его для каждой ленты по-очереди, тогда памяти Uno/Nano хватит. Но такой вариант вряд-ли предусмотрен в вышеуказанных библиотеках, и также где-то нужно будет запоминать состояние каждой ленты.
Так мы же используем ленты по 50 светодиодов WS2812. А у них есть защелка, т.е. они запоминают состояние сами. Записали на одной ленте сигнал, затем записали на второй и так далее. Более того, даже Mega не понадобится для этого, достаточно UNO использовать.
Сначала я написал так:
Лентами с WS2812 намного проще управлять по одному пину, чем коммутировать мультиплексором (млм самой Ардуиной) несколько лент. Для полноценного управления 1500 светодиодами WS2818 у Uno/Nano не хватит оперативной памяти.
Потом подумал:
Для экономии памяти можно подключть несколько лент (например по 300 светодиов в каждой) к разным пинам Ардуино. Сделать массив для 300 светодиодов и использовать его для каждой ленты по-очереди, тогда памяти Uno/Nano хватит. Но такой вариант вряд-ли предусмотрен в вышеуказанных библиотеках, и также где-то нужно будет запоминать состояние каждой ленты.
А теперь подумайте немного ещё. Если светодиоды разбиты на ленты по 50 штук, то для загрузки информации в ленту достаточно массива из 50 значений. А так как вам не нужно зажигать светодиоды разными оттенками света и не нужно зажигать их много, а лишь несколько штук (по крайней мере так написано в вашем ТЗ), то информацию о состоянии всех 1500 светодиодов можно хранить или в битовом массиве или в небольшом массиве записей вида: № светодиода - значение цвета.
При этом управление всеми светодиодами будет осуществляться через один пин микроконтроллера плюс от 5 до 8 пинов под управление адресом ленты.
В общем мне проще сделать, чем объяснить вам как это делается.
Спасибо arduinec, AlexeySh в целом предложенные схемы понятны.
В общем мне проще сделать, чем объяснить вам как это делается.
А мне и не надо ничего объяснять, я прекрасно знаю как это можно сделать (см. пост 22 данной темы).
Ну что вас на этих 595 регистрах заклинило? Возьмите 16-битные или дешифраторы например.
Светлая мысль, только не дешифраторы. Существуют специальные драйверы для светодиодов, я для табло использовал MBI5026. У него 16 бит+высокая скорость + регулировка тока светодиодов. Управление 4 вывода, если мне нужно было несколько цветов включал в параллель несколько линеек. С небольшими табло, до 64 диодов у меня справлялся AT89C2051.
Драйверы я не предлагал потому что для ленты WS2812 они бесполезны. Ленты + дешифратор реализовать проще, чем специальные драйверы, да и проводов меньше будет.
Драйверы для светодиодов, если внимательно почитать. А что дадут дешифраторы? Лучше несколько лент в параллель.
Драйверы для светодиодов, если внимательно почитать. А что дадут дешифраторы? Лучше несколько лент в параллель.
Прочитал то я внимательно. Более того, использовал аналогичные драйверы другого производителя в своей конструкции.
Вы лучше мне расскажите как вы примените драйверы для светодиодов к ленте на WS2812? А то я что-то недогоняю. А также зачем вам регулировка тока применительно к ленте на WS2812?
Посты 33 и38, а Вы о чём.
Посты 33 и 38 о разных вещах. Пост 33 про обычные светодиоды. Пост 38 - вариант подключения лент на WS2812 для решения задачи, поставленной ТС. К посту 38 драйверы светодиодов не подойдут.