NRF24L01+PA+LNA módulo 2.4GHz con antena (ref: 0325)

4,25 

Hay existencias

SKU: 0325 Categorías: , Etiquetas: , ,

Descripción

Los módulos NRF24L01 son sistemas transmisor/receptor a 2,4GHz (125 canales de 1MHz: 2,4GHz a 2,525GHz). Esta banda del espectro de la radiofrecuencia es libre de uso gratuito. Son capaces de transmitir a velocidad de entre 250kps y 2Mbps. Además, resulta posible conectar entre sí hasta 6 dispositivos. Incluye circuitería de corrección de errores (CRC) y reenvío de datos.

Atención: como las redes Wifi funcionan a 2,4GHz, es recomendable hacerlos funcionar en las bandas superiores, a partir de 2,5GHz.

El control del módulo se realiza a través del bus SPI y se alimenta entre 1.9V y 3.6 V (pines tolerantes a 5V).

Este módulo incorpora un amplificador de potencia (PA: Power Amplifier) y filtro (Low Noise Amplifier); lo que, junto a la antena externa, le da un alcance extraordinario. El alcance teórico de este módulo, con antena externa, es de unos 700m. Este mismo módulo se fabrica con antena interna y reducida potencia, con un alcance teórico de unos 20m (NRF24L01). Recuerda que los alcances reales se ven afectados por múltiples factores. La alimentación juega un papel muy importante; si deseamos los alcances máximos debe ser capaz de suministrar de forma estable corrientes de 250mA.

Antena incluida.

Conexionado (UNO y NANO) – Ver imagen adjunta. En otros Arduino el SPI cambia de pines.

  • GND del NRF24L01: al pin GND de Arduino
  • VCC del NRF24L01: al pin 3V3 de Arduino
  • CE del NRF24L01: al pin D9 de Arduino
  • CSN del NRF24L01: al pin 10 de Arduino
  • SCK del NRF24L01: al pin 13 de Arduino
  • MOSI del NRF24L01: al pin 11 de Arduino
  • MISO del NRF24L01: al pin 12 de Arduino
  • IQR: Sin conectar

Código de ejemplo (emisor):

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// *** CONEXIONADO ***
#define CE_PIN 9
#define CSN_PIN 10
// El resto de pines son los propio del SPI, no hace falta definirlos aquí
byte direccion[5] ={'c','a','n','a','l'}; //Nombre para la dirección del canal por donde se va a transmitir 
RF24 radio(CE_PIN, CSN_PIN); // Se crea el objeto con nombre "radio"
float datos[3]; //Cadena de datos a enviar
// *** CONFIGURACIÓN ***
void setup() {
  radio.begin(); // Se inicializa el módulo
  Serial.begin(9600);  // Puerto serie a 9600bps (Monitor Serie)
  radio.openWritingPipe(direccion); // Se abre el canal para escribir
}
// *** CÓDIGO PRINCIPAL ***
void loop() { 
 // Se cargan los valores en la variable "datos". Podrían ser cualquier información...
 //... como la lectura de un sensor, una orden, etc.
 datos[0]=123;
 datos[1]=456;
 datos[2]=789;
 bool ok = radio.write(datos, sizeof(datos)); // Se envían los datos
  //reportamos por el puerto serial los datos enviados 
  if(ok)  { // Si la transmisión ha sido correcta, se muestran por el monitor serie los datos enviados
     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(2000); // Espera 2seg antes de repetir el proceso
}

 

Código de ejemplo (receptor):

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// *** CONEXIONADO *** #define CE_PIN 9 #define CSN_PIN 10
// El resto de pines son los propio del SPI, no hace falta definirlos aquí 
//Variable con la dirección del canal que se va a leer
byte direccion[5] ={'c','a','n','a','l'}; 
RF24 radio(CE_PIN, CSN_PIN); // Se crea el objeto con nombre "radio" float datos[3]; //Cadena de datos a enviar
// *** CONFIGURACIÓN ***
void setup() {  
  radio.begin(); // Se inicializa el módulo
  Serial.begin(9600); // Puerto serie a 9600bps (Monitor Serie)
  radio.openReadingPipe(1, direccion); // Se abre el canal para leer
  radio.startListening(); // Se escucha por el canal, a la espera de datos
}  
// *** CÓDIGO PRINCIPAL ***
void loop() {
 if ( radio.available() ) {    
     //Leemos los datos y los guardamos en la variable datos[]
     radio.read(datos,sizeof(datos)); // Se leen los datos recibidos y se guardan en "datos"
     // Se muestran por el Monitor serie los datos recibidos
     Serial.print("Dato 0= " );
     Serial.print(datos[0]);
     Serial.print(";  ");
     Serial.print("Dato 1= " );
     Serial.print(datos[1]);
     Serial.print("; ");
     Serial.print("Dato 2= " );
     Serial.println(datos[2]);
 }  else {
     Serial.println("No hay datos disponibles");
 }
 delay(1000); // Espera de 1 seg antes de seguir escuchando
}

También te recomendamos…