Table of Contents
NRF24L01 je jedním z legálních RF komunikátorů pro moderní aplikace. NRF24L01 je nejlevnější a je vybaven skvělými funkcemi. Jeden modul komunikuje na frekvenci 2,4 GHz, což jej činí legálním. Dokáže vysílat a přijímat data pomocí jediného modulu. Vysílání není jeho jedinou schopností, může komunikovat s celkem 6 dalšími stejnými moduly NRF24L01 najednou. Zařízení spolupracuje s aplikací Arduino a pokrývá všechny druhy aplikací dálkového ovládání. Tento bezdrátový modul využívá komunikační protokol SPI a nabízí přenosovou rychlost 10 MBs s rozsahem 125 adres, což z něj činí nejspolehlivější RF modul. RF modul používá k vysílání dat modul GFSK.
- Konfigurace vývodů NRF24L01
- Napájecí piny
- Komunikační piny
- IRQ Přerušovací pin
- Vlastnosti RF modulu NRF24L01
- Aplikace NRF24L01
- Jak používat komunikační modul NRF24L01
- Propojení s Arduinem
- Jak použít jako vysílač Příklad
- Podrobnosti o kódu vysílače
- Jak použít NRF24L01 jako přijímač Příklad
- Podrobnosti o kódu přijímače
- NRF24L01 Příklad
- 2D schéma
Konfigurace vývodů NRF24L01
V NRF24L01 nejsou žádné zvláštní vývody, všechny vývody, které nabízí ke komunikaci, jsou přítomny ve všech mikrokontrolérech a deskách. Prostřednictvím těchto pinů se zařízení propojí s externím mikrokontrolérem/Arduino a bude fungovat. Skládá se z 8 pinů. Všechny dostupné piny jsou:
Napájecí piny
VCC
Napájecí pin modulu je VCC, který se spojuje s napájecím zdrojem.
GND
nRF24L01 spolupracuje s jiným mikrokontrolérem a k provozu s ním bude potřebovat společnou zem. Požadavek na společnou zem vyřeší pin GND.
Komunikační piny
CE
CE je povolovací pin, který aktivuje vysílání/příjem modulu. Aktivuje zařízení pouze tehdy, když je na něm stav HIGH.
CSN
Tento pin slouží k aktivaci odposlechu a zpracování dat z mikrokontroléru. Pro zachování datové komunikace mezi mikrokontrolérem a modulem by měl být v poloze HIGH.
SCK
Jedná se o hodinový pulzní pin komunikace SPI v nRF24L01. Data se budou mezi modulem a mikrokontrolérem přesouvat podle hodinového impulsu na pinu SCK.
MOSI
Data vysílaná z mikrokontroléru prostřednictvím pinů SPI bude nRF24L01 přijímat na pinu MOSI.
MISO
Instrukce vysílané z nRF24L01 pomocí SPI pinů bude mikrokontrolér přijímat na pinu MISO.
IRQ Přerušovací pin
IRQ je přerušovací pin, který generuje událost vždy, když jsou k dispozici nová data pro SPI piny. Pomáhá posílat zpětnou vazbu vysílači.
Vlastnosti RF modulu NRF24L01
- Pracuje na frekvenci 2,4 GHz, díky čemuž je legální téměř v každé zemi.
- Jediný modul může fungovat jako vysílač i přijímač.
- Vestavěná anténa dokáže odesílat data až na vzdálenost 100 metrů.
- Modul nRF24L01 může komunikovat s maximálně 6 dalšími moduly najednou.
- Pro svůj provoz vyžaduje napětí 3,3 V, ale napětí může sahat pouze do 3,6 V, jinak se nestačí zahřát a shoří.
- Zařízení má vestavěný oscilátor 16 MHz.
- Přenosová rychlost nRF24L01 je 256 kb/s až 2 Mb/s. V případě, že se zařízení zahřeje, může se zahřát a shořet.
- Zařízení má rozsah 125 kanálů, což dává možnost provozovat 125 různých sítí na jednom místě.
- Frekvence kanálů se pohybují od 2400MHz do 2525MHz.
Aplikace NRF24L01
- Při vytváření malé mesh sítě je nRF24L01 nejlepší volbou pro použití.
- Dálkové ovládání aplikací na vývojové a komerční úrovni funguje s nRF24L01 skvěle.
- Většina aplikací IoT na domácí úrovni má tento bezdrátový modul, ale pouze na malé úrovni.
Jak používat komunikační modul NRF24L01
NRF24L01 je použitelný se všemi mikrokontroléry a chytrými deskami, ale pro jeho použití je třeba porozumět některým pinům a datovým informacím. Chcete-li modul používat, připojte jej k jinému mikrokontroléru s protokolem SPI. Nejprve dejte zařízením napájecí vstup a poté připojte jejich piny SPI podle daného zapojení.
Po připojení mějte na paměti, že nRF24L01 může pracovat dvěma způsoby. První je vysílač a druhý a přijímač. Aby mohl mikrokontrolér komunikovat jako vysílač a přijímač, měl by nejprve vědět. V moderních aplikacích je Arduino jediným zařízením, které podporuje nejefektivnější komunikaci komunikace nRF24L01.
Propojení s Arduinem
Na internetu je spousta prací a výzkumů o nRF24L01, které mohou pomoci k jeho použití v mnoha aplikacích, ale existuje základ tohoto modulu v Arduinu, který by měl každý vývojář pochopit. Základem činnosti modulu nRF24L01 je vysílač a přijímač, v Arduinu je obojího možné dosáhnout následujícími způsoby. Zde je zapojení pro Arduino UNO.
Jak použít jako vysílač Příklad
Když bude nRF24L01 fungovat jako vysílač, pak může přenášet data pouze na jednom kanálu do jiného modulu. Pro použití jako vysílač by měl program v Arduinu znát. Po nahrání programu není možné bez programování měnit režimy mezi vysílačem a přijímačem. Pro použití jako vysílače je třeba nahrát následující kód:
Podrobnosti o kódu vysílače
Komunikace mezi Arduinem a nRF24L01 závisí na následujících knihovnách:
#include <nRF24L01.h>#include <RF24.h>#include <SPI.h>
Jak víme, každá deska Arduino má specifický SPI pin MISO, MOSI a SCK. Arduino o nich tedy nebude muset informovat, ale piny CSN a CE je třeba inicializovat. Knihovna nRF24L01 má vestavěnou funkci pro získání PINu CSN i CE, který je:
RF24 radio(3, 2);
Číslo 3 představuje pin CE a 2 představuje pin CSN. Oba jsou měnitelné podle libovolných digitálních pinů; zde jsou podle výše uvedeného zapojení.
Poté se modul musí inicializovat pomocí následujícího příkazu:
radio.begin();
Adresa je definovatelná pomocí 5 bitů pro zařízení, na které má komunikovat přijímač. Lze použít libovolné 5bitové číslo.
radio.openWritingPipe(10101);
Poté by měl modul znát svůj režim. Buď pracuje jako přijímač, nebo jako vysílač. Následující příkaz udělá z modulu nRF24L01 vysílač.
radio.stopListening();
Pak je zařízení použitelné jako vysílač. Jediné, co je známo, že se inicializuje, je odesílání dat. Vždy mějte na paměti, že kvůli omezení modulu lze najednou odeslat pouze 32 bajtů dat. K tomu pomůže následující příkaz:
const char data = "DATA";radio.write(&data, sizeof(data));
Vysílání dat je definovatelné v nastavení nebo ve smyčce programu.
Jak použít NRF24L01 jako přijímač Příklad
Výše uvedená část se týká způsobu vysílání, ale způsob přijímače se od vysílače neliší. Ve vysílači se změní pouze tři instrukce.
- Adresní kanál, který ve vysílači nebyl k dispozici
- Inicializace modulu jako přijímače
- Způsob příjmu a kontroly dat
Následující kód pro přijímač.
Podrobnosti o kódu přijímače
Jak si můžete všimnout, u přijímače se od vysílače liší pouze tři části.
První částí je adresní část:
radio.openReadingPipe(0,10101);
V adresní části jsou nyní dvě části. druhá je adresní část, která definuje adresu přenosového zařízení. První část, která je “0”, definuje kanál. Protože jsme výše hovořili o tom, že modul nabízí 6 kanálů pro komunikaci najednou, první část programování pomůže vytvořit více kanálů.
Druhá část je inicializace modulu jako vysílače. Modul jako vysílač inicializujeme následujícím příkazem:
radio.startListening();
Třetí částí je příjem dat.
if (radio.available())
Pomůže nám dozvědět se o příchozích datech
radio.read( data, size );
Pomůže nám načíst data.
NRF24L01 Příklad
Existuje spousta aplikací, ve kterých je nRF24L01 použitelný, ale vytváření sítě je jednou z nejlepších schopností nRF24L01, kterou se liší od jiného modulu. Pro použití jako síť by mělo být k dispozici celkem 3-7 modulů. Postupujte podle uvedeného obrázku.
Pak by se měla použít následující instrukce pro inicializaci různých kanálů na straně přijímače.
Přijímač není schopen rozlišovat mezi zařízeními, takže vývojáři vždy pamatují na to, že data by neměla být mezi vysílači stejná.
2D schéma
Alternativní moduly:
- XBee S2C Module
- SX1278 LoRa RF Module
- SIM900A GSM Module
- ESP12E WiFi Module
- PN532 NFC RFID Module
- HM-10 Bluetooth Module
- HC-05 Bluetooth modul
- 433MHz RF přijímací modul
- 433MHz RF vysílací modul
- TSOP1738 IR přijímač
- Arduino MKR1000 WiFi deska