Выключается модуль nrf24l01

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

Передаю сигнал с одной UNO на другую при помощи двух nrf24l01 + pa + lna. Связь есть, все хорошо.

Но появилась проблема. Начал отключаться радиомодуль приемник. Некоторое время принимает сигнал и в одно мгновенье перестает.

Код приемника вот:

#include <SPI.h>
#include <RF24.h>
#include <Thread.h> 
RF24 radio(9, 10);
const uint32_t pipe = 123456789;
const byte rgbPins[3] = {3,5,6};
byte massiv[3];
int command = 1;
int t = 0, h = 0;
Thread questThread = Thread(); 
void setup()   
{
  pinMode(6, OUTPUT);
  Serial.begin(57600);
  radio.begin();
  radio.setDataRate(RF24_1MBPS); // RF24_1MBPS или RF24_2MBPS
  radio.openReadingPipe(1,pipe); // открыть канал на приём
  radio.startListening(); // приёмa

   ledThread.onRun(ledBlink);  // назначаем потоку задачу
   ledThread.setInterval(1000); // задаём интервал срабатывания, мсек

   questThread.onRun(quest);  // назначаем потоку задачу
   questThread.setInterval(1000); // задаём интервал срабатывания, мсек

    analogWrite(rgbPins[0], 255);// устанавливаем светодиод в красный цвет
    analogWrite(rgbPins[1], 0);
    analogWrite(rgbPins[2], 0);
}
void loop()  
{  
 if (questThread.shouldRun())
   questThread.run(); // запускаем поток приема с датчика радиомодуля        
}
void quest() { 
   if(radio.available()) //проверяем есть ли 
   {     
        radio.read(massiv, sizeof(massiv)); // читаем данные с радиомодуля в массив
        bool original = false; //проверяем на изменения полученных данных, что бы не выводить в порт кучу одинаковых данных                
        if( t != massiv[0]) //проверяем на оригинальность данных
        {
          t = massiv[0]; // записываем в переменную данные полученные с радиомодуля
          original = true;//устанавливаем флаг оригинальности в true          
        }
        if(h != massiv[1])//проверяем на оригинальность данных
        {
          h = massiv[1];// записываем в переменную данные полученные с радиомодуля
          original = true;//устанавливаем флаг оригинальности в true
        }        
        if( command != massiv [2])//проверяем на оригинальность данных
        {
          command = massiv[2];// записываем в переменную данные полученные с радиомодуля
          original = true;//устанавливаем флаг оригинальности в true
        }
        Serial.println("--------"); // выводим в мониторинг порта строку
        if(h!= 0)// && original == true)
        {     
          static int count = 0;
          Serial.print("Количество проходов:");   // выводим в мониторинг порта строки
          Serial.println(count++);      
          Serial.print("Влажность: ");
          Serial.print(h);
          Serial.print(" %\t");
          Serial.print("Температура: ");
          Serial.print(t);
          Serial.println(" *C "); //Вывод показателей на экран
          Serial.print("Номер команды: ");
          Serial.println(command);
        }                
        if(command == 1)
        {
          analogWrite(rgbPins[0], 255); // Включаем красный свет
          analogWrite(rgbPins[1], 0);
          analogWrite(rgbPins[2], 0);          
        }
        else
        {
          if(command == 2)
          {
            analogWrite(rgbPins[0], 0);// Включаем синий свет
            analogWrite(rgbPins[1], 255);
            analogWrite(rgbPins[2], 0);           
          }
          else
          {
            analogWrite(rgbPins[0], 0);// Включаем зеленый свет
            analogWrite(rgbPins[1], 0);
            analogWrite(rgbPins[2], 255);            
          }
        }
   }
   else { //перезапускаем радиомодуль
      Serial.println("Error"); //сообщение об ошибке
      
      radio.stopListening();//остановка приема
      delay(1000);
      radio.openReadingPipe(1,pipe); // открыть канал на приём
      radio.startListening(); // приём
    }
  }

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

не от +5 питаешь, часом?

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

От 3.3В на Arduino UNO разъеме

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

Из-за этого может отключаться модуль периодически?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

памойму, встроенный в Дуню стабилизатор на 3.3 на NRF не рассчитан.  Потрогай его, мошт от по перегреву отключаеца

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

он сразу включается и начинает работать, как только перезаписываю скетч или по питанию перезагружаю

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

памойму, встроенный в Дуню стабилизатор на 3.3 на NRF не рассчитан.  Потрогай его, мошт от по перегреву отключаеца

Деда, по-моему это байка. Там же обычно ams1117 стоит. При такой небольшой разнице напряжения (5в -> 3.3) он ампер должен тянуть...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

Деда, по-моему это байка. Там же обычно ams1117 стоит. При такой небольшой разнице напряжения (5в -> 3.3) он ампер должен тянуть...

Вполне может быть.  

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

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

По этой схеме подключены оба модуля.

Скетч выше предоставлен

SLKH
Offline
Зарегистрирован: 17.08.2015

b707 пишет:

DetSimen пишет:

памойму, встроенный в Дуню стабилизатор на 3.3 на NRF не рассчитан.  Потрогай его, мошт от по перегреву отключаеца

Деда, по-моему это байка. Там же обычно ams1117 стоит. При такой небольшой разнице напряжения (5в -> 3.3) он ампер должен тянуть...

Не обязательно 1117. 

Вот здесь http://arduino.ru/Hardware/ArduinoBoardUno  клевещут: "3V3. Напряжение на выводе 3.3 В генерируемое встроенным регулятором на плате. Максимальное потребление тока 50 мА."

Нужно конкретную плату смотреть.

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

В рефренсном дизайне стоит https://www.ti.com/lit/ds/symlink/lp2985-n.pdf - "Micropower 150-mA Low-Noise Ultra-Low-Dropout Regulator in a SOT-23 Package"

А по сравнению с этим - еще одного проводка не хватает: http://xn--18-6kcdusowgbt1a4b.xn--p1ai/%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D1%80%D0%B0%D0%B4%D0%B8%D0%BE%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F-nrf24l01/

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

А где "волшебный " конденсатор ??

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

"Волщебного" конденсатора нет. Все подключено на прямую в ардуинку. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

HEKPUCT пишет:

"Волщебного" конденсатора нет. 

Напрасна. 

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

HEKPUCT пишет:

"Волщебного" конденсатора нет. Все подключено на прямую в ардуинку. 

Вот вы сами и ответили 

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

На сколько он должен стоять и где?

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

HEKPUCT пишет:

На сколько он должен стоять и где?

Я делаю так http://arduino.ru/forum/programmirovanie/led-kostyumy-pomoshch-v-optimizatsii-koda#comment-314067

Любой 10-50 микрофарад

HEKPUCT
Offline
Зарегистрирован: 04.10.2018

между +3.3 и GND на радиомодуле?

mobistrike
mobistrike аватар
Offline
Зарегистрирован: 19.08.2016

Да