Kui töötate Arduinoga ja soovite rakendada tõhusat traadita sidet seadmete vahel, pole paremat võimalust kui NRF24L01 transiiveri moodul. See väike, kuid võimas RF-moodul on oma madala hinna, kasutuslihtsuse ja suurepärase jõudluse tõttu 2.4 GHz sagedusalas üks populaarsemaid valikuid.
Selles artiklis uurime, kuidas kasutada moodulit NRF24L01 koos Arduinoga, selgitades kõike alates kõige elementaarsematest aspektidest kuni täpsemate näideteni selle kohta, kuidas seda projektides rakendada. Veenduge, et mõistate, kuidas seda moodulit ühendada ja kasutada nii selle põhi- kui ka toiteversioonis ning kuidas rakendada selle tõhusaks toimimiseks vajalikke teeke.
Mis on NRF24L01?
El NRF24L01 on Nordic Semiconductori toodetud RF transiiveri kiip, mis töötab vabas ribas. 2.4 GHz. See võimaldab juhtmevabalt edastada ja vastu võtta andmeid mitme seadme, näiteks mikrokontrollerite vahel, konfigureeritava kiirusega kuni 2 Mbps. Kõige huvitavam on see, et see suudab töötada kuni kuue samaaegselt ühendatud seadmega, mistõttu on see ideaalne tööriist lai valik elektroonilisi projekte.
Sellel transiiveril on ka tehnoloogia vigade parandamiseks ja ebaõnnestunud andmete uuesti edastamiseks, säilitades tugeva ühenduse kvaliteedi. See vähendab Arduino või mõne muu kontrolleri, millega see on ühendatud, töötlemiskoormust.
Teine NRF24L01 positiivne punkt on selle madal energiatarve. olekus Stand-by, tarbib see ainult umbes 22 µA, mis sobib suurepäraselt projektide jaoks, mis nõuavad vähest tarbimist. Tööolekus võib selle tarbimine andmete saatmisel suureneda kuni 15 mA.
NRF24L01 erinevad versioonid
NRF24L01 moodulist on peamiselt kaks versiooni. The põhiversioon Sellel on moodulplaadi endasse integreeritud väike sik-sak antenn. See versioon sobib ideaalselt lühikese vahemaaga suhtlemiseks ja pakub tõhusat valikut 20 kuni 30 meetrit suletud ruumides või 50 metrood avatud aladel.
Teiselt poolt on meil olemas välise antenni ja võimendiga versioon, tuntud kui NRF24L01+ PA/LNA (võimsusvõimendi / madala müravõimendi), mis laiendab märkimisväärselt sideulatust, ulatudes kuni 1 kilomeetrit optimaalsetes tingimustes. See versioon on kallim, kuid hädavajalik, kui peate läbima pikki vahemaid.
Toitumine ja olulised kaalutlused
NRF24L01 toitepinge on 1.9–3.6 V, seega on see väga oluline Ärge ühendage seda otse Arduino 5 V pistikuga, kuna see võib seda kahjustada. Selle toiteks on soovitatav kasutada Arduino 3.3 V kontakti, kuigi paljudel juhtudel on stabiilsema toiteallika tagamiseks vaja kasutada välist pingeregulaatorit.
Veelgi enam, ülekande töökindluse parandamiseks, eriti võimendiga versioonis, on soovitatav paigaldada 10 µF kuni 100 µF kondensaator mooduli toitetihvtide (VCC ja GND) vahel. See stabiliseerib võimsust ja hoiab ära pingelanguste mõjutamise RF-signaali stabiilsuse suhtes.
NRF24L01 ühendamine Arduinoga
NRF24L01 kasutab SPI liides mikrokontrolleriga suhtlemiseks. SPI on sünkroonne jadaliides, mis võimaldab andmeedastust kiiresti ja tõhusalt. Siin on, kuidas ühendada NRF24L01 transiiver a Arduino UNO:
Pin NRF24L01 | Pin Arduino UNO |
---|---|
VCC | 3.3V |
GND | GND |
CE | 9 |
CSN | 10 |
SCK | 13 |
MOSI | 11 |
MISO | 12 |
Kui kasutate Arduino MEGA-d, on SPI-suhtluse kontaktid erinevad:
Pin NRF24L01 | Arduino MEGA Pin |
---|---|
VCC | 3.3V |
GND | GND |
CE | 9 |
CSN | 53 |
SCK | 52 |
MOSI | 51 |
MISO | 50 |
RF24 raamatukogu paigaldamine
NRF24L01 kasutamiseks koos Arduinoga on vaja raamatukogu installida RF24, mis sisaldab kõiki mooduli juhtimiseks vajalikke funktsioone. See raamatukogu on väga täielik ja väga optimeeritud, et tagada kiire ja stabiilne suhtlus.
Teegi installimiseks toimige järgmiselt.
- Avage Arduino IDE.
- Mine Visand > Kaasa kogu > Halda teeke…
- Otsige raamatukogu halduris sõna "RF24" ja installige see.
RF24 raamatukogu põhifunktsioonid
Kui RF24 teek on installitud, saate kasutada mitmeid funktsioone, mis võimaldavad teil algatada ja hallata sidet transiiveriga. Allpool näitame teile kõige olulisemat:
- RF24 (uint8_t _cepin, uint8_t _cspin)- See funktsioon loob transiiveri uue eksemplari, mis näitab, milliseid CE- ja CSN-viigud te Arduinol kasutate.
- tühine algus (): Initsialiseerib raadiomooduli. See funktsioon peab olema programmi funktsioonis setup() olemas.
- void openWritingPipe(const uint8_t * aadress)- Avab kirjutuskanali, kuhu andmed saadetakse. Kanali tuvastamiseks on vaja 5-baidist aadressi.
- bool write (const void *buf, uint8_t len): saadab andmed kirjutuskanali kaudu. Tagastab tõene, kui saatmine õnnestus, false, kui saatmist ei saanud teha.
- void openReadingPipe(uint8_t number, const uint8_t * aadress)- Avab lugemiskanali, et moodul saaks andmeid vastu võtta teiselt aadressilt.
- void startListening()- Aktiveerib kuulamisrežiimi andmete vastuvõtmiseks lugemiseks avatud kanalitelt.
- bool saadaval ()- Kontrollib, kas lugemiskanalil on andmed saadaval.
- void read (void *buf, uint8_t len): loeb lugemiskanalis saadaolevaid andmeid ja salvestab need kaasasolevasse puhvrisse.
Koodinäide: põhiline suhtlus kahe Arduino vahel
NRF24L01 kasutamise illustreerimiseks toome läbi põhilise suhtlusnäite, kus üks Arduino saadab teisele kolm andmeosa: analoogviigu A0 väärtus, koodi töötamise aeg millisekundites (millis( )) ja väärtuskonstant (antud juhul 3.14).
Arduino emitteri kood:
#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 vastuvõtja kood:
#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);
}
Selles näites loeb saatev Arduino kontaktiga A0 ühendatud potentsiomeetri väärtuse ja saadab selle koos millis() väärtuse ja konstantsete andmetega. Vastuvõttev Arduino saab need kolm väärtust, prindib need jadamonitorile, et saaksite tulemusi näha.
Näpunäiteid jõudluse parandamiseks
Kuigi NRF24L01 on väga tõhus seade, võib selle jõudlus ja ulatus olenevalt mitmest tegurist oluliselt erineda. Allpool anname teile mõned näpunäited selle toimimise parandamiseks.
- Kasutage välist toiteallikat: Kui kasutate PA/LNA-ga versiooni, on hädavajalik kasutada välist toiteallikat. Arduino võimsusest ei piisa mooduli õigeks toiteks pikkade vahemaade tagant.
- Asetage kondensaator VCC ja GND vahele: Kondensaator vahemikus 10 kuni 100 µF parandab mooduli stabiilsust ja väldib toiteprobleeme.
- Vältige häireid: NRF24L01 töötab WiFi-võrkudega samas sagedusalas, seega on soovitatav valida kanalid, mis jäävad 2.4–2.5 GHz-st eemale, mida WiFi-ruuterid tavaliselt kasutavad.
Selle teabe abil on teil nüüd kõik vajalik, et alustada oma projektides NRF24L01 ja Arduinoga koostööd. See seade avab tohutul hulgal võimalusi traadita sidesüsteemide loomiseks alates andurite kaugseirest kuni robotite juhtimiseni pikkade vahemaade tagant.