no logro hacer funcionar los modulos nrf24l01

no logro hacer funcionar los módulos nrf24l01,llevo dos semana, he armado los módulos conectados a un nano + condensador de 10uf para 3,3v

#define CE_PIN 7
#define CSN_PIN 8

al parecer solo si desconecto los pins ce parece funcionar pero muestra todos los valores en 0.

si alguien sabe que podría estar faltando, muchas gracias :o :o :o


programa emisor de prueba

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

//Declaremos los pines CE y el CSN
#define CE_PIN 7
#define CSN_PIN 8

//Variable con la dirección del canal por donde se va a transmitir
byte direccion[5] ={‘c’,‘a’,‘n’,‘a’,‘l’};

//creamos el objeto radio (NRF24L01)
RF24 radio(CE_PIN, CSN_PIN);

//vector con los datos a enviar
float datos[3];

void setup()
{
//inicializamos el NRF24L01
radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);

//Abrimos un canal de escritura
radio.openWritingPipe(direccion);

}

void loop()
{
//cargamos los datos en la variable datos
datos[0]=1;//le puse valores fijos para asegurarme que funcionara
datos[1]=2;
datos[2]=3;
//enviamos los datos
bool ok = radio.write(datos, sizeof(datos));
//reportamos por el puerto serial los datos enviados
if(ok)
{
/*Serial.print("Datos enviados: “);
Serial.print(datos[0]);
Serial.print(” , “);
Serial.print(datos[1]);
Serial.print(” , ");
Serial.println(datos[2]);
}
else
{
Serial.println(“no se ha podido enviar”);
}
delay(1000);
}


programa receptor

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

//Declaremos los pines CE y el CSN
#define CE_PIN 7
#define CSN_PIN 8

//Variable con la dirección del canal que se va a leer
byte direccion[5] ={‘c’,‘a’,‘n’,‘a’,‘l’};

//creamos el objeto radio (NRF24L01)
RF24 radio(CE_PIN, CSN_PIN);

//vector para los datos recibidos
float datos[3];

void setup()
{
//inicializamos el NRF24L01
radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);

//Abrimos el canal de Lectura
radio.openReadingPipe(1, direccion);

//empezamos a escuchar por el canal
radio.startListening();

}

void loop() {
uint8_t numero_canal;
//if ( radio.available(&numero_canal) )
if ( radio.available() )
{
//Leemos los datos y los guardamos en la variable datos
radio.read(datos,sizeof(datos));

//reportamos por el puerto serial los datos recibidos
Serial.print(“Dato0= " );
Serial.print(datos[0]);
Serial.print(” V, ");
Serial.print(“Dato1= " );
Serial.print(datos[1]);
Serial.print(” ms, ");
Serial.print("Dato2= " );
Serial.println(datos[2]);
}
else
{
Serial.println(“No hay datos de radio disponibles”);
}
delay(1000);
}

yo tampoco he podido nunca, compre un paquete de 10 por que eran baratos pero no ha habido manera.. estare muy atento a este post, si alguien quiere un nrf24l01 se lo regalo a cambio del secreto que usa para hacerlo funcionar jaja

He jugado bastante con arduino y no creo estar errandole al conexionado, y he probado infinidades de códigos y librerias y no consigo que funcionen, lo raro es que el ejemplo de test (reg_read.pde) de la librería MIRF

http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01 parece funcionar, pero al cargar los otros ejemplos no, nada, nunca hay dato que leer ...

no se si serán los módulos o el código ......

Yo los he usado con muy buen resultado en mi proyecto de cuenta vueltas... Para enviar datos de tiempos a un receptor remoto, para poder escucharlos a través de unos auriculares...
Podéis echar un ojo al proyecto RiCino en mi blog

ya esta funcionan , con la librería http://playground.arduino.cc/InterfacingWithHardware/Nrf24L01

la protoboard que usaba una pequeña era de muy mala calidad y no hacia buen contacto
tambien los cables hembra hembra que venden con los arduinos no son los mejores pq habia uno cortado

con la librería mencionada se puede hacer una prueba con un solo modulo y con esto ver realmente si el modulo esta funcionando, esto fue de muchísima ayuda

después subiré el código que utilice para eso

yo hice la pruevam me detecta el modulo emisor, el receptor pero no llega la información… :frowning:

acá subo el código para q veas si ambos transceptores están funcionando

a mi me fue de mucha utilidad

también saque los condensadores en paralelo con los 3.3v y funciona con y sin condensador
probé con arduino nano y mini con buenos resultados, en definitiva era el cableado que no hacia buen contacto y un cable cortado

código;


#include <SPI.h>
#include <RH_NRF24.h>

// Singleton instance of the radio driver
//RH_NRF24 nrf24;
RH_NRF24 nrf24(8, 7); //8–>csn ,7–>cs use this to be electrically compatible with Mirf
// RH_NRF24 nrf24(8, 10);// For Leonardo, need explicit SS pin
// RH_NRF24 nrf24(8, 7); // For RFM73 on Anarduino Mini

void setup()
{
Serial.begin(9600);
// while (!Serial)
// ; // wait for serial port to connect. Needed for Leonardo only
if (!nrf24.init()){
Serial.println(“init error”); }
else {
Serial.println(“init OK !!!”); }
// Defaults after init are 2.402 GHz (channel 2), 2Mbps, 0dBm
if (!nrf24.setChannel(1)){ Serial.println(“setChannel error”);}
if (!nrf24.setRF(RH_NRF24::DataRate2Mbps, RH_NRF24::TransmitPower0dBm)) {
Serial.println(“setRF error”); }
}

void loop()
{
Serial.println(“Sending to nrf24_server”);
// Send a message to nrf24_server
uint8_t data = “holaaaaaaaaaaaaa”;
nrf24.send(data, sizeof(data));

nrf24.waitPacketSent();
// Now wait for a reply
uint8_t buf[RH_NRF24_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);

if (nrf24.waitAvailableTimeout(1500))
{
// Should be a reply message for us now
if (nrf24.recv(buf, &len))
{
Serial.print("got reply: “);
Serial.println((char*)buf);
Serial.println(” reply EXITO ");
delay(1000);
}
else
{
Serial.println(“recv failed”);
}
}
else
{
Serial.println(“No reply, is nrf24_server running?”);
}
delay(1);
}


Hola.

Muchas gracias por tus aportaciones mfcristaldo. He intentado seguir los pasos que dices para hacer funcionar mi modulo pero no soy capaz.

Tengo el arduino nano conectado a la placa nrf24l01+, he cargado la libreria que indicas y he copiado el codigo de testeo, pero obtengo siempre el mismo error.

init error
Sending to nrf24_server
No reply, is nrf24_server running?

¿El testeo se hace sobre una solo arduino + nrf24l01 o tiene que haber dos arduinos funcionando con el codigo de testeo?

¿Sabes el pinout correcto para arduino nano + nrf24l01?

Gracias.

Hola.

He conseguido que funcione, pero con dos modulos, supongo que con una sola antena un modulo no se puede transmitir a si mismo. Y tenía un problema de pinout, csn y cs cambiados.

Una pregunta... Alguien sabe si mientras estoy en el bucle de arduino, encendiendo leds, haciendo calculos, etc... si llega una señal al modulo nrf24l01 ¿este la almacena en algún buffer para poder leerla luego? o ¿tengo que hacer la lectura coincidiendo con la emision del segundo modulo?...

Gracias.