Protocollo ESP32-NOW (Parte 1)
Introduzione
Negli ultimi anni l’azienda cinese Espressif ha introdotto sul mercato diversi dispositivi che hanno rivoluzionato completamente il mercato dei sistemi embedded.
Una delle prime board ad avere un enorme successo è stata la ESP8266, tutt’ora commercializzata dato il suo enorme successo, in pochi centimetri quadrati è montato un microcontrollore a 32bit, con il Wi-Fi integrato.
La possibilità di applicazioni, grazie alla periferica wi-fi integrata, sono innumerevoli.
Espressif ha sviluppato un sistema proprietario per la programmazione del modulo, nel contempo la board è compatibile con l’IDE di Arduino, quest’ultima caratteristica ha fatto aumentare la sua popolarità nel mondo dei makers che già usava Arduino.
Il sistema ESP8266 di fatto è diventato il maggiore concorrente di Arduino.
Uno dei grossi svantaggi del modulo ESP8266 è quello di avere un numero limitato di pins, solo quattro, e questo è stato uno dei motivi che ha indotto l’azienda Espressif ad introdurre sul mercato nuovi moduli, in particolare la scheda ESP32, che reputo, attualmente, il migliore sistema prodotto dall’azienda cinese.
In questo articolo parleremo proprio del modulo ESP32 e in particolare della libreria ESP32-NOW.
Caratteristiche ESP32-NOW
Il protocollo ESP32 –NOW è stato sviluppato dall’azienda Espressif, per ridurre l’assorbimento di energia durante le comunicazioni wireless.
Nell’ambito dei progetti IOT, dove in molti casi i moduli di comunicazioni sono alimentati con delle batterie, ridurre l’assorbimento, per molte applicazioni, può essere un grosso vantaggio.
I moduli ESP8266 e ESP32, hanno un basso assorbimento d’energia quando si trovano nello stato di “sleep modes” quando il microcontrollore esce da questo stato, per esempio a seguito di un interrupt, per effettuare un’autenticazione e connessione Wi-Fi, la durata di queste fasi è significativo e l’assorbimento di corrente, per ogni sezione, è maggiore di 350mA.
Il protocollo ESP32-NOW, attiva una trasmissione peer to peer tra dispositivi della famiglia ESP, con un assorbimento di corrente inferiore alla classica comunicazione WI-FI.
Utilizza sempre il modulo Wi-Fi integrato pertanto usa sempre la banda dei 2,4GHz, ma in questo caso non si esegue una connessione classica al Wi-Fi WAP e non interferisce con il normale funzionamento domestico delle comunicazioni wireless.
Il risparmio energetico non si ottiene diminuendo la potenza di trasmissione, ma semplificando e riducendo il tempo di connessione e comunicazione.
La filosofia che c’è dietro questo protocollo è quella di utilizzare la banda 2,4 GHz, senza usare il protocollo WI-FI WAP, ma un protocollo molto più snello e minimale.
Il trasferimento di un pacchetto può avere una dimensione massima di 250 byte.
Per le ridotte dimensioni del pacchetto non e’ idoneo per la trasmissione dell’audio e tanto meno dei video, ma è sufficiente per il trasferimento di dati di piccole dimensioni, tipiche di applicazioni IOT.
I dati possono essere trasmessi in modo unidirezionale o bidirezionale, single–duplex o full-duplex.
La trasmissione può anche essere criptata, e si possono connettere fino a 20 dispositivi contemporaneamente.
La portata del segnale, ovviamente, dipende dall’ambiente in cui sono posizionati i dispositivi, in particolari condizioni, in spazio aperto e con l’antenna esterna, può raggiungere fino a 400 metri.
Modalità di comunicazione con ESP32-NOW
In una rete di comunicazione ESP32-NOW, i dispositivi possono essere identificati in due modi diversi:
- Initiator (Iniziatore)
- Responder (Risponditore)
I due dispositivi coinvolti nella comunicazione hanno due ruoli distinti:
Initiator: è il dispositivo che invia i dati.
Responder: è il dispositivo che riceve il messaggio.
Comunicazione unidirezionale
E’ il modello più semplice di un sistema di comunicazione, poiché c’è un solo Initiator, e un solo Responder.
L’ESP32 Initiator, trasmette i dati all’ ESP32 Responder, il protocollo prevede anche la possibilità di attivare il feedback da parte del Responder, per ricevere la conferma dell’avvenuta ricezione.
Questo tipo di configurazione è molto utilizzata soprattutto nel controllo da remoto di un dispositivo.
Un Initiator e multipli Responders
Come si evince dal titolo, c’è un solo Initiator, che può inviare i dati, ma a differenza del modello precedente, in questo caso i Responders sono più di uno. L’invio dei dati da parte dell’Initiator, può essere fatto anche in broadcast, cioè, il messaggio è inviato a tutti i Responders.
Anche questo modello è molto usato quando ci sono più sensori da monitorare.
Un Responder e multipli Initiators
Questa configurazione è l’opposto di quella vista in precedenza, abbiamo un solo Responder e multipli Initiators.
Questo tipo di configurazione è usata quando c’è un solo sensore e più di un utilizzatore.
Comunicazione bidirezionale
I due dispositivi possono essere sia Initiator che Responder.
Rete full-duplex
Ci sono più di due dispositivi che possono comunicare tra di loro, due alla volta, in questo modo abbiamo realizzato una rete di moduli ESP32.
le parti successive?
Innanzitutto buonasera, l’educazione non è mai troppa.
Su questo tema ho pubblicato tre articoli.
Nel link di seguito ti riporto la pagina dedicata a questo argomento:
https://www.quattrodispositivi.it/category/esp32-now/