Nrf24l01 принимает один раз при включении

Есть 2 nrf24l01+ и ардуино уно и нано. Код взял у AlexGyver. Проблема: Передатчик вроде что то передает , но приемник принимает только во время выключения или включения передатчика

///
//Приемник RX  на Nano
#include <SPI.h>
#include "nRF24L01.h" 
#include "RF24.h"

RF24 radio(5, 6);  // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги

byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

void setup() {
  Serial.begin(9600);         // открываем порт для связи с ПК
  radio.begin();              // активировать модуль
  radio.setAutoAck(0);        // режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(10, 15);    // (время между попыткой достучаться, число попыток)
  // разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);   // размер пакета, в байтах

  radio.openReadingPipe(1, address[0]);   // хотим слушать трубу 0
  radio.setChannel(0x60);     // выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX);   // уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_250KBPS); // скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp();        // начать работу
  radio.startListening(); // начинаем слушать эфир, мы приёмный модуль
}

void loop() {
  byte pipeNo, gotByte;
  while(radio.available(&pipeNo)) {        // слушаем эфир со всех труб
    radio.read(&gotByte, sizeof(gotByte));  // чиатем входящий сигнал
    Serial.print("Recieved: ");
    Serial.println(gotByte);
  }
}///
///

//Передатчик TX  на Uno
#include <SPI.h>          // библиотека для работы с шиной SPI
#include "nRF24L01.h"     // библиотека радиомодуля
#include "RF24.h"         // ещё библиотека радиомодуля

RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги

byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

byte counter;

void setup() {
  Serial.begin(9600);         // открываем порт для связи с ПК

  radio.begin();              // активировать модуль
  radio.setAutoAck(0);        // режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(10, 15);    // (время между попыткой достучаться, число попыток)
  // разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);   // размер пакета, в байтах

  radio.openWritingPipe(address[0]);  // мы - труба 0, открываем канал для передачи данных
  radio.setChannel(0x60);             // выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX);   // уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_250KBPS); // скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp();        // начать работу
  radio.stopListening();  // не слушаем радиоэфир, мы передатчик
}

void loop() {
  Serial.print("Sent: ");
  Serial.println(counter);
  radio.write(&counter, sizeof(counter));
  counter++;
  delay(10);
}
///

Так и задавайте вопросы на https://community.alexgyver.ru/

Было бы неплохо и тут отклик найти , но вопрос там задал тоже

Удачи в поиске!

// TX
#include <SPI.h>                                                                       
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10); 

const uint32_t pipe = 111156789; // адрес рабочей трубы;


int transmit_data[7]; // массив, хранящий передаваемые данные ( 2 значения с джойстика )

void setup() {

  radio.begin();                  // инициализация
  delay(2000);
  radio.setDataRate(RF24_1MBPS); // скорость обмена данными RF24_1MBPS или RF24_2MBPS
  radio.setCRCLength(RF24_CRC_8); // размер контрольной суммы 8 bit или 16 bit
  radio.setPALevel(RF24_PA_MAX);  // уровень питания усилителя RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
  radio.setChannel(0x6f);           // установка канала
  radio.setAutoAck(false);          // автоответ
  radio.powerUp();                       // включение или пониженное потребление powerDown - powerUp
  radio.stopListening();               //радиоэфир не слушаем, только передача
  radio.openWritingPipe(pipe);   // открыть трубу на отправку

}


void loop() {

  const char text[] = "test";
  radio.write(&text, sizeof(text));
  delay(1000);
}
//RX

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(5, 6); 

const uint32_t pipe = 111156789; // адрес рабочей трубы;

int recieved_data[7]; // массив принятых данных


const int buzzer = 2;

void setup() {
  Serial.begin(9600);

  radio.begin();  // инициализация
  delay(2000);
  radio.setDataRate(RF24_1MBPS);   // скорость обмена данными RF24_1MBPS или RF24_2MBPS RF24_250KBPS
  radio.setCRCLength(RF24_CRC_8);  // размер контрольной суммы 8 bit или 16 bit
  radio.setChannel(0x6f);          // установка канала
  radio.setAutoAck(false);         // автоответ
  radio.openReadingPipe(1, pipe);  // открыть трубу на приём
  radio.startListening();          // приём

  tone(buzzer, 1000);
  delay(100);
  tone(buzzer, 800);
  delay(100);
  tone(buzzer, 1000);
  delay(200);
  noTone(buzzer);

}

void loop() {
 
char text[32] = "";
  
  if (radio.available()) {
    radio.read(&text, sizeof(text));
    String transData = String(text);
    if (transData == "test") {
        tone(buzzer, 800);
        delay(80);
        noTone(buzzer);
      }    
  }

}

Не связывайтесь с nrf24l01. Чем могу, как говорится

Работаю с разными приемниками, передатчиками. С nrf24l01 нет проблем. Да бывает брак, но у автора не брак, а кривой код.

Брак в изначально неряшливой подделке, без повторяемости даже в партии. Изначальное оригинальное изделие тоже не отличалось изяществом схемотехники, за что и было давно снято с производства. Отличные шансы на успех.

у меня почему то не работает

приемник пишет в монитор порта когда я нажимаю кнопку ресет на плате передатчика или открываю монитор передатчика

посоветуйте приемники передатчики

Для каких нужд?

1 лайк

От JDY-40 до Лоры. Зависит исключительно от задачи

Как бы это глупо не звучало, повесьте на питание NRF конденсатор микрофарад 20-40, прям на контакты самого модуля. У меня завелось только после этого…

Это самое начало пути))) Конденсаторов желательно 2

конечно два, по одному на каждый модуль

А что с этими nrf делают, в принципе? Меня только один раз попросили для модели авто на них собрать радиоуправление. Больше ни разу не просили ни для чего.

вам виднее

у меня датчик с улицы погоду передаёт…