Sei sulla pagina 1di 18

16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

LOS MDULOS DE RADIO NRF2401


Usando radios para comunicar nuestros Arduinos

Home (Http://Www.Prometec.Net) Los Mdulos De Radio NRF2401

OBJETIVOS

Presentar los mdulos de radio NRF2401.

Describir la forma de conectarlos a nuestros Arduinos o similares.

Presentar un par de programas sencillos que nos permitan usarlos en nuestros proyectos para enviar
y recibir rdenes o datos.

En este primer ejemplo de programa la comunicacin ser unidireccional..

MATERIAL REQUERIDO.

Arduino UNO o equivalente (http://www.prometec.net/categoria-


producto/arduinos/).

(http://www.prometec.net/producto/arduino-uno/)

http://www.prometec.net/nrf2401/ 1/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

Un par de mdulos de radio NRF2401


(http://www.prometec.net/producto/nrf24l01/),

(http://www.prometec.net/wp-
content/uploads/2015/02/modulo-transceptor-rf-nrf24l01-
24ghz-arduino-pic-avr-atmel-8347-MLA20003406135_112013-
F.jpg)

Algunos cables de protoboard, preferiblemente Dupont macho/hembra


(http://www.prometec.net/producto/cables-dupont-macho-hembra/) ms una
protoboard (http://www.prometec.net/producto/protoboard-830/)

(http://www.prometec.net/tiendas-online-prometec/)

LAS CONEXIONES DE RADIO

Hemos visto en anteriores sesiones, que poder usar conexiones inalmbricas nos ofrece unas posibilidades a las que resulta difcil renunciar
cuando te acostumbras, y hemos hecho pruebas de conexiones tanto WIFI como Bluetooth.

Las WIFI nos permiten conectarnos a Internet con facilidad y podemos publicar pginas Web con valores de nuestros sensores y Arduinos o
simplemente acceder a estos Duinos y pasarles parmetros u rdenes. EL BlueTooth es ideal si queremos controlar nuestros Arduinos sin ms
controlador que un mvil que ya llevamos habitualmente en el bolsillo.

Pero tanto el BT como el WIFI tienen unas limitaciones considerables en lo que se re ere a la distancia a la que podemos usarlo. No pasa ms
all de 20 metros y eso en condiciones ptimas, pero no es raro que necesitemos ms distancia, digamos 50 m, 0 200 m, y porque no un
kilmetro.

Como siempre, cuando hay una necesidad en el mercado, surge alguien dispuesto a ofrecer una solucin en forma de electrnica, y en esta
ocasin vamos a presentar una solucin magni ca para el tipo de problema que planteamos. Un medio de dar rdenes a un Arduino o similar, a
una distancia que puede variar entre 50 metros y hasta digamos un kilmetro.

En esta sesin vamos a presentar y dar los primeros pasos con unos magn cos dispositivos de radio basados en el chip de Nordic
semiconductor NRF24, y que podemos encontrar en multitud de mdulos de diferentes fabricantes, compatibles entre s, por muy poco dinero,
que es lo que nos gusta en esta casa.

Este dispositivo NRF2401, integra en un nico chip, toda la electrnica y bloques funcionales precisos, para establecer comunicaciones RF
(Radio Frecuencia) entre dos o ms puntos a diferentes velocidades, (Hasta 2 Mb/seg) con correccin de errores y protocolo de reenvi
cuando es necesario, sin intervencin del control externo, lo que nos permite aislarnos de tobo el trabajo sucio y complicado relacionado con la
http://www.prometec.net/nrf2401/ 2/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
transmisin fsica.

Las caractersticas ms destacadas son:


Muy baratos, unos pocos dlares.

Operan en la banda de 2.4Ghz, que es de libre uso a nivel mundial.

Velocidad con gurable de 250kb, 1 Mb o 2Mb por segundo.

Muy bajo consumo en Stand By (Cuando no se usan).

El alcance depende de si hay visin directa entre los nodos, o por el contrario hay obstculos, pero nos
ofrece un mnimo de unos 20 m hasta un mximo e 80m en ptimas circunstancias, en el modelo bsico
con la antena integrada.

Podemos encontrar modelos con antenas ms e caces por un coste un poco superior (no mucho no os
asustis) que aumentan de forma importante el alcance hasta casi un km.

Si no queremos complicarnos la vida son muy fciles de usar y con gurar y adems son los enlaces ms
baratos que podemos encontrar para vincular nuestros Arduinos.

Compatibles con todo un rango de modelos de diferentes tipos y fabricantes.

LAS ONDAS DE RADIO

A nales del siglo XIX, James C. Maxwell estableci las leyes del electromagnetismo que describen la propagacin de las ondas
electromagnticas y la relacin que existe entre los campos magnticos y la electricidad (de ah el nombre) estableciendo una de las teoras
bsicas que regulan el funcionamiento del mundo moderno.

Todas la ubicuasemisiones de RF que nos rodean actualmente, fueron descritas por Maxwell y sus ecuaciones hace ya ms de 100 aos, y eso
incluye las emisiones de radio en AM y FM, las de televisiones, tanto analgicas como digitales, la conexin de tu telfono mvil y hasta las
conexiones WIFI y Bluetooth de las que hemos hablado previamente.

Las primeras emisiones de radio viables se atribuyen en 1901 Guillermo Marconi y son el precedente de toda la tecnologa de radio actual
apoyndose en los trabajos de Maxwell y Heinrich Hertz de quien deriva la unidad de medida de la frecuencia Hercios en espaol (Hertz en
ingls)


La descripcin de una onda de RF se realiza por su frecuencia, en Hercios, que indica el nmero de
pulsos por segundo a los que bate la seal, y por su amplitud que indica la intensidad.

Ya hemos hablado antes del espectro de frecuenciay vamos a destacar que en la prctica llamamos RF a las seales de frecuencia inferior a
los 300Ghz

http://www.prometec.net/nrf2401/ 3/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

(http://www.prometec.net/wp-content/uploads/2015/02/Image8766.jpg)
Como podis ver, el espectro de radiofrecuencias parece el camarote de los hermanos Marx,con los servicios de radio, TV, telefona y dems
por lo que es importante que los dispositivos que usemos emitan en el rango de frecuencias libres, es decir, en las que se permite que
cualquiera emita y reciba, sin interferir con la operacin normal de emisiones que operan los servicios sometidos a regulacin.

Nuestros humildes mdulos NRF2401 emiten a 2.4 GHz, lo que es banda libre y no requieren de ningn permiso para usarse en ninguna parte
del mundo (Por mucho que os quieran meter miedo con esto). Pero a cambio, no tenemos garanta de que no haya alguien ms emitiendo en
esta banda en las cercanas, lo que puede producir interferencias con nuestra emisiones.


Cuando sintonizas tu emisora FM en el dial, digamos 103.4, es porque la emisora paga a la
administracin para ser la nica que pueda emitir legalmente en esa frecuencia y de ese modo impida la
interferencia de otros servicios comerciales.

Por eso el espectro de radiofrecuencias est sometido a un estricto control administrativo, en todos los
pases, para evitar que seales en competencia inter eran entre si anulando la posibilidad de transmitir
informacin valida.

DIAGRAMA DE CONEXIN DE UN MDULO NRF2401

Estos mdulos usan el bus SPI para acelerar la conexin con el micro controlador por lo que vamos a ver la descripcin de los pines necesarios
para su conexin, en vista superior:

(http://www.prometec.net/wp-content/uploads/2015/02/pinout_nrf24l01.jpg)

http://www.prometec.net/nrf2401/ 4/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
Haydos libreras bsicas para el manejo de los NRF2401s en Arduino, la NRF24 que es la que vamos a usar aqu (Porque me parece ms
sencilla) y la librera MIRF.

PIN NRF2401 ARDUINO UNO MEGA

GND 1 GND GND

VCC 2 3.3 3.3

CE 3 9 9

CSN 4 10 53

SCK 5 13 52

MOSI 6 11 51

MISO 7 12 50

IRQ 8 2


Es importante recalcar que estos mdulos funcionan a 3.3V; EL fabricante previene contra conectarles a
5V so pena de achicharrarlos.

La librera MIRF espera que hagas unas conexiones de pines diferentes, as que no te conviene usar este
diagrama de conexin si pretendes utilizarla.

Tenis que comprender que los modelos UNO y MEGA usan diferentes pines para el control del bus SPI
y luego para rematar la faena, segn la librera cambian de nuevo.

Vamos con el esquema de conexin de protoboard:

(http://www.prometec.net/wp-content/uploads/2015/02/Untitled-Sketch_bb.png)
Para poder emitir y recibir con estos mdulos vamos a necesitar dos Arduinos con gurados con estas conexiones a los que llamaremos emisor
y receptor, porque inicialmente los programas van a ser distintos.

Empezaremos haciendo la prueba ms sencilla posible. Uno de ellos, el emisor, radia una serie de nmeros y el otro, el receptor, los recibe y
muestra en la consola serie.

http://www.prometec.net/nrf2401/ 5/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
Aunque estos mdulos consumen muy poco en uso o en Stand by, pueden absorber en el arranque ms
de lo que la fuente de 3.3V de Arduino puede proporcionar, lo que impide que arranque correctamente o
que tenga un funcionamiento errtico, especialmente en el caso del emisor.

Si buceis en Internet, veris cantidad de pginas recomendndoos usar unos condensadores entre los
pines tal y cual.

Aunque tomar precauciones nunca sobra, los vagos somos incapaces de hacer algo as, mientras no se
demuestre que es imprescindible.

En mi caso he comprobado que la manera ms sencilla de evitar problemas (Que los he tenido) ha sido
asegurarme de que el emisor tiene una alimentacin correcta y abundante, mediante un alimentador
externo de los tpicos. Esta sencilla precaucin ha hecho que en mi caso los problemas se reduzcan
hasta desaparecer.

(http://www.prometec.net/wp-content/uploads/2015/02/power.jpg)

PROGRAMANDO LAS RADIOS

Vamos a montar un primer ejemplo en el que crearemos dos programas diferentes que corren en dos Arduino diferentes. El primero ser el
programa emisor, que radiarnmeros en secuencia desde 0 hasta el 255, y el segundo el programa receptor, que nos permitir comunicarnos
en una nica direccin inicialmente.

Vamos con el programa emisor y para ello necesitamos la librera RF24-master (http://www.prometec.net/wp-content/uploads/2015/02/RF24-
master.zip), cuya ltima versin siempre podis encontrar en https://github.com/maniacbug/RF24 (https://github.com/maniacbug/RF24).
Empezamos con unos cuantos includes, necesarios para el NRF2401 y para el bus SPI:

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>

Despus tenemos que crear una instancia de la radio, indicndole los pins de control, y la siguiente lnea indica el pipe a utilizar, que podemos
imaginar como uno de los diferentes canales en los que la radio puede operar.

RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;


El pipe es un numero de 64 bits, lo que indicamos con el tipo uint64_t , entero sin signo de 64 bits, y
por si no estuviera su cientemente claro, le indicamos al compilador que se trata de un LL al nal del
nmero, o sea LongLong = 64 bits.

Y ahora basta con inicializarla en el setup:

http://www.prometec.net/nrf2401/ 6/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

void setup(void)
{ Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
}

En el programa principal, simplemente vamos incrementando una variable para luego transmitirla por la radio

int msg[1] ;

void loop(void)
{ for (int x=0;x<2255;x++)
{ msg[0] = x ;
radio.write(msg, 1);
}
}

Aqui os dejo el programa completoProg_79_1_Emisor (http://www.prometec.net/wp-content/uploads/2015/02/Prog_79_1_Emisor.rar)

En cuanto al programa receptor Prog_79_1_Receptor (http://www.prometec.net/wp-content/uploads/2015/02/Prog_79_1_Receptor.rar), tenemos


que empezar incluyendo las mismas libreras, y un array mnimo para el entero a recibir, e instanciamos la radio como radio

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>

RF24 radio(9,10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int msg[1];

El setup es casi el mismo.

void setup(void)
{ Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
}

Pero en vez de usar radio radio.openWritingPipe(pipe) para escribir, usamos radio.openReadingPipe(1,pipe) para poder leer y despus
radio.startListening() nos permite comenzar la escucha. Y ya solo falta el setup con el programa que recibe:

void loop(void)
{ if (radio.available())
{ int done = radio.read(msg, 1);
Serial.println(msg[0]);
}
}

Se nos ha vuelto a perder la parte difcil, porque no me digis que no es sencillo y elegante. El tema no da para ms. Si corris los programas
en Arduinos diferentes, la salida del receptor debera ser algo as:

http://www.prometec.net/nrf2401/ 7/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

(http://www.prometec.net)

TIENDA (HTTP://WWW.PROMETEC.NET/TIENDA/) ARDUINO (HTTP://WWW.PROMETEC.NET/INDICE-TUTORIALES)


(http://www.prometec.net/wp-content/uploads/2015/02/img1.png)
Programa por el que no ganaremos ningn premio, pero que ilustra a la perfeccin como emitir datos numricos uno a uno entre emisor y
RASPBERRY
receptor PI (HTTP:/
mediante radio /WWW.PROMETEC.NET/INDICE-RASPBERRY-PI/) IMPRESORA
frecuencia. Si habis llegado hasta aqu, enhorabuena 3D (HTTP:/
acabis /WWW.PROMETEC.NET/3D-INDICE/)
de emitir por radio, vuestro primer mensaje.

Bueno, est bien. Enviar un carcter esta chupado, pero Que pasa si hay que enviar un String completo, seguro que la cosa se complica?
FORO (HTTP://WWW.PROMETEC.NET/FOROS-PROMETEC/) CONTACTO (HTTP://WWW.PROMETEC.NET/CONTACT/)
Pues s. Para enviar un mensaje de texto tenemos que cambiar un par de cosas.Primero de nir un array de char su ciente para que quepa el
mensaje:

char msg[16]="Prometec.net.\n" ;

Y despus cambiar el loop para que envi los 16 caracteres

void loop(void)
{
radio.write(msg, 16);
}

Y por supuesto hay que cambiar el programa del receptor

void loop(void)
{ if (radio.available())
{ int done = radio.read(msg, 16);
Serial.println(msg);
}
}

Basta con llamar a radio.write o radio.read con el array como parmetro y pasarle el nmero de caracteres que queremos enviar o recibir. Aqu
tenis el emisor y el receptor modi cados.

Emisor_String (http://www.prometec.net/wp-content/uploads/2015/02/Emisor_String.rar)

Receptor_String (http://www.prometec.net/wp-content/uploads/2015/02/Recptor_String.rar)

He visto en Internet un programa que me encant, porque lo que hace es colocar un LED rojo y uno Verde en los pines 3 y 5 de Arduino y
despus emite nmeros entre 0 y 255 en el emisor mientras en el receptor corre un programa que controla que los nmeros se reciban en el
orden adecuado.

Cuando es as, ilumina brevemente la luz verde, en caso contrario la roja. Lo bueno de esto es que os sirve como ejemplo de si tenis una
buena recepcin o no, ya que segn el baile de los LEDs tenis una idea bastante aproximada de los errores de trasmisin que tenis en vuestra
zona.

Usad el programa Prog_79_1_Emisor (http://www.prometec.net/wp-content/uploads/2015/02/Prog_79_1_Emisor.rar)para el emisor y este


programa en el receptorProg_79_4 (http://www.prometec.net/wp-content/uploads/2015/02/Prog_79_4.rar).

http://www.prometec.net/nrf2401/ 8/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

RESUMEN DE LA SESIN

Presentamos las unidades de radio NRF2401, que son ideales para muchos proyectos, porque son
buenas, bonitas y baratas.

Vimos como conectarlas a nuestros Arduinos con con anza usando el SPI y un par de pines.

Descargamos y usamos la librera RF24 para el manejo de las radios y vimos los comandos bsicos
para enviar y recibir.

Hicimos un montaje de prueba con una comunicacin en una nica direccin.


Anterior Siguiente
(http://www.prometec.net/hlk- (http://www.prometec.net/duplex-
rm04//) nrf2401)
(https://www.facebook.com/prometecnet-
1541207239447373/timeline/)

COMENTARIOS MS VIEJOS (HTTP://WWW.PROMETEC.NET/NRF2401/COMMENT-PAGE-3/#COMMENTS)

(176) COMMENTS

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=22615#Respond)
Roberto (http://www.prometec.net/nrf2401/) 30 Jun 2017
Creo qu ya se por que tengo el error de void value not ignored as it ought to be, tengo instalada la libreria RF24-master pero la
hecha por TMRh20 en lugar de la de manicbug, ya la tenia instalada anteriormente, pero con la nueva versin de arduino no estn
las carpetas de las libreras instaladas en la carpeta libraries del disco duro, solo estan las que son por default en arduino ide y no
se como desintalarla, la instale con el gestor de librerias de arduino, y aunque copio la libreria de manicbug a la carpeta libraries me
sigue dando el mismo error, supongo que por con icto de librerias, como la pudo desinstalar e instalar la de manicbug?

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=22484#Respond)
Alberto 25 Jun 2017
Hola;
Mi nombre es Alberto. Adquir hace unos meses el GPS Shields DUINOPEAK as como el mdulo NRF2410 en su tienda (atencin
exquisita). Ambos funcionan perfectamente por separado, pero cuando pongo el Shield del GPS en un arduino UNO y a travs de
este Shield conecto los pines del NRF2410 no consigo que funcione. Si programo un sketch para transmitir datos con NRF2410 en

http://www.prometec.net/nrf2401/ 9/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
arduino UNO funciona correctamente, si trato de conectar los nes de este mdulo al Shield del GPS el programa ya no funciona.
He probado a encender un LED utilizando el Shields del GPS a modo de protoboard y funciona correctamente. qu estoy haciendo
mal?. Muchas gracias.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=22436#Respond)
Roberto (http://www.prometec.net/nrf2401/) 21 Jun 2017
Hola, en el programa del receptor que publicaste me sale una falla en la linea 30 al compilar, me dice void value not ignored as it
ought to be, no se donde se pueda encontrar el error, PD: no he podido hacer funcionar estos mdulos todava, agradecera tu
orientacin

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=22479#Respond)
Ivan (http://www.prometec.net/members/ivan/) 25 Jun 2017
Hola Roberto, he descargado el programa y no me da ningn error al compilarlo. Prueba a actualizar la libera y si no te
funciona copianos el error completo a ver si podemos ayudarte. Un slaudo.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=22293#Respond)
Cristian (http://www.prometec.net/nrf2401/) 13 Jun 2017
Estimados los e probado y tengo varias libreras, me podran decir si en estos mdulos la velocidad de transmisin afecta la
distancia? es decir a menor velocidad es cierto que mayor distancia? lo otro e probado dos libreras la nRF24L01.h, que va junto con
la RF24 y e probado la nRF24L01p.h, esta ultima muy facil de usar, alguien tiene datos al respecto con relacin a distancia, en lo
personal lo que mas e logrado conseguir son 500 mts pero nunca el kilmetro que promete
solo utilizo los que vienen con ampli cador y antena externa.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=22308#Respond)
Ivan (http://www.prometec.net/members/ivan/) 14 Jun 2017
Hola Crsitian, pues la verdad es que yo no lo he llegado a probar hasta tan lejos, a ver si alguien puede aportarnos
algo. Un saludo.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=21499#Respond)

http://www.prometec.net/nrf2401/ 10/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
Erik 09 May 2017
como puedo saber si mis mdulos funcionan?, son el modelo con antena, los prob como scaner con el ejemplo de la librera nrf24 y
me manda varios datos, pero a la hora de probar emisor y receptor no funciona, ya veri que las conexiones y el cdigo y no logro
ver cual es la falla, ya alimente con fuentes externas los arduinos, a lo que me re ero es que si hay alguna forma de saber si estn
daados mis mdulos, medir alguna resistencia o probar continuidad en algn lugar, ayuda por favor.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=21590#Respond)
Ivan (http://www.prometec.net/members/ivan/) 11 May 2017
Hola Erik, estos mdulos no tienen ningn led testigo que nos haga saber que funciona. Si por separado funcionan, es
de suponer que funcionan bien, pero tampoco te puedo decir mucho ms. Yo estoy utilizando un par de ellos para un
coche RC y no me han dado problemas.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=21470#Respond)
Robert (http://www.clubaeromodelismecalella.com) 09 May 2017
Buenas,

Muchas gracias por los cdigos, llevo dos das jugando como un nio pequeo con los mdulos. Sin embargo, llevo cuatro horas
pelendome con el que funciona de emisor. Lo he insertado en un viejo cdigo que tena de generacin PPM y, a los pocos
segundos de enviar tramas, se queda como bloqueado y no vuelve a funcionar hasta reiniciar el Arduino emisor. He puesto varios
chivatos para que me digan en qu parte de las interacciones se queda y es dentro del loop justo al hacer unas cuantas
radio.write(). Se para no solo la emisin, tambin el programa entero.

Muchas gracias por vuestra ayuda! Un saludo desde Girona.

Robert.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=21517#Respond)
Ivan (http://www.prometec.net/members/ivan/) 09 May 2017
Hola Robert, puede ser que la alimentacin durante la transmisin sea insu ciente, porque es el momento que tiene
mayor pico de consumo, aunque lo digo un poco as a huevo. A ver si puedo hacer aluna prueba y te comento. Un
saludo.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=21463#Respond)
Antonio (http://www.prometec.net/nrf2401/) 09 May 2017
Buenas!

Quera comentar un suceso que me trae un poco desquiciado desde hace tiempo.

http://www.prometec.net/nrf2401/ 11/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
El caso es que estoy utilizando los mdulos de radiofrecuencia tanto con arduino unos como con nanos (stos ltimos chinos).
Cuando subo el programa emisor al arduino uno y empleo los nanos como receptores todo funciona segn lo esperado, pero cuando
quiero usar los arduinos nanos como emisores, solo me envan uno o dos paquetes de datos en los instantes posteriores a hacerles
reset y posteriormente no envan nada.

He probado comprando otros mdulos de rf por si era ese el problema, pero no he conseguido solucionarlo.. alguien sabe que es lo
que sucede??

Saludos y buen post.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=21519#Respond)
Ivan (http://www.prometec.net/members/ivan/) 09 May 2017
Hola Antonio, puede ser que la alimentacin durante la transmisin sea insu ciente, porque es el momento que tiene
mayor pico de consumo, aunque lo digo un poco as a huevo. A ver si puedo hacer alguna prueba y te comento. Un
saludo.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20866#Respond)
miguel (http://migmor32@terra.com) 19 Abr 2017
Hola, soy novato en Arduino, y viendo los modulos nRF24L01 he pensado que se podran usar para hacer un mando para controlar
un robot que estoy haciendo.
He probado el programa que enva nmeros de 1 a 255 de un arduino a otro y veo que funciona muy bien.
El problema es que tengo que enviar muchos cdigos distintos para poder manejar las distintas partes del robot y he pensado que si
utilizara un teclado 34 seria fcil enviar hasta 128 codigos distintos.
El problema que me encuentro es que no se como pasar los datos char que me da el teclado para poder enviarlos por el nRF24L01
a pesar de que estoy hacindole una conversin de cadena int con el comando atoi. Si me aparecen como caracteres y enteros en
el modulo emisor, pero no recibe nada el modulo receptor.
Debo de estar equivocndome en alguna parte.
Desearia si es posible me ayudase para poder poner en orden mi programa.
Gracias de antemano.Miguel
P.D. El programa que he modi cado es asi:
//Envia 3 pulsaciones de teclado 34 como numero por nRF24L01
#include
#include
#include
#include
#include

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
String clave=000;
char inicia_clave=#;
const byte Filas=4;
const byte Colum=3;
char teclas[Filas][Colum]={
{1,2,3},
{4,5,6},
{7,8,9},
{*,0,#}
};
byte pinFilas[Filas]={8,7,6,5};// he dejado libre la linea 9 y 10 pues
byte pinColum[Colum]={4,3,2};// son las que usa nRF24L01
Keypad Teclado=Keypad(makeKeymap(teclas),pinFilas,pinColum,Filas,Colum);
int numero;

http://www.prometec.net/nrf2401/ 12/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
String strNumero;
void setup(){
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe); // Abrir para escribir
Serial.println(Empezamos);
Serial.println(Pulsar # antes del numero);
}
void loop(){
strNumero=0;
int n=0;
char tecla=Teclado.getKey();
if(tecla !=0){
if(inicia_clave==tecla){
while(n<3){
clave[n]=Teclado.waitForKey();
strNumero=strNumero+clave[n];
n=n+1;
}
Serial.print("cadena= ");
Serial.println(clave);
numero=strNumero.toInt();
Serial.print("numero= ");
Serial.println(numero);
msg[0] = numero;
radio.write(msg, 1);
}
}
}

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20941#Respond)
Ivan (http://www.prometec.net/members/ivan/) 21 Abr 2017
Hola Miguel, en principio deberas poder enviar un array de char usando estos mdulos, as que puedes convertir la
cadena a un array de char y enviarlo.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20824#Respond)
Javier 18 Abr 2017
Hola, Buenos das.
tengo dentro de un recogedor de persiana, un arduino nano, dos rels y el NRF24, todo funciona correctamente, pero a veces
cuando pasa corriente por el rel para el motor de la persiana el NRF24 se queda sepia y tengo que reiniciar, debera de poner un
condensador al NRF24 o intentar aislar los cables que vienen del motor ?, dentro del recogedor de la persiana tengo es espacio
justo.

Gracias de antemano.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20826#Respond)
admin (http://www.prometec.net/members/admin/) 18 Abr 2017

http://www.prometec.net/nrf2401/ 13/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
Hola Javier, Hay varias cosas que puedes probar a ver que pasa. Lo del condensador siempre viene bien aunque habria
que ir probando valores a ver que pasa. La otra es eparar la alimentacion de la electronica y el motor para aislarlos lo
mejor posible

Javier (http://web) 20 Abr 2017


Hola, Buenas tardes.
He revisado la alimentacin y esta todo correcto, el problema esta en el motor que tengo conectado al
Reply
rel es un motor de persiana de solo 140 W, pero genera bastante ruido elctrico, exactamente siempre
cuando el rel desconecta el motor, se me queda el NFR24 bloqueado, la duda que tengo sera un
(Http://Www.Prometec.Net/Nrf2401/?
condensador en los polos del rel, pero de 100nf o 100uf, el rele es el tpico de 10A.
Replytocom=20916#Respond)
Saludos

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20586#Respond)
SUSO (http://www.prometec.net/members/susogf/) 09 Abr 2017
Hola
Y he realizado una conexin con la librera NRF24 y funciona correctamente para enviar y recibir con un canal pero quera saber
cmo podra abrir dos canales distintos de emisin y luego elegir en el receptor el canal del que quiero los datos a modo de Mando
de radiocontrol
Muchas gracias

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20620#Respond)
admin (http://www.prometec.net/members/admin/) 10 Abr 2017
Hola Suso, no he hecho esa prueba pero no deberia ser muy complicado usando diferentes pipes

SUSO (http://-) 10 Abr 2017


Es que la verdad no tengo claro la necesidad del segundo canal de transmisin ya que lo que estoy
haciendo es un robot con un brazo (estilo andrmina) y lo que trasmito son velocidad, direccin y
Reply
movimientos del brazo. Entonces en realidad ahora mismo lo que hago es enviar a travs de un canal dos
matrices de valores enteros, en la primera mando los datos de velocidad y direccin y en la segunda los
(Http://Www.Prometec.Net/Nrf2401/?
valores de los ngulos de los servos del brazo.
Replytocom=20623#Respond)
Pero no se, que opinas?
Quizs parece ms acadmico crear dos canales, uno para velocidad y direccin y otro para el brazo o
incluso tres, uno para velocidad, otro para direccin y el tercero sera para el brazo. No se las ventajas
que ofrecera, pero tericamente as funcionara un mando de radio control. Lo que sucede es que no s
como en la libreara del NRF21 indicar que canal estoy usando para el envo y luego en recepcin cual es
el canal que estoy recibiendo. A ver si alguien tiene idea de como indicar el nmero de canal que emite y
el nmero de canal que recibe. Con uno, segu tu tutoral y la verdad es que va bien.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20628#Respond)
Jess Snchez (http://www.prometec.net/members/suso/) 10 Abr 2017
Hola tocayo.

http://www.prometec.net/nrf2401/ 14/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
Si usas un mdulo emisor y un mdulo receptor en comunicacin unidireccional, no tienes
porqu crear ms canales para enviar ms datos (que creo que no sea posible). Por el mismo
canal envas todos los datos que quieras empaquetados en un array, que luego en el receptor
eliges qu dato quieres utilzar. En varios sketchs de prueba he podido enviar sin problemas
datos de temperatura, humedad y valor analgico, incluido decimales.

Si tuvieras varios nodos o mdulos enviando informacin a un solo receptor, entonces s


tendras que abrir un canal para cada emisor, lo que se llama una red en estrella o Multiceiver,
pero creo que este no es tu caso.

Saludos.

suso (http://-) 10 Abr 2017


Muchas gracias Jess, pues har lo que dices, que adems funciona
perfectamente.

Jess Snchez (http://www.prometec.net/members/suso/) 10 Abr 2017


Por nada.
Adems, tienes parmetros para modi car la potencia, los reintentos, los canales
de RF, la velocidad con lo que puedes ajustar bastante para no perder
paquetes.

Saludos.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20555#Respond)
Antonio 07 Abr 2017
Esta antena tambien se puede usar con arduino micro o nano???

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20629#Respond)
Jess Snchez (http://www.prometec.net/members/suso/) 10 Abr 2017
Hola Antonio.
Sin problema. Un Micro y un Nano trabajan igual que un UNO.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20491#Respond)
william sanchez (http://yv5jau@msn.com) 06 Abr 2017
sera posible conectar a estos modulos las lectoras r d-rc522 enviar los datos a la placa aruino y recibir respuesta de validacion de
usuario y activar un relee para abrir puerta te agradesco tu respuesta

http://www.prometec.net/nrf2401/ 15/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20496#Respond)
Ivan (http://www.prometec.net/members/ivan/) 06 Abr 2017
No veo por qu no, y sera un proyecto muy chulo para por ejemplo controlar la apertura de una puerta de garaje, que
estaramos encantados de publicar en prometec. Un saludo.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20115#Respond)
Charlie 29 Mar 2017
Hola, buenas
El ejemplo del 123456 me funciona perfecto teniendo los dos arduinos conectardos va USB al pc (un MacBook en mi caso), pero
cuando empiezo a cambiar el modo de alimentacin empieza a fallar muchsimo. Incluso falla con un alimentador para arduino de 5v
comprado en esta web. Voy a montar un condensador tal como pone en alguna web que he visto, de que capacidad uf sera lo
ideal, de 10uf?

Gracias por toda la informacin vertida en esta web, sois un ejemplo de como delizar clientes. Seguid as.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=19971#Respond)
Manu 25 Mar 2017
Hola, gracias por el tutorial.
teniendo en cuenta que hablis de consumo de 1A
os parece que es posible usar el emisor con una bateria? de qu tipo debera ser?
saludos

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20026#Respond)
Ivan (http://www.prometec.net/members/ivan/) 27 Mar 2017
Hola Manu, deberas poder usar una batera pero asegrate que tenga bastante capacidad o no te durar demasiado.
Un saludo.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=20032#Respond)
Jess Snchez (http://www.prometec.net/members/suso/) 27 Mar 2017
Hola Manu.

Yo he usado, tanto una Li-Po de 3.7V y 3000mA ms un convertidor DC-DC de 5V, como una 18650 de capacidad
desconocida (China), y con ambas he alimentado todo el conjunto (Arduino, sensores, socket NRF y mdulo NRF24).
http://www.prometec.net/nrf2401/ 16/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino
Saludos.

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=19406#Respond)
Luis Privado 07 Mar 2017
Hola! Estoy teniendo problemas con la comunicacin y creo que puede ser debido a la potencia piso del emisor. Por lo que veo usas
una fuente de alimentacin externa para el emisor pero, usas la fuente para alimentar el arduino emisor y desde este arduino
alimentar el NRF24L01? , con la fuente alimentas a 3.3V externamente el NRF24L01 independiente del arduino?. Muchas gracias

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=19562#Respond)
admin (http://www.prometec.net/members/admin/) 12 Mar 2017
Hola Luis, tanto el emisor como el receptor tienen su propia alimentacion en el ejemplo y conviene que sea de al
menos 1A porque los emisores pueden neceistar un cierto pico cuando envian seales

Reply
(Http://Www.Prometec.Net/Nrf2401/?
Replytocom=19574#Respond)
Jess Snchez (http://www.prometec.net/members/suso/) 12 Mar 2017
Hola Luis.

Ultimamente he trabajado con estos mdulos, tanto bsicos como ampli cados, y ciertamente los que traen antena
externa y ampli cador deben ser alimentados con una fuente aparte. No he visto necesario en el modelo bsico (con
antena integrada) y actuando como emisor, y lo he logrado hacer con los propios 5V de Arduino, sin problemas (red
Multiceiver).

Saludos.

GIVE A REPLY

Message

Name (required) Email (required)

URL

http://www.prometec.net/nrf2401/ 17/18
16/7/2017 Los mdulos de radio NRF2401 | Tutoriales Arduino

Post comment
WordPress Anti-Spam by WP-SpamShield (https://wordpress.org/extend/plugins/wp-spamshield/)

Copyright Prometec (http://www.prometec.net) (https://www.facebook.com/pages/pro


(https://plus.google.com
(https://www.yout

http://www.prometec.net/nrf2401/ 18/18

Potrebbero piacerti anche