top of page

PROYECTOS NUOOR

Radio Control con Arduino y Antena nRF24L01

  • Foto del escritor: NuOor
    NuOor
  • 14 jul 2018
  • 3 Min. de lectura

Actualizado: 16 jul 2018


¿Quieres armar tu Drone y crees que el control es demasiado costoso? Bueno, te ayudaremos a crear tu propio radio control , el cual no sólo te ayudara a reducir costos en tu proyecto, sino que también podrás añadirle las funciones que deseas a tu Drone.

Este radio control consta de un Arduino pro micro y un modulo NRF24L01.




Pero, ¿qué es un nRF24L01?


El nRF24L01 es un transceptor (transmisor y receptor) diseñado para aplicaciones inalámbricas con un bajo consumo de potencia, ideal para ahorrar energía en tus proyectos, y una velocidad de frecuencia de 2.4GHz , por lo que no necesita licencia y es libre en todo el mundo. Con este pequeño pero potente modulo nRF24L01 podemos controlar nuestros proyectos de manera inalámbrica con un radio de hasta 250m en zona abierta y con el modulo nRF24L01+ PA+antena puedes aumentar el rango de control hasta 1km en zona abierta.

Este módulo opera con un voltaje entre 1.9 a 3.6 volts (voltaje entre VCC y GND) pero sus pines de comunicación soportan hasta 5 volts, voltaje que nos puede proporcionar el Arduino.

Entre sus pines de comunicación tenemos: los pines de comunicación SPI (MOSI, MISO y SCK ), el pin IRQ, que sirve para comunicarse con el procesador por medio de interrupciones, y los pines CE y CSN, que sirven para activar el chip en modo transmisor o receptor y para activar o desactivar el chip.


Ahora que ya conocemos un poco más sobre este maravilloso módulo, es hora de realizar algunas pruebas. A continuación, haremos un ejemplo en el cual enviamos los valores obtenidos de un joystick de un Arduino UNO(transimisor) y encendemos unos LED conectados a un Arduino nano(receptor). Para este ejemplo utilizaremos los siguientes productos: un Arduino UNO, un Arduino nano, un Joystick, unos LED con sus respectivas resistencias y un Protoboard.



Es Hora de Programar

Antes de empezar a programar necesitaremos instalar la librería RF24L01 , si no sabes como hacerlo puedes aprender a hacerlo haciendo click Aqui.

Ahora que ya tienes instalada la librería y las conexiones realizadas es hora de empezar con la programación, primero empezaremos con el código del transmisor y luego realizaremos el código del receptor.


/* Codigo para el transimsor

* Arduino UNO

* Pierre C.J.

* correo:nuoor.market@gmail.com

* @nuoortechnology

*/

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>


// en nuestro caso tenemos el "ce" conectado en la entrada 8 y "csn" en la entrada 9

//del arduino pero si las colocaste en otras entradas solo debes cambiar los valores


RF24 radio(8, 9); // (ce , csn)

const byte direccion[6] = "00001";//esta sera la direccion para que se puedan

//comunicar los arduinos, debe ser la misma en ambos

struct Lectura {

int ejeY;

int ejeX;

};


Lectura a;//damos una instancia de variable "a" y luego llamar a los miembros del struct


void setup() {

radio.begin();

radio.openWritingPipe(direccion);

radio.setDataRate(RF24_250KBPS);

radio.stopListening();

}



void loop(){

a.ejeY = map(analogRead(0),0,1023,0,255);//lectura del joystick en el eje x

a.ejeX = map(analogRead(1),0,1023,0,255);//lectura del joystick en el eje y

radio.write(&a, sizeof(Lectura));

}


/* Codigo para el receptor

* Arduino NANO

* Pierre C.J.

* correo:nuoor.market@gmail.com

* @nuoortechnology

*/



#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>


// en nuestro caso tenemos el "ce" conectado en la entrada 8 y "csn" en la entrada 9

//del arduino pero si las colocaste en otras entradas solo debes cambiar los valores


RF24 radio(10, 9); // (ce , csn)

const byte direccion[6] = "00001";


byte led1=5;

byte led2=6;

byte led3=7;

byte led4=8;


int valor_ejey=0;

int valor_ejex=0;


struct Lectura {

int ejeY;

int ejeX;

};


Lectura a ;


void setup() {


pinMode(led1,OUTPUT);

pinMode(led2,OUTPUT);

pinMode(led3,OUTPUT);

pinMode(led4,OUTPUT);

Serial.begin(9600);

radio.begin();

radio.setDataRate(RF24_250KBPS);

radio.openReadingPipe(0,direccion);

radio.startListening();

}


void loop(){

while ( radio.available() ) {

radio.read(&a, sizeof(Lectura));

valor_ejey=a.ejeY;

valor_ejex=a.ejeX;

Serial.print("Valor en el eje Y : ");

Serial.println(valor_ejey);

Serial.print("Valor en el eje X : ");

Serial.println(valor_ejex);


if (valor_ejey>220 && valor_ejex<130 && valor_ejex>100){

digitalWrite(led1,HIGH);

digitalWrite(led2,LOW);

digitalWrite(led3,LOW);

digitalWrite(led4,LOW);

}

if (valor_ejey<35 && valor_ejex<130 && valor_ejex>100){

digitalWrite(led1,LOW);

digitalWrite(led2,HIGH);

digitalWrite(led3,LOW);

digitalWrite(led4,LOW);

}

if (valor_ejex>220 && valor_ejey<130 &&valor_ejey>100){

digitalWrite(led1,LOW);

digitalWrite(led2,LOW);

digitalWrite(led3,HIGH);

digitalWrite(led4,LOW);

}

if (valor_ejex<35 && valor_ejey<130 && valor_ejey>100){

digitalWrite(led1,LOW);

digitalWrite(led2,LOW);

digitalWrite(led3,LOW);

digitalWrite(led4,HIGH);

}

}

}



Si deseas saber los valores recibidos por el Arduino Nano sólo te queda abrir el monitor serial y si deseas puedes aumentar o disminuir los valores.


Espero que te haya servido de mucho y recuerda que cualquier consulta que tengas no dudes en escribirnos a nuestro correo : nuoor.market@gmail.com y/o escribenos a travez de nuestras redes sociales @nuoortechnology .

 
 
 

Comments


bottom of page