Problemas con NRF24L01 y Arduino

Buenos días,

Escribo porque llevo dos días desesperado con el modulo NRF24L01. Lo he usado en anteriores ocasiones con buenos resultados, pero ahora no consigo hacerlo funcionar.
He usado la siguiente librería: https://github.com/nRF24/RF24
He usado mi propio código (que en otras ocasiones ha funcionado sin problema) y además el código de ejemplo.
El problema es que no pasa de la siguiente sentencia:

  if (!radio.begin()) {
    Serial.println(F("radio hardware is not responding!!"));
    radio.printDetails();
    while (1) {}  // hold in infinite loop
  }

He probado lo siguiente:

  • Diferentes arduinos (nano, mega y uno)
  • Diferentes módulos (con y sin amplificador)
  • He alimentado el modulo con una fuente 3v3 externa
  • He añadido el famoso condensador entre los 3v3 y gnd del modulo.
  • He cambiado los pines CE y CSN por otros.

Siempre obtengo el mismo resultado.

También he probado obviando la comprobación del begin() y siguiendo con el código, en el receptor siempre obtengo que hay datos disponibles pero esos datos son siempre 0.

También he de decir, que la sentencia radio.printDetails() no muestra nada ni hace nada.

Todo esto ha comenzado en una instalación en un equipo nuevo, usando Visual Studio Code y PlatformIO, no sé si puede faltar algo que no este teniendo en cuenta.

Saludos

Bien, y no has dicho si cambiaste de nRF24 como para confirmar que no esta defectuoso?
Que raro que printDetails no arroje nada?

Buenos días,
Como he dicho cambie los módulos, use diferentes módulos y también probé la versión con amplificador, por eso me resulta tan extraño todo esto.

La versión con amplificador merece tramiento especial. Asi que no la consideres.
La versiones simples deben ser del mismo lote entre ellas, pero no hablamos de problemas de comunicación entre ellas sino entre arduino y nRF24.
Por lo visto sabes de lo que hablas pero debo preguntar: En el MEGA los pines SPI no son los mismos que en UNO/NANO. Eso obviamente lo sabes y te habia funcionado asi que no pasa por ahi tampoco.
Realmente para responderte deberia yo arma algo y dirás porque si no es lo mismo? Pues si. Ultimamente he visto que los cambios en los cores, versiones de IDE, versiones de librerías traen aparejados problemas. En muy visible en los ESP no tanto en los AVR.
Prueba a ver.. baja de versión de ide tal vez una portatil. Busca librerias mas viejas si la encuentras e intenta.

Efectivamente, el problema no es la comunicacion entre modulos, sino entre el propio módulo y el arduino, no se si por el bus SPI o alguna otra cuestion. El cableado lo he revisado mil veces.
Esta semana probaré con otro ide mas antiguo y con un arduino o esp32 a 3v3, ya que los que estoy probando van a 5V, aunque el nrf24 este alimentado a 3v3.

Tambien he probado a cambiar la velocidad del bus spi, de 10Mhz que esta por defecto en la libreria NRF24, a 8mhz, incluso 1mhz... todo sigue igual.

Digno de un expediente X.

Saludos!

Como dije, las versiones de librerias y cores son importantes.

Si incluyo la libreria: #include <printf.h> y ademas añado esto en el setup: printf_begin();, el printDetails funciona, pero muestra todos los registros a 0:

SPI Speedz      = 10 Mhz
STATUS          = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
RX_ADDR_P0-1    = 0x0000000000 0x0000000000
RX_ADDR_P2-5    = 0x00 0x00 0x00 0x00
TX_ADDR         = 0x0000000000
RX_PW_P0-6      = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA           = 0x00
EN_RXADDR       = 0x00
RF_CH           = 0x00
RF_SETUP        = 0x00
CONFIG          = 0x00
DYNPD/FEATURE   = 0x00 0x00
Data Rate       = 1 MBPS
Model           = nRF24L01+
CRC Length      = Disabled
PA Power        = PA_MIN
ARC             = 0

He probado con un codigo basico de comunicacion spi entre este arduino y otro y funciona, por lo que descarto que el spi este fallando.

Esa impresión que adjuntas claramente detalla que no existe ninguna comunicación entre el arduino con el modulo NRF24L01, tambien he trabajado con estos módulos y te digo si el radio.print no te otorga la direccion RX_ADDR o te otorga datos en 0X00 es porque el modulo no esta correctamente conectado con el arduino, puedes subir un esquema de conexión, y el código que estas utilizando?

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