Kaip naudoti NRF24L01 su Arduino belaidžiam ryšiui

  • NRF24L01 veikia laisvoje 2.4 GHz dažnių juostoje ir gali perduoti iki 2 Mbps.
  • Norint pagerinti modulio stabilumą, tarp VCC ir GND rekomenduojama naudoti kondensatorių.
  • Pasirinkimas su stiprintuvu optimaliomis sąlygomis gali pasiekti iki 1 km atstumą.

nrf24l01

Jei dirbate su Arduino ir norite įdiegti efektyvų belaidį ryšį tarp įrenginių, nėra geresnio pasirinkimo nei NRF24L01 siųstuvo-imtuvo modulis. Šis mažas, bet galingas RF modulis yra vienas populiariausių variantų dėl mažos kainos, lengvo naudojimo ir puikaus našumo 2.4 GHz dažnių juostoje.

Šiame straipsnyje mes išnagrinėsime, kaip naudoti NRF24L01 modulį su Arduino, paaiškindami viską nuo pačių pagrindinių aspektų iki pažangių pavyzdžių, kaip jį įgyvendinti projektuose. Įsitikinkite, kad suprantate, kaip prijungti ir naudoti šį modulį tiek pagrindinėje, tiek maitinamoje versijoje ir kaip pritaikyti reikalingas bibliotekas, kad jis veiktų efektyviai.

Kas yra NRF24L01?

El NRF24L01 yra RF siųstuvo-imtuvo mikroschema, kurią gamina Nordic Semiconductor, kuri veikia laisvoje juostoje. 2.4 GHz. Jis leidžia belaidžiu būdu perduoti ir priimti duomenis tarp kelių įrenginių, pavyzdžiui, mikrovaldiklių, su konfigūruojamu greičiu iki 2 Mbps Įdomiausia, kad vienu metu gali dirbti su net šešiais įrenginiais, todėl tai yra ideali priemonė platus elektroninių projektų asortimentas.

Šis siųstuvas-imtuvas taip pat turi klaidų taisymo ir nepavykusių duomenų pakartotinio perdavimo technologiją, išlaikant tvirtą ryšio kokybę. Tai sumažina Arduino ar bet kurio kito valdiklio, prie kurio jis prijungtas, apdorojimo apkrovą.

Kitas teigiamas NRF24L01 aspektas yra mažas energijos suvartojimas. Būsenoje Budėjimo režimas, jis sunaudoja tik apie 22 µA, o tai puikiai tinka projektams, kuriems reikia mažai energijos. Veikimo būsenoje jo suvartojimas gali padidėti iki 15 mA, kai jis siunčia duomenis.

Įvairios NRF24L01 versijos

nrf24l01 pinout

Daugiausia yra dvi NRF24L01 modulio versijos. The pagrindinė versija Ji turi mažą zigzago anteną, integruotą į pačią modulio plokštę. Ši versija idealiai tinka trumpo nuotolio ryšiams su veiksmingu diapazonu Nuo 20 iki 30 metrų uždarose erdvėse arba 50 metro atvirose vietose.

Kita vertus, mes turime versija su išorine antena ir stiprintuvu, žinomas kaip NRF24L01+ PA/LNA (galios stiprintuvas / žemo triukšmo stiprintuvas), kuris žymiai išplečia ryšio diapazoną ir pasiekia iki 1 kilometras optimaliomis sąlygomis. Ši versija yra brangesnė, tačiau būtina, jei reikia įveikti didelius atstumus.

Mityba ir svarbūs dalykai

NRF24L01 maitinimo įtampa yra nuo 1.9 iki 3.6 V, todėl tai labai svarbu Nejunkite jo tiesiai prie „Arduino“ 5 V kaiščio, nes tai gali jį sugadinti. Jo maitinimui patartina naudoti 3.3 V „Arduino“ kištuką, nors daugeliu atvejų reikės naudoti išorinį įtampos reguliatorių, jei reikia garantuoti stabilesnį maitinimo šaltinį.

Be to, siekiant pagerinti transmisijos patikimumą, ypač versijoje su stiprintuvu, patartina įdėti 10 µF iki 100 µF kondensatorius tarp modulio maitinimo kontaktų (VCC ir GND). Tai stabilizuos galią ir neleis įtampos kritimams paveikti RF signalo stabilumą.

NRF24L01 prijungimas prie Arduino

NRF24L01 naudoja SPI sąsaja bendrauti su mikrovaldikliu. SPI yra sinchroninė nuosekliojo ryšio sąsaja, leidžianti greitai ir efektyviai perduoti duomenis. Štai kaip prijungti NRF24L01 siųstuvą-imtuvą prie a Arduino UNO:

Kaištis NRF24L01 Prisegtukas Arduino UNO
VCC 3.3V
GND GND
CE 9
CSN 10
SCK 13
DAWDLE 11
Sojų pasta 12

