Матрица на 6000px с WS2815 на День Факультета

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
Всем любителям масштабных проектов привет!
Стоит задача сделать подсветку для лестницы на День Факультета. Лестницу, шириной 4м с 23 ступеньками, нужно обвесить адресными лентами.

Подскажите, пожалуйста, как лучше спроектировать управление лентами?

На данный момент планируем взять ленты 60led/m по Arduino Pro Mini на каждую ступеньку (далее КЛ - контроллер ленты), к каждой из которых подключены SD карты со сценами (анимированные сцены, например дождь или волна). Состоянием каждого из 23 КЛ будет управлять Arduino Mega (далее КС - контроллер сцены), которая через I2C сообщает КЛ номер сцены, который нужно взять с SD карты. КС будет принимать номер сцены с компьютера через Serial.

Всё усложняется тем, что лестница большая, следовательно длины проводов занижают характеристики системы (лестница длиной 5м, высотой 3.5м). Питание лент не критично, а вот управление контроллерами уже существеннее (5м на USB-miniUSB провод к КС и 5м от КС до дальнего КЛ). По каналам связи между контролерами передаются только номера сцен, но всё же такие длины не внушают доверия.

Как сделать так, чтобы работало?

Прикрепил вид лестницы вблизи и на мероприятии.
 

Вложения

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
I2C это протокол для использования на плате между узлами.
Или SPI со специализированной микросхемой. т.к. этот протокол тоже для внутриплатных соединений.
Или RS485, или RS422.
 
  • Лойс +1
Реакции: m9y

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
I2C это протокол для использования на плате между узлами.
Пример соединения по I2C между двумя Arduino: https://wreckage.ru/i2c-data-transfer-between-two-arduino-pass-numbers-float-and-int/

Или SPI со специализированной микросхемой. т.к. этот протокол тоже для внутриплатных соединений.
Или RS485, или RS422.
То есть вы хотите сказать, что по причине падения напряжения из-за длины провода, работа по I2C станет невозможной? Поэтому стоит использовать дискретные протоколы передачи данных?
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
Пример соединения по I2C между двумя Arduino
Длину шнурка между платами видели?
Я могу выпустить ролик, в котором объясню, почему земля плоская. При этом она не перестанет быть круглой. В интернете дохрена роликов про вечные двигатели, а руками вы их щупали?
Можете делать как хотите, но законы не измените. Сейчас многие не верят старым школам, которые проверены потом и кровью. Сейчас век ардуино, где всё просто и законы физики не при чём. Потом сидят, верещат. Почему у меня сгорело? Почему не грузится?
Всё не так просто как в в интернете и видеороликах.

что по причине падения напряжения из-за длины провода
Не только падение напряжения. Любой провод это ёмкость и сопротивление. Поищите как влияют они на сигнал передаваемый по проводам.
 

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
@Эдуард Анисимов, спасибо! Не знал про понятие "ёмкости провода".

Тогда остаётся вопрос: можно ли делать линии управления, например по SPI, такими длинными (5м)? Пытался найти соответствие диапазонов напряжение к логическим 0 и 1, но не нашел. Как это выяснить?
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
Вот фирма производитель рассказывает как увеличить дистанцию передачи.
Но не забывайте про тайминги. Там к этому очень всё чувствительно.

А лучше обратите внимание на протоколы, которые давно уже используются для передачи данных на дальние расстояния.
RS485 и RS422. При чём особо заморачиваться не нужно. Эти протоколы низкого уровня. Что Вы загоните на высоком уровне ваше дело.
 

Вложения

  • Лойс +1
Реакции: m9y

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
Про остальное ничего не скажу ибо в протоколах ламер, но почему нельзя все микроконтроллеры управления отнести в одно место где соединения между ардуинками-компом короткие, а кабель управления лентой- длинным. У меня с помощью САТ5 ардуинка от начала ленты находится на расстоянии 25 метров и полёт идеальный.
Если чего то в вашей топологии недопонял- звиняйте :)
 
  • Лойс +1
Реакции: m9y

kalobyte

★★★✩✩✩✩
1 Янв 2020
724
148
зачем там 2 ардуины, если с этим справится есп32
влан там вроде бы есть?

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

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,132
412
Москва
wan-derer.ru
@@lice, потому что в канале управления лентой тоже есть протокол, наносекундные интервалы, сопротивление, ёмкость, индуктивность.
То что заработало в одном месте будет глючить в другом и совсем не взлетит в третьем.
 
  • Лойс +1
