Проблема с управлением адресной лентой с радио пульта

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
8
2
Добрый день, решил сделать интерьерную подсветку с помощью библиотеки microLED повторив часть эффектов из лампы и прикрутив управление с радио пульта при помощи модуля приёмника WL101-341/331. Всё отладил на стенде с отрезком ленты в 14 светодиодов. При сборке финальной конструкции выяснилось что при увеличении количества светодиодов которые нужно контролировать сверх 34 в прошивке ардуина перестаёт реагировать на пульт. Но при этом ардуина не зависает, а управляет лентой. Эффектом по-умолчанию установлено "пламя", оно работает на длине до 100 светодиодов, но на пульт не реагирует. Если ленту физически вообще не подключать, а только запустить прошивку всё так же, до значения в 34 в переменной PINS через серийный порт видно получаемые с пульта пакеты, сверх этого значения глухо. Уменьшение глубины цвета не влияет, на недостаток памяти при загрузке ругани нет.

В чём может быть проблема?
 

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

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
я управляю 120 светодиодами и сервоприводом при помощи пульта ИК, никаких нареканий нет. С радиопультом не пробовал, но место на плате осталось для NRF , хотелось попробовать сделать синхронизацию по воздуху для 2-х отрезков.

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

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
8
2
Схема: D2 ардуины к data приёмника. На D6 висит управление лентой через резистор. Питание приёмника, ленты и ардуины с преобразователя 220 В -> 5 В.
 

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

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Ну скетча нет, значит буду попытаться угадать ) Эффект LED слишком надолго забирает монопольное управление на себя, ему просто не остается времени на управление, или он его просто пропускает
 

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

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
А зачем используются 2 библиотеки для ленты одновременно ?
На 1-ый взгляд все эффекты не должны понополизировать надолго контроллер, посмотрю еще.
 

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

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Ну скорее всего не питание, а беда с эффектом все же.
при 14 светодиодов скорость окол 50к циклов в сек
при 40 - 15к, что еще как то реально
а вот при 140 18 раз в секунду.
первые 2 эффекта вещают капитально по тестам
3 и 4-ый должны отрабатывать без проблем, те что lightBugs() и light();

а радугу, что странно, и огонь надо потимизировать.

Вот немного изменил функцию радуги, она скорее всего сильно медленнее будет "бежать", но должна позволить управлять лентой. попробуй.
Но скорость я так понял с пульта меняется вот этой rainbow_speed переменной.

C++:
void rainbow () {
  static int i=0;
  static uint32_t prevTime;
  if (millis() - prevTime >4) {
     prevTime = millis();
     i++;
     if (i==NUM_LEDS)
      {
      i=0;
      hue += rainbow_speed;
      }
    //for (byte i = 0; i < NUM_LEDS; i++) {
      leds[i] = mHSV(hue + i * float(255 / NUM_LEDS), 255, 255);
    //}
    
    strip.show();
  }
}
 
Изменено:

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
8
2
Спасибо за помощь, попробую. Если задать эффектом по-умолчанию третий, который совсем слабый, то реакции на пульт тоже нет.

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

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

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Если 3-ий эффект тоже сбивает раекцию на пульт, то "
#6
помехи у него по питанию идут

или по связи..
На сколько близко лента и модуль связи ?
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
724
148
еслион подключал просто х светодиодов и работало (при этом в софте было все равно хх светодиодов), а при подключении хх светодиодов начались глюки, то это именно просадки по питанию
никто же не знает, как там подключено все

вон у меня 5м ленты 5в, так я ее там с 2х концов запитал, бп довольно мощный и это при том, что лента не будет гореть в полную силу, там тоже эффекты
дык и то контакт круглого разъема плохой и просадки бывают и есп виснет

висела лента на 12в, где было 3 ргб светодиода на пиксель и отдельные контроллеры вс2811, то оно работало норм от 12в 1.5а
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
8
2
Эффект не зависит от подключения самой ленты, только от установки переменной в коде. Если ленту отключить и усатновить много светодиодов в прошивке, то всё-равно но сигналы не реагирует. Возможно сама ардуина создаёт помехи при переключении порта. Попробую поставить конденсатор между землёй и питанием на приёмник.
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
724
148
ардуина не создате никаких помех
просадки по питанию вызываются переключением мощных потребителей, а лента как раз и есть мощный потребитель
там на старых светодиодах надо было возле каждо еще керамический конденсатор лепить
в новых версиях типа 8215 конденсатор интегрировали в диод и эти конденсаторы как раз предотвращают вч помехи по питанию

