Saltar al contenido
Blog Arduino, LabVIEW y Electrónica

Módulo de Radiofrecuencia nrf24l01

NRF24L01

¿Qué es un módulo de radiofrecuencia NRF24L01?

Los módulos de radiofrecuencia nrf24l01 son transmisores/receptores inalámbricos que podemos emplear como forma de comunicación entre procesadores como Arduino. El alcance va a ser determinado por el voltaje con el que alimentemos el módulo y la antena que usemos.

El módulo de radiofrecuencia nrf24l01 es un dispositivo inalámbrico de tamaño compacto, su uso es bastante sencillo y el consumo es mínimo su funcionamiento se encuentra dentro del rango de los 2.4 GHz. El funcionamiento del módulo de radiofrecuencia nrf24l01 radica en la recepción y envío de datos, el cual no se puede realizar al mismo tiempo. Por este motivo el costo es muy bajo en los modelos, teniendo un diseño sencillo y robusto. Idealmente se sugiere que se utilice con una pareja para tener un enlace completo.

Refiriéndonos al modulo que utilizaremos en el ejemplo el modulo de radiofrecuencia NRF24L01, podemos observar que es una opción económica además de ser compacto para conectar dos microcontroladores por medio de un enlace de radiofrecuencia. El modulo NRF24L01 es un chip que se puede implementar en comunicaciones inalámbrica, esto es debido a que se encarga de varios aspectos de la transmisión de manera automática.

Módulo de radiofrecuencia NRF24L01

¿Qué es la radiofrecuencia?

La radiofrecuencia, la cual se abrevia RF o se le llama también espectro de Radiofrecuencia, es la porción menos energética del espectro electromagnético, los cuales están entre 3 hercios (Hz) y 300 gigahercios (GHz). El espectro electromagnético se refiere a cómo se distribuye la energía de las ondas electromagnéticas. Este espectro queda determinado por las radiaciones que se emiten. Las ondas, por su parte, suponen la propagación de esta radiación, acarreando energía. Las radiofrecuencias se pueden dividir en frecuencias extremadamente bajas, altas, pasando por otros tipos de frecuencias en el medio.

Aplicaciones de un Módulo de Radiofrecuencia NRF24L01

El NRF24L01 es un módulo bastante completo para implementar comunicaciones inalámbricas, ya que se encarga de varios aspectos de la transmisión de forma completamente automática. Por ejemplo: dispone de verificación de la integridad de datos mediante CRC, retransmisión automática y direccionamiento de los nodos inalámbricos.

¿Te interesa un módulo de radiofrecuencia NRF24L01? Mercado Libre

Ventajas del Módulo de Radiofrecuencia NRF24L01

El módulo de radiofrecuencia NRF24L01 se pueden utilizar en cualquier proyecto que requiera envío y recepción de datos. En ocasiones su utilizan para llevar un control de información. Tienen la ventaja respecto a los demás módulos de conexión inalámbrica que su robustez y simplicidad lo hacen el mejor cuando no requieres enviar grandes masas de datos.

Si se usa en espacios abiertos y, con menor velocidad de transmisión, su alcance puede llegar hasta los 100 metros. Para mayores distancias, hasta 1000 metros, existen módulos provistos con una antena externa en lugar de una antena trazada sobre la misma placa, como se observa en la imagen.

Información técnica:

  • Chip NRF24L01
  • Frecuencia: ISM 2.4 GHz
  • Modulación: GFSK con control de ganancia automática
  • Control de datos: SPI
  • Velocidad: 250kbps, 1Mbps y 2Mbps (configurable)
  • Alimentación: 1.9V a 3.6V
  • Consumo:  Transmisión: 11.3mA, recepción: 13.5mA @ 2Mbps, 900nA en power down y 26uA en standby. 
  • Pin IRQ de interrupción para recepción
  • 100 metros en espacios abiertos

 

Características eléctricas del Módulo de Radiofrecuencia NRF24I01

Para la prueba de este dispositivo se utilizará el Módulo NRF24L01.

  • Alimentación de 900 nA en modo inactivo.
  • Regulador de voltaje integrado.
  • Entrega de 1.9 a 3.6V.
  • Tolerancia máxima de entrada de 5V.

Diagrama de conexión del emisor con arduino uno

Diagrama de conexión con un NRF24L01

Diagrama de conexión del receptor con arduino uno

Diagrama de conexión con un NRF24L01 y un servomotor

Código de programación en Arduino uno

Se enviará una señal escrita por nosotros donde vamos a determinar la posición del servomotor, a continuación te presentamos el código para el emisor y el receptor.

//PROGRAMA DEL EMISOR
// Se deben incluir las libreías que mostramos a continuación
#include <SPI.h>
#include <RF24.h>
 
//Llamaremos radio a las variables de acuerdo a los pines utilizados para el emimsor
  RF24 radio(7, 8); // CE, CSN
 
//IMatriz para la identificación del receptor con el emisor, generando una conexión fiel y única
  const byte identificacion[6] = "00001";
 
void setup() {
  Serial.begin(9600);
 //Iniciamos la variable radio
  radio.begin(); 
//Identificación de los valores a incluir.
  radio.openWritingPipe(identificacion);
//Establecemos la potencia de la conenxión, que sera menor al tener poca distancia entre receptor y emisor
  radio.setPALevel(RF24_PA_MIN);
 //Se establece el emisor
  radio.stopListening();
}
 
void loop() {
//Variable para los datos que vamos a incluir en la PC
  char caracter; 
 
  if (Serial.available() > 0) {
//Leemos el carácter que se introdujo
    caracter = Serial.read();
//Primero se ingresa la variable a envier y después la longitud
    if (sizeof(caracter) == 1) { 
        radio.write(&caracter, 1);
    }
  }
}
//PROGRAMA DE RECEPTOR
//Incluimos las libreías para el receptor y el servomotor que usaremos de ejemplo
#include <SPI.h>
#include <RF24.h>
#include <Servo.h>
//Llamaremos radio a las variables de acuerdo a los pines utilizados para el receptor
RF24 radio(7, 8); // CE, CSN
//IMatriz para la identificación del receptor con el emisor, generando una conexión fiel y única
const byte identificacion[6] = "00001";
 
Servo miServo; //Nombre para el servo
 
void setup() {
  miServo.attach(5); // Pin de control del servo
  Serial.begin(9600);
//Iniciamos la variable radio
  radio.begin();
//Identificación del receptor
  radio.openReadingPipe(0, identificacion);
//Establecemos la potencia de la conenxión, que sera menor al tener poca distancia entre receptor y emisor
  radio.setPALevel(RF24_PA_MIN);
//Establecemos el receptor
  radio.startListening();
}
void loop() {
  if (radio.available()) {
  char texto; 
//Creamos la matriz para el envío de datos
    radio.read(&texto, 1); 
//Declaramos comandos para determinar la posición del servomotor
  if (sizeof(texto)>0) {
    switch(texto) {
     case '1': miServo.write(0);
     break;
     case '2': miServo.write(20);
     break;
     case '3': miServo.write(40);
     break;
     case '4': miServo.write(60);
     break;
     case '5': miServo.write(80);
     break;
     case '6': miServo.write(100);
     break;
     case '7': miServo.write(120);
     break;
     case '8': miServo.write(140);
     break;
     case '9': miServo.write(160);
     break;
     case '0': miServo.write(180);
     break;
    }
  }
 }
}

Síguenos en nuestras redes sociales y si te gusto el contenido deja tu mensaje.