Pentru a transfera diferite date sau informatii intre 2 placi de dezvoltare Arduino fara a folosi o legatura fizica intre cele 2 vom folosi 2 module WiFi nRF24L01.
Aceste module sunt folosite atat pentru transmisie cat si pentru receptie. Ele emit in banda de 2.4GHz si au o rata de transfer intre 250 kbs si 2 Mbs.
Tensiunea de alimentare a acestor module este intre 1.9 si 3.6 Volti la un curent maxim de 12 miliAmperi.
Pinii de intrare sunt tolernati la tensiunea de 5 Volti.
Distanta de counicare intre 2 astfel de module este de maxim 100 de metri in camp deschis.
Un astfel de modul costa 7 lei si se gaseste de cumparat aici.
O poza cu modulul folosit este mai jos:

Modulele pot folosi un maxim de 125 de canale, fiecarui canal fiindu-i alocate maxim 6 adrese.
Conexiunea la Arduino Uno/Nano se face in felul urmator pentru ambele module:
Arduino - nRF24L01
3V3 - VCC
GND - GND
D8 - CSN
D7 - CE
D13 - SCK
D11 - MOSI
D12 - MISO
Poza cu pinoutul acestui modul este mai jos:

Pentru a putea folosi aceste module va trebui sa instalam in Arduino IDE libraria RF24. Acest lucru se poate face foarte simplu accesand meniul Instrumente > Gestionare biblioteci... . In fereastra care se va deschide vom scrie in casuta de cautare rf24 apoi vom cauta libraria cuu exact acelasi nume. Vom da un click pe butonul Instalare apoi, dupa ce se va instala, vom inchide aceasta fereastra.
Vom incepe sa scriem primul sketch, cel al transmitatorului:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); //pinii CE si CSN necesari pentru comunicare
const byte address[6] = "00001"; //setam adresa de transmisie
void setup() {
radio.begin();
radio.openWritingPipe(address); //adaugam adresa in modul
radio.setPALevel(RF24_PA_MIN); //setam nivelul de transmisie, minim incazul de fata
radio.stopListening(); //setam modulul ca si transmitator
}
void loop() {
const char text[] = "www.electronicstore.ro"; //creem un sir de caractere pe care dorim sa-l emitem
radio.write(&text, sizeof(text)); //emiterea sirului de caractere
delay(1000); //adaugam o intarziere de 1 secunda
}
Urmatorul sketch este cel al receptorului si este foarte asemanator cu primul:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); //pinii CE si CSN necesari pentru comunicare
const byte address[6] = "00001"; //seta adresa de receptie
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address); //adaugam in modul adresa de receptie
radio.setPALevel(RF24_PA_MIN); //setam nivelul de transmisie, minim in cazul de fata
radio.startListening(); //setam modulul ca si receptor
}
void loop() {
if (radio.available()) { //verificam daca avem transmisie radio
char text[32] = "";
radio.read(&text, sizeof(text)); //receptionam mesajul transmis
Serial.println(text); //afisam in terminalul serial mesajul receptionat
}
}