Haga clic para más productos.
No se encontraron productos.
Búsqueda de blogs
Artículos Recientes
Categorías del blog
Últimos comentarios
No hay artículos
Artículos relacionados

Tutorial básico NRF24L01 con Arduino

189426

En este tutorial se realizará la comunicación inalámbrica entre dos Arduino usando los módulos transceiver NRF24L01, explicaremos lo básico de estos transceptores y como usar su librería en Arduino.

  

Módulo NRF24L01   ódulo NRF24L01  con Antena

  

En el mercado existen varios modelos de módulos del NRF24L01, todos operan en la banda de 2.4GHz, son muy usados por su funcionalidad, bajo consumo y bajo costo, los más populares son los que se muestran en la imagen anterior, El más básico  y económico es el que se muestra en la imagen de la izquierda, básicamente es el chip NRF24L01 y sus componentes necesarios para su funcionamiento. El otro modelo es más completo, aparte del NRF24L01 posee un circuito amplificador de potencia (PA), un circuito amplificador de bajo ruido (LNA) además de una antena SMA que en conjunto le permiten lograr un rango de hasta 1000m

Existe bastante información en Internet sobre el uso de estos transceptores, en el caso de Arduino, existen varias librerías (aquí las recomendadas) Pero para nuestro tutorial usaremos la librería RF24.

Lo primero que tienes que hacer es descargar la última versión librería RF24 e importarla a tu IDE de Arduino, para esto en la barra de menús vas a Sketch>Importar Librería>Add Library, y seleccionas la carpeta o archivo ZIP descargado, después de esto deberás cerrar y volver a abrir el IDE.

  
Ahora explicaremos las funciones que usaremos de la librería; solo se explicaran las usadas en este tutorial.

  

RF24 (uint8_t _cepin, uint8_t _cspin)


Función Constructor: Crea una nueva instancia (Objeto) de este dispositivo. La instancia se crea con los pines de comunicación SPI pero es necesario especificar los pines de control que están conectados al módulo.

Parámetros

_cepin  : Pin del Arduino conectado al pin Chip Enable (CE) del módulo

_cspin  : Pin del Arduino conectado al pin  Chip Select (CS) del módulo

Ejemplo:

  

#define CE_PIN 9
#define CSN_PIN 10

RF24 radio(CE_PIN, CSN_PIN);

     

void begin(void )           

Inicializa el objeto creado, generalmente se llama a esta función en setup (), antes de llamar a cualquier otro método.

Ejemplo:

radio.begin();

  

void openWritingPipe(const uint8_t * address)

Abre un canal de comunicación de escritura. La dirección se asigna a través de una matriz de 5 byte de longitud.

Parámetros

Address : La dirección del canal para abrir.

Ejemplo

byte direccion[5] ={'c','a','n','a','l'};

radio.openWritingPipe(direccion);
  

bool escribir(const void * buf ,uint8_t  len )

Envía un dato por el canal definido en openWritingPipe(), el dato es de máximo 32bytes

Parámetros

Buf: Puntero al datos que se enviará

Len: Número de bytes a enviar


Devuelve

True si la carga útil fue entregada con éxito y falso si no se logró enviar

ejemplo:

int dato=65;

bool ok = radio.write(&dato, sizeof(dato));
  

void openReadingPipe( uint8_t number, const uint8_t * address )      

Abre un canal de comunicación de lectura. La direccion se asigna a través de una matriz de 5 byte de longitud. Se pueden abrir hasta 6 canales de lectura pero sus direcciones solo pueden ser diferentes en el primer byte


Parámetros

Number : número de canal  del 0-5 (canal 0 generalmente reserva para escritura).

Address : Dirección del canal para abrir.

Ejemplo:

byte direccion[5] ={'c','a','n','a','l'};

radio.openReadingPipe(1, direccion);
  

void startListening(void )

Al llamar esta función se empieza a escuchar por los canales definidos como lectura, después de  llamar a esta función no podemos hacer escrituras, para esto antes debemos llamar a stopListening ()

Ejemplo:

radio.startListening();
  

bool available (void )   

Compruebe si hay bytes disponibles para ser leídos

Devuelve

True si existen datos disponibles en el canal de lectura y falso si no hay ningún dato recibido

Ejemplo

if(radio.available()){

  radio.read(&data,sizeof(data));

}
  

void read( void * buf, uint8_t len )

Leer los datos disponibles en el canal de lectura

Parámetros

Buf : Puntero a un buffer donde los datos deben ser escritos

Len : El número de bytes a leer en el búfer

Ejemplo

int dato;

if(radio.available()){

  radio.read(&dato,sizeof(dato));

}

    

    
Una vez explicado lo necesario para empezar a usar los NRF24L01, vamos a ver un ejemplo:

Enviar variables desde un arduino a otro usando NRF24L01


Se enviaran desde un Arduino hacia otro Arduino tres datos, estos serán: el voltaje leído por el pin analógico A0, el valor de millis(), y un dato adicional que podría ser el de cualquier sensor.

Para esto necesitamos 2 Arduinos, dos módulos NRF24L01 (con o sin antena), un potenciómetro y cables Dupont

  

Empecemos haciendo las conexiones entre el arduino y el NRF24L01

Las conexiones serán las mismas tanto en el Emisor y Receptor, con la única diferencia que en el receptor no usaremos el potenciómetro.

  

NRF24L01Arduino UNO,NanoArduino Mega
1: GND pin GND pin GND
2: VCC pin 3V3 pin 3.3V
3: CE pin 9 pin 9
4: CSN pin 10 pin 10
5: SCK pin 13 pin 52
6: MOSI pin 11 pin 51
7: MISO pin 12 pin 50

  

conexiones  NRF24L01y Arduino

  

Como se observa en la imagen el pin 2 del NRF24L01 (VCC) va conectado al pin 3V3 del Arduino, esto porque el modulo funciona con 3.3V. NO conectar a 5V porque podemos quemar al módulo, los pines de datos lo estamos conectando directamente al Arduino a pesar que los niveles lógicos del NRF24L01 son también de 3.3V, esto con el tiempo podría afectar al NRF24L01 por lo que se recomienda usar un adaptador para que trabaje con valores de 5V 


El código para el emisor es el siguiente:

  

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

//Declaremos los pines CE y el CSN
#define CE_PIN 9
#define CSN_PIN 10
 
//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]=analogRead(0)* (5.0 / 1023.0);;
 datos[1]=millis();
 datos[2]=3.14;
 //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);
}
 

  

Y el código Para el recetor:

  

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
 
//Declaremos los pines CE y el CSN
#define CE_PIN 9
#define CSN_PIN 10
 
//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);
}


    


Si analizamos el código lo que hacemos es inicialmente configurar el módulo y luego enviar o leer los datos transmitidos por el módulo NRF24L01, la variable que se va a transmitir puede ser un solo dato o un array de datos como se lo está haciendo en este tutorial, pero siempre la variable o vector que se va a recibir tiene que ser del mismo tamaño y tipo que la variable enviada, de lo contrario se perderán datos.

Si han hecho bien todo lo descrito en el tutorial, al abrir el monitor serial les debería mostrar los siguientes resultados

Monitor serial del Emisor:

  

monitor serial del emisor

   

Monitor serial del receptor

  

monitor serial del receptor

  
La distancia o alcance entre módulos NRF24L01 dependerá del modelo que están usando y del lugar en donde están trabajando, si hay muros, ruido, o si estan en lugares abiertos. Los que vienen sin antena son de poco alcance un poco menos que la señal WIFI, pero los modelos que vienen con antena y amplificador de potencia pueden comunicarse hasta un 1km de distancia.

