Comunicazione Wireless tra due board Arduino con moduli nRF24L01

Nel post di oggi vedremo come realizzare una Comunicazione Wireless tra due board Arduino con moduli nRF24L01. Con la comunicazione senza fili, tra due o più microcontrollori, potremo realizzare diversi progetti come robot radiocomandati, sistemi di allarme, e molto altro ancora.


Comunicazione Wireless tra due board Arduino con moduli nRF24L01

Panoramica del progetto

In questo progetto realizzeremo una comunicazione senza fili utilizzando i moduli Wireless nRF24L01 e due micro-controllori:

  • Arduino UNO Rev3: che fungerà da Ricevitore (Receiver)
  • Arduino Nano: che fungerà da Trasmettitore (Transmitter)

La board Transmitter invierà una stringa di caratteri, tramite il modulo wireless, alla board Receiver e che visualizzeremo sul Serial Monitor.

Materiale occorrente

Per la realizzazione di questo progetto sono necessari i seguenti componenti:

Comunicazione Wireless tra due board Arduino con moduli nRF24L01. Materiale occorrente per il progetto

Panoramica sul modulo nRF24L01

Panoramica del modulo nRf24L01

Il modulo nRF24L01 è un ricetrasmettitore che utilizza la banda a 2,4 GHz.
Può lavorare ad una velocità di trasmissione che va da 250 kbps fino a 2 Mbps. Se viene utilizzato in spazzi aperti può raggiungere un raggio d’azione di 100 metri.
Il modulo è abbastanza economico ed ha un consumo massimo di 12 mA (durante la trasmissione). Può essere alimentato con una tensione che va da 1.9 Volt a 3.6 Volt.

N.B. una tensione maggiore di 3.6 volt rischia di danneggiare il modulo.

Questo il Pinout del modulo

Comunicazione Wireless tra due board Arduino con moduli nRF24L01. Pinout modulo nRf24L01

Per maggiori informazioni sul modulo potete consultare il datasheet a questo link.

Connettori ISP Arduino

Per i collegamenti dei moduli nRR24L01 alle board Arduino sfrutteremo i piedini presenti sul connettore ISP.
Il connettore ISP ha una piedinatura standard ma può essere saldato sulle varie schede in modo differente.
Questa è la piedinatura standard (presente sulle board che utilizzeremo per realizzare il progetto):

connettore ISP (In System Programming) standard

Per questioni di spazio le indicazioni dei 6 piedini non vengono stampate tutte sul connettore ma viene indicato solo il piedino 1 (MISO). Una volta individuato il piedino 1 è sufficiente guardare lo schema dell’immagine precedente per individuare la disposizione degli altri 5 piedini.

Sulla board Arduino Nano, che utilizzeremo in questa guida come Transmitter, il piedino 1(MISO) è evidenziato con il numero 1

Arduino Nano pinout connettore ISP

Sulla board Arduino UNO Rev3, che utilizzeremo come Receiver, il piedino 1(MISO) è contrassegnato con un cerchietto bianco

Arduino UNO Rev3 pinout connettore ISP chip ATMega328P

N.B. sulla board Arduino UNO sono presenti due connettori ISP, quello che andremo ad utilizzare è quello collegato al chip ATmega, come evidenziato nell’immagine

Posizione connettore ISP su Arduino UNO Rev3


Installazione libreria RF24

Prima di vedere i collegamenti e gli sketch dobbiamo installare la libreria che ci permette di utilizzare i moduli nRF24L01.
Tra le tante librerie disponibili, per questo progetto, ho optato per la RF24 di TMRh20.
L’installazione è abbastanza semplice e può essere effettuato direttamente dal gestore delle librerie di Arduino IDE raggiungibile da Sketch -> #include librerie -> Gestione librerie.
Dalla finestra per la gestione delle librerie cerchiamo RF24 ed effettuiamo l’installazione

