EO_491

52 - ELETTRONICA OGGI 491 - GENNAIO/FEBBRAIO 2021 COMM WIRELESS PROTOCOL Nella modalità one-to-one ci sono due peer in connes- sione. Secondo il protocollo ESP-Now, ogni peer può essere impostato come Master, Slave o Combo (master e slave contemporaneamente). Nella comunicazione % % 2 5 - 6 % 7 l’ESP1 o l’ESP2 opera da dispositivo trasmittente (bro- adcaster) inviando lo stesso messaggio a tutti i peer collegati (Fig. 2). Il dispositivo trasmittente svolge il ruolo di Master che si collega a diversi Slave. Questo scenario è utile quan- do vogliamo controllare diversi dispositivi configurati come slave che ricevono i dati trasmessi dal master. Ad esempio, una tipica applicazione con questo tipo di connessione può essere il controllo centralizzato di un impianto di illuminazione in cui il controllore è il master e gli slave agiscono sui corpi illuminanti su comando del master. La modalità di connessione many-to-one prevede la presenza di un dispositivo con funzione di Gateway centrale che raccoglie tutti i dati in arrivo dai peer a esso collegati. In questa configurazione, un’ap- plicazione può essere creata impiegando diversi sen- sori che inviano i dati acquisiti a un collettore centrale che elaborerà queste informazioni (Fig. 3). Un esempio di utilizzo del protocollo ESP-Now con il transceiver WiFi ESP8266 In questa parte finale dell’articolo descriveremo con un esempio molto semplice come realizzare un’ap- plicazione di trasmissione dati tra due dispositivi ESP8266 in configurazione one-to-one, in cui uno dei dispositivi è un master mentre l’altro è lo slave. Il ma- ster ha la funzione di inviare i dati dei valori del livello dei colori rosso, verde e blu, e lo slave di riceverli e inviarli a un led RGB a esso collegato. Sarà quindi ne- cessario creare due codici differenti, uno per il master (mittente) e l’altro per il destinatario (ricevente). I codi- ci saranno scritti utilizzando l’editor di Arduino. Codice di configurazione dell’ESP8266 Master (trasmettitore) /** * ESP-Now * * Sender */ #include <Arduino.h> #include <ESP8266WiFi.h> #include <espnow.h> // Mac address of the slave uint8_t peer1[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; typedef struct message { int red; int green; int blue; }; struct message myMessage; void onSent(uint8_t *mac_addr, uint8_t sendStatus) { Serial.println(“Status:”); Serial.println(sendStatus); } void setup() { / ''10((78 9 , / 9 , : - 78 // Get Mac Add Serial.print(“Mac Address: “); Serial.print(WiFi.macAddress()); Serial.println(“ESP-Now Sender”); // Initializing the ESP-NOW if (esp_now_init() != 0) { Serial.println(“Problem during ESP-Now init”); return; } : ;: : : # +:<=9:*= #:$=<-*= #*78 // Register the peer Serial.println(“Registering a peer”); esp_now_add_peer(peer1, ESP_NOW_ROLE_SLAVE, 1, NULL, 0); Serial.println(“Registering send callback function”); esp_now_register_send_cb(onSent); } void loop() { 26 / > 18 26 / > ?18 26 / > '1(8 Serial.println(“Send a new message”); esp_now_send(NULL, (uint8_t *) &myMessage, sizeof(myMessage)); delay(60000) Il Listato 1 è relativo al codice di esempio ESP-Now con l’ESP8266 configurato come Master. Prima di procedere con la descrizione del codice, se non già Fig. 2 − Connessione one-to-many: da uno a più dispositivi ESP Fig. 3 − Connessione many-to-one: da molti peer a un dispositivo gateway

RkJQdWJsaXNoZXIy MTg0NzE=