у меня был глюк с такой лентой, когда я использовал дмх512 протокол и там были какие-то жесткие тайминги в самом юарте и он работал на нестандартной скорости вроде и короче в ленте светодиоды зажигались те, которые не надо зажигать
вобщем или алгоритм в библиотеках не тянул, или же реально контроллер не успевал выдерживать такие жесткие тайминги в протоколе самой ленты

причем я делал меньшее количество диодов и тогда только работало
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
8
2
И снова я вернулся к этому проекту.
Вкратце напомню про проект и поведение: отрезок адресной ленты управляется с радиопульта. Тестировался на отрезке 14 светодиодов и всё работало. После того как в скетче по мере увеличения количества светодиодов ухудшается реакция на пульт. На количестве 34-40 перестаёт реагировать на пульт. При этом в скетче 3 эффекта: пламя, радуга, светлячки.
Реакция на пульт не зависит от того какой эффект работает
Реакция на пульт не зависит от того подключена лента к контроллеру или нет (по сериал порту информация о приёме сигнала не поступает)
Реакция на пульт не зависит от того стоит ли конденсатор в питании радиоприёмника
По поводу этой ситуации пытался найти какую-то информацию и в итоге есть два пути: 1) На radiokot (https://www.radiokot.ru/forum/viewtopic.php?p=2960054) увидел упоминание, что модули WL101-341 забиваются помехами даже с работающего рядом микроконтроллера. Пробовал ставит конденсатор между землёй и питанием и относить радиоприёмник на ~0.5 м от ардуины. Никаких отличий в поведении.
Попробовал применить приёмник на микросхеме SYN480R, но похоже что она не ловит информацию с пульта (или не работает с библиотекой RC-Switch), хотя с приёмником SYN115 связывается без проблем.
2) При изучении работы с ИК приёмником с целью уйти от радиопульта увидел в примере такие строчки:
//if (!IRLremote.receiving()) {
// Run code that disables interrupts, such as some led strips
//}
Но у библиотеки rc-switch нет метод, аналогичного .receiving(). Ну или я не нашёл.
Таким образом похоже что на время записи в ленту прерывания могут просто блокироваться. И это похоже на правду т.к. при увеличении количества светодиодов в которые ардуина может принять сигнал от приёмника будет уменьшаться и реакция будет только при попадании в этот промежуток.
Кто-нибудь может подсказать как отключить блокировку прерываний в библиотеках microLED /FastLED или как иначе решить эту проблему?
 
  • Лойс +1
Реакции: LordZET

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

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Так, у меня есть готовый скетч, который "висит на стене" - светильник из светодиодной полосы на 120 диодов, несколько простеньких эффектов (руки не доходят еще докинуть ну и ленюсь) он управляется пультом ИК, имеет часы (есть режим отображения времени и температуры), подключен сервопривод, что бы пультом регулировать угол наклона ленты. Если интересно, все работает. Если интересно, то попробую оформить в виде поста/статьи. Не так, если этот пост наберет 10 лайков :D
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
8
2
Да с ИК понятно как сделать, хочется радио. Мне там пульт больше нравится. Да и китайцы прислали ИК пульт бракованный работают только часть кнопок (меньшая), а новый ждать долго.
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
8
2
Добрый день, проблему решил. Распишу на всякий случай тут решение, вдруг будет полезно.
Основная мысль, для модуля радиоприёмника нужна стабилизация напряжения, ибо он перестаёт работать даже при подключении активно работающей ардуино нано (с программой по управлению лентой, но без подключения ленты).
Как нужно работать с радиомодулями расписано здесь https://habr.com/ru/post/491530/ . У меня не оказалось под рукой повышающего преобразователя для работы с микросхемой LP2950-5.0 , поэтому просто вставил понижающий перед питанием радиомодуля (ему достаточно напряжения 3,3В),такого решения хватило для обеспечения управления с пульта. Когда придёт повышающий преобразователь попробую переделать по схеме из статьи.
Всем спасибо за помощь.
 
  • Лойс +1
Реакции: LordZET