NRF24L01: mòdul per comunicació sense fils per Arduino

NRF24L01

Segurament necessitis crear algun projecte DIY usant Arduino o qualsevol altre element i hagis de fer ús de comunicació sense fils. I això passa per tenir algun tipus de mòdul o dispositiu que et permeti transmetre usant IR, RF, Bluetooth, WiFi, etc. És a dir, has de tenir clar quines són les necessitats per saber quin tipus de senyal seria la més adequada en el teu cas.

En aquest cas tenim una guia sobre el NRF24L01 per a tu. Es tracta d'un xip de comunicació sense fils que t'aportarà el que necessites per enviar i rebre senyals. El tipus de senyals que maneja és RF o radiofreqüència, és a dir, ones de gran longitud d'ona, i per tant de baixa energia, que en l'espectre electromagnètic se situen entre 3 Hz i els 300 Ghz de freqüència.

Què és el NRF24L01?

NRF24L01

El NRF24L01 és un xip fabricat per Nordic Semiconductor. si el No s'ha trobat cap producte., El xip ve muntat en un petit PCB amb alguns elements auxiliars que necessita, i per tant component un mòdul. Ho pots fer servir de diverses formes, entre elles connectant-lo a Adruino com et mostraré més endavant.

NRF24L01, com es pot deduir del seu nom, és un dispositiu de comunicació sense fils que empra RF o radiofreqüència amb capacitat de funcionar a 2,4Ghz - 2,5 Ghz. Aquesta és la banda lliure per a ús gratuït. Ja saps que altres bandes estan reservades i cal pagar si vols fer-les servir per transmetre informació. A més, integra un transmissor + un receptor.

Concretament, la banda de freqüència que pots utilitzar és de 2.400 MHz a 2.525Mhz, amb la possibilitat de seleccionar entre Canals 125 amb espais d'1Mhz entre ells. No obstant això, no és recomanable fer servir freqüències de 2.4Ghz si estàs fent servir xarxes WiFi, drones que funcionin amb aquesta freqüència, etc., o hi haurà interferències. Per això és preferible usar des 2.501Mhz d'ara endavant.

Quant a les seves característiques, funciona de 1.9 a 3.6V, pel que et serà fàcil alimentar-lo amb la pròpia placa Arduino amb la connexió de 3.3, usant piles, i fins i tot amb alguna font d'alimentació que d'aquest voltatge. A més, pots configurar la velocitat de transmissió entre 250 Kbps, 1Mbps i fins a 2Mbps.

El xip en les emissions i recepcions pot treballar de forma simultània amb fins a 6 connexions de diversos dispositius. Amb això podràs estar emetent o rebent des de diferents punts sense cap problema. I si et preocupa la robustesa o fiabilitat de la comunicació, el propi xip té una circuiteria lògica per corregir errors de dades i reenviar informació si fos necessari. Per tant, allibera el processador d'aquesta tasca.

Per controlar-ho es pot fer servir el bus SPI, Per la qual cosa el seu control amb Arduino és molt senzill. A més, els pins de dades de l'NRF24L01 suporten fins 5v sense problemes. El consum elèctric en Stand By és bastant baix, per la qual cosa no suposarà un element de què preocupar-se, i quan està en funcionament tampoc és dels més gastones, ja que només necessita 15mA per a l'enviament i recepció de dades.

Al mercat trobaràs diversos mòduls diferents que munten el xip NRF24L01, Canvien només en els elements auxiliars que tenen o en alguns detalls. Per exemple en el tipus d'antena. Alguns tenen una antena impresa al PCB en forma de ziga-zaga amb un abast d'uns 20-30 metres. Altres admeten una antena externa una mica més potent amb un amplificador per arribar dels 700 metres fins a 1 km.

No obstant això, l'abast real està limitat per alguns factors, Com els obstacles de camí, el soroll o interferències d'altres elements o senyals presents, la velocitat de transmissió, el voltatge d'alimentació (a major voltatge, major distància), etc. Per exemple, si vols transmetre a la màxima velocitat de 2Mbps això tindrà una gran penalització en la distància, que serà de tan sols 2 o 3 metres màxim. A velocitats inferiors pot ser que puguis anar escalant aquesta distància.

