Home

Modem NRF24L01

Łączność bezprzewodowa oparta na tytułowym module daje możliwość w łatwy sposób przesłać danych z jednego urządzenia do drugiego dbając tylko o to co chcemy przesłać, moduł automatycznie tworzy gotowe pakiety i je przesyła.
Taką transmisję możemy wykorzystać na przykład do zdalnego sterowania zabawkami, mini robotami, przesyłania danych ze stacji pogodowej itp.

Podstawowe dane techniczne:

Zasilanie - 1.9V - 3.6V
Pobór prądu (odbiór) - 13mA
Pobór prądu (transmisja) - 11mA
Pobór prądu w kompletnym uśpieniu - 900 nA
Częstotliwość pracy modułu - 2,4GHz
Prędkości transmisji - 250kbps, 1Mbps i 2Mbps
Zasięg około 100 m.

Podłączenie:

FR1

Podłączenie pinów w podstawowych modułach Arduino w oparciu o bibliotekę RF24

Tabela

Biblitea RF24 GitHub:

Podstawowy program z komentarzami:

Nadajnik:

#include <SPI.h>                //biblioteka obsługi SPI
#include <nRF24L01.h>     //biblioteka do obsługi danego modułu
#include <RF24.h>             //bazowa biblioteka dla rodziny modułów RF24
                                          //kod kanału do transmisji danych
const uint64_t pipe = 0xYYYYYYYYYYLL  //zamiast Y wstawiamy dowolne znaki zgodne z system szesnastkowym czyli od 0-9 i od A-F
RF24 radio(CE_Pin, CS_Pin);  //tworzymy instancję komunikacji o nazwie radio i przypisujemy do modułu piny CE i CS
void setup()
radio.begin();                //uruchom moduł
radio.openWritingPipe(pipe);  //ustaw moduł w tryb wysyłania
void loop()
radio.write(zmienna , dlugosc_zmiennej);          //zmienna- tutaj podajemy nazwę zmiennej
//dlugosc_zmiennej- podajemy długość zmiennej np. jako długość tablicy, długość zmiennej boolowskiej itp.

Odbiornik:

#include <SPI.h>        //biblioteka obsługi SPI
#include <nRF24L01.h>   //biblioteka do obsługi danego modułu
#include <RF24.h>       //bazowa biblioteka dla rodziny modułów RF24
//kod kanału do transmisji danych
const uint64_t pipe = 0xYYYYYYYYYYLL  //zamiast Y wstawiamy dowolne znaki zgodne z system szesnastkowym czyli od 0-9 i od A-F
RF24 radio(CE_Pin, CS_Pin);  //tworzymy instancję komunikacji o nazwie radio i przypisujemy do modułu piny CE i CS

void setup():
radio.begin();                  //uruchom moduł
radio.openReadingPipe(1,pipe);  //zacznij odczyt z kanału pierwszego, przypisanego stałej 64bitowej pipe
radio.startListening();         //zacznij nasłuch (odbiór) danych
void loop()  

{
  if ( radio.available() )         // sprawdza czy są dane do odbioru,
  {                                           // jeżeli tak: radio.read(zmienna, dlugosc_zmiennej);  //odbierz dane i zapisz do zmiennej o długości..

}
}

Przykładowy podstawowy program

Nadajnik:

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

RF24 radio(7, 8);

const byte rxAddr[6] = "00001";

void setup()
{
  radio.begin();
  radio.setRetries(15, 15);
  radio.openWritingPipe(rxAddr);
 
  radio.stopListening();
}

void loop()
{
  const char text[] = "Hello World";
  radio.write(&text, sizeof(text));
 
  delay(1000);
}
Odbiornik:

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

RF24 radio(7, 8);

const byte rxAddr[6] = "00001";

void setup()
{
  while (!Serial);
  Serial.begin(9600);
 
  radio.begin();
  radio.openReadingPipe(0, rxAddr);
 
  radio.startListening();
}

void loop()
{
  if (radio.available())
  {
    char text[32] = {0};
    radio.read(&text, sizeof(text));
   
    Serial.println(text);
  }
}

Moduł bliżniaczy z dedykowaną anteną o zasięgu około 1100 m.

NRF24L1+PA+LNA NRF24L01+PA+LNA+antena