Productos relacionados
Artículos relacionados
170 Comentarios
  • patrick moraga

    patrick moraga 25/04/2021 Responder

    Hola a todos, les comento que usé este código y todo el rato me daba la salida "no se ha podido enviar".
    Después de leer un montón de foros he encontrado la solución por si alguien ha tenido el mismo problema.

    Bueno el error surgía porque la declaración

    RF24 radio(CE_PIN, CSN_PIN); está al revés

    debe cambiarla por RF24 radio(CSN_PIN, CE_PIN);

    Ahora todo me ha funcionado impecable, espero les sea de ayuda, saludos

    • Eloy Creichmon

      Eloy Creichmon 02/06/2021 Responder

      Muy bueno tu aporte. Muchas gracias!!
  • Carla Maciel

    Carla Maciel 25/01/2021 Responder

    Hola podrían decirme de que valor es el potenciometro?
    • Percy

      Percy 13/04/2021 Responder

      Le puedes poner cualquiera, no es critico
  • victor

    victor 18/11/2020 Responder

    Hola, quiero realizar este proceso pero conectando mas de dos arduinos, este módulo NRF permite la conexion de 6 dispositivos, como puedo conectar 5 arduinos emisores a un solo arduino receptor??
  • carlos

    carlos 30/10/2020 Responder

    solo ponle un condensador de 47uF al 3.3voltios y soluciona el problema de perdida de datos por consumo del NRF24L01
  • Julián Abdala

    Julián Abdala 16/07/2020 Responder

    Hola! Estoy teniendo un problema. El ejemplo no funciona, las placas están alimentadas con LD33v y los Arduino tienen fuentes de alimentación adecuadas. El problema se encuentra en el compilador ya que si lo reinstalo la primera vez las placas funcionan correctamente, pero luego de las primeras cargas comienza a fallar. ¿A alguien le pasa algo similar?
  • Mauro Lara

    Mauro Lara 24/04/2020 Responder

    Buenas tardes estoy usando dos arduinos Nano, ya hice todo al pie de la letra y el emisor si me manda datos, pero el receptor solo me dice que no hay datos de radio disponibles.
    Ya la conecte una fuente de alimentación externa y coloque el condensador en paralelo con la alimentación del modulo.
    Alguien sabe que mas puede estar pasando?
  • antonio

    antonio 16/04/2020 Responder

    si necesito usar una sd card que tambien utiliza los MOSI MISO SCK que debo hacer?
  • Jerson Andres

    Jerson Andres 02/04/2020 Responder

    El emisor me indica que no se pueden enviar datos, pero si lo desconecto del arduino, me aparece como que envía los datos. Que crees que esta pasando y como lo puedo solucionar? Gracias
  • Eduardo

    Eduardo 19/02/2020 Responder

    hola, estoy trabajando con fotocelulas y con NRF24L01 con antena interna en los emisores o sea el sensor de corte y con el NRF24L01 con antena exterior en el receptor, todo funciona perfectamente, esto se hace en un campo de deporte, pero solo me permite una distancia en vista directa no mayor a 30 mts. , pese a que uno tiene la antera externa que supone tiene mayor alcance. si al de antena interna le sueldo un cable como antena exterior, mejoraría o debo poner para mayor alcance el de antena exterior? es por una cuestion de costos.
    la otra es: como puedo aumentar la frecuencia de modulación de los NRF24L01. ya que he visto que a mayor frecuencia de trabajo mayor distancia y también mejoraría la velocidad de emisión.
    Gracias.
  • Cristian

    Cristian 18/02/2020 Responder

    Existe la posibilidad de conectar un modelo lector de rfid( lector rfid RC522) directo a la antena y que luego la señal sea recibida por un Arduino conectada a otra aneta?
  • Gire

    Gire 25/01/2020 Responder

    Hola, he intentado usar tu código con dos módulos nrf24 (con un arduino uno y un mega), y me aparece todo el rato el mensaje "no se ha podido enviar". Los pines son los correspondientes a cada placa. He intercambiado los programas de una placa a la otra por si era fallo de hardware pero da el mismo error. ¿A qué se puede deber? Gracias
    • Chema

      Chema 06/02/2020 Responder

      Hola Gire.
      A mi me pasa lo mismo, dice que no se ha podido enviar.
      Pero si abres el monitor del receptor verás que si los ha enviado y recibido.
      Saludos
      • patrick moraga

        patrick moraga 25/04/2021 Responder

        Hola, pudo resolver su problema? estoy con lidiando con lo mismo y no se porque ocurre
  • Natalia

    Natalia 16/01/2020 Responder

    Hola, me gustaría saber si es posible enviar archivos de audio con estos módulos y de ser posible, cómo podría hacerlo.
  • Uriel

    Uriel 15/01/2020 Responder

    Hola, excelente tutorial la verdad es que me ha servido de mucha ayuda, agradezco que tomes tu tiempo para enseñar lo que sabes con gente que apenas se inicia. Quiero preguntarle algo, es referente a la instrucción
    byte direccion[5] ={'c','a','n','a','l'}
    radio.openReadingPipe(1, direccion);
    Es decir que yo puedo pone en el primer parámetro de openReadingPipe cualquier número del 0-127? y en la dirección siempre hay que poner 5 bytes? es que quiero saber si puedo elegir a voluntad en que canal me quiero conectar, tal vez requiero conectarme al canal 8 con la dirección: 01010, estos parámetros tendría que ponerlos igual en ambos códigos para recibir y enviar información? Muchas gracias, podría aclararme esa duda, por favor?
  • hernan

    hernan 05/12/2019 Responder

    Estimados.
    Intentar configurar frecuencias > a 2.4GHZ para que no se generen interferencias con las señales de celular, puede ser un problema que se este generarndo.
    Intentar frecuencias de por ejemplo cerca de 2.5GHZ.
    Saludos.-
  • jorge

    jorge 27/09/2019 Responder

    Hola, alguien pudo solucionar el problema de la transmisión nula. Segui el ejemplo al pie de la letra y solo transmite un cero, probe con distintas velocidades de transmisión y hasta con un numero fijo, probe dos versiones de librerias la 1.33 y la 1.30 y con las dos obtengo el mismo resultado.
  • afperea

    afperea 09/09/2019 Responder

    El problema que tienen es la falta de la libreria RF24, entren en su arduino en HERRAMIENTAS, luego en ADMINISTRAR BIBLIOTECAS y ahi busquen RF24, miren si esta instalada o no, si no esta instalar y listo el ejemplo funciona perfecto
  • Mauricio Valencia

    Mauricio Valencia 09/09/2019 Responder

    la solucion para el codigo es en cambiar la linea:

    bool ok = radio.write(&dato, sizeof(dato));

    por

    bool ok = radio.write(&dato, sizeof(unsigned long));

    solo es dejar el tamaño del dato con una longitud extensa.

    hacer lo mismo para la lectura

    radio.read(datos,sizeof(datos));

    por

    radio.read(datos,sizeof(unsigned long));
  • Jannis

    Jannis 11/07/2019 Responder

    Hola buenas tardes a todos tengo una consulta realice un mando RC de 6 canales con los módulos de nrf24 con el ejemplo q pones logré recibir datos pero mi pregunta es cómo hago para q cada palanca del joistik haga su respectiva función en el receptor al nombrar las variables pierdo la comunicación y la lectura de los joistik espero me puedan ayudar grat
  • irving

    irving 26/05/2019 Responder

    quisiera saber como seria un diagrama de flujo de este trabajo y para que sirve el potenciometro
  • Luis Eduardo

    Luis Eduardo 17/05/2019 Responder

    Hola. Es posible enviar las lecturas de 5 sensores de temperatura y recibirlas utilizando un solo transmisor y un solo receptor. Tengo dos NFER24L01 con antena externa y dos arduino uno. Gracias
  • Fernando

    Fernando 30/04/2019 Responder

    como puedo ingresar a estos módulos una señal de 232 o a su vez 485
  • juan

    juan 25/03/2019 Responder

    hola buenas noches muy bueno el uso de los modulos de RF
    Pregunta quiero usar la comunicacion de rf para enviar los datos que leo del puerto usb de la pc con arduino transmitirlos y recivir del otro lado y activar varios relay estoy usando el programa vixen ligth para programar la secuencia si alguien me da una mano dado que soy nuevo en la programacion con arduino desde ya muchas gracias
  • Gratiniano Eduardo

    Gratiniano Eduardo 08/03/2019 Responder

    Acá indican mal, si van a usar Arduino MEGA el CSN debe ir conectado al pin 53, en el pin 10 no sirve para el MEGA ynunca les funcionará si lo conectán allí, sólo sirve si usan tarjetas basadas en el microcontrolador 328P
  • jesus hernandez

    jesus hernandez 12/02/2019 Responder

    HOLA, PLANEO MONITOREAR ALGUNAS VARIABLES Y VISUALIZAR LA LECTURA EN EL RECEPTOR,CUANTOS SENSORES SE PUEDEN CONECTAR A UNA SOLA ANTENA?, O TENDGO QUE USAR OTRO ARDUINO CON OTRO CANAL HACIA EL RECEPTOR?, ESPERO SU AYUDA
  • elder

    elder 11/02/2019 Responder

    Hola tengo una duda con los módulos: resulta que realice todo el tutorial, cuento con 4 módulos cada, uno con antena, y solo uno de ellos me sirvió como emisor, los 3 restantes me sirvieron para recibir cuando los intercambie; pero estos 3 al ponerlos a emitir no pasaba nada. a que se debe esto? si se supone que todos los módulos son iguales.
  • elder

    elder 11/02/2019 Responder

    hola, tengo un problema en este tutorial: tengo 4 módulos con antenas y solo una de ellas me sirvió para emitir, las 3 restantes me sirvieron de receptor al intercambiarlas: pero al intercambiarlas en el emisor no sirven. deben tener alguna configuración?
  • Willi

    Willi 28/01/2019 Responder

    Hola, tengo una duda en cuanto a los módulos NRF24, ambos módulos son de placa tipo c con antena, debe tener alguna característica especial el emisor o el receptor, o ambos deben ser idénticos?
  • Gustavo

    Gustavo 23/01/2019 Responder

    Hola buenas tardes, cargue los programas el dos Arduino UNO, uno como transmisor y el otro como receptor, configure los pines CE = 9, CSN = 10, MOSI = 11, MISO = 12 y SCK = 13, alimetacion del modulo a 3.3V y bueno GND en cada Arduino pero el transmisor me indica "No se ha podido enviar", y el receptor me indica "No hay datos de radio disponible".
    Cabe señalar que emisor lo tengo conectado con un adaptador de 12V y 1.5A, en otras palabras es autónomo y el receptor lo tengo conectado a mi Raspberry Pi 3.

    Por otra parte, pense que era cuestion de los modulos, que quizas uno ande mal o este malogrado y no transmita, pero encontre la manera de testearlo con un tutorial que encontre navegando, el codigo es el siguente, lo comparto:


    * ##############################################################
    #include "nRF24L01.h"
    #include "RF24.h"
    #include "printf.h"

    RF24 radio(9,10); // CE, CSN

    const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
    typedef enum { role_ping_out = 1, role_pong_back } role_e;
    const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};

    role_e role = role_pong_back;

    void setup(void) {
    Serial.begin(9600);
    printf_begin();
    radio.begin();
    radio.setRetries(15,15);
    radio.openReadingPipe(1,pipes[1]);
    radio.startListening();
    radio.printDetails();
    }

    void loop(void){
    }
    *********************************************************************************

    Y el resultado que me arroja para el primer Arduino con su NRF24L01 es :

    STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    RX_ADDR_P0-1 = 0x0000000100 0xf0f0f0f0d2
    RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
    TX_ADDR = 0x0000000100
    RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00
    EN_AA = 0x3f
    EN_RXADDR = 0x03
    RF_CH = 0x4c
    RF_SETUP = 0x07
    CONFIG = 0x0f
    DYNPD/FEATURE = 0x00 0x00
    Data Rate = 1MBPS
    Model = nRF24L01+
    CRC Length = 16 bits
    PA Power = PA_HIGH

    Y el resultado para el segundo Arduino con su modulo NRF24L01 es:

    STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
    RX_ADDR_P0-1 = 0x0000000100 0xf0f0f0f0d2
    RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
    TX_ADDR = 0x0000000100
    RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00
    EN_AA = 0x3f
    EN_RXADDR = 0x03
    RF_CH = 0x4c
    RF_SETUP = 0x07
    CONFIG = 0x0f
    DYNPD/FEATURE = 0x00 0x00
    Data Rate = 1MBPS
    Model = nRF24L01+
    CRC Length = 16 bits
    PA Power = PA_HIGH

    Entonces llego a la conclusión de que código de testeo si los esta reconociendo y devolviendome la información de ellos.

    Agradecería cualquier consejo que me ayude a resolver mis problema.
    Saludos cordiales
  • damian

    damian 10/01/2019 Responder

    Hola, después de probar muchos códigos en diferentes webs. Ya sé por qué a algunos si les funciona y a otros no les funciona tu código( a mi tampoco me funcionaba).

    La diferencia es:

    - Si usas el NRF24L01 CON el adaptador de pines, tienes que conectarlo a 5V
    - Si usas el NRF24L01 SIN el adaptador de pines, tienes que conectarlo a 3.3V

    Saludos.
    • Felipe

      Felipe 28/03/2021 Responder

      Consulta estimado... ¿Cual es el modulo que tienes tu y a que tension?
  • Gustavo

    Gustavo 07/01/2019 Responder

    Buenos días, al compilar el sketch emisor y luego subirlo a la placa Arduino me muestra los datos que estoy enviando por el monitor serial sin problemas, en mi caso es el dato de un sensor ultrasonico digital HC-SR04, pero cuando compilo el sketch receptor me arroja el siguiente error:

    /usr/share/arduino/libraries/RF24_master/RF24.h:990:8: note:
    candidate expects 1 argument, 2 provided

    Cabe señalar que tengo la librería NR24-master instalada.
    Pero el error refiere un problema con el constructor según alguna info que encontré en la web, como sea, se me esta haciendo un poco difícil dar con la solución, podrían ayudarme ??.
    Saludos cordiales.
  • Staniek

    Staniek 07/11/2018 Responder

    Hola buen día, tengo un proyecto en donde varios módulos envían datos almmismo tiempo. Quiero conectarlos de forma inalámbrica. No sé si con un solo receptor pueda capturar los datos o existirá colisión de datos, sí es así tendría que utilizar varios receptores nrf en una sola placa Arduino? Uno para cada módulo emisor. De antemano agradezco su ayuda.
  • Jeff

    Jeff 20/10/2018 Responder

    Encontré la solución al problema que mencionan anteriormente, verificar que los pines PSI del arduino se encuentren operativos y esa impresión en el módulo en la que nos indican el nombre de cada uno de los pines se encuentran mal ubicados por lo que puede provocar que se quemen o no funcionan, guiarse de otro ejemplos el orden de los pines del módulo. Bueno con esto me funciono, suerte.
  • José

    José 15/10/2018 Responder

    Hola, tengo un problema con estos módulos ya hace días. Me sale en el monitor serial Dato0= 0.00 V, Dato1= 0.00 ms, Dato2= 0.00 Cuando apago el EMISOR no sucede nada y me siguen enviando los mismo valores... Alguien le resulto? estoy a nada de comprar otro juego de NRF24L01 :/
  • alextremo

    alextremo 02/10/2018 Responder

    buen dia,disculpen alguien que me pueda ayudar, hice todo exactamente como lo dice el manual pero en el monitor serial del transmisor no me muestra nada, pero en el del receptor muestra " no hay dato de radio disponible", que estara pasando
  • Oscar

    Oscar 26/09/2018 Responder

    Hola Naylamp excelente explicación de tu trabajo, pero tengo un problema sencillamente no me funciona. No presento errores de cableado, llegan las tensiones perfectamente, los 2 códigos TX/RX compilan sin errores, estoy trabajando con un NRF24L01 con antena le tengo a los 2 Arduinos fuente externa y sólo sale el mensaje del TX"No se ha podido enviar" y en el RX "No hay datos de radio disponible".

    Agradezco tu colaboración para hacerlos transmitir.
    • Efren

      Efren 27/11/2018 Responder

      oye amigo si solucionaste tu problema
  • Yojana

    Yojana 24/09/2018 Responder

    una pregunta porque nos tira error en la librería al declarar el modulo nRF en este: #include
    #include , eso nos tira error pero no sabemos porque si copiamos bien los códigos.
  • Carlos Andres Alavez

    Carlos Andres Alavez 19/09/2018 Responder

    Hola, me funciona, pero no siempre me mantiene la comunicación, por ratos lo envia y por ratos dice que no hay datos, es normal? incluso si lo dejo ahi solo sin mover pasa eso... me podrias explicar si es normal o no?
  • maxi

    maxi 06/09/2018 Responder

    Hola buenas tardes, primero felicitacioness por el tutorial,muy bien redactado.
    Queria hacerte una consulta sobre la conexcion en arduino nano, es igual que para el uno?
  • adrian rubio

    adrian rubio 29/08/2018 Responder

    Hola, Gracias por su explicacion, tengo esta duda, estoy comunicando un tx con un Rx que van montado en locomotoras a escalas, pero tengo varias locomotoras y quiero colocarles address como para no se crucen las comunicaciones, cada locomotora dispone de su transmisor, y el codigo ya lo tengo funcionando muy bien , solo quiero saber como comunico por separados .
  • juan

    juan 05/08/2018 Responder

    Estimado conecte bien el transceptor, pero me dice que los datos no se pueden enviar
  • Cesar Moradel

    Cesar Moradel 05/07/2018 Responder

    Saludos Naylamp.

    Excelente tutorial, me ha funcionado a la primera, felicidades y gracias. Espero tener la suerte de que me apoyes (no veo tus comentarios a las consultas desde septiembre del 2017 :) espero te encuentres bien de salud).

    Me apoyarías por favor, con el código para colocarle un HS-SR04 al Emisor y un Display LCD I2C 16x2 al Receptor para poder visualizar en el display las distancias que obtenga el HC-SR04. Es para un tanque de agua.

    Se te agradece mucho la atención a la presente. Un abrazo a la distancia desde Honduras.
  • Francisco

    Francisco 28/06/2018 Responder

    Hola, una pregunta. es posible escribir y leer en un mismo canal? Es decir , quiero que mi arduino numero 1 mande a prender un led al arduino 2 y que después de cierto tiempo el arduino 1 pregunte el estado del led y el arduino 2 le conteste.
    Como se haría en ese caso? usando el mismo canal o usando distintos canales?
  •  leyva

    leyva 28/05/2018 Responder

    buenas muy bien tutorial solo que estoy trabajando arduino nano como emisor, no envía los valores y pierde comunicación con el pc para ver el monitor.Serial y el mismo problema para cargar un programa de nuevo algun consejo de como poder solucionarlo? gracias
  • Moisés

    Moisés 17/05/2018 Responder

    Buenas

    Consulta

    Hasta cuantos módulos se pueden conectar?

    Gracias
    Saludos
  • carlod Tejada

    carlod Tejada 14/05/2018 Responder

    Buenas tardes.
    Muy interesante el tema y bien explicado.
    Alguien podría decirme su este módulo trabaja con un esp8266 bajo el entorno arduino?

    Muchas gracias
  • Alberto

    Alberto 08/05/2018 Responder

    me podrias apoyar con la librería "#include " no la encuentro
  • Manuel

    Manuel 05/05/2018 Responder

    buenas tardes, el código mostrado funciona muy bien pero hay un problema, e modificado el retardo y cuando es 0 de retardo, el emisor envía los datos pero el receptor es mas rápido y esta en la espera de mas datos al final capta los que el emisor le envía, e empesando a modificar la libreria RF24.cpp y en write_payload cuando envía un arreglo unidimensional de tipo char este envía 32 datos por arreglo según la función, esto a que se debe?, trate de reducirlo de igual manera para read_payload y recibe pero si el emisor no envía nada ni cuenta seda que no le envías nada solo envía el ultimo dato enviado y si lo reduzco en write_payload ahí si ya no envía ni uno solo ; mi pregunta es ¿es necesario que envie por defecto un arreglo de 32 bytes como maximo? o es parte de su configuración y es nesesario modificar esto??. lo que yo kiero es enviar un byte nada mas y quería modificar esta configuración porque lo quiero lo mas rápido y creo que rellenando con ceros lo no me sirve(como lo hace la librería) retarda el programa pues quiero los datos lo mas antes posible porque requiero enviar datos del ADC para procesarlos en el destino ( filtro digital) y reproducirlo en un DAC , espero me deje entender y gracias de antemano por la ayuda
  • ENRIQUE BELLO

    ENRIQUE BELLO 17/04/2018 Responder

    EXCELENTE FUNCIONO PERFECTAMENTE BIEN. SIGA ASI USTED ES MI INSPIRACION Y DE MIS HIJOS QUE ESTUDIAN ELECTRÓNICA. VENEZUELA.
  • luis

    luis 12/03/2018 Responder

    hola como estas mi problema es el siguiente quiero enviar a 30 esclavos implementados con arduino que enciendan un led los esclavos no trasmiten nada solo encienden el led y el maestro por medio de 30 botones envia la señal de encendido gracias solo el maestro envia los esclavos solo encienden un led no trasmiten ndad es posible
    • Angelo Francescoli Castillo Guerrero

      Angelo Francescoli Castillo Guerrero 24/04/2019 Responder

      Cual es el codigo que usas solo para transmitir a los 30 esclavos?
  • Ivan

    Ivan 10/03/2018 Responder

    Hola, es necesario utilizar el módulo de alimentación para el nrf4l01 con antena externa?, alguien tiene un ejemplo de código y conexiones físicas? que pueda compartir ya sea de este post o otro. Y como testear un nrf24l01 si está dañado o no?
  • Fernando

    Fernando 22/02/2018 Responder

    Hola, excelente trabajo. Por favor, necesito me digas que utilizar para que dos o más arduinos sepan donde están ubicados los restantes (sin usar gps). Gracias.
  • Juan Carlos

    Juan Carlos 17/02/2018 Responder

    hola amigo, felicidades excelente información. estoy comenzando con estos módulos y hay mucha informacion de como crear una red con un multireceptor y multiples transmisores pero yo requiero realizar lo contrario un transmisor que envié datos a múltiples receptores y ejecuten de acuerdo al dato recibido. podrías ayudarme con el procedimiento?
  • beatriz

    beatriz 15/02/2018 Responder

    Hola. Cargo el emisor y el receptor pero solo me sale por pantalla Dato0= 0.00 V, Dato1= 0.00 ms, Dato2= 0.00
    veo que el problema lo solucionaron con las conexiones. Yo las he revisado y estan todas bien. El modulo receptor me parpadea la luz de TX pero en el emisor no me parpadea nada. No se como hacer para ver si esta enviando porque al poner el monitor, tampoco me dice nada. Una ayudita porfa!!! AH, tengo arduino uno. Gracias!
    • Francisco Javier Martinez

      Francisco Javier Martinez 29/10/2018 Responder

      que tal amigo pudiste resolver tu problema me pasa lo mismo
  • gejemesa

    gejemesa 05/02/2018 Responder

    Hola! Tengo un problema (no es muy importante pero me causa un poco de problema). Hice un código muy extenso y funciona perfectamente la recepción y transmisión de datos. Sin embargo la función booleana de la transmisión (la que en tu código se llama ok) muestra siempre false. ¿Sabes por qué podría ser esto?
    Saludos
  • jordy

    jordy 21/01/2018 Responder

    podrias ayudarme ...tengo error al compilar el codigo , el codigo que tengo se basa al tuyo:
    //Declaremos los pines CE y el CSN
    #define CE_PIN 9
    #define CSN_PIN 10

    //Variable con la dirección del canal que se va a leer
    byte direccion[1] = {0x7878787878LL};

    //creamos el objeto radio (NRF24L01)
    RF24 radio(9, 10);

    //vector para los datos recibidos
    float datos[2]
    void setup()
    {
    //inicializamos el NRF24L01
    radio.begin();
    //inicializamos el puerto serie
    Serial.begin(9600);
    dht.begin();

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

    //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("Humedad :");
    Serial.print(datos[0]);
    Serial.print("% , ");
    Serial.print("Temperatura:");
    Serial.print(datos[1]);
    Serial.print(" °C")
    }
    else
    {
    Serial.println("No hay datos de radio disponibles");
    }
    delay(1000);
    }
  • armin

    armin 21/12/2017 Responder

    Una pregunta, quiero conectar un modulo nrf1 que me envie señal a otro nrf2 y este a un nrf3, cual es el procedimiento? ya que el nrf2actuaria como receptor y transmisor?? Gracias
  • Cosme

    Cosme 26/11/2017 Responder

    Tengo un problema, los valores del receptor me dan:

    Dato0= nan V
    Dato1 = nan ms
    Dato2 = nan
    Esto a que se refiere?
  • Pablo h ramirez

    Pablo h ramirez 22/11/2017 Responder

    Hola queria agradeser tanta pasion por este tema y la info que brindas es inmensa . Eres un maestro. He logrado la comunicacion de dos arduinos nano cada uno con su modulo nrf24l01 (sin antena exterior)y el alcance maximo al aire libre fue de 25 metros. En el emisor coloque tres potenciometros a las entradas analogas del ardu-emisor y en el ardu-reseptor coloque 3 servos gs90 de los pequeños azules transparentes. Los servos responden a tiempo real practicamente. Solo bibran un poco los servos pero es solo por la mala coneccion de los potenciometros y la estatica de la mano al tocarlos
  • jose israel

    jose israel 17/11/2017 Responder

    hola quisiera saber porque no logro mas de rango de comunicacion solo alcanza los 15 metros
  • David

    David 16/11/2017 Responder

    Tambien me pasaigual. no hay tatos diponibles.
  • VICTOR ARRASCUE VITTE

    VICTOR ARRASCUE VITTE 02/11/2017 Responder

    ME sale que no hay datos disponibles
  • manuel moyano

    manuel moyano 02/11/2017 Responder

    hola usando esta logica de programacion como puedo controlar un servomotor como actuador de 0 -25-50-75-100 % de modulacion via wifi desde otro arduino con dos modulos wifi NRf2410.?
  • Facundo Beade

    Facundo Beade 23/10/2017 Responder

    Hola, muy bueno el post.. Tengo una consulta, estoy usando el modulo, con antena externa (en emisor y receptor).
    Estando cerca funciona perfecto, pero si me alejo mas de 20m, deja de funcionar (todo en linea recta). Hay algo que puedo estar haciendo mal? Ya leí el datasheet (uso pic, y yo genere todo la configuración y mi librería propia), y configure de distintas formas los registros de potencia de los modulos, y velocidad de transmisión, pero no logro superar los 20m de alcance. Desde ya muchas gracias.
  • Oscar

    Oscar 28/09/2017 Responder

    a mi el receptor me envia en el monoitor serial Dato0= nan V, Dato1= nan ms Dato3= nan
    Alguna ayuda al respecto el emisor muesta en el serial print que varia segun el pot???
    • Pablo

      Pablo 23/11/2017 Responder

      Hola oscar . Asi es . El emisor envia el valor del pot mas el valor de millis que cuenta desde que se energiza el arduino y el tercer valor es el de pi, o sea 3,14
  • Justo Velarde

    Justo Velarde 15/09/2017 Responder

    Saludos. Muy buen tutorial y lo voy a implementar por que me interesa mucho la transmisión de datos por RF., Tengo grandes ideas. Una consulta, cuando voy al link de la libreria NRF24 me sade una serie de archivos y cuando entro en ellos se displaya su contenido; entonces, debo copiar cada contenido en cada nombre de archivo (creándolo) y así con todos los demas archivos? incluyendo los ejemplos y los readme? Esa parte no entiendo, cuando dices:" la librería la encuantras en el siguiente link..." Gracias y saludos desde Lima-Perú.
    • Naylamp

      Naylamp 19/09/2017 Responder

      Hola Justo, para descargar la librería desde github, en el directorio principal de la librería, hay un opción de "clone o download" desde allí puedes descargar el .Zip para posteriormente agregarlo desde el IDE arduino.
  • walter

    walter 03/09/2017 Responder


    Buenas noches, tengo un problema con el programa, el emisor no funciona y ya revise las conexiones y también cambie la placa de arduino tengo dos megas pero por algún motivo se bloquea al entrar al "bool" el copio el codigo pues ya lo he revisado y no encuentro la falla agradezco a la persona que me pueda ayudar



    #include <SPI.h>

    #include <nRF24L01.h>

    #include <RF24.h>


    //Declaremos los pines CE y el CSN

    #define CE_PIN 9

    #define CSN_PIN 10


    //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]=analogRead(0)* (5.0 / 1023.0);

    datos[1]=millis ();

    datos[2]=3.14;

    //enviamos los datos

    //Serial.println(datos[1]);

    int dato=65;


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

    }
    • fernando

      fernando 07/10/2019 Responder

      Walter, no se si estoy a tiempo pero.
      Probá:
      1) cambiar byte direccion[5] ={'c','a','n','a','l'}; por byte direccion[5] ={'c','a','n','a','l','1'};
      [5] significa que son 5 datos
      2) bool isChipConnected(); para saber si el chip está funcionando
      3) en lugar de
      bool ok = radio.write(datos, sizeof(datos));
      utilizá:

      radio.write(datos, sizeof(datos));
      bool ok = txStandBy(1000);
      if(ok){print("envío concretado");}

      Saludos
    • Naylamp

      Naylamp 19/09/2017 Responder

      Hola Walter, ten en cuenta que la conexión para un Arduino Mega es diferente al de la imagen. Para descartar si tu NRF24L01 está defectuoso, intercambie el Receptor por el Emisor, y ya no debería bloquearse en el Loop, de todas formas es mejor probar con un tercer NRF para descartar si es un problema de hardware
  • Felipe Saavedra

    Felipe Saavedra 02/09/2017 Responder

    Hola buenas, genial el tutorial pero tengo un problema, he probado distintas librerias, distintos conexionados y nada.
    Con el mismo programa de arriba y conexiones, no manda nada, pero cuando retiro el ce del pin 9 comienza a decir datos enviados por monitor serial (obviamente no llega al receptor).
    Si tienen algún consejo o algo que me pueda ayudar se los agradeceria mucho
    estoy utilizando 2 Arduino UNO
    y 2 nrf24l01 + pa + lna
    • Gustavo

      Gustavo 23/01/2019 Responder

      Hola Felipe, ahora que lo mencionas yo también le vengo dando vueltas al asunto varios días y nada, pero hice lo mismo que tu, desconecte el pin_CE = 9 y comenzó a emitir señal intermitente entre enviar los datos cargados en la matriz de datos, y no envío de datos. Hice lo mismo con el receptor, desconecte pin_CE = 9 y empece a recibir estas cadenas Dato0= nan V, Dato1= nan ms Dato3= nan.
    • Naylamp

      Naylamp 19/09/2017 Responder

      Hola Felipe, para descartar problemas de energía, puesto que los 3.3V de arduino es de poca corriente, usa una fuente externa de 3.3V o de algún otro regulador. Prueba con un tercer NRF, uno de tus NRF podría estar defectuoso, puedes comunicar un NRF24L01(sin antena) con un NRF24L01+PA+LNA (con antena) sin problemas
  • Yeray Torres

    Yeray Torres 29/08/2017 Responder

    Buenas que tal, una pregunta cuantos es el número máximo de arduino podemos conectar entre sí con este sistema me refiero números de emisores a un solo receptor gracias
    • Naylamp

      Naylamp 19/09/2017 Responder

      Hola Yeray, Cada receptor puede escuchar solo a 6 NRF24L01 a la vez, si deseas conectar más tienes que implementar una red tipo malla o árbol ( https://tmrh20.github.io/RF24Network/Tuning.html ). Pero si todos los NRF24L01 no van a tener una comunicación constante o el receptor hace un papel de Maestro, en el receptor podrías implementar una rutina para que cambia la dirección del canal y puedo comunicarse con determinado NRF.
  • Miguel Angel

    Miguel Angel 14/08/2017 Responder

    alguien em podria apoyar con esta codigo ya que no me trasmite las distancias no se si estoy mal en el codigo o en la conexion

    #include < SPI.h>

    #include < nRF24L01.h>

    #include < RF24.h>

    #include < NewPing.h>

    #define CE_PIN 9

    #define CSN_PIN 10

    #define TRIGGER_PIN 2

    #define ECHO_PIN 3

    #define MAX_DISTANCE 200


    const uint64_t pipe = 0xE8E8F0F0E1LL;

    RF24 radio(CE_PIN, CSN_PIN);


    NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);


    int jarak[1];


    void setup(){

    Serial.begin(9600);

    radio.begin();

    radio.openWritingPipe(pipe);

    }


    void loop() {



    jarak[0] = sonar.ping_cm();

    Serial.print("Nivel: ");

    Serial.print(jarak[0]);

    Serial.println(" cm");

    radio.write( jarak, sizeof(jarak) );

    delay(100);

    }
    • Naylamp

      Naylamp 22/08/2017 Responder

      Hola Miguel, para descartar si es problema del hardware primero prueba si los ejemplos del tutorial te funcionan normal, de ser así no es problema de los NRF y el código relacionado a estos, podría ser las conexiones o el código cunado integras el ultrasónico, posiblemente la librería, prueba realizando medidas sin la librería, para descartar si la librería newping.h afecta al del NRF24.h
  • jcast

    jcast 28/07/2017 Responder

    Hola, puedo poner una antena de mayor potencia pero de la misma frecuencia para obtener un rango mayor de alcance? o se quemaría el módulo?
    • Naylamp

      Naylamp 30/07/2017 Responder

      Hola, si puedes usar otra antena de la misma frecuencia.
  • kmilo

    kmilo 13/07/2017 Responder

    Hola tengo una duda, el modulo NRF con antena consume 115mA como emisor segun el datasheet y los pines de arduino entregan maximo 50mA... Como puedo conectar el modulo para que no tenga problemas con la corriente??? Gracias por la publicación
    • Naylamp

      Naylamp 17/07/2017 Responder

      Hola, Si te refieres a la salida de 3.3V del arduino lo recomendable es trabajar como máximo 50mA, pero no siempre el NRF consume 115mA, la corriente es variable, posiblemente cuando el módulo NRF tenga bastante carga de trabajo podría fallar, lo recomendable es usar una fuente externa de 3.3V o un adaptador para el NRF, con los demás pines no hay problema de corriente.
      • Fernando

        Fernando 18/10/2018 Responder

        Olá
        O NRF24L precisa de um condensador de 4 a 10 microfarad entre Vcc e Gnd
  • tona

    tona 13/07/2017 Responder

    una pregumnta para que pueda enviar datos y me muestre en la pantalla los 2modulos receptor y emisor deben de estar prendidos o solo el puro transmisor puede mostrar en el puerto serial lo que manda lo que pasa que uso un arduino mega pero me pone que no se ha podido enviar datos ayuda
    • Naylamp

      Naylamp 17/07/2017 Responder

      Hola, ambos módulos tiene que estar encendidos, si el receptor está apagado te saldrá que el emisor no ha podido enviar la información.
  • ariel

    ariel 09/07/2017 Responder

    Buenas, me parece muy interesante la implementación de este módulo. Necesitaría hacer llegar datos de 20 arduinos con 2 pulsadores cada uno a un arduino maestro o a una raspberry que a su vez activen distintos sonidos. La pregunta es si me convienen estos módulos o mejor seria usar algo wifi. Muchas gracias desde ya.
    • Naylamp

      Naylamp 17/07/2017 Responder

      Hola Ariel, si puedes usar estos módulos pero teniendo en cuenta que el maestro no podrá conectarse a los 20 emisores a la vez, puesto solo puedes escuchar a 6 a la vez, tendrás que armar tu red con topología árbol o anillo. También puedes usar los wifi, teniendo en cuenta que estos consumen energía y tendrías que evaluar si trabajas con http.
  • Michael

    Michael 04/07/2017 Responder

    Buenas, estoy intentando mandar informacion para que mueva un servo motor pero no esta funcionando que podría ser?
  • Jhonny

    Jhonny 03/06/2017 Responder

    Y que los 3 paquetes se reciban en una misma línea de datos en el receptor.
    • Naylamp

      Naylamp 18/06/2017 Responder

      Hola Jhonny, el máximo tamaño del paquete a enviar es de 32 bytes, para enviar cadenas o paquetes más grandes tienes que implementar tu propio algoritmo, la forma mas fácil es agregando un inicio y fin de trama, cuando el receptor recibe el inicio de trama, los siguientes paquetes lo concatena hasta que llegué el fin de trama.
  • Jhonny

    Jhonny 03/06/2017 Responder

    Muy buen post, me ha servido de mucho.

    Me podrías decir como modificar ese código para poder enviar 3 paquetes de datos de 32 bytes cada uno?
  • Wilian Delgado

    Wilian Delgado 30/05/2017 Responder

    Tengo el siguiente error invalid conversion from 'byte* {aka unsigned char*}' to 'uint64_t {aka long long unsigned int}' [-fpermissive] segun es en el: radio.openWritingPipe(direccion);

    Estoy haciendo el ejemplo que esta en este block

    Gracia
    • Naylamp

      Naylamp 18/06/2017 Responder

      Hola Wilian, solo es problema de librería, instálala de nuevo y verifica que sea la misma que la que nosotros usamos en el tutorial.
  • andres

    andres 29/05/2017 Responder

    Hola, para el Arduino mega no se utiliza el pin 10 sino el 53.
    • Encendio

      Encendio 28/06/2017 Responder

      En serio?, a mi el mega me funciona bien como receptor usando el pin 10 y dejando libre el 53.

      Un salu2
  • Juan Ignacio

    Juan Ignacio 07/05/2017 Responder

    Hola, he seguido el ejemplo del tutorial y no consigo que se transmitan los datos. Sólo se transmite una vez cuando reinicio la placa y sólo algunas veces. La Alimentación de las placas la realizo a través de USB de PC. El Programa compila pero arriba aparece este mensaje:


    Warning: invalid conversion from 'byte* {aka unsigned char*}' to 'unit64_t {aka long long unsigned int}' [-fpermissive] radio.openWritingPipe(direccion);


    Le agradezco cualquier ayuda posible
    • Naylamp

      Naylamp 14/05/2017 Responder

      Hola Juan, es un problema de librería, posiblemente estas trabajando con otra librería u otra versión, verifica si es la misma que usamos en el tutorial.
  • Alvaro

    Alvaro 01/05/2017 Responder

    Gracias desde Uruguay saludos!
  • Alvaro

    Alvaro 10/04/2017 Responder

    Hola que tal,
    queria consultarte como deberia modificar el codigo para agregar 4 nrf24l01 tanto al esclavo como al maestro.
    para poder generar una red de sensores de temperatura 18b20 ,ya lo pude modificar pero solo tengo un esclavo con tu ejemplo me faltarian sumarle 4
    saludos
    • Naylamp

      Naylamp 12/04/2017 Responder

      Hola Alvaro, una configuracion podria ser que tengas 4 arduinos transmisores y un principal receptor, los 4 estarian enviando periodicamente los datos de los sensores. Esto, aprovechando que un NRF24L01 puede estar escuchando hasta por 6 canales. Las definicines serian: radio.openReadingPipe(1, direccion1); radio.openReadingPipe(2, direccion2); radio.openReadingPipe(3, direccion3); etc, y en el void loop seria: if(radio.available(1)) {....} if(radio.available(2) ) {....} if(radio.available(3) ) {....} etc
      • Emanuel Dimier

        Emanuel Dimier 10/05/2017 Responder

        Como puedo hacer para que 5 nRF24 le envien informacion a un nRF24 maestro. Segui tus instrucciones y no me salio.
      • Emanuel Dimier

        Emanuel Dimier 09/05/2017 Responder

        Hola que tal. No puedo hacer funcionar el codigo que mensionas . Como debo declarar " uint8_t"? Ya que bno me lo compila.
  • Lider

    Lider 10/04/2017 Responder

    Hola, me funciono de maravilla, una duda disculpa, en el lado del receptor como podría hacer para que me lea dos datos distintos es decir, en un emisor envio una variable datos y en el otro una que diga solo datos. en lado del receptor lo tengo asi. Lo que quiero es que me diferencie que estoy mandando, por un lado si es que estoy mandando "datos" y si no es asi entonces que diferencie que estoy mandando "dato", la variable "datos" es un vector osea datos[2] y "dato" solo es un flotante, dato = -12.10; entonces en un emisor solo envio con un pulsador "datos" y con otro pulsador envio "dato", es decir sólo el flotante. Como hacer para que el receptor me diferencie eso. O entonces en el emisor que solo me envie de "datos[2]", la posicion que quiera por ejemplo solo quiero enviar "datos[1]" sin que me mande todo completo.

    if ( radio.available() )

    {

    radio.read(datos, sizeof(datos));

    radio.read(&dato, sizeof(dato));

    //acum=acum+1;

    //Leemos los datos y los guardamos en la variable datos[]

    //if(ok)

    //{

    //reportamos por el puerto serial los datos recibidos

    if(datos[0] == 12.10)

    {

    Serial.print("C1 OK" );

    digitalWrite(LedPin, HIGH);

    Serial.print(" ENCENDIDO");

    }

    if(dato == -12.10)

    {

    Serial.println("C2 OK");

    digitalWrite(LedPin, LOW);

    Serial.print(" APAGADO");

    acum = 0;

    }



    gracias de antemano!
    • Naylamp

      Naylamp 12/04/2017 Responder

      Hola, trasmitir diferentes tipos de datos en diferentes tiempos es difícil, pues el receptor no sabría diferencial cuál de todos es y podría generar confusión en tamaño y tipo de dato. Por eso en este tutorial todos los datos se los agrupa en un vector y se envían todos a la vez, tener en cuenta que el tamaño máximo de una trama es de 32bytes, Otra forma seria convertir el dato a enviar a una cadena, de esta forma podríamos enviar diferentes variables y usar un inicio de trama diferente para cada variable. También puedes usar estructuras de datos typedef struct{ int data1; float data2;} datos;
  • Leandro

    Leandro 10/04/2017 Responder

    Hola estoy compilando el código para el receptor pero me dice que "clase RF24 has nomember named "startListening"" como lo puedo solucionar?
    • Leandro

      Leandro 10/04/2017 Responder

      Lo tenia mal escrito
  • Manuel Leal

    Manuel Leal 06/04/2017 Responder

    Buenos días. Me gustaría que el recepto también pudiese usar una shield Eth pero cuando se la coloco deja de recibir datos, me parece que es un problema con el BUS SPI, ¿es así? ¿se puede resolver? mi idea es consolidar todos los datos en un servidor con Openhab y mosquitto
    • Naylamp

      Naylamp 12/04/2017 Responder

      Hola Manuel, El problema debe ser porque el Shield Ethernet aparte de los pines SPI usa también el pin 10 como el SS del W5500 y el pin 4 como el SS de la SD. Intenta cambiando el pin CSN del NRF24L01 a otro pin diferente del 10 y el 4 que ya estarían ocupados por el Shield Ethernet.
      • Manuel Leal

        Manuel Leal 17/04/2017 Responder

        Buenas y muchas gracias por contestar. He cambiado el 10 con el 49 y sigue igual
      • Manuel Leal

        Manuel Leal 17/04/2017 Responder

        Buenas, muchas gracias por contestar. He cambiado el 10 por el 7 y sigue comportándose igual.
  • Horacio palacios

    Horacio palacios 04/04/2017 Responder

    Hola..muy bueno el trabajo. Una pregunta. Hay forma de poner 30 direcciones de recepción? Pq tengo que tomar datos de 30 modos distintos o tendría que hacer un barrido por cada uno ? Gracias
    • Naylamp

      Naylamp 12/04/2017 Responder

      Hola Horacio, Por cada módulo puedes configurar un canal para escribir (transmitir) y un máximo de 6 canales para escuchar, Pero en tu caso tendrías que trabajar uno principal como si fuera un Maestro, y los 30 como esclavos, cada esclavo tendría su propio canal (dirección). El proceso sería similar al siguiente secuencia : radio.openWritingPipe(direcion1w); radio.openReadingPipe(1,direcion1r); radio.stopListening(); radio.write(datos, sizeof(datos)); radio.startListening(); if(radio.available()) {radio.read(datosRespuesta,sizeof(datosRespuesta))} Todo en un for cambiado la dirección para cada esclavo.
      • Naylamp

        Naylamp 07/10/2019 Responder

        Me equivoco o puedo indicar la cantidad de direcciones que quiera y por cada dirección 6 canales?
      • Javier

        Javier 26/01/2018 Responder

        Hola Naylamp.
        Según lo que describes aquí, en el maestro debería configurar una dirección por cada esclavo?

        Agradezco tus comentarios.
        Saludos,
  • Cristian Julián

    Cristian Julián 22/03/2017 Responder

    Buenas noches me funciona el programa para los módulos sin antena pero utilizo modelos con amplificador y antena y ya no funciona porque ?
    • nery

      nery 25/04/2019 Responder

      yo tengo un par de nrf24l01 con antenas y solo envía señal pero el que recibe lo deja en 0. Tal vez es como dicen por falta de voltaje la verdad que no sé porque en todo página que reviso me dicen q solo se consumen 3.3 v y es lo que estoy recibiendo porque lo medí con un multitester.
      • Chema

        Chema 12/11/2019 Responder

        Estaba en el mismo caso, con módulos de RF de antena externa y tenian comportamiento raro, y de puro churro compré 2 reguladores para modulo de RF, ese se alimenta con 5V y a su vez alimenta con 3.3v regulados al módulo y entonces todo funcionó de maravilla tanto transmision como recepcion, no se por qué no viene ya integrado con el módulo, nos ahorrarían muchas horas y dolor de cabeza. La clave creo que es: ARD-REG/NRF.
      • fernando

        fernando 07/10/2019 Responder

        Nery, pudiste corregir esto de que el receptor no registra el envío? me pasa lo mismo con emisor con antenta y receptor también con antena. Todavía no probé conectarlos a una fuente externa. Si intento comunicar uno sin antena con otro con antena, funciona. pero 2 con antena, el receptor no escucha nada.
    • Andrés

      Andrés 23/03/2017 Responder

      Seguramente porque consumen mas potencia y necesitas alimentarlos desde una fuente externa de 3.3 V.
  • Andrés

    Andrés 22/03/2017 Responder

    Hola, veo que en el tutorial usa las placas que traen la antena en zig-zag incorporada (de baja potencia). Si se usan de las que traen antenas externas (de alta potencia), que tienen un mayor consumo, aún así se pueden alimentar desde la salida del arduino 3.3V, o tendría que usar una fuente externa?
    • Naylamp

      Naylamp 31/03/2017 Responder

      Hola Andrés, La salida de 3.3V podría hacer funcionar el NRF24L01 con antena externa, pero estarías sobrecargando dicha salida. Es mejor Usar un regulador o una fuente de 3.3v
  • Andres Felipe Camargo Ripoll

    Andres Felipe Camargo Ripoll 22/03/2017 Responder

    hola, muy bueno, gracias por el aporte
    pero tengo un pequeño inconveniente el trasmisor envia los datos y en el receptor los puedo ver pero el trasmisor no muestra los datos enviados al devolver if(ok) lo toma como false lo probe con if(ok==false) y hay si muestra es decir el trasmisor toma como si no enviara los datos. que podria ser esto ?
    aclaro en el receptor si llegan los datos perfectamente
  • Manuel Eduardo Camberos

    Manuel Eduardo Camberos 20/03/2017 Responder

    Hola, no puedo recibir datos, mas si puedo mandar, tengo una duda en un codigo de linea, para que sirve este:
    uint8_t numero_canal;
    ¿asi debe ir?. ¿en que consiste "numero_canal"?
    saludos!
    • Naylamp

      Naylamp 31/03/2017 Responder

      Hola Manuel, La línea que mencionas no la utilizamos, nos faltó comentar dicha línea, pero así como esta no afecta en el funcionamiento pues nuca utilizamos esa variable, Numero canal, se pensó para usar cunado necesitamos recibir datos de más de un NRF24L01, de esta forma tendríamos que indicar en que canal deseamos verificar si hay datos presentes, esto se realiza con la línea que esta comentada después de uint8_t numero canal.
  • jean

    jean 11/02/2017 Responder

    buenas noches. Estoy realizando un proyecto y me gustaría poder enviar datos a un exclavo cuando este lo reciba se active un audio ya establecido con estos modulos usted cree que pueda realizarlo o como podria realizarlo, soy nueo en esto
    • Naylamp

      Naylamp 13/02/2017 Responder

      Hola Jean, con estos módulos si puedes enviar el dato para que se active el audio en el esclavo, pero no puedes transmitir el audio. Para reproducir el audio en el receptor puedes usar un módulo mp3 o similares.
  • luiz cancela

    luiz cancela 10/02/2017 Responder

    boa tarde tem como me algum circuito que funcione com nrf 2401 e um sr 04 ultrasonico e o seu programa
  • santi

    santi 14/12/2016 Responder

    Buenas tardes! Es necesario tener siempre un emisor y receptor? Estoy realizando un proyecto y me gustaría poder enviar datos de un arduino a otro y viceversa.
    • Naylamp

      Naylamp 14/12/2016 Responder

      Hola, Si puedes usar un NRF24L04 como transmisor y receptor a la vez, usa radio.openReadingPipe() y radio.openWritingPipe() para poder recibir y enviar desde el mismo arduino. Para poder enviar, antes tienes que usar radio.stopListening(); y después de enviar radio.startListening(). Mejor dicho mientras envías no puedes escuchar datos.
  • Ronaldo Montelongo

    Ronaldo Montelongo 01/12/2016 Responder

    Hola, buenas tardes, me preguntaba donde puedo encontrar las librerias para el nrf24l01
  • Sebastian

    Sebastian 30/11/2016 Responder

    Hola, muy buen tutorial, muchas gracias por hacerlo. Me queda aun asi una duda. Cuando hablas de la funcion openReadingPipe, comentas que "Abre un canal de comunicación de lectura. La direccion se asigna a través de una matriz de 5 byte de longitud. Se pueden abrir hasta 6 canales de lectura pero sus direcciones solo pueden ser diferentes en el primer byte". No termino de entender eso de abrir 6 canales de lectura. En mi caso tengo que tener un arduino maestro que indique a los esclavos cuando prenderse, y que reciba luego datos del esclavo que está prendido. Me puedes ayudar con esto? Muchas gracias,
    Sebastian
    • Naylamp

      Naylamp 14/12/2016 Responder

      Hola Sebastián, cuando decimos que podemos abrir hasta 6 canales de lectura, significa que podemos escuchar como máximo a 6 NRF24L01 a la vez. En tu caso si todos van a enviar información a la vez tendrías que trabajar con varios canales abiertos, pero si los esclavos no van a transmitir a la vez, podrías programar en el maestro que cambie de dirección cada vez que va a escuchar la respuesta del esclavo correspondiente y usarías un solo canal.
      • Sebastian

        Sebastian 29/12/2016 Responder

        Hola, muchas gracias por tu respuesta. entiendo eso que me decis. Pero sucede que todos los esclavos tienen que esperar orden del maestro. El maestro le da una orden a uno solo de ellos, elegido aleatoriamente, y luego espera una respuesta por parte de ellos. Por empezar no se como llamar a los pipes, y tampoco se si se puede usar el mismo canal para leer y escribir. Si podrias ayudarme en esto en cuanto a codigo te agradecería muchisimo.
        Muchas gracias,
        Sebastian
      • Sebastian

        Sebastian 23/12/2016 Responder

        Me olvidé de comentar, el maestro no sabe de quién va a recibir datos. Saludos,
      • Sebastian

        Sebastian 23/12/2016 Responder

        Hola, muchas graciaspor la respuesta. El maestro da una misma indicación a todos los esclavos. Entiendo que para eso se deberia abrir un canal , por ejemplo un byte direccion[5] = {'c','a','n','a','l'}; tanto en el maestro (de escritura como en los esclavos (de lectura).
        Luego, los esclavos pueden en cualquier momento enviarle un dato al maestro. Y aca es donde surge mi duda. Como hago eso, en forma de código? No me termina de quedar claro eso. Disculpe la insistencia, si puede ayudarme se lo agradeceria mucho.
        Saludos,
        Sebastián.
  • Juan Carlos Calderon Castro

    Juan Carlos Calderon Castro 23/11/2016 Responder

    No es necesario conectar los pines

    5: SCK
    6: MOSI
    7: MISO

    del modulo cierto?
    En la programacion no tienen nada.

    • Naylamp

      Naylamp 26/11/2016 Responder

      Hola Juan, Si se tienen que conectar porque los pines SCK, MOSI y MISO son del SPI del arduino, y lo define el hardware, por eso dependiendo de la placa las conexiones son diferente. En el programa no se especifican porque esos pines no se pueden cambiar.
  • Cristian

    Cristian 23/11/2016 Responder

    hola buenas tardes muy buen post te felicito, te hago una consulta, si quiero activar 4 reles mediante esta implementacion como lo tendria que hacer? desde ya muchas gracias
    • Naylamp

      Naylamp 26/11/2016 Responder

      Estimado Cristian, podrías usar una de las variables para especificar los estado para los 4 relés, o usar una variable independiente para cada relé, por ejemplo en el receptor agregarías:


      radio.read(datos,sizeof(datos));

      if (datos[0]==1);{ digitalWrite(2,HIGH); }

      if (datos[0]==0);{ digitalWrite(2,LOW); }

      if (datos[1]==1);{ digitalWrite(3, HIGH); }

      …etc

      Y en el emisor enviarías los datos (0 o 1) respectivos.
      • Angel Castillo

        Angel Castillo 11/12/2019 Responder

        Hola podrías ser un poco mas especifico yo igual tengo una aplicación con reles.
      • Godo

        Godo 22/10/2017 Responder

        Hola, buenos días, estoy realizando algo similar a los reles, pero la expresión en el receptor.. if(radio.available()), siempre es verdadera, ya que cuando por ejemplo el emisor de desenergiza el receptor se queda con la ultima señal del emisor , en este caso un led prendido..cuando deberia apagarse ya que no tiene señal ..eh estado leyendo y mencionan algo sobre un registro spi que mantiene los datos del emisor ,, no los borra..
      • David

        David 28/05/2017 Responder

        Muy buena guía esta difícil de usar para los principiantes como yo cuando casi no hay documentación en español.

        Bueno a mi me sale una duda cuando he leido lo del if.

        Podria sustituir el if por switch case?, me refiero

        if (datos[0]==1);{ digitalWrite(2,HIGH); }
        if (datos[0]==0);{ digitalWrite(2,LOW); }
        if (datos[1]==1);{ digitalWrite(3, HIGH); }

        switch (datos)[]

        {
        case '1': // Si recibe un "1"
        Serial.println ("Pin 1 Activado"); // Responde "Pin 1 Activado"
        digitalWrite(2, HIGH); // Enciende "pin 1"
        break; // Finaliza el Case

        case '2': // Si recibe un "2"
        Serial.println ("Pin 2 Activado"); // Responde "Pin 2 Acivado"
        digitalWrite(3, HIGH); // Enciende el "Pin 2"
        break; // Finaliza el Case

        case '3': // Si recibe un "3"
        Serial.println ("Pin 3 Activado"); // Responde "pin 3 Activado"
        digitalWrite(4, HIGH); // Enciende "pin 3"
        break; // Finaliza el Case

        case '4': // Si recibe un "4"
        Serial.println ("Pin 4 Activado"); // Responde "pin 4 Activado"
        digitalWrite(5, HIGH); // Enciende "pin 4"
        break; // Finaliza el Case

        case '5': // Si recibe un "1"
        Serial.println ("Pin 1 Desactivado"); // Responde "pin 1 Desactivado"
        digitalWrite(2, LOW); // Apaga "pin 1"
        break; // Finaliza el Case

        case '6': // Si recibe un "2"
        Serial.println ("Pin 2 Desactivado"); // Responde "pin 2 Desactivado"
        digitalWrite(3, LOW); // Apaga "pin 2"
        break; // Finaliza el Case

        case '7': // Si recibe un "3"
        Serial.println ("Pin 3 Desactivado"); // Responde "pin 3 Desactivado"
        digitalWrite(4, LOW); // Apaga "pin 3"
        break; // Finaliza el Case

        case '8': // Si recibe un "4"
        Serial.println ("Pin 4 Desactivado"); // Responde "pin 4 Desactivado"
        digitalWrite(5, LOW); // Apaga "pin 4"
        break; // Finaliza el Case

        }


        Por favor perdonad que este desordenado.
        Gracias por adeantado
        Un saludo.
  • bj luis

    bj luis 17/10/2016 Responder

    buenas tengo el mismo problema que diego
    alguien ya puedo solucionarlo?
    • Naylamp

      Naylamp 26/10/2016 Responder

      Realiza las conexiones nuevamente, hubo un error en la imagen de conexiones que ya fue corregido. Saludos
      • alexresano

        alexresano 08/07/2020 Responder

        hola Naylamp.

        Primero que nada, muchas felicidades por el tutorial, es el mas completo que he visto.

        Tengo el problema de no recibir nada, lo estoy haciendo con placas uno (transmisor), sin problemas, pero el receptor (mega), no recibe nada, ya verifique las conexiones y estan bien, tengo alrededor de 15 dias en esto y no puedo, me podrias ayudar por favor, me urge solucionar el tema y de verdad no puedo.
  • Hanuka

    Hanuka 28/09/2016 Responder

    Oye disculpa ya te funciono para ver si puedes decirme a qué le modificaste que yo tengo el mismo error
  • Diego Marin

    Diego Marin 13/09/2016 Responder

    Hola, estoy intentando realizar esto, pero no consigo que me funcione. El emisor envia los datos, pero el receptor muestra:

    Dato0= 0.00 V, Dato1= 0.00 ms, Dato2= 0.00
    Dato0= 0.00 V, Dato1= 0.00 ms, Dato2= 0.00
    Dato0= 0.00 V, Dato1= 0.00 ms, Dato2= 0.00

    todo el tiempo esto. el codigo es el mismo que el suyo.
    • Daniel Camilo

      Daniel Camilo 05/01/2020 Responder

      Dure como 3 días tratando de hacerlo funcionar, hasta que di con el problema, unos tips compañeros, la alimentaciòn del circuito es sumamente importante, utilice dos arduinos nano conectados a un solo PC, tenia mi codigo bien, pero no me transmitia ni recibia datos, le puse una fuente externa de 3.3V y nada, cuando me dio por ponerle condensadores de un valor alto entre positivo y negativo, =) y empezo a funcionar.
      • alexresano

        alexresano 08/07/2020 Responder

        hola que tal, podrial colocar los valores y los diagramas de conexion?, tengo el problema de que si puedo transmitir, intermitentemente, cuando toco el cable de GND se estabiliza la transmision, pero de plano no recibo nada, ya verifique las conexiones y no tengo ningun error pero el caso es de que no recibo nada
        gracias
      • Eduardo Farias

        Eduardo Farias 08/07/2020 Responder

        Hola Daniel, llevo 4 días e hice lo mismo que tú describes, excepto lo de los condensadores y me dispongo a colocar uno a cada fuente que tengo alimentando las benditas NRF24, mi consulta es de cuanto es el valor de los condensadores que finalmente colocaste para que te funcionara de antemano gracias
    • PETER

      PETER 27/08/2019 Responder

      no me funciona amigo, el receptor me da esto
      Dato0= 0.00 V, Dato1= 0.00 ms, Dato2= 0.00

      que sucede que llega algo pero llega 0 en vez del valor

      quedo atento gracias
    • Naylamp

      Naylamp 26/10/2016 Responder

      La imagen ya fue corregida. Gracias Rodrigo por la observación
    • Rodrigo

      Rodrigo 25/10/2016 Responder

      A mi también me paso lo mismo pero ya esta arreglado. Solo me di cuenta que en la imagen de conexión en fritzing el pin "SCK" esta conectado a "GND" cuando tendría que ir conectado al pin "13" del Arduino.
      Entonces si lo conectaste basándote en la imagen tal vez sea ese error solo cambia los pines y estaria arreglado.
    • Naylamp

      Naylamp 14/09/2016 Responder

      Cuando creas el objeto RF24 radio (); si no se especifica los pines la librería toma los pines 7 y 8, de lo contrario trabaja con los pines que se especifica.
    • Naylamp

      Naylamp 14/09/2016 Responder

      Hola diego, si el código es exactamente el mismo entonces puede ser un problema de hardware o de la librería, vuelve a realizar tus conexiones y/o vuelve a instalar la librería.
      Apaga el emisor y en el receptor te debe mostrar “No hay datos de radio disponibles”.
      • JOSELE RENDON

        JOSELE RENDON 26/10/2017 Responder

        Disculpe, tengo exactamente el mismo problema no recibo los datos pero si los envió, ya revise las conexiones ya revise la librería e intente con otros tutoriales y diferentes códigos pero para todo es lo mismo, tengo un arduino uno y un Mega,recibo todos los datos en 0 y envió todos los datos correctamente, ya leí todos los comentarios y no encontré una solución, ya intente varias cosas pero no sale nada, la librería según yo es la mas reciente, podría ayudarme por favor?
        • pablo

          pablo 29/06/2021 Responder

          encontraste la solucion?
      • kendra

        kendra 26/11/2016 Responder

        Tengo el mismo probema el emisor envia los datos y el receptor o los lee y ya hice cambio de librerias. ¿me podria ayudar?
      • Diego Marin

        Diego Marin 14/09/2016 Responder

        he visto en algun sitio que la libreria tmrh20 tiene definidos los pines 7 y 8 para ce y csn respectivamente. lo he cambiado a 7 y 8 y sigue igual. y con 9 y 10 tambien me pasaba.
        • Emanuel Dimier

          Emanuel Dimier 10/05/2017 Responder

          Me funcionaba perfecto y de un momento para oto me aparecio el mismo problema. Pudiste solucionarlo?
          • Juan Perozo

            Juan Perozo 11/10/2017 Responder

            Como haria para enviar los datos de un sensor con salida digital, digitalRead? algo asi?
            • Cristian Diaz

              Cristian Diaz 15/11/2018 Responder

              hola que tal tenia el mismo problema, yo queria enviar valores de sensores, pero lo conecte a una fuente con mayor amperaje y me funciono, tal vez tu fuente no esta dando el amperaje que se necesita
Dejar un comentario
Deja su comentario

Menú

Ajustes

Crear una cuenta gratuita para usar listas de deseos.

Registrarse