ESP8266
Article relacionat:
ESP8266: el mòdul WIFI per Arduino

Què cal saber abans de comprar-lo?

Antena de l'NRF40L01

El NRF24L01 és un xip molt barat que es pot usar en multitud de projectes. Per exemple, si no compta amb antena externa, el pots comprar fins per uns 0.65 €, sent el model d'antena externa el que és una mica més car que aquest però segueix sent molt barat i no sol superar els 1.7 €.

Si no comptes amb un altre element d'emissió o recepció, ja saps que has de comprar dos mòduls NRF24L01, un per usar en un costat i l'altre a l'altre costat d'on vulguis transmetre. Tots dos actuaran com emissior o receptor segons vulguis.

Pinout i muntatge de l'NRF24L01

pinout NRF40L01

Pel que fa a el muntatge, és força senzill. el NRF24L01 té 8 pins, per tant el seu pinout és molt fàcil d'entendre com pots veure en aquesta imatge que et deixo. A la dreta pots veure el diagrama de pins d'una placa Arduino UNO i com es connectaria a ella cada un dels pins de la lliçó.

Com pots deduir, la placa NRF24L01 s'alimenta usant els pins GND i 3.3V d'Arduino. Recorda no fer-ho amb el senyal de 5v o dañarías el mòdul.

Integració amb Arduino

2 NRF24L01 amb Arduino (circuit)

Un cop ja coneixes què és el NRF24L01 i com es pot connectar i alimentar, a més de la quantitat de projectes que pots fer amb un parell d'aquests barats dispositius, el següent és mostrar un exemple de programació perquè puguis començar a experimentar amb la teva Arduino IDE. Recorda que el format de dades que pots transmetre el pots modificar en el codi font.

l298n
Article relacionat:
L298N: mòdul per controlar motors per Arduino

Pots triar enviar i rebre un string o cadena de caràcters, un sencer, una dada en coma flotant, etc. et recomano la nostra guia sobre programació d'Arduino si estàs començant. Amb ella podràs crear els teus primers projectes. I com a exemple concret per al NRF24L01, aquí et deixo els codis necessaris per a un string.

Codi que has d'escriure en Arduino IDE i programar la placa Arduino connectada a l'NRF24L01 que vagis a destinar com a emissor:

#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
 
const int pinCE = 9;
const int pinCSN = 10;
RF24 radio(pinCE, pinCSN);
 
// Single radio pipe address for the 2 nodes to communicate.
const uint64_t pipe = 0xE8E8F0F0E1LL;
 
char data[16]="Aquí tu mensaje" ;
 
void setup(void)
{
   radio.begin();
   radio.openWritingPipe(pipe);
}
 
void loop(void)
{
   radio.write(data, sizeof data);
   delay(1000);
}

Aquí el codi que has d'introduir en Arduino IDE i gravar a la placa que hagis connectat a l'NRF24L01 dedicada com receptor:

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

const int Pince = 9;
const int pinCSN = 10;
RF24 ràdio (Pince, pinCSN);

// Single ràdio pipe address for the 2 nodes to Communicate.
const uint64_t pipe = 0xE8E8F0F0E1LL;

char data [16];

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

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

amb això tindràs tot el necessari i podràs provar a enviar paraules o cadenes de text d'un i veure com els rep l'altre. Usa dos ordinadors connectats per USB a la placa Arduino per utilitzar la consola com a mitjà per veure les dades. Separa'ls una distància prudent segons el mòdul que tinguis o la configuració que li hagis donat i començaràs a veure a la pantalla de l'altre ordinador els caràcters que has introduït en el primer codi ...


Un comentari, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Stefan va dir

    Hola Isaac
    Vull completar un projecte amb arduino, rasberry o alguna cosa altre.
    Pots donar un contacte e-mail, per explicar?
    Un mio - a01b02@abv.bg
    Gràcias