Jei naudojate Arduino MEGA, SPI ryšio kaiščiai skirsis:

Kaištis NRF24L01 Arduino MEGA Pin
VCC 3.3V
GND GND
CE 9
CSN 53
SCK 52
DAWDLE 51
Sojų pasta 50

RF24 bibliotekos įrengimas

Norint naudoti NRF24L01 su Arduino, būtina įdiegti biblioteką RF24, kuriame yra visos funkcijos, kurių prireiks moduliui valdyti. Ši biblioteka yra labai išsami ir labai optimizuota, kad būtų užtikrintas greitas ir stabilus ryšys.

Norėdami įdiegti biblioteką, atlikite šiuos veiksmus:

  1. Atidarykite Arduino IDE.
  2. Eik į Eskizas > Įtraukti biblioteką > Tvarkyti bibliotekas…
  3. Bibliotekos tvarkyklėje ieškokite „RF24“ ir įdiekite.

Pagrindinės RF24 bibliotekos funkcijos

Įdiegę RF24 biblioteką galėsite naudotis keliomis funkcijomis, kurios leis inicijuoti ir valdyti ryšį su siųstuvu-imtuvu. Žemiau pateikiame svarbiausius:

  • RF24 (uint8_t _cepin, uint8_t _cspin)- Ši funkcija sukuria naują siųstuvo-imtuvo egzempliorių, nurodantį, kuriuos CE ir CSN kaiščius naudojate „Arduino“.
  • negalioja pradžia (): inicijuoja radijo modulį. Ši funkcija turi būti programos setup() funkcijoje.
  • void openWritingPipe(const uint8_t * adresas)- Atidaro rašymo kanalą, į kurį bus siunčiami duomenys. Norint identifikuoti kanalą, reikalingas 5 baitų adresas.
  • bool write (const void *buf, uint8_t len): siunčia duomenis rašymo kanalu. Grąžina tiesa, jei siuntimas buvo sėkmingas, false, jei nepavyko išsiųsti.
  • void openReadingPipe(uint8_t numeris, const uint8_t * adresas)- Atidaro skaitymo kanalą, kad modulis galėtų priimti duomenis iš kito adreso.
  • void startListening()- Įjungia klausymosi režimą, kad gautumėte duomenis iš kanalų, atidarytų skaitymui.
  • bool prieinama ()- Patikrina, ar yra duomenų skaitymo kanale.
  • void read (void *buf, uint8_t len): nuskaito skaitymo kanale turimus duomenis ir išsaugo juos pateiktame buferyje.

Kodo pavyzdys: pagrindinis dviejų „Arduinos“ ryšys

Norėdami iliustruoti, kaip naudoti NRF24L01, atliksime pagrindinio ryšio pavyzdį, kuriame vienas Arduino siųs tris duomenis kitam: analoginio kaiščio A0 reikšmę, kodo veikimo laiką milisekundėmis (millis( )) ir reikšmės konstanta (šiuo atveju 3.14).

„Arduino Emitter“ kodas:

#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);
}

Arduino imtuvo kodas:

#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);
}

Šiame pavyzdyje siunčiantis Arduino nuskaito potenciometro, prijungto prie kaiščio A0, vertę ir siunčia ją kartu su millis () reikšme ir pastoviais duomenimis. Gaunantis Arduino gauna šias tris reikšmes, išspausdina jas į serijinį monitorių, kad galėtumėte matyti rezultatus.

Patarimai, kaip pagerinti našumą

Nors NRF24L01 yra labai efektyvus įrenginys, jo veikimas ir diapazonas gali labai skirtis priklausomai nuo kelių veiksnių. Žemiau pateikiame keletą patarimų, kaip pagerinti jo veikimą:

  • Naudojant išorinį maitinimo šaltinį: Jei naudojate versiją su PA/LNA, būtina naudoti išorinį maitinimo šaltinį. „Arduino“ galios nepakaks tinkamai maitinti modulį dideliais atstumais.
  • Įdėkite kondensatorių tarp VCC ir GND: Kondensatorius nuo 10 iki 100 µF pagerins modulio stabilumą ir išvengs maitinimo problemų.
  • Venkite trukdžių: NRF24L01 veikia toje pačioje dažnių juostoje kaip ir WiFi tinklai, todėl patartina rinktis kanalus nuo 2.4 iki 2.5 GHz, kuriuos dažniausiai naudoja WiFi maršrutizatoriai.

Turėdami šią informaciją, dabar turite viską, ko reikia norint pradėti dirbti su NRF24L01 ir Arduino savo projektuose. Šis įrenginys atveria daugybę belaidžio ryšio sistemų kūrimo galimybių – nuo ​​nuotolinio jutiklių stebėjimo iki robotų valdymo dideliais atstumais.


Būkite pirmas, kuris pakomentuos

Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.