Está en la página 1de 6

Proyecto NRF24L01 2.

4GHz Wireless Remote Control


En este proyecto haremos un control remoto, empleando el módulo NRF24L01 de 2.4GHz. Este
transceptor va a aportar mayor rapidez y fiabilidad en la transmisión/recepción de datos.

A diferencia del conjunto de 433MHz donde emisor y receptor son tarjetas diferentes, el módulo
NRF24L01 es un transceptor, es decir, el mismo módulo funciona como emisor o receptor, según
lo configuremos. Necesitamos por lo tanto dos unidades de esta tarjeta para hacer el control
remoto

Esquema del Transmisor


Para hacer el transmisor se empleara un módulo NRF24l01 y un Arduino NANO v3.

La conexión del transmisor necesita de 5 hilos, pues emplea el protocolo de comunicaciones SPI.
La alimentación de la tarjeta es a 3,3V y GND. Cuidado de no conectar a +5V o podriamos de
quedarnos sin transmisor

Esquema del Receptor


Como ves el receptor también necesita de cinco hilos de datos más la alimentación a 3,3V y GND.

Conectaremos seis leds a la salida del Arduino que se encenderán con cada uno de los pulsadores
del mando.

El funcionamiento es el siguiente. Cada vez que pulsamos uno de los botones del mando a
distancia, el Transmisor manda un mensaje. Este mensaje es recibido por el Receptor que lo
interpreta y activa la salida correspondiente encendiendo un led.

Para que el código compile correctamente son necesarias las librerías SPI y RF24.

Sketch para el Transmisor


/*
----------------------------------------------------------------
2.4GHz Wireless Remote Control with NRF24L01 Transceiver
Module

Basado en el original de http://www.prometec.net/nrf2401


Modificado por Angel M.
https://sites.google.com/site/angmuz/home

encender/apagar seis leds con switch/case


Sketch para el emisor
----------------------------------------------------------------
----
*/
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
int msg[1] ; // Array a transmitir
RF24 radio(9,10); // Creamos un objeto
radio del tipo RF2$
const uint64_t pipe = 0xE8E8F0F0E1LL; // Usamos este canal

void setup(void){
pinMode(2, INPUT); // SW1
pinMode(3, INPUT); // SW2
pinMode(4, INPUT); // SW3
pinMode(5, INPUT); // SW4
pinMode(6, INPUT); // SW5
pinMode(7, INPUT); // SW6
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);} // Abrir para escribir

void loop(void){
// SW1
if (digitalRead(2)==HIGH)
{
msg[0] = 1;
radio.write(msg, 1);
}
if (digitalRead(2)==LOW)
{
msg[0] = 2;
radio.write(msg, 1);
}
// SW2
if (digitalRead(3)==HIGH)
{
msg[0] = 3;
radio.write(msg, 1);
}
if (digitalRead(3)==LOW)
{
msg[0] = 4;
radio.write(msg, 1);
}
// SW3
if (digitalRead(4)==HIGH)
{
msg[0] = 5;
radio.write(msg, 1);
}
if (digitalRead(4)==LOW)
{
msg[0] = 6;
radio.write(msg, 1);
}
// SW4
if (digitalRead(5)==HIGH)
{
msg[0] = 7;
radio.write(msg, 1);
}
if (digitalRead(5)==LOW)
{
msg[0] = 8;
radio.write(msg, 1);
}
// SW5
if (digitalRead(6)==HIGH)
{
msg[0] = 9;
radio.write(msg, 1);
}
if (digitalRead(6)==LOW)
{
msg[0] = 10;
radio.write(msg, 1);
}
// SW6
if (digitalRead(7)==HIGH)
{
msg[0] = 11;
radio.write(msg, 1);
}
if (digitalRead(7)==LOW)
{
msg[0] = 12;
radio.write(msg, 1);
}

Sketch para el Receptor


/*
----------------------------------------------------------------
2.4GHz Wireless Remote Control with NRF24L01 Transceiver
Module

Basado en el original de http://www.prometec.net/nrf2401


Modificado por Angel M.
https://sites.google.com/site/angmuz/home

encender/apagar seis leds con switch/case


Sketch para el receptor
----------------------------------------------------------------
----
*/
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
int msg[1];
int command = 0;
RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(void){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}

void loop(void){
if (radio.available())
{

int done = radio.read(msg, 1);


command = msg[0];

switch(command){
case 1:
digitalWrite(2, HIGH);
break;
case 2:
digitalWrite(2, LOW);
break;
case 3:
digitalWrite(3, HIGH);
break;
case 4:
digitalWrite(3, LOW);
break;
case 5:
digitalWrite(4, HIGH);
break;
case 6:
digitalWrite(4, LOW);
break;
case 7:
digitalWrite(5, HIGH);
break;
case 8:
digitalWrite(5, LOW);
break;
case 9:
digitalWrite(6, HIGH);
break;
case 10:
digitalWrite(6, LOW);
break;
case 11:
digitalWrite(7, HIGH);
break;
case 12:
digitalWrite(7, LOW);
}
}
}

Este sketch nos va a servir para testear el conjunto emisor-receptor y verificar que funcionan
correctamente.

Una vez verificado el funcionamiento, disponemos punto de partida para hacer un control remoto
más elaborado.

También podría gustarte