Proyecto NRF24L01
Proyecto NRF24L01
Proyecto NRF24L01
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
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
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.
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);
}
void loop(void){
if (radio.available())
{
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.