Problema comunicación entre 2 nrf24L01 + pa +lna

Hola.

Llevo 1 semana intentando hacer funcionar estos módulos, y no lo consigo, os comento detalles a ver si me podéis ayudar, ya que he leído las soluciones a este problema en el foro y ninguna me ha funcionado.

Uso la libreria de TMRh20, y para las pruebas uso los siguientes códigos:
Transmisor

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
 
const int pinCE = 9;
const int pinCSN = 10;
RF24 radio(pinCE, pinCSN);
 
// Single radio pipe address for the 2 nodes to communicate.
const uint64_t pipe = 0xE8E8F0F0E1LL;
 
char data[16]="Hola mundo" ;
 
void setup(void)
{
   radio.begin();
   radio.openWritingPipe(pipe);
}
 
void loop(void)
{
   radio.write(data, sizeof data);
   delay(1000);
}

Receptor

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
 
const int pinCE = 9;
const int pinCSN = 10;
RF24 radio(pinCE, pinCSN);
 
// Single radio pipe address for the 2 nodes to communicate.
const uint64_t pipe = 0xE8E8F0F0E1LL;
 
char data[16];
 
void setup(void)
{
   Serial.begin(9600);
   radio.begin();
   radio.openReadingPipe(1,pipe);
   radio.startListening();
  }
 
void loop(void)
{
   if (radio.available())
   {
      int done = radio.read(data, sizeof data); 
      Serial.println(data);
   }
}

Para alimentar el circuito del transmisor utilizo un módulo MB102, alimentando el arduino a 5V a través del pin de 5v y para alimentar el nrf24l01 a través del pin de 3,3V. Para el receptor igual, siendo independientes el circuito del transmisor y receptor. Los GND del arduino y del modulo están conectados.

Uso dos Arduinos uno R3 (elegoo), y están todas las conexiones hechas en protoboard. He comprobado con un multímetro las conexiones varias veces, y están correctas. Entre el GND y los 3,3v he conectado un condensador de 100uF, que tampoco me ha funcionado.

En un foro, vi un código, para comprobar que el Arduino comunica con el módulo, así que lo cargué, y el modulo si que comunica, ya que da los valores que tiene que dar, os dejo el código:

// 18 Mar 2018 - simple program to verify connection between Arduino
//      and nRF24L01+
//  This program does NOT attempt any communication with another nRF24

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

#include "printf.h"

#define CE_PIN   7
#define CSN_PIN 8

const byte thisSlaveAddress[5] = {'R','x','A','A','A'};

RF24 radio(CE_PIN, CSN_PIN);

char dataReceived[10]; // this must match dataToSend in the TX
bool newData = false;


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

    Serial.println("CheckConnection Starting");
    Serial.println();
    Serial.println("FIRST WITH THE DEFAULT ADDRESSES after power on");
    Serial.println("  Note that RF24 does NOT reset when Arduino resets - only when power is removed");
    Serial.println("  If the numbers are mostly 0x00 or 0xff it means that the Arduino is not");
    Serial.println("     communicating with the nRF24");
    Serial.println();
    radio.begin();
    radio.printDetails();
    Serial.println();
    Serial.println();
    Serial.println("AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1");
    Serial.println(" and 250KBPS data rate");
    Serial.println();
    radio.openReadingPipe(1, thisSlaveAddress);
    radio.setDataRate( RF24_250KBPS );
    radio.printDetails();
    Serial.println();
    Serial.println();
}


void loop() {

}

El fabricante de mi módulo es QooTech. No sé que más hacer, espero me puedan ayudar.

Si los 3.3V los tomas del arduino, ¿verificaste si efectivamente están los 3.3V?
Porque en teoría la salida de 3.3V solo funciona cuando se alimenta el arduino por USB.

Saludos

Moderador:
edita el titulo. No uses mayúsculas.

Los NRF24L01 + PA +LNA requieren 150mA de modo que no puedes usar los 3.3V del arduino. Puedes hasta quemar el chip USB.
Debes usar un AMS1117 desde la fuente de 5V o desde el mismo Arduino para proveer los 3.3V a 150mA. con los capacitores de desacople correspondientes.
Revisa en Google al respecto, pero es muy fácil. El módulo con el AMS1117 tmb se vende en un pequeño PCB

Aclaro que no dije ni sugerí que tome los 3.3V alimentando por el micro por el puerto USB, dije que teoricamente alimentando por la "entrada" de 5V, como él lo está haciendo, no hay 3.3V disponibles.

Saludos

Los circuitos han cambiado mucho con estos años.
Lo que tengo en Mi cabeza es que los 3.3V son suministrados por el CHIP USB sin embargo, las cosas han cambiado y ahora hay un regulador de 3.3V que suministra posibles 150mA

Es un regulador de Texas que entrega justamente 150mA. Qué curioso!!
Como se ve en el esquema no importe por donde lo alimentes, externo, USB o bien por PIN de 5V tendras los 3.3V.
Ahora son suficientes para el nRF24 con antena?

Cuanto consume un nRF24 + PA LNA? según esto 140mA ver link

Si tienes un arduino con regulador como el del esquema tal vez no necesites nada externo.
Por lo tanto si no es power, no te queda mas que mirar los códigos.
Usa los ejemplos tx y rx y deberías poder comunicarlos.
Asegúrate que los chips sean iguales. Mira con lupa sus identificaciones.

Hola a todos. Mañana pruebo con el regulador y os digo. Gracias!

Prueba SI ES QUE tienes ese regulador de lo contrario quemaras el USB sea el chip que tenga.
Debes mira que tienes, lo mejor seria un AMS1117, independientemente de todo lo dicho.

surbyte:
Los circuitos han cambiado mucho con estos años...

Es cierto, no me había percatado que en el esquema oficial de UNO habían agregado el regulador de 3.3V (que es lógico porque antes los generaba el chip de FTDI que han cambiado por un ATmega16).

En principio, el Nano sigue como antes (siempre hablando de versiones oficiales)

Saludos

Hola de nuevo, los he probado con el AMS 1117 y sigue sin llegarme nada en el receptor. Os paso foto del montaje.

En la librería tienes un ejemplo TX y un RX. No hay forma de que fallen.
Usa esos códigos y asegúrate que se comuniquen. Si los tienes cerca uno de otro baja velocidad y potencia. Mira en los ejemplos o documentación como se hace.
Una vez que logres eso pasa a otro nivel de prueba.

No encuentro los ejemplos Rx y Tx, te adjunto los ejemplos que me aparecen.

2021-04-02 10_28_20-pingpair_test Arduino 1.8.13 (Windows Store 1.8.42.0).png

2021-04-02 10_28_20-pingpair_test Arduino 1.8.13 (Windows Store 1.8.42.0).png

Tienes razòn, es GettingStarter.ino si mal recuerdo, uno que te permite cambiar de TX a RX con una tecla. Miralo.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.