EO_491
53 - ELETTRONICA OGGI 491 - GENNAIO/FEBBRAIO 2021 COMM WIRELESS PROTOCOL istallato sul PC, occorre installare l’IDE di Arduino: dal sito ufficiale www.arduino.cc scaricate il software e in- stallatelo. Aprite l’IDE e copiate il codice in un nuovo sketch e seguite dall’IDE la descrizione del codice con la numerazione delle linee. Riga 10 : questo è l’indirizzo MAC dello slave. Viene uti- lizzato questo indirizzo per inviare i dati. Righe 11-15 : Questa è la struttura del messaggio da inviare al peer (slave). Il messaggio può contenere di- versi campi (es. Char, int, float e così via). Riga 17-20 : funzione di callback invocata quando il messaggio viene inviato. Riga 29 : l’ESP-Now viene inizializzato prima di utilizzarlo. Riga 33 : l’ESP8266 definisce il suo ruolo. Questo è il ruolo principale. Riga 36 : il codice aggiunge il peer all’elenco dei peer. In questo caso il dispositivo che funge da master, ag- giunge l’altro ESP8266 (lo slave) utilizzando l’indirizzo Mac. In questo modo, i due dispositivi ESP possono scambiare dati tramite il protocollo ESP-Now. Riga 38 : registrazione della funzione di callback che viene attivata non appena il messaggio viene inviato. Riga 45 : il master invia il messaggio all’altro ESP8266 tramite ESP-Now. Codice di configurazione dell’ESP8266 Slave (rice- vitore) #include <Arduino.h> #include <ESP8266WiFi.h> #include <espnow.h> typedef struct message { int red; int green; int blue; } message; message myMessage; void onDataReceiver(uint8_t * mac, uint8_t *incomingData, uint8_t len) { Serial.println(“Message received.”); // We don’t use mac to verify the sender // Let us transform the incomingData into our message struc- ture memcpy(&myMessage, incomingData, sizeof(myMessage)); Serial.print(“Red:”); Serial.println(myMessage.red); Serial.print(“Green:”); Serial.println(myMessage.green); Serial.print(“Blue:”); Serial.println(myMessage.blue); } void setup() { / ''10((78 WiFi.disconnect(); ESP.eraseConfig(); @@ 9 l - 6 9 , / 9 , : - 78 // Get Mac Add Serial.print(“Mac Address: “); Serial.print(WiFi.macAddress()); Serial.println(“\nESP-Now Receiver”); // Initializing the ESP-Now if (esp_now_init() != 0) { Serial.println(“Problem during ESP-Now init”); return; } //esp_now_set_self_role(ESP_NOW_ROLE_SLAVE); // We can register the receiver callback function esp_now_register_recv_cb(onDataReceiver); } void loop() { // put your main code here, to run repeatedly: } Il Listato 2 è relativo al codice di esempio ESP-Now con l’ESP8266 configurato come Slave. Come per il codice del Master, aprite l’IDE e copiate il codice in un nuovo sketch e seguite dall’IDE la descri- zione del codice con la numerazione delle linee. Righe 10-21 : funzione di callback che si attiva quan- do arriva un nuovo messaggio attraverso il protocollo ESP-Now. Riga 35 : come per il mittente ESP8266, si inizializza il protocollo ESP-Now. Riga 42 : registrazione della funzione di callback ESP- Now che verrà richiamata non appena arriva un nuovo messaggio all’ESP8266. Test della connessione ESP-Now one-to-one tra ESP8266 Dopo aver caricato i codici ai rispettivi Master e Slave, si otterrà la ricezione dei dati nello Slave, come ripor- tato nel monitor seriale mostrato in figura 4. Modifi- cando i valori dei tre colori nel codice del Master si otterrà la corrispondente variazione di colorazione del led RGB. In questo articolo abbiamo descritto il proto- collo di rete wireless ESP-Now e come utilizzarlo: con un esempio pratico, ne abbiamo descritto l’utilizzo per collegare due ESP8266 in configurazione one-to-one. Caratteristiche di velocità, affidabilità e sicurezza, e la possibilità di collegare diversi dispositivi ESP in diver- se modalità di connessione wireless, fanno di questo protocollo di comunicazione una potente e flessibile alternativa a basso costo e a basso consumo energe- tico, ai tradizionali sistemi di comunicazione wireless a corto raggio. Fig. 4 − Messaggio ricevuto dallo Slave
Made with FlippingBook
RkJQdWJsaXNoZXIy MTg0NzE=