Transceptor nRF24L01

El nRF24L01 es un chip de comunicación inalámbrica fabricado por Nordic Semiconductor. El chip es un transceptor (emisor y receptor) que opera en la banda libre entre 2.4 y 2.5 GHz y permite la comunicación simultanea hasta con 6 dispositivos, además el nFR24L01 incorpora toda la lógica necesaria para una comunicación robusta, como corrección de errores y reenvío de datos si es necesario, comunicándose con el microcontrolador a través del bus SPI.

En su versión básica se presenta como un módulo con los componentes necesarios para su funcionamiento incluida una antena integrada y el modelo más completo se presenta con un amplificador de potencia, un amplificador de bajo ruido y una antena SMA que le otorga un alcance superior a 1000 metros.

modulos nRF24L01Por sus prestaciones y bajo precio, estos módulos son ampliamente utilizados en aplicaciones inalámbricas. Disponer de 2 o más Arduinos capaces de comunicarse entre sí de forma inalámbrica abre muchas posibilidades de aplicación.

El módulo utiliza la banda de 2.4 GHz, es una banda de libre uso compartida por muchos otros dispositivos como routers Wifi, dispositivos BlueTooth, teléfonos inalámbricos, etc. El rango es de 2400 a 2525 MHz con un espaciado entre canales de 1 MHz, lo que nos da 125 canales numerados de 0 a 124. Wifi usa la mayoría de los canales inferiores por lo que sugerimos utilizar en nuestros proyectos los 25 canales más altos. El nRF24L01 incorpora funciones de corrección de errores y reenvío de datos, y es posible hacer que la unidad se comunique hasta con 6 unidades similares al mismo tiempo, enviando y recibiendo paquetes de varios bytes a la vez (de 1 a 32 bytes). Las características técnicas se encuentran en el datasheet del fabricante.

Banda: 2.4 GHz
Baud Rate: 250kbps-2Mbps
Alcance: 20-30 m
VCC: 1.9-3.6V
I max ~ 12mA
I standby: 32 μA
Interfaz: SPI

Funciona con una alimentación entre 1.9 y 3.6V ATENCION: alimentarlo con 5V dañaría el módulo aunque los pines de datos sí son tolerantes a 5V. Esto permite la conexión directa con nuestro Arduino usando la salida de 3.3V y el bus SPI como muestra el siguiente diagrama:

Usando un Arduino nano, este sería el esquema:

Si se encuentran problemas de funcionamiento intermitente probablemente se deba a la insuficiencia de corriente o ruido eléctrico en la fuente de alimentación de 3.3V, y puede solventarse incluyendo un condensador de 0.1 μF entre la linea de 3.3V y GND. En cualquier caso se recomienda una alimentación separada, sobretodo si trabajamos con la versión de alta potencia.

También se puede utilizar un adaptador o base que permite utilizar el módulo con tensiones de 5v

Para algunos proyectos puede ser interesante esta placa adaptadora que ya integra un Atmega48

Mencionar además que existe la versión nRF24L01+, compatible mecánica y electricamente con la versión original nRF24L01Ofrece mejoras significativas en el rendimiento en condiciones de coexistencia con fuentes de interferencias de banda ancha como WiFi. También agrega un modo de velocidad de datos de 250 kbps con -94dBm de sensibilidad que permite un mayor alcance.

Librerías

Para usar estos módulos disponemos de varias librerías, que describimos brevemente:

TMRH20: magnífica colección de librerías, donde nRF24 incluye las funciones básicas de nRF24L01(+) para Arduino, ATTiny y Raspberry Pi. Y las implementaciones de red están disponibles en RF24Network y RF24Mesh

MySensors: Crea una red Mesh entre sus sensores utilizando la librería de Arduino MySensors NRF24L01+. El sitio web MySensors también contiene instrucciones de compilación fáciles de seguir y ejemplos de Arduino para ayudarlo a crear sus propios sensores inalámbricos.

Mirf: Repositorio de la librería y otra versión de Mirf que incluye attiny cores: repositorio github

RadioHeadLibrería muy completa con soporte para muchos módulos RF diferentes, no sólo nRF24L01

AVRLib: La versión para Arduino de la librería tinkerer.eu. Funciona con los módulos Sparkfun nRF24L01+. Nota: Esta biblioteca admite un subconjunto pequeño (pero útil) de las funciones proporcionadas por el chip nRF24L01+. Véase el repositorio de Github

Ejemplos

En el primer sketch, utilizando la librería RF24, nos comunicamos con el módulo para obtener información sobre él

Obtenemos algo como esto:

Ahora que ya hemos comprobado que los módulos funcionan correctamente, preparamos un ejemplo práctico para lo que necesitamos 2 arduinos, uno para transmitir y otro de receptor. Primero el sketch del transmisor que envía repetidamente un breve mensaje de texto:

A continuación el sketch para el receptor, recibe un mensaje de texto enviado por el programa anterior y lo muestra por el Serial Monitor.

Videos y proyectos con nRF24L01

En este video (en inglés) se muestra un ejemplo de comunicación inalámbrica entre 2 arduinos usando el módulo nRF24L01 para controlar un servo.

La versión escrita en este enlace: https://howtomechatronics.com/tutorials/arduino/arduino-wireless-communication-nrf24l01-tutorial

Y en este otro artículo se muestra cómo hackear un mando de la playstation y convertirlo en inalambrico: http://fabioangeletti.altervista.org/blog/playstation-controller-hack-with-arduino-mini-n24l01/?doing_wp_cron=1514325401.9127249717712402343750

También te podría gustar...