Si të përdorni NRF24L01 me Arduino për komunikim pa tel

  • NRF24L01 funksionon në brezin e lirë 2.4 GHz dhe mund të transmetojë deri në 2 Mbps.
  • Rekomandohet përdorimi i një kondensatori midis VCC dhe GND për të përmirësuar qëndrueshmërinë e modulit.
  • Opsioni me përforcues mund të arrijë distanca deri në 1 km në kushte optimale.

nrf24l01

Nëse jeni duke punuar me Arduino dhe dëshironi të zbatoni komunikim efikas me valë midis pajisjeve, nuk ka mundësi më të mirë se moduli i transmetuesit NRF24L01. Ky modul RF i vogël por i fuqishëm është një nga opsionet më të njohura për shkak të kostos së ulët, lehtësisë së përdorimit dhe performancës së shkëlqyer në brezin 2.4 GHz.

Në këtë artikull, ne do të shqyrtojmë se si të përdorim modulin NRF24L01 me Arduino, duke shpjeguar gjithçka nga aspektet më themelore deri te shembujt e avancuar se si ta zbatojmë atë në projekte. Le të sigurohemi që të kuptoni se si ta lidhni dhe përdorni këtë modul si në versionet e tij bazë ashtu edhe në ato të fuqizuara, dhe si të aplikoni bibliotekat e nevojshme për ta bërë atë të funksionojë në mënyrë efektive.

Çfarë është NRF24L01?

El NRF24L01 është një çip marrës RF i prodhuar nga Nordic Semiconductor që funksionon në brezin e lirë. 2.4 GHz. Ai lejon transmetimin dhe marrjen e të dhënave me valë midis disa pajisjeve, si mikrokontrolluesit, me një shpejtësi të konfigurueshme deri në 2 Mbps, gjëja më interesante është se mund të punojë deri në gjashtë pajisje të lidhura njëkohësisht, duke e bërë atë një mjet ideal një gamë të gjerë projektesh elektronike.

Ky transmetues ka gjithashtu teknologji për korrigjimin e gabimeve dhe ritransmetimin e të dhënave të dështuara, duke ruajtur cilësinë e fortë të lidhjes. Kjo lehtëson ngarkesën e përpunimit në Arduino ose çdo kontrollues tjetër me të cilin është i lidhur.

Një tjetër pikë pozitive e NRF24L01 është konsumi i ulët i energjisë. Në gjendjen e Zëvendësues, konsumon vetëm rreth 22 µA, që është perfekte për projektet që kërkojnë konsum të ulët. Në gjendje funksionimi, konsumi i tij mund të rritet deri në 15 mA kur dërgon të dhëna.

Versione të ndryshme të NRF24L01

nrf24l01 pinout

Ekzistojnë kryesisht dy versione të modulit NRF24L01. Të versioni themelor Ka një antenë të vogël zig-zag të integruar në vetë tabelën e modulit. Ky version është ideal për komunikime në distanca të shkurtra, me një gamë efektive prej 20 deri në 30 metra në hapësira të mbyllura ose 50 metros në zona të hapura.

Nga ana tjetër, ne kemi version me antenë të jashtme dhe amplifikator, i njohur si NRF24L01+ PA/LNA (Përforcues i fuqisë / Përforcues i zhurmës së ulët), i cili zgjeron ndjeshëm gamën e komunikimit, duke arritur deri në 1 kilometër në kushte optimale. Ky version është më i shtrenjtë, por thelbësor nëse keni nevojë të përshkoni distanca të gjata.

Ushqyerja dhe konsiderata të rëndësishme

NRF24L01 ka një tension furnizimi prej 1.9 deri në 3.6 V, kështu që është shumë e rëndësishme Mos e lidhni direkt me pinin 5V të Arduino, pasi kjo mund ta dëmtojë atë. Këshillohet që të përdorni pinin 3.3 V të Arduino për ta fuqizuar atë, megjithëse në shumë raste do të jetë e nevojshme të përdorni një rregullator të jashtëm të tensionit nëse duhet të garantoni një burim energjie më të qëndrueshme.

Për më tepër, për të përmirësuar besueshmërinë e transmetimit, veçanërisht në versionin me një përforcues, këshillohet të vendosni një Kondensator 10 µF deri në 100 µF midis kunjave të fuqisë (VCC dhe GND) të modulit. Kjo do të stabilizojë fuqinë dhe do të parandalojë që rëniet e tensionit të ndikojnë në stabilitetin e sinjalit RF.

Lidhja e NRF24L01 me Arduino

NRF24L01 përdor Ndërfaqja SPI për të komunikuar me mikrokontrolluesin. SPI është një ndërfaqe sinkrone e komunikimit serial që lejon transmetimin e të dhënave shpejt dhe me efikasitet. Ja se si të lidhni transmetuesin NRF24L01 me një Arduino UNO:

Kunj NRF24L01 Pin Arduino UNO
KQV-së 3.3V
GND GND
CE 9
CSN 10
SCK 13
DAWDLE 11
Miso 12

Nëse jeni duke përdorur një Arduino MEGA, kunjat për komunikimin SPI do të jenë të ndryshme:

Kunj NRF24L01 Pin Arduino MEGA
KQV-së 3.3V
GND GND
CE 9
CSN 53
SCK 52
DAWDLE 51
Miso 50

Instalimi i Bibliotekës RF24

