Mostrando entradas con la etiqueta Comunicación bidireccional. Mostrar todas las entradas
Mostrando entradas con la etiqueta Comunicación bidireccional. Mostrar todas las entradas

lunes, 17 de octubre de 2016

Comunicación bidireccional entre Arduinos con módulos NRF24L01


En este POST realizaremos una comunicación bidireccional inalámbrica o “Duplex” por radiofrecuencia entre dos Arduinos, utilizando módulos NRF24L01, que como ya sabemos del POST anterior estos módulos son TRANCEPTORES, es decir,  mediante programación los podemos configurar como emisores o como receptores o configurarlos para que realicen ambas funciones, que es el caso que nos ocupa en este momento. La conexión de los módulos NRF24L01 a los Arduino se hace mediante SPI como siempre, aunque para diferenciar la programación de cada Arduino, los vamos a distinguir llamándolos Arduino “A” y Arduino “B”. La conexión del Hardware va a ser idéntica para los dos Arduinos, es decir, debemos de conectar un pulsador PULL DOWN al pin digital 7 y al mismo tiempo un LED al pin digital 6 de cada Arduino.


Montaje del sistema de comunicación bidireccional RF

A la hora de programar los dos Arduino, al ser una comunicación bidireccional,  tenemos que declarar esta vez dos canales (const uint64_t canal[2] = {0xF0F0F0F0E1LL,0xF0F0F0F0D2LL};). Por el canal “0” que es por el que escribe el Arduino “A” tiene que leer el Arduino “B”, y en contraposición, por el canal “1” que es por donde escribe el Arduino “B” tiene que leer el Arduino “A” como se muestra a continuación.

Canales para el sistema bidireccional RF

Una cosa muy importante es darle tiempo a los módulos para que reciban y emitan con un pequeño delay(20), aunque no os preocupéis demasiado porque ya está todo incluido dentro de los programas a descargar. El programa de cada Arduino lo primero que hace es escuchar a través del canal correspondiente para ver si le está llegando información mediante RF, es decir, el valor del estado del pulsador del otro Arduino para que en función de ese valor se encienda o apague el LED que tiene conectado, una vez verificado esto se deja de escuchar por el canal para proceder a enviar el valor del pulsador al otro Arduino, repitiéndose todo esto cíclicamente dentro de la función void loop(). Para más información acerca del funcionamiento de los programas os recomiendo leer los comentarios realizados dentro de la programación.



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.

·         2 Pulsadores.

·         2 Resistencias de 10KΩ.

·         2 LED 5mm (de cualquier color).

·         2 Resistencias de 220Ω.

·         Fuente de alimentación de 12VDC/3000mA (DC12300).

·         Protoboard.

·         Cables de conexión.



Código del programa:

 •          NRF24L01_Bidireccional_A:





•          NRF24L01_Bidireccional_B:




Video: