Transceptores NRF24L01 2.4GHz Radio Wireless How-To

El hacer que dos o más Arduinos sean capaces de comunicarse entre sí de forma de forma distante a través de una red inalámbrica abre muchas posibilidades:

  • Permite manejar sensores remotos de temperatura, presión, alarmas, etc…
  • Comunicarse con Robots de control y vigilancia desde 10 a 500 metros de distancia
  • Control remoto y monitorización de edificios cercanos y maquinaría.
  • Vehículos autónomos de todo tipo

Los transceptores NRF24L01 son una serie de módulos de radio de 2,4 GHz que se basan en el chip de Nordic Semiconductor nRF24L01+ (Detalles). El Nordic nRF24L01+ integra un completo transceptor RF de 2,4 GHz, un sintetizador de RF y toda la lógica de banda base incluyendo un acelerador de protocolo por hardware Enhanced ShockBurst™ con una interfaz SPI de alta velocidad para el controlador de la aplicación. El módulo Transceptor de baja potencia y corto alcance  (200 metros más o menos) está disponible en una tarjeta compatible con Arduino y con antena integrada por menos de $4 Ver aquí.

Rango de cobertura

El rango es muy dependiente de la situación de los transceptores y tienen mucho más alcance  cuando están en la línea de visión, al aire libre que en interior, con obstaculos como paredes y otros materiales. La distancia normal que indican los distintos proveedores para el módulo de baja potencia es  de unos 50 metros. Pero este valor es para espacio abierto entre unidades funcionando a 250KHz, en interiores, el alcance es mucho menor debido a las paredes, etc ..

Te sugerimos que pruebes dos unidades en sus ubicaciones reales antes de tomar una decisión de cual es la ideal para tu proyecto. Hay unidades con un preamplificador de antena para el receptor y un amplificador de potencia para el transmisor y cuentan con antena externa.

La comunicación entre una unidad de este tipo y varias unidades de bajo consumo producirá mucho mejor resultados que utilizar dos dos unidades de baja potencia. Cada situación es un diferente y es difícil de conseguir un número exacto y sin hacer pruebas reales.

Enlace a la hoja de datos del nRF24L01. No es necesario que la descargues, si embargo si quieres entender  más acerca de lo que se puede hacer con esta “pequeña” radio, descarga la hoja de datos. Te recomiendo que leas las páginas 7-8-9 (Para Información y Operaciones) y la página 39 (MultiCeiver, que permite a 6 Arduinos hablar con un Arduino maestro de forma organizada). Afortunadamente el mismo producto se encargará  a nivel de placa de muchos de los detalles físicos y eléctricos, de la impedancia de adaptación de antena, etc, esta librería se encarga de la inicialización de registro de un montón de detalles operativos.

Hay módulos adicionales que se añaden amplificadores de potencia al transmisor y preamplificadores al receptor para conseguir distancias más largas, aseguran que pueden llegar hasta 1 km. Estos módulos utilizan una antena externa que puede ser una una antena simple que esté directamente conectada o un cable conectado a una antena con más ganancia o directividad.

Así es como se ven los diferentes tipos:

2.4GHz NRF24L01+ Antenna Wireless Transceiver Module For Microcontrol
Esta es la versión de bajo consumo, con antena en zig-zag incorporada. A la izquierda se pueden ver los pins que se conectan a Arduino. Más adelante veremos la disposición de las patillas.

nRF24L01-LN-PA-2nRF24L01-LN-PA-1

Arriba está la versión con amplificador de potencia de transmisión y preamplificador para recepción. La antena de bajo coste es la que tiene colocada la unidad de la derecha. Los 8 pines se conectan con Arduino igual en todas las versiones de transceptor  y se utiliza el mismo software.

Aquí hay un enlace a un diseño de antena de Home-Brew:

Estos transceivers utilizan la banda de 2,4 GHz como muchos routers WiFi, algunos teléfonos inalámbricos, etc y no necesitan licencia.

Estos transceptores pueden tanto enviar, como recibir datos en “paquetes” de varios bytes a la vez. Incluyen una función de corrección de errores y reenvío y es posible comunicar una unidad con hasta otras 6 unidades similares al mismo tiempo.

Si embargo a pesar de su bajo coste estas unidades tienen una increíble complejidad interna, paro gracias a algunas personas con talento, que son los que han escrito han escrito las librerías para Arduino, los hacen fáciles de utilizar para nosotros. En estas páginas encontrarás enlaces a ejemplos y links a todas las bibliotecas de software libre que puedas necesitar. Todos ellos utilizan el mismo pinout como se muestra en el siguiente diagrama, que es una vista desde arriba:

24L01Pinout

Vista superior

NRF24L012_BottomView
Vista inferior

Detalles del Pinout y conexión con Arduino

Signal RF Module COLOR Arduino pin for
RF24 Library
Arduino pin for
Mirf Library
MEGA2560 pin
GND 1 Brown GND GND per library
VCC 2 Red 3.3V 3.3V per library
CE 3 Orange 9 8 per library
CSN 4 Yellow 10 7 per library
SCK 5 Green 13 13 52
MOSI 6 Blue 11 11 51
MISO 7 Violet 12 12 50
IRQ 8 Gray 2 * per library
  • NOTA: El Pin 8 IRQ no se utiliza por la mayoría del software, pero la biblioteca RF24 tiene un ejemplo que lo utiliza.

Los colores son para cable plano y se pueden utilizar como un código de color  para los ejemplos. Pronto vamos a añadir algunas fotos que muestren de forma sencilla como conectar los cables con estos colores.

NOTA: En estas unidades el VCC debe ir conectado a 3.3V NO a 5.0V, aunque el propio Arduino puede funcionar a 5,0 V y la señal I/O va a funcionar bien. Arduino UNO y versiones anteriores tienen una salida de 3,3 V que se puede utilizar para la versión de baja potencia de estos módulos, pero las versiones de alta potencia deben tener un suministro de 3,3 V por separado. Hace falta un regulador de 3.3V con potencia más alta para alimentar el módulo con  amplificador de emisión, no lo conectes directamente a tu Arduino.

Recuerda la conexión física entre el nRF24L01 y Arduino requiere 3,3 V, los 3 x pines SPI (SCK, SDI, SDO), un pin Chip Enable y un pin para Slave Selec.

La conexión del nRF24L01 a Arduino es así (Precaución, Arduino Mega tiene diferentes pines de SPI, ver más abajo),

Arduino UNO
         3V3 or 5V----VCC (3.3V to 7V in)
     pin D8-----------CE (chip enable in)
  SS pin D10----------CSN (chip select in)
 SCK pin D13----------SCK (SPI clock in)
MOSI pin D11----------SDI (SPI Data in)
MISO pin D12----------SDO (SPI data out)
         IRQ (Interrupt output, not connected)
         GND----------GND (ground in)

Para Arduino Mega:

         3V3 or 5V----VCC (3.3V to 7V in)
     pin D8-----------CE (chip enable in)
  SS pin D53----------CSN (chip select in)
 SCK pin D52----------SCK (SPI clock in)
MOSI pin D51----------SDI (SPI Data in)
MISO pin D50----------SDO (SPI data out)
         IRQ (Interrupt output, not connected)
         GND----------GND (ground in)

Una de las mejores librerías que he encontrado para el NRF24

Puedes utilizar el constructor NRF24() por defecto. Puedes anular los valores predeterminados para las patillas CSN y CE en el constructor NRF24() si deseas conectar el esclavo seleccionar para CSN otro pin que no sea el normal para tu Arduino (D10 para Diecimila, Uno, etc y D53 para Mega)

Atención: en algún Arduino como el Mega 2560, si se establece el pin como esclavo uno que no sea el pin SS habitual (D53 en Mega 2560), es posible que necesites configurar el pin SS habitual para ser una salida para forzar el  SPI de Arduino en modo maestro.

Hay más buenas librerías de software para nRF24L01 y además encontrarás varias páginas con algunos ejemplos:

Excelente RF24 Biblioteca de Maniacbug y muchos ejemplos:

RF24 librería y ejemplos: Muy buenos detalles y más funciones, como la corrección de errores y creación de redes.
RF24 Red de Información de Sistema: Una red de múltiples nodos en desarrollo
El blog de ManiacBug.

Librería Mirf Ejemplo: Una demostración simple

Grupo de Google especializado en NRF24-Arduino

Traducido y adaptado de arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo

8 pensamientos en “Transceptores NRF24L01 2.4GHz Radio Wireless How-To”

  1. Debo realizar un proyecto de comunicación bidireccional (dos modulos) con un alcance de 100 metros, donde exista alguna señal (sea un led o un vibrador), que indique a ambos modulos su proximidad con el otro modulo, (100mts, 50mts, 20mts), es decir que una vez un modulo se acerque a el otro 50mts se emita una señal a modo de alarma, asi mismo para 100mts y 20mts; saben si es posible???

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Eres humano? pon el resultado * Time limit is exhausted. Please reload CAPTCHA.