Cosa sono le reti mesh per ESP32?

Pubblicato su News il 26/10/2023 da sergio rame ‐ 5 min di lettura

Cosa sono le reti mesh per ESP32?

Cosa sono le reti mesh

Le reti mesh sono reti wireless in cui i dispositivi sono connessi tra loro in modalità peer-to-peer. Questo significa che ogni dispositivo può comunicare direttamente con qualsiasi altro dispositivo nella rete, senza bisogno di un server centralizzato.

Vengono spesso usate per applicazioni IoT in cui è necessario collegare un gran numero di dispositivi in un’area topografica estesa. Le reti mesh offrono una serie di vantaggi rispetto alle reti Wi-Fi tradizionali:

Vantaggi delle reti mesh

  • Scalabilità: Le reti mesh possono essere facilmente scalate per aggiungere nuovi dispositivi.
  • Resilienza: Le reti mesh possono continuare a funzionare anche se alcuni dispositivi vengono scollegati o danneggiati.
  • Efficienza energetica: Le reti mesh utilizzano meno energia rispetto alle reti Wi-Fi tradizionali.

Svantaggi delle reti mesh

Le reti mesh presentano anche alcuni svantaggi, tra cui:

  • Complessità: La configurazione e la gestione delle reti mesh può essere più complessa rispetto alle reti Wi-Fi tradizionali.
  • Performance: Le reti mesh possono avere prestazioni inferiori rispetto alle reti Wi-Fi tradizionali, soprattutto per applicazioni che richiedono un elevato throughput di dati.

In questo post vedremo come con la scheda micontroller ESP32 sia facile creare reti mesh di piccole e grandi dimensioni. Anzitutto vediamo di quali librerie software abbiamo bisogno.

Il software di sistema

Esistono diverse librerie che possono essere utilizzate per creare reti mesh con ESP32. Una delle librerie più popolari è painlessMesh. Questa libreria è facile da usare e offre una vasta gamma di funzionalità.

A livello operativo, pur avendo risolto il node della libreria, rimangono alcuni passaggi da risolvere:

1 - Installare la libreria painlessMesh.

2 - Programmare ogni dispositivo ESP32 con il codice per creare una rete mesh.

3 - Accendere i dispositivi ESP32.

4 - Una volta che i dispositivi ESP32 saranno accesi, si connetteranno tra loro automaticamente per formare la rete mesh.

In Robotdazero poniamo sempre un forte accento sulle applicazioni ambientali e anche in questo caso abbiamo pensato a delle applicazioni pratiche per controllare e combattere (almeno a livello di informazione) i danni dell’inquinamento.

Monitoraggio ambientale con le reti mesh

Le reti mesh possono essere utilizzate per monitorare i livelli di inquinamento, la qualità dell’aria e altri dati ambientali. Vediamo un esempio di partenza su come rilevare e condividere valori ambientali:

Ecco un programma C++ per effettuare il monitoraggio ambientale con le reti mesh per ESP32:

Il codice sorgente

#include <painlessMesh.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

// Definizione dei parametri della rete mesh
#define MESH_SSID "my-mesh-network"
#define MESH_PASSWORD "my-mesh-password"
#define MESH_PORT 5555

// Definizione dei parametri del sensore
#define SEALEVELPRESSURE_HPA 1013.25

// Crea un oggetto mesh
Mesh mesh;

// Crea un oggetto sensore BME280
Adafruit_BME280 bme;

// Funzione per inizializzare il sensore BME280
void initSensor() {
  // Inizializza la comunicazione I2C
  Wire.begin();

  // Inizializza il sensore BME280
  bme.begin(0x76);
}

// Funzione per acquisire i dati dal sensore BME280
void readSensor() {
  // Acquisisce la temperatura
  float temperature = bme.readTemperature();

  // Acquisisce la umidità
  float humidity = bme.readHumidity();

  // Acquisisce la pressione
  float pressure = bme.readPressure() / SEALEVELPRESSURE_HPA;

  // Stampa i dati acquisiti
  Serial.println("Temperatura: " + String(temperature) + " °C");
  Serial.println("Umidità: " + String(humidity) + "%");
  Serial.println("Pressione: " + String(pressure) + " hPa");
}

// Funzione per inviare i dati al nodo gateway
void sendData() {
  // Crea un messaggio
  String message = String(temperature) + "," + String(humidity) + "," + String(pressure);

  // Invia il messaggio al nodo gateway
  mesh.sendBroadcast(message);
}

// Funzione per eseguire il loop principale
void loop() {
  // Verifica se il dispositivo è connesso alla rete mesh
  if (!mesh.isConnected()) {
    // Tenta di connettersi alla rete mesh
    mesh.connect(MESH_SSID, MESH_PASSWORD, MESH_PORT);
  }
  // Acquisisce i dati dal sensore BME280
  readSensor();
  // Invia i dati al nodo gateway
  sendData();
  // Attende 1 secondo prima di eseguire il loop successivo
  delay(1000);
}

// Funzione per inizializzare la rete mesh
void setup() {
  // Inizializza la seriale
  Serial.begin(115200);
  // Inizializza il sensore BME280
  initSensor();
  // Inizializza la rete mesh
  mesh.init(MESH_SSID, MESH_PASSWORD, MESH_PORT);
  // Imposta il dispositivo come nodo router
  mesh.setRouter(true);
  // Imposta il dispositivo come nodo gateway
  mesh.setRoot();
}

La fase di setup inizializza la seriale, il sensore BME280 e la rete mesh. La funzione loop, molto semplice, acquisisce i dati dal sensore BME280 e li invia i dati al nodo gateway.

Quindi attende 1 secondo prima di eseguire il loop successivo. Per utilizzare questo programma, è necessario collegare un sensore BME280 al dispositivo ESP32. Il sensore BME280 è un sensore ambientale che misura la temperatura, l’umidità e la pressione. Quando il programma “entra a regime”, l’ESP32 acquisisce i dati dal sensore li invia al gateway e il nodo gateway può a sua volta inviare ad una app come la nostra “Kaspian” per visualizzare i dati acquisiti.

Ecco un esempio di output del programma:

Temperatura: 22.5 °C Umidità: 45% Pressione: 1013.25 hPa

Le reti mesh per ESP32 risolvono in economia il difficile problema di rilevare dati su una zona geografica estesa come potrebbe essere un terreno agricolo e sono una valida alternative alle schede LoRa per la tramissione di dati in formato Json.

I progressi della tecnologia “mesh” fanno comunque intravedere l’utilizzo dell’ESP32 anche per trasmettere foto ad alta risoluzione e video a bassa risoluzione, cosa del tutto impensabile per il protocollo LoRa.

R.118.2.3.1

RESTA IN CONTATTO

Novità settimanali su prodotti, offerte speciali, corsi e altro ancora.