Реакции: m9y

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
@@liceТо что заработало в одном месте будет глючить в другом и совсем не взлетит в третьем.
Я не я один такой ''умный'' с переводом данных для WS2815 на дистанции больше пару метров. Так что это действительно работает без замечаний.
Причём- существует дополнительный простой хак для надёжности- при надобности можно ставить одиночный WS2815 в качестве ''ретранслятора''.
 

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
, но почему нельзя все микроконтроллеры управления отнести в одно место где соединения между ардуинками-компом короткие, а кабель управления лентой- длинным.
Это перестраховка -- есть риск того, что лента будет работать некорректно с таким длинным проводом управления. Видел тему, где обсуждалось, что лента работает некорректно уже после 7px подряд, а тут 240px на ступеньку.
 
Изменено:

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
зачем там 2 ардуины, если с этим справится есп32
Времени на проектирование мало, а опыта работы с другими технологиями не было. В вашем варианте каждая из 23 лент переключаются последовательно на ESP, поэтому может быть кривая анимация, тогда как в моём все 23 Ардуинки работают параллельно.
 

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
Конкретно в моем проекте без замечаний работают 240 диодов.
Но это так, к слову. У каждого свои мысли, идеи и возможности.
 

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
А лучше обратите внимание на протоколы, которые давно уже используются для передачи данных на дальние расстояния.
RS485 и RS422.
Почитал про работу этого протокола, уточняю: то есть я могу сделать Arduino Mega в качестве передатчика по RX1-TX1, а остальные 23 Arduino Pro Mini в качестве приёмника по RX-TX, к каждой Arduino присоединить по конвертирующему модулю RS-485 (23 + 1шт)?
 

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
Кажется, что просто скрутить 23 витых пары с 1 витой парой не получится :( Как тогда поступить?
 

@lice

★✩✩✩✩✩✩
12 Апр 2019
128
30
«скрутить 23 витых пары с 1 витой парой» - это как?
Витые пары между собой скручивать не надо!
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
Почитал про работу этого протокола, уточняю: то есть я могу сделать Arduino Mega в качестве передатчика по RX1-TX1, а остальные 23 Arduino Pro Mini в качестве приёмника по RX-TX, к каждой Arduino присоединить по конвертирующему модулю RS-485 (23 + 1шт)?
Да
 
  • Лойс +1
Реакции: m9y

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
@@lice, с каждого КЛ идёт витая пара -- 23 провода. С КС идёт витая пара -- 1 провод. Необходимо сигнал от КС разветвить на все КЛ, то есть соединить 24 жилы.

Как соединить провода? (отмечено красным)
 

Вложения

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
Последовательно друг за другом. Так надёжнее.
Здесь всё описано.
Очень полезно, спасибо!

2 маленьких уточнения:
- То есть, мне нужно добавить 2 терминирующих резистора? Как рассчитать (или подойдет 120 Ом)?
- Как лучше всего реализовать ответвление: через клемму, пайку или специальный ответвитель?
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
То есть, мне нужно добавить 2 терминирующих резистора? Как рассчитать (или подойдет 150 Ом)?
Да, на самой первом и самой последнем устройстве ставится резистор 120 Ом. В статье, что я дал, должна быть инфа как рассчитывать терминатор и защитные подтягивающие резисторы в зависимости от количества подключенных устройств. Но, в большинстве случаев, достаточно 120 Ом терминатор и подтягивающие резисторы 680 Ом.
Как лучше всего реализовать ответвление: через клемму, пайку или специальный ответвитель?
Просто клемму можно. Я на плате делаю два разъёма подключенных параллельно. От предыдущего контроллера цепляешь на один разъём, к следующему ведёшь от второго разъёма.

Последний файл открывать только Adobe Acrobat. Другие просмотровщики картинок не видят. Качество плохое.
 

Вложения

  • Лойс +1
Реакции: m9y

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
подтягивающие резисторы 680 Ом
Где расположить данный резисторы? От A, B до GND?

Просто клемму можно. Я на плате делаю два разъёма подключенных параллельно.
Можно использовать любые разъемы? Например, хочу использовать примерно такие MINI-FIT.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
Где расположить данный резисторы? От A, B до GND?
А - подтягиваешь к плюсу.
В - подтягиваешь к GND

Можно использовать любые разъемы?
Если платы делаешь сам, без разницы какой разъём.

И тут же возникает вопрос, а как у тебя каждый модуль питаться будет?
 
  • Лойс +1
Реакции: m9y

m9y

✩✩✩✩✩✩✩
4 Мар 2020
15
0
Извините за непотребство схемы: нет опыта.