Comunicación unidireccional entre Arduinos con módulos NRF24L01

0
1130

En este post, vamos a discutir cómo realizar una comunicación inalámbrica unidireccional entre dos dispositivos Arduino utilizando los módulos NRF24L01. Estos módulos están basados en el chip de Nordic semiconductor NRF24 y son ideales para proyectos de comunicación inalámbrica debido a sus características únicas.

Primero, es importante mencionar que los módulos NRF24L01 se pueden alimentar con la salida de 3.3V de nuestro Arduino. Esto significa que no necesitamos preocuparnos por proporcionar una fuente de alimentación adicional, lo que hace que sea una opción muy conveniente.

Además, estos módulos tienen un consumo muy bajo, lo que significa que no van a consumir mucha energía, lo que es ideal para proyectos de baja potencia. Esto es especialmente importante si estás trabajando con dispositivos alimentados por baterías.

En cuanto a la velocidad de comunicación, los módulos NRF24L01 son muy rápidos, lo que significa que puedes enviar y recibir datos a altas velocidades. Esto es ideal para proyectos en los que la velocidad de comunicación es crítica.

Por último, pero no menos importante, es el precio. Los módulos NRF24L01 son muy económicos, lo que significa que puedes adquirirlos por muy poco dinero. Esto es especialmente importante si estás trabajando en un proyecto de bajo presupuesto.

En resumen, los módulos NRF24L01 son una excelente opción para proyectos de comunicación inalámbrica debido a su bajo consumo, alta velocidad de comunicación y bajo costo. A continuación os muestro algunas de las principales características de estos módulos:

    • Banda ISM de 2.4GHz de operación mundial.
    • Hasta una velocidad de datos de 2Mbps.
    • Operación a muy baja potencia.
    • Voltaje de alimentación de 1.9 a 3.6V.
    • ShockBurst™ Mejorado.
    • Manejo de paquetes automático.
    • Compatible con nRF2401A, 02, E1 y E2.
    • Distancia de alcance de 70~100mts en espacio abierto.

Los módulos NRF24L01 son transceptores, lo que significa que pueden ser configurados tanto como emisores como receptores, o incluso como ambos al mismo tiempo. Esta versatilidad los convierte en una de las mejores opciones para proyectos de comunicación inalámbrica, ya sea para domótica, robótica, juguetes, controles remotos o cualquier otro dispositivo inalámbrico que se te ocurra.

En el mercado existen varios modelos de módulos NRF24L01 de diferentes fabricantes, pero todos son compatibles entre sí. Todos operan en la banda de 2.4GHz, que es una banda libre de radiofrecuencia, lo que significa que no se requiere ningún permiso para usarlos en ninguna parte del mundo. Sin embargo, debido a que es una banda libre, también significa que no hay garantía de que no haya alguien más emitiendo en esta banda en las cercanías, lo que puede producir interferencias en nuestras emisiones.

Existe un modelo más completo, conocido como NRF24L01+PA+LNA, que además del chip NRF24L01, cuenta con un circuito amplificador de potencia (PA) y un circuito amplificador de bajo ruido (LNA), así como una antena SMA. Estos componentes adicionales permiten lograr un rango de hasta 1 Km. Sin embargo, es importante tener en cuenta que el alcance real puede variar dependiendo de las condiciones ambientales y la configuración del dispositivo. En futuros posts, discutiremos estos modelos más a fondo y cómo utilizarlos en proyectos de comunicación inalámbrica.

NRF24L01
Módulo NRF24L01 básico

El alcance o distancia entre los módulos NRF24L01 varía dependiendo del modelo que se esté utilizando y del entorno en el que se encuentren. El modelo básico con el que trabajaremos tiene un alcance aproximado similar al de una señal WIFI, es decir, menos de 100 metros en espacios abiertos. Sin embargo, es importante tener en cuenta que factores como paredes, ruido y condiciones ambientales pueden afectar el alcance real.

Además, es importante mencionar que aunque estos módulos tienen un bajo consumo en modo de espera, pueden requerir una corriente adicional al encenderse, especialmente en el caso del emisor. Esto puede causar problemas en el arranque o mal funcionamiento si la fuente de alimentación de 3.3V de Arduino no es suficiente. Una solución a esto es utilizar una fuente de alimentación externa de 12VDC/3000mA para suministrar una corriente adicional en todos los terminales. 