Për të përdorur NRF24L01 me Arduino, është e nevojshme të instaloni bibliotekën RF24, i cili përfshin të gjitha funksionet që ju nevojiten për të kontrolluar modulin. Kjo bibliotekë është shumë e plotë dhe është shumë e optimizuar për të garantuar komunikim të shpejtë dhe të qëndrueshëm.

Për të instaluar bibliotekën, ndiqni këto hapa:

  1. Hapni Arduino IDE.
  2. Shko tek Skica > Përfshi bibliotekën > Menaxho bibliotekat…
  3. Kërkoni "RF24" në menaxherin e bibliotekës dhe instaloni atë.

Funksionet kryesore të Bibliotekës RF24

Pasi të jetë instaluar biblioteka RF24, do të jeni në gjendje të përdorni disa funksione që do t'ju lejojnë të inicializoni dhe menaxhoni komunikimin me transmetuesin. Më poshtë po ju tregojmë më të rëndësishmet:

  • RF24 (uint8_t _cepin, uint8_t _cspin)- Ky funksion krijon një shembull të ri të transmetuesit që tregon se cilat kunja CE dhe CSN po përdorni në Arduino.
  • Fillimi i pavlefshëm (): Inicializon modulin e radios. Ky funksion duhet të jetë i pranishëm në funksionin setup() të programit.
  • void openWritingPipe (const uint8_t * adresa)- Hap një kanal shkrimi tek i cili do të dërgohen të dhënat. Kërkon një adresë 5-bajtë për të identifikuar kanalin.
  • bool write (const void *buf, uint8_t len): Dërgon një të dhënë përmes kanalit të shkrimit. Kthen e vërtetë nëse dërgimi ishte i suksesshëm, false nëse dërgimi nuk mund të bëhej.
  • void openReadingPipe (numri uint8_t, konst uint8_t * adresa)- Hap një kanal leximi në mënyrë që moduli të marrë të dhëna nga një adresë tjetër.
  • void startListening()- Aktivizon modalitetin e dëgjimit për të marrë të dhëna nga kanalet e hapura për lexim.
  • bool në dispozicion ()- Kontrollon nëse të dhënat janë të disponueshme në kanalin e lexuar.
  • lexim i pavlefshëm (void *buf, uint8_t len): Lexon të dhënat e disponueshme në kanalin e leximit dhe i ruan ato në buferin e dhënë.

Shembull kodi: Komunikimi bazë ndërmjet dy Arduinos

Për të ilustruar se si të përdorim NRF24L01, ne do të kryejmë një shembull bazë komunikimi në të cilin një Arduino do t'i dërgojë tre pjesë të dhënash një tjetri: vlerën e pinit analog A0, kohën në milisekonda që kodi është ekzekutuar (millis( )) dhe një vlerë konstante (në këtë rast, 3.14).

Kodi për Emitterin Arduino:

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

#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN);

const byte direccion[5] = {'c','a','n','a','l'};
float datos[3];

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

void loop() {
 datos[0] = analogRead(A0) * (5.0 / 1023.0);
 datos[1] = millis();
 datos[2] = 3.14;
 bool ok = radio.write(datos, sizeof(datos));
 if (ok) {
 Serial.println("Datos enviados");
 } else {
 Serial.println("Error en el envío");
 }
 delay(1000);
}

Kodi për marrësin Arduino:

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

#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN);

const byte direccion[5] = {'c','a','n','a','l'};
float datos[3];

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

void loop() {
 if (radio.available()) {
 radio.read(datos, sizeof(datos));
 Serial.print("Voltaje: ");
 Serial.print(datos[0]);
 Serial.print(" V, Time: ");
 Serial.print(datos[1]);
 Serial.print(" ms, Sensor: ");
 Serial.println(datos[2]);
 }
 delay(1000);
}

Në këtë shembull, Arduino dërgues lexon vlerën e një potenciometri të lidhur me pinin A0 dhe e dërgon atë së bashku me vlerën e millis () dhe një të dhënë konstante. Arduino marrës i merr këto tre vlera, i printon në monitorin serial që të mund të shihni rezultatet.

Këshilla për të përmirësuar performancën

Megjithëse NRF24L01 është një pajisje shumë efikase, performanca dhe diapazoni i tij mund të ndryshojnë shumë në varësi të disa faktorëve. Më poshtë, ju lëmë disa këshilla për të përmirësuar funksionimin e tij:

  • Përdorni një furnizim të jashtëm me energji elektrike: Nëse jeni duke përdorur versionin me PA/LNA, është thelbësore të përdorni një furnizim të jashtëm me energji elektrike. Fuqia nga Arduino nuk do të jetë e mjaftueshme për të fuqizuar siç duhet modulin në distanca të gjata.
  • Vendosni një kondensator midis VCC dhe GND: Një kondensator midis 10 dhe 100 µF do të përmirësojë qëndrueshmërinë e modulit dhe do të shmangë problemet e energjisë.
  • Shmangni ndërhyrjet: NRF24L01 funksionon në të njëjtin brez frekuencash si rrjetet WiFi, kështu që këshillohet të zgjidhni kanale larg nga 2.4 deri në 2.5 GHz që përdorin zakonisht ruterat WiFi.

Me këtë informacion, tani keni gjithçka që ju nevojitet për të filluar punën me NRF24L01 dhe Arduino në projektet tuaja. Kjo pajisje hap një numër të madh mundësish për krijimin e sistemeve të komunikimit me valë, nga monitorimi në distancë i sensorëve deri tek kontrollimi i robotëve në distanca të gjata.


Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.