Радиомодуль nrf24l01 не конектится

Пытался передать сигнал по стандартной програмке Гайвера от нанки к про микроНанка вроде как штатно выдаёт сигналы, но вот микра не видит ничего

Это код для передатчика

#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(1);        // режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);    // (время между попыткой достучаться, число попыток)
  radio.enableAckPayload();   // разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);   // размер пакета, в байтах

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

  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);
}

Этот для приёмника

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

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

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

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

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

  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);
  }
}

По железу

на приёмнике про микра
Земля понятно куда
vcc - vcc
ce -7
csn - 8
15,14,16 - SCK Mi MO

по передатчику на нанке

ce - 9
csn - 10
gnd
vcc к 5v
13, 12, 11 SCK Mi MO

Модули подключены к стандартным китайским переходникам без конденсаторам (которые ступенькой)

Канал 1f свободный от помех

если в коде поставить про микре 9 10 она будет работать, но вместо получения сигнала будет работать как радар выдавая или 0 или 255

О, привет)

Не совсем понимаю что ты хочешь этим сказать

У меня переходники вроде как запитываются от 5 вольт

Для начала посмотреть осциллографом или логическим анализатором, что происходит на выходе приемника.

1 лайк

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

1 лайк

Про которые было добавлено только после моего сообщения :slightly_smiling_face:
@AsmodeusCure Сначала убедиться в работоспособности всех модулей прошив сканер в обе ардуины и посмотрев в мониторе порта.

Делал, гайверский выдаёт работоспособность обоих модулей (есть код каждого модуля)

Да, сори

Не подскажешь где можно делать схемы?

Есть же родной из библиотеки и что значит

?

Гайвер в видео про этот модуль давал код который сканит модуль и выдаёт его настройки после чего сканит все частоты и ищет свободные

Если модуль подключен штатно и работает первой строкой код выдаёт код в примерно 20 символов второй строкой
Если в ней не все нули значит модуль работает штатно

Вопрос: Почему вопрошаете не у гайвера? Кинул?)

Нет, просто у вас отличный форум с отзывчивыми мастерами)

А-а-а, ну если Гайвер.. Ну тогда у вас всё получится. Вот какой смысл приходить, спрашивать, получать ответ и нихрена не делать то что говорят?

Не понимаю что ты хочешь сказать…

Что здесь непонятного?

1 лайк
Да, я писал выше что прошивал оба модуля и они показывали в тесте работоспособности что они рабочие Я про этот код 

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

//RF24 radio(8,9); // Для Уно
RF24 radio(7,8);// Для Меня)))
const uint8_t num_channels = 128;
uint8_t values[num_channels];
void setup(void)
{
  Serial.begin(57600);
  printf_begin();
  radio.begin();
  radio.setAutoAck(false);
  radio.startListening();

delay(10000);   //////////////////////////////////////////////////////////////////////////////////////////////////////////

  radio.printDetails();  // Вот эта строка напечатает нам что-то, если все правильно соединили.
  delay(5000);              // И посмотрим на это пять секунд.

  radio.stopListening();
  int i = 0;    // А это напечатает нам заголовки всех 127 каналов
  while ( i < num_channels )  {
    printf("%x",i>>4);
    ++i;
  }
  printf("\n\r");
  i = 0;
  while ( i < num_channels ) {
    printf("%x",i&0xf);
    ++i;
  }
  printf("\n\r");
}
const int num_reps = 100;

void loop(void)
{
  memset(values,0,sizeof(values));
  int rep_counter = num_reps;
  while (rep_counter--) {
    int i = num_channels;
    while (i--) {
      radio.setChannel(i);
      radio.startListening();
      delayMicroseconds(128);
      radio.stopListening();
      if ( radio.testCarrier() )
        ++values[i];
    }
  }
  int i = 0;
  while ( i < num_channels ) {
    printf("%x",min(0xf,values[i]&0xf));
    ++i;
  }
  printf("\n\r");
}
int serial_putc( char c, FILE * ) {
  Serial.write( c );
  return c;
}

void printf_begin(void) {
  fdevopen( &serial_putc, 0 );
}