Además, para evitar interferencias eléctricas que puedan afectar el funcionamiento de los módulos NRF24L01, es recomendable conectar un condensador electrolítico de 10µF entre VCC y GND de cada módulo. A continuación se presenta una tabla que muestra la correspondencia de los pines de conexión del NRF24L01 con el Arduino UNO.

Tabla de conexiones del módulo NRF24L01

Para la realización del programa he utilizado las librerías y que podéis descargar en el este enlace . Antes de empezar a trabajar con los módulos NRF24L01, es importante asegurarse de que tienes las librerías necesarias descargadas e importadas al IDE de Arduino. Una vez importadas, debes cerrar y volver a abrir el IDE para que se carguen correctamente.

Los pines CE y CSN son programables, lo que significa que pueden ser configurados según tus necesidades. Por ejemplo, se pueden configurar como RF24 radio (9,10) si así lo deseas. Sin embargo, es importante tener en cuenta que el resto de los pines deben ser respetados ya que son los que el Arduino UNO tiene predeterminados para la comunicación SPI.

Además, es importante subir el programa correspondiente a cada Arduino teniendo en cuenta la función que debe realizar, ya sea como emisor o como receptor. Por ejemplo, si el Arduino se comporta como emisor, debe tener un pulsador con conexión PULL-DOWN en su pin digital 7. Por otro lado, si se comporta como receptor, debe tener conectado un LED a través de una resistencia limitadora de tensión de 220Ω en su pin digital 7.

NRF24L01
Montaje del sistema de comunicación unidireccional RF

Con los programas descargables en este post, es posible controlar el encendido y apagado de un LED mediante una conexión inalámbrica por radiofrecuencia (RF) entre dos Arduinos utilizando módulos NRF24L01. Cada vez que presionamos el pulsador conectado al Arduino Emisor, se envía mediante RF el valor de la variable estado_pulsador[0]. Si es la primera vez que se presiona, se envía un «1» y si es la segunda vez un «0», repitiéndose este proceso continuamente para encender o apagar un LED conectado al Arduino Receptor, que es el que recibe a través de RF el valor de la variable estado_pulsador[0].

Cuando la variable estado_pulsador[0] es «1», el LED conectado al Arduino Receptor se enciende, y cuando es «0», el LED se apaga. Sin embargo, si no se presiona el pulsador del Arduino Emisor, no se enviará ningún valor mediante RF y como resultado, el LED conectado al Arduino Receptor permanecerá apagado. Para obtener más información sobre este proceso, se recomienda revisar los comentarios incluidos en los programas.

Lista de Materiales
    • 2 Arduinos UNO Rev.3
    • Cable USB tipo A-B
    • 2 módulos NRF24L01
    • 2 Condensadores electrolíticos de 10µF y más de 5V
    • 1 Pulsador
    • Resistencia de 10KΩ
    • LED 5mm (de cualquier color)
    • Resistencia de 220Ω
    • Fuente de alimentación de 12VDC/3000mA (DC12300)
    • Protoboard
    • Cables de conexión

 

Código del programa

Emisor NRF24L01


Descarga del programa para el Emisor

Receptor NRF24L01

Descarga del programa para el Receptor

Video

Conclusión

En resumen, en este post se ha discutido cómo controlar el encendido y apagado de un LED mediante una conexión inalámbrica por radiofrecuencia (RF) entre dos Arduinos utilizando módulos NRF24L01. Se ha explicado cómo se envía y recibe información mediante RF, y cómo este proceso se utiliza para encender o apagar un LED conectado al Arduino Receptor.

Quiero agradecerle por leer este post y espero que haya encontrado útil e interesante la información proporcionada. Si tiene alguna pregunta o comentario, por favor no dude en compartirlo con nosotros. Estamos siempre dispuestos a ayudar y responder a cualquier pregunta.

0 0 votes
Article Rating
Suscríbete
Notify of
guest

0 Comments
newest
oldest most voted
Inline Feedbacks
View all comments