Kahdella tai useammalla Arduino-levyllä on mahdollisuus kommunikoida toistensa kanssa langattomasti etäisyydellä, mikä avaa monia mahdollisuuksia, kuten anturidatan etäseurantaan, robottien ohjaamiseen, kotiautomaation hallintaan ja lista jatkuu. Ja kun on kyse edullisista mutta luotettavista 2-suuntaisista RF-ratkaisuista, kukaan ei tee parempaa työtä kuin Nordic Semiconductorin nRF24L01+-lähetinmoduuli.
nRF24L01+ (plus) -lähetinmoduulin saa usein verkosta alle kahdella dollarilla, mikä tekee siitä yhden edullisimmista tietoliikennevaihtoehdoista, joita voit saada. Ja mikä parasta, nämä moduulit ovat erittäin pieniä, joten voit sisällyttää langattoman liitännän lähes mihin tahansa projektiin.
- Hardware Overview
- Radiotaajuus
- Mikä on 2,4 GHz ISM-taajuuskaista?
- Virrankulutus
- SPI-liitäntä
- nRF24L01+-moduuli Vs. nRF24L01+ PA/LNA-moduuli
- Mikä on PA LNA?
- Miten nRF24L01+-lähetinvastaanotinmoduuli toimii?
- RF-kanavan taajuus
- nRF24L01+ Multiceiver Network
- Enhanced ShockBurst Protocol
- nRF24L01+ Automaattinen pakettien käsittely
- nRF24L01+-lähetinvastaanotinmoduulin pinout
- Kytkentä – nRF24L01+-lähetinvastaanotinmoduulin kytkeminen Arduino UNO:hon
- RF24 Arduino-kirjasto nRF24L01+ -moduulille
- Arduino-koodi – Lähettimelle
- Arduino-koodi – Vastaanottimelle
- NRF24L01+-lähetinvastaanotinmoduulin kantaman parantaminen
- Vähennä virtalähteen kohinaa
- Vaihda kanavataajuutta
- Alhaisempi tiedonsiirtonopeus
- Mitä tarkoittaa vastaanottimen (Rx) herkkyys?
- Korkeampi lähtöteho
Hardware Overview
Radiotaajuus
NRF24L01+-lähetin- ja vastaanotinmoduuli on suunniteltu toimimaan maailmanlaajuisella ISM-taajuuskaistalla, jonka taajuusalue on 2,4 GHz, ja se käyttää tiedonsiirtoon GFSK-modulaatiota. Tiedonsiirtonopeus voi olla yksi 250 kbps, 1 Mbps ja 2 Mbps.
Mikä on 2,4 GHz ISM-taajuuskaista?
2,4 GHz:n taajuuskaista on yksi teollisuus-, tiede- ja lääkintätaajuuskaistoista (Industrial, Scientific and Medical (ISM)), joka on varattu kansainvälisesti lisensoimattomien pienitehoisten laitteiden käyttöön. Esimerkkejä ovat langattomat puhelimet, Bluetooth-laitteet, NFC-laitteet (Near Field Communication) ja langattomat tietoverkot (WiFi), jotka kaikki käyttävät ISM-taajuuksia.
Virrankulutus
Moduulin käyttöjännite on 1,9-3.6V, mutta hyvä uutinen on, että logiikkanastat ovat 5 voltin sietokykyisiä, joten voimme helposti liittää sen Arduinoon tai mihin tahansa 5V-logiikkamikrokontrolleriin ilman logiikkatason muunninta.
Moduuli tukee ohjelmoitavaa lähtötehoa eli 0 dBm, -6 dBm, -12 dBm tai -18 dBm, ja se kuluttaa uskomattomasti noin 12 mA lähetyksen aikana 0 dBm:n teholla, mikä on jopa vähemmän kuin yksittäinen LED. Ja mikä parasta, se kuluttaa 26 µA valmiustilassa ja 900 nA virransäästötilassa. Siksi ne ovat langattomien laitteiden valinta matalan virrankulutuksen sovelluksiin.
SPI-liitäntä
NRF24L01+-lähetin-vastaanotinmoduuli kommunikoi 4-pinnisen SPI-sarjaliitännän (Serial Peripheral Interface) kautta maksimissaan 10 Mbps:n tiedonsiirtonopeudella. Kaikki parametrit, kuten taajuuskanava (125 valittavissa olevaa kanavaa), lähtöteho (0 dBm, -6 dBm, -12 dBm tai -18 dBm) ja tiedonsiirtonopeus (250kbps, 1Mbps tai 2Mbps), voidaan konfiguroida SPI-liitännän kautta.
SPI-väylässä käytetään Master- ja Slave-käsitettä, ja tavallisimmissa käyttökohteissa Arduino on Master ja nRF24L01+-lähetinsovittimen moduuli Slave. Toisin kuin I2C-väylässä, SPI-väylän orjien määrä on rajoitettu, Arduino Unossa voit käyttää enintään kahta SPI-orjaa eli kahta nRF24L01+-lähetin-vastaanotinmoduulia.
Tässä ovat täydelliset tekniset tiedot:
Taajuusalue | 2.4 GHz ISM-kaista |
Maksimi ilmatiedonsiirtonopeus | 2 Mb/s |
Modulaatioformaatti | GFSK |
Max. Lähtöteho | 0 dBm |
Toimintajännite | 1.9 V – 3.6 V |
Max. Toimintavirta | 13.5mA |
Min. Virta (valmiustila) | 26µA |
Logiikkatulot | 5V tolerantti |
Kommunikaatioalue | 800+ m (linja näköyhteys) |
nRF24L01+-moduuli Vs. nRF24L01+ PA/LNA-moduuli
NRF24L01+-siruun perustuvia moduuleja on saatavana useita. Alla ovat suosituimmat versiot.
Ensimmäisessä versiossa käytetään sisäistä antennia. Tämä mahdollistaa kompaktimman version breakoutista. Pienempi antenni tarkoittaa kuitenkin myös pienempää lähetysaluetta. Tällä versiolla voit kommunikoida 100 metrin etäisyydellä. Tämä on tietysti ulkona avoimessa tilassa. Sisätiloissa, etenkin seinien läpi, kantama heikkenee hieman.
Kakkosversiossa on SMA-liitin ja ankka-antenni, mutta se ei ole varsinainen ero. Todellinen ero on siinä, että siinä on erityinen RFX2401C-siru, joka integroi PA:n, LNA:n ja lähetys-vastaanottokytkentäpiirin. Tämä kantamanlaajennussiru yhdessä ankka-antennin kanssa auttaa moduulia saavuttamaan huomattavasti suuremman lähetysalueen noin 1000m.
Mikä on PA LNA?
PA tarkoittaa tehovahvistinta. Se vain tehostaa nRF24L01+-sirulta lähetettävän signaalin tehoa. Kun taas LNA tarkoittaa Low-Noise Amplifier. LNA:n tehtävänä on ottaa
antennista tuleva erittäin heikko ja epävarma signaali (yleensä mikrovoltin luokkaa tai alle -100 dBm) ja vahvistaa se käyttökelpoisemmalle tasolle (tavallisesti noin 0.5-1V)
Vastaanottopolun kohinavahvistin (LNA, low-noise amplifier) ja lähetyspolun tehovahvistin (PA, power amplifier) kytkeytyvät antenniin duplekserin kautta, joka erottaa nämä kaksi signaalia toisistaan ja estää suhteellisen voimakkaan PA:n ulostulon ylikuormittamasta herkkää LNA:n tuloa. Lisätietoja saat tästä artikkelista osoitteessa digikey.com
Tätä eroa lukuun ottamatta molemmat moduulit ovat drop-in-yhteensopivia. Tämä tarkoittaa sitä, että jos rakennat projektisi yhdellä moduulilla, voit vain irrottaa sen ja käyttää toista ilman, että sinun tarvitsee tehdä muutoksia järjestelmään.
Miten nRF24L01+-lähetinvastaanotinmoduuli toimii?
NRF24L01+-lähetinvastaanotinmoduuli lähettää ja vastaanottaa dataa tietyllä taajuudella, jota kutsutaan nimellä Channel. Jotta kaksi tai useampi lähetin-vastaanotinmoduuli voi kommunikoida keskenään, niiden on oltava samalla kanavalla. Tämä kanava voi olla mikä tahansa taajuus 2,4 GHz:n ISM-kaistalla tai tarkemmin sanottuna 2,400-2,525 GHz:n (2400-2525 MHz) välillä.
Kunkin kanavan kaistanleveys on alle 1 MHz. Näin saadaan 125 mahdollista kanavaa 1 MHz:n välein. Moduuli voi siis käyttää 125:tä eri kanavaa, mikä antaa mahdollisuuden 125:n itsenäisesti toimivan modeemin verkostoon samassa paikassa.
Kanava vie alle 1 MHz:n kaistanleveyden, kun tiedonsiirtonopeus on 250 kilobittiä sekunnissa (kbit/s) ja 1 Mbit/s ilmassa. Kuitenkin 2 Mbps:n ilmadatanopeudella 2 MHz:n kaistanleveys on käytössä (laajempi kuin RF-kanavan taajuusasetuksen resoluutio). Jotta voidaan varmistaa, että kanavat eivät ole päällekkäisiä, ja vähentää ristikkäispuhelua 2 Mbps:n tilassa, kahden kanavan välissä on pidettävä 2 MHz:n väli.
Valitsemasi kanavan RF-kanavan taajuus asetetaan seuraavan kaavan mukaisesti:
Freq(Selected) = 2400 + CH(Selected)
Jos esimerkiksi valitset tiedonsiirtokanavaksi 108, kanavasi RF-kanavataajuus on 2508MHz (2400 + 108)
nRF24L01+ Multiceiver Network
NRF24L01+ tarjoaa ominaisuuden nimeltä Multiceiver. Se on lyhenne sanoista Multiple Transmitters Single Receiver. Jossa jokainen RF-kanava on loogisesti jaettu 6 rinnakkaiseen datakanavaan, joita kutsutaan nimellä Data Pipes. Toisin sanoen dataputki on looginen kanava fyysisessä RF-kanavassa. Jokaisella dataputkella on oma fyysinen osoitteensa (Data Pipe Address) ja se voidaan konfiguroida. Tätä voidaan havainnollistaa alla esitetyllä tavalla.
Yllä olevan kaavion yksinkertaistamiseksi kuvitellaan, että ensisijainen vastaanotin toimii keskusvastaanottimena, joka kerää tietoja 6 eri lähetinsolmusta samanaikaisesti. Keskusvastaanotin voi lopettaa kuuntelun milloin tahansa ja toimii lähettimenä. Tämä voidaan kuitenkin tehdä vain yksi putki/solmu kerrallaan.
Enhanced ShockBurst Protocol
NRF24L01+-lähetin-vastaanotinmoduuli käyttää pakettirakennetta, joka tunnetaan nimellä Enhanced ShockBurst. Tämä yksinkertainen pakettirakenne on jaettu viiteen eri kenttään, jotka on esitetty alla.
Alkuperäinen ShockBurst-rakenne koostui vain Preamble-, Address-, Payload- ja CRC-kentistä (Cyclic Redundancy Check). Parannettu ShockBurst toi mukanaan laajemman toiminnallisuuden parempaa viestintää varten käyttämällä uutta käyttöönotettua Packet Control Field (PCF) -kenttää.
Tämä uusi rakenne on loistava useista syistä. Ensinnäkin se mahdollistaa vaihtelevan pituiset hyötykuormat hyötykuorman pituuden määrittelyn avulla, mikä tarkoittaa, että hyötykuormat voivat vaihdella 1:stä 32 tavuun.
Toiseksi se antaa jokaiselle lähetetylle paketille pakettitunnisteen, jonka avulla vastaanottava laite voi määrittää, onko viesti uusi vai onko se lähetetty uudelleen (ja voidaanko se siten jättää huomiotta).
Viimeiseksi ja mikä tärkeintä, jokainen viesti voi pyytää kuittausta lähetettäväksi, kun toinen laite vastaanottaa sen.
nRF24L01+ Automaattinen pakettien käsittely
Keskustellaan nyt kolmea skenaariota, jotta ymmärretään paremmin, miten kaksi nRF24L01+-moduulia toimii keskenään.
Transaktio kuittauksella ja keskeytykselläTämä on esimerkki positiivisesta skenaariosta. Tässä lähetin aloittaa viestinnän lähettämällä datapaketin vastaanottajalle. Kun koko paketti on lähetetty, se odottaa (noin 130 µs) kuittauspaketin (ACK-paketti) vastaanottoa. Kun vastaanotin vastaanottaa paketin, se lähettää ACK-paketin lähettimelle. Vastaanotettuaan ACK-paketin lähetin aktivoi keskeytyssignaalin (IRQ) osoittaakseen, että uutta dataa on saatavilla.
Transaktio, jossa datapaketti on kadonnutTämä on negatiivinen skenaario, jossa lähetetyn paketin katoamisen vuoksi tarvitaan uusintalähetys. Kun paketti on lähetetty, lähetin odottaa ACK-paketin vastaanottamista. Jos lähetin ei saa sitä ARD-ajan (Auto-Retransmit-Delay) kuluessa, paketti lähetetään uudelleen. Kun vastaanotin vastaanottaa uudelleen lähetetyn paketin, lähetetään ACK-paketti, joka puolestaan synnyttää lähettimessä keskeytyksen.
Transaktio, jossa kuittaus on kadonnutTämä on jälleen negatiivinen skenaario, jossa ACK-paketin katoamisen vuoksi tarvitaan uudelleenlähetystä. Tässä tapauksessa, vaikka vastaanotin saisi paketin ensimmäisellä yrityksellä, lähetin luulee ACK-paketin menetyksen vuoksi, että vastaanotin ei ole saanut pakettia lainkaan. Niinpä se lähettää paketin uudelleen sen jälkeen, kun automaattisen uudelleenlähetysviiveen aika on kulunut. Nyt kun vastaanotin vastaanottaa paketin, joka sisältää saman pakettitunnuksen kuin edellinen, se hylkää sen ja lähettää ACK-paketin uudelleen.
NRF24L01+-siru tekee tämän koko pakettien käsittelyn automaattisesti ilman mikrokontrollerin osallistumista.
nRF24L01+-lähetinvastaanotinmoduulin pinout
Katsotaanpa nRF24L01+-lähetinvastaanotinmoduulin molempien versioiden pinoutia.
GND on maadoitusnasta. Se merkitään yleensä koteloimalla nasta neliöön, jotta sitä voidaan käyttää viitteenä muiden nastojen tunnistamisessa.
VCC syöttää moduulille virtaa. Tämä voi olla missä tahansa 1,9-3,9 voltin välillä. Voit liittää sen Arduinon 3,3 voltin ulostuloon. Muista, että sen kytkeminen 5V-pinniin todennäköisesti tuhoaa nRF24L01+-moduulisi!
CE (Chip Enable) on aktiivinen-HIGH-pinni. Kun se on valittuna, nRF24L01 joko lähettää tai vastaanottaa riippuen siitä, missä tilassa se on tällä hetkellä.
CSN (Chip Select Not) on aktiivinen-LOW-pinni ja se pidetään normaalisti HIGH. Kun tämä tappi menee matalalle, nRF24L01 alkaa kuunnella SPI-portissaan dataa ja käsittelee sitä sen mukaisesti.
SCK (Serial Clock) hyväksyy SPI-väylän Masterin antamat kellopulssit.
MOSI (Master Out Slave In) on SPI-tulo nRF24L01:lle.
MISO (Master In Slave Out) on SPI-lähtö nRF24L01:ltä.
IRQ on keskeytystappi, joka voi varoittaa masteria, kun uutta dataa on saatavilla käsiteltäväksi.
Kytkentä – nRF24L01+-lähetinvastaanotinmoduulin kytkeminen Arduino UNO:hon
Nyt kun meillä on täydellinen käsitys siitä, miten nRF24L01+-lähetinvastaanotinmoduuli toimii, voimme aloittaa sen kytkemisen Arduinoon!
Aluksi kytke moduulin VCC-nasta Arduinon 3,3 V:iin ja GND-nasta maahan. Nastat CSN ja CE voidaan liittää mihin tahansa Arduinon digitaaliseen nastaan. Meidän tapauksessamme se on kytketty digitaalisiin nastoihin # 8 ja # 9. Nyt olemme jäljellä nastojen kanssa, joita käytetään SPI-viestintään.
Koska nRF24L01+-lähetinmoduuli vaatii paljon tiedonsiirtoa, ne antavat parhaan suorituskyvyn, kun ne kytketään mikrokontrollerin laitteiston SPI-nastoihin. Laitteiston SPI-nastat ovat paljon nopeampia kuin rajapintakoodin ”bittiniputtaminen” käyttämällä toista nastasarjaa.
Huomaa, että jokaisella Arduino-levyllä on erilaiset SPI-nastat, jotka on kytkettävä vastaavasti. Arduino-levyissä, kuten UNO/Nano V3.0, nämä nastat ovat digitaaliset 13 (SCK), 12 (MISO) ja 11 (MOSI).
Jos sinulla on Mega, nastat ovat erilaiset! Haluat käyttää digitaalisia 50 (MISO), 51 (MOSI), 52 (SCK) ja 53 (SS). Katso alla oleva taulukko nopeaa ymmärrystä varten.
MOSI | MISO | SCK | |
Arduino Uno | 11 | 12 | 13 |
Arduino Nano | 11 | 12 | 13 |
Arduino Mega | 51 | 50 | 52 |
Tapauksessa, jossa käytössäsi on eri Arduino-kortti kuin edellä mainittu, on suositeltavaa tarkistaa Arduinon virallinen dokumentaatio ennen jatkamista.
Muista! Sinun on tehtävä kaksi tällaista piiriä. Toinen toimii lähettimenä ja toinen vastaanottimena. Molempien johdotus on identtinen.
Kun kaikki on kytketty, olet valmis aloittamaan!
RF24 Arduino-kirjasto nRF24L01+ -moduulille
NRF24L01+-lähetin-vastaanotinmoduulin kanssa on paljon työtä, mutta onneksi saatavilla on useita kirjastoja. Yksi suosituimmista kirjastoista on RF24. Tämä kirjasto on ollut olemassa jo useita vuosia. Se on helppokäyttöinen aloittelijoille, mutta tarjoaa kuitenkin paljon edistyneille käyttäjille. Kokeissamme käytämme samaa kirjastoa.
Voit ladata kirjaston uusimman version RF24:n GitHub-tietovaraston haarukasta tai, klikkaamalla tätä painiketta voit ladata zip-tiedoston:
Asennusta varten avaa Arduino IDE, siirry kohtaan Sketch > Include Library > Add .ZIP Library ja valitse RF24-master-tiedosto, jonka juuri latasit. Jos tarvitset lisätietoja kirjaston asentamisesta, käy tässä Arduino-kirjaston asentaminen -oppaassa.
Arduino-koodi – Lähettimelle
Kokeessamme lähetämme vain perinteisen ’Hello World’-viestin lähettimestä vastaanottimeen.
Tässä on sketsi, jota käytämme lähettimessämme:
//Include Libraries#include <SPI.h>#include <nRF24L01.h>#include <RF24.h>//create an RF24 objectRF24 radio(9, 8); // CE, CSN//address through which two modules communicate.const byte address = "00001";void setup(){ radio.begin(); //set the address radio.openWritingPipe(address); //Set module as transmitter radio.stopListening();}void loop(){ //Send message to receiver const char text = "Hello World"; radio.write(&text, sizeof(text)); delay(1000);}
Sketsi aloitetaan sisällyttämällä kirjastot. SPI.h-kirjasto hoitaa SPI-kommunikaation, kun taas nRF24L01.h ja RF24.h ohjaavat moduulia.
//Include Libraries#include <SPI.h>#include <nRF24L01.h>#include <RF24.h>
Seuraavaksi meidän on luotava RF24-objekti. Olio ottaa parametreina kaksi pin-numeroa, joihin kytketään signaalit CE ja CSN.
//create an RF24 objectRF24 radio(9, 8); // CE, CSN
Seuraavaksi meidän on luotava tavujoukko, joka edustaa putkiosoitetta, jonka kautta kaksi nRF24L01+-moduulia kommunikoivat.
//address through which two modules communicate.const byte address = "00001";
Voitamme vaihtaa tämän osoitteen arvon mihin tahansa 5-kirjaimiseen merkkijonoon, kuten esimerkiksi ”node1”. Osoite on tarpeen, jos verkossa on muutama moduuli. Osoitteen ansiosta voit valita tietyn moduulin, jonka kanssa olet kiinnostunut kommunikoimaan, joten meidän tapauksessamme meillä on sama osoite sekä lähettimelle että vastaanottimelle.
Jatkossa setup-funktiossa: meidän on alustettava radio-objekti käyttämällä radio.begin()
ja käyttämällä radio.openWritingPipe()
-funktiota asetamme lähettimen osoitteen.
//set the addressradio.openWritingPipe(address);
Viimeiseksi käytämme funktiota radio.stopListening()
, joka asettaa moduulin lähettimeksi.
//Set module as transmitterradio.stopListening();
Silmukkaosassa: luomme merkkimäärän, johon osoitamme viestin ”Hello World”. Käyttämällä radio.write()
-funktiota lähetämme kyseisen viestin vastaanottajalle. Ensimmäinen argumentti tässä on viesti, jonka haluamme lähettää. Toinen argumentti on kyseisessä viestissä olevien tavujen määrä.
const char text = "Hello World";radio.write(&text, sizeof(text));
Tämän menetelmän avulla voit lähettää enintään 32 tavua kerrallaan. Koska se on yksittäisen paketin enimmäiskoko, jota nRF24L01+ voi käsitellä. Jos tarvitset vahvistuksen siitä, että vastaanottaja on vastaanottanut tiedot, menetelmä radio.write()
palauttaa arvon bool
. Jos se palauttaa TRUE, data on saapunut vastaanottajalle. Jos se palauttaa FALSE, data on kadonnut.
funktio radio.write() estää ohjelman, kunnes se saa kuittauksen tai kaikki uudelleenlähetysyritykset loppuvat.
Arduino-koodi – Vastaanottimelle
Tässä on sketsi, jota käytämme vastaanottimessamme
//Include Libraries#include <SPI.h>#include <nRF24L01.h>#include <RF24.h>//create an RF24 objectRF24 radio(9, 8); // CE, CSN//address through which two modules communicate.const byte address = "00001";void setup(){ while (!Serial); Serial.begin(9600); radio.begin(); //set the address radio.openReadingPipe(0, address); //Set module as receiver radio.startListening();}void loop(){ //Read the data if available in buffer if (radio.available()) { char text = {0}; radio.read(&text, sizeof(text)); Serial.println(text); }}
Tämä ohjelma näyttää melko samanlaiselta kuin lähettimen ohjelma lukuun ottamatta joitakin muutoksia.
Esittelyfunktion alussa aloitamme sarjaliikenteen. Seuraavaksi asetamme radio.setReadingPipe()
-funktiolla saman osoitteen kuin lähettimelle ja näin mahdollistamme viestinnän lähettimen ja vastaanottimen välillä.
//set the address radio.openReadingPipe(0, address);
Ensimmäinen argumentti on virran numero. Voit luoda enintään 6 virtaa, jotka vastaavat eri osoitteisiin. Me loimme vain osoitteen streamille numero 0. Toinen argumentti on osoite, johon stream reagoi kerätäkseen dataa.
Seuraavana vaiheena asetetaan moduuli vastaanottimeksi ja aloitetaan datan vastaanotto. Siihen käytetään radio.startListening()
-funktiota. Siitä lähtien modeemi odottaa määritettyyn osoitteeseen lähetettyä dataa.
//Set module as receiver radio.startListening();
Silmukka-funktiossa: Luonnos tarkistaa radio.available()
-menetelmällä, onko osoitteeseen saapunut dataa. Tämä metodi palauttaa TRUE-arvon, jos puskurissa on jotain dataa.
if (radio.available()) { char text = {0}; radio.read(&text, sizeof(text)); Serial.println(text); }
Jos dataa on saapunut, se luo 32 merkin matriisin, joka on täynnä nollia (myöhemmin ohjelma täyttää sen vastaanotetulla datalla). Datan lukemiseen käytetään metodia radio.read (& text, sizeof (text)). Tämä tallentaa vastaanotetun datan merkkimääräämme.
Lopussa vain tulostamme vastaanotetun viestin sarjamonitoriin. Jos teit kaiken oikein eikä kytkennöissä ole virheitä, sarjamonitorissa pitäisi näkyä jotain tällaista.
NRF24L01+-lähetinvastaanotinmoduulin kantaman parantaminen
Langattoman tiedonsiirtojärjestelmän keskeisin parametri on tiedonsiirtoalue. Monissa tapauksissa se on ratkaiseva tekijä RF-ratkaisun valinnassa. Keskustellaan siis siitä, mitä voimme tehdä saadaksemme moduulillemme paremman kantaman.
Vähennä virtalähteen kohinaa
Radiotaajuussignaalia (RF) tuottava RF-piiri on hyvin herkkä virtalähteen kohinalle. Jos sitä ei hallita, virtalähteen kohina voi vähentää merkittävästi saatavaa kantamaa.
Jos virtalähteenä ei ole erillinen akku, on hyvin mahdollista, että virtalähteen tuottamiseen liittyy kohinaa. Jotta tämä kohina ei pääsisi järjestelmään, on suositeltavaa sijoittaa 10 µf:n suodatinkondensaattori virransyöttöjohdon poikki fyysisesti mahdollisimman lähelle nRF24L01+ -moduulia.
Helpoisin tapa selvitä tästä on käyttää erittäin edullista nRF24L01-moduulin sovitinmoduulia.
Sovitinmoduulissa on 8-nastainen naarasliitin, jonka avulla voit liittää nRF24L01-moduulisi. Siihen mahtuvat molemmat aiemmin käsittelemämme moduulit, sekä integroidulla antennilla että ulkoisella antennilla (PA/LNA) varustettu moduuli. Siinä on myös 6-nastainen urosliitin SPI- ja Interrupt-liitäntöjä varten ja 2-nastainen liitin virransyöttöä varten.
Sovitinmoduulissa on oma 3,3 voltin jännitteensäädin ja joukko suodatinkondensaattoreita, joten voit syöttää siihen virtaa 5 voltin virtalähteellä.
Toinen mahdollinen häiriölähde RF-piirille on ulkoinen ympäristö, etenkin jos naapuriverkot on asetettu samalle kanavalle tai jos muu elektroniikka aiheuttaa häiriöitä.
Edistääksesi, etteivät nämä signaalit aiheuta ongelmia, suosittelemme, että käytät nRF24L01+-moduulisi korkeinta 25 kanavaa. Syynä tähän on se, että WiFi käyttää suurinta osaa alemmista kanavista.
Alhaisempi tiedonsiirtonopeus
NRF24L01+ tarjoaa korkeimman vastaanottimen herkkyyden 250Kbps-nopeudella, joka on -94dBm. Kuitenkin 2 MBps:n tiedonsiirtonopeudella vastaanottimen herkkyys laskee -82 dBm:iin. Jos puhut tätä kieltä, tiedät, että 250Kbps:n nopeudella vastaanotin on lähes 10 kertaa herkempi kuin 2Mbps:n nopeudella. Tämä tarkoittaa, että vastaanotin pystyy purkamaan 10 kertaa heikomman signaalin.
Mitä tarkoittaa vastaanottimen (Rx) herkkyys?
Vastaanottimen herkkyys on alin tehotaso, jolla vastaanotin pystyy havaitsemaan RF-signaalin. Mitä suurempi negatiivisen luvun absoluuttinen arvo on, sitä parempi on vastaanottimen herkkyys. Esimerkiksi vastaanottimen herkkyys -94 dBm on 12 dB:llä parempi kuin vastaanottimen herkkyys -82 dBm.
Siten tiedonsiirtonopeutta alentamalla voidaan merkittävästi parantaa saavutettavaa kantamaa. Lisäksi useimmissa projekteissamme 250Kbps:n nopeus on enemmän kuin riittävä.
Korkeampi lähtöteho
Maksimitehon asettaminen voi myös parantaa tiedonsiirtoaluetta. nRF24L01+:n avulla voit valita yhden lähtötehon eli 0 dBm, -6 dBm, -12 dBm tai -18 dBm. Valitsemalla 0 dBm:n lähtöteho lähetetään voimakkaampi signaali ilmassa.