Installazione libreria RF24 di TMRh20

Collegamenti e sketch Arduino Nano Transmitter

Cominciamo effettuando i collegamenti della board Transmitter come mostrato nella tabella seguente:

COLLEGAMENTO PIEDINI
Arduino Nano nRF24L01 Jumper Wire
MISO MISO (ISP)      Grigio
MOSI MOSI (ISP)      Bianco
SCK SCK (ISP)      Viola
CE D7      Marrone
CSN D8      Arancione
Vcc 3.3V      Rosso
GND GND (ISP)      Nero

Questo il circuito realizzato con Fritzing

Comunicazione Wireless tra due board Arduino con moduli nRF24L01. Circuito Fritzing collegamento Arduino Nano con modulo nRF24L01

Lo sketch da caricare su Arduino Nano è il seguente

Da arduino IDE creiamo un nuovo file, incolliamo lo sketch che abbiamo appena visto e carichiamolo sul micro-controllore configurando correttamente i parametri della board dal pannello Strumenti

  • Scheda -> Arduino Nano
  • Processore -> ATmega328P
  • Porta -> COM4 (N.B. la porta potrebbe essere differente)

Scheda Processore e porta COM Arcuino Nano

Collegamenti e sketch Arduino UNO Receiver

Ora effettuiamo i collegamneti per la board Receiver come mostrato nella tabella seguente:

COLLEGAMENTO PIEDINI
Arduino UNO R3 nRF24L01 Jumper Wire
MISO MISO (ISP)      Grigio
MOSI MOSI (ISP)      Bianco
SCK SCK (ISP)      Viola
CE D7      Marrone
CSN D8      Arancione
Vcc 3.3V      Rosso
GND GND (ISP)      Nero

Questo il circuito realizzato con Fritzing

Comunicazione Wireless tra due board Arduino con moduli nRF24L01. Circuito Arduino UNO Rev3 e modulo nRF24L01

Questo lo sketch per il micro-controllore Receiver

Come per la board Transmitter, da Arduino IDE, creiamo un nuovo file e incolliamo lo sketch appena visto e carichiamolo sul micro-controllore configurando correttamente i parametri della board dal pannello Strumenti

  • Scheda -> Arduino UNO
  • Processore -> ATmega328P
  • Porta -> COM5 (N.B. la porta potrebbe essere differente)

Scheda e porta COM Arcuino UNO Rev3


Panoramica sugli sketch

I due sketch sono simili, si differenziano per il fatto che la Board Transmitter si occupa di inviare la stringa e la board Receiver si occupa di ‘catturare’ la stringa ricevuta.
Nella prima parte, per entrambi gli sketch, includiamo le librerie necessari, inizializziamo il modulo e impostiamo un indirizzo di comunicazione:

Nelle funzioni setup e loop della board Transmitter impostiamo il modulo come trasmettitore (radio.openWritingPipe(address);) ed effettuiamo l’invio della stringa di testo “Hello World” (radio.write(&text, sizeof(text));)

Nelle funzioni setup e loop della board Receiver impostiamo il modulo in modalità ricezine (radio.openReadingPipe(0, address);), lo mettiamo in ascolto (radio.startListening();) e, se disponibili, catturiamo i dati provenienti dal Transmitter(radio.read(&text, sizeof(text));)

Prova funzionamento comunicazione Wireless

Ora non ci resta che testare se tutto funziona correttamente.
Per vedere il risultato sul Monitor Seriale lasciamo configurato l’IDE in modo da comunicare con Arduino UNO (receiver) e avviamolo da Strumenti -> Monitor Seriale.
Vedremo comparire la stringa che la board Transmitter sta inviando alla board Receiver

Comunicazione Wireless tra due board Arduino con moduli nRF24L01. Risultato serial monitor

Come sempre se avete dubbi, consigli o critiche da fare non esitate ad utilizzare i commenti o a visitare le pagine social.

A presto 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *