Implementare il protocollo MQTT con Arduino UNO e l’ESP8266

MQTT è un protocollo di comunicazione che nel corso degli anni si è dimostrato particolarmente adatto per interconnettere i dispositivi IoT. Il protocollo MQTT si è rivelato molto efficiente nell'ambito della comunicazione macchina-macchina poiché è semplice e leggero. In questo articolo andremo a descrivere un progetto in cui viene fatto uso del protocollo MQTT. In particolare, verranno utilizzati una scheda Arduino UNO Rev3 e un modulo ESP-01 per pubblicare un messaggio in un topic. Il messaggio, pubblicato su un broker di test gratuito, potrà essere letto grazie ad un'applicazione per smartphone che permetterà la sottoscrizione al topic.

Introduzione

Il progetto che andremo a descrivere in questo articolo rappresenta un punto di partenza per sperimentare con il protocollo MQTT ed anche con il modulo ESP8266.

Per realizzare il progetto sono stati utilizzati i seguenti componenti:

  1. una scheda Arduino UNO Rev3
  2. una scheda ESP-01
  3. una breadboard
  4. alcuni cavetti dupont maschio-femmina
  5. Arduino IDE

Il modulo ESP8266 ed il protocollo MQTT sono stati già trattati in maniera approfondita in precedenti articoli che invitiamo i lettori a leggere. In questo articolo ci limiteremo a descrivere l'implementazione del progetto fornendo al lettore solo alcune informazioni di base, indispensabili ai fini della comprensione del progetto.

La scheda ESP-01

Il chip ESP8266 realizzato dall'azienda cinese Espressif è un SoC (System on Chip) con Wi-Fi integrato ed un MCU a 32 bit. Esso può essere utilizzato in autonomia oppure per fornire connettività Wi-Fi ad altre schede come Arduino. Si può gestire mediante comandi AT oppure programmarlo attraverso SDK specifici, linguaggi di programmazione come Python o ambienti di sviluppo come l'IDE Arduino. L'utilizzo dell'IDE Arduino può dare qualche problema in fase di sviluppo, tuttavia, la familiarità con il suo linguaggio lo rende preferibile per questo progetto. La scheda ESP-01 progettata da un'azienda terza, la AI-Thinker, incorpora il chip ESP8266. A tal proposito, ne esistono diverse di queste schede denominate con numerazione crescente andando dalla ESP-01 alla ESP-13, ognuna con i suoi vantaggi e migliorie rispetto alle altre. La ESP-01, riportata in Figura 1, rappresenta la scheda più semplice ed economica, ma sarà comunque sufficiente per la realizzazione del progetto.

Figura 1: La scheda ESP-01 con modulo integrato ESP8266

La scheda ESP-01 presenta le seguenti caratteristiche:

  • MCU integrata a 32 bit a basso consumo, Tensilica L106
  • ADC integrato a 10 bit
  • protocollo TCP/IP integrato
  • TR switch, balun, LNA, amplificatore di potenza e rete di matching integrati
  • PLL, regolatori e unità di gestione della potenza integrati
  • supporto della diversità d'antenna
  • Wi-Fi 802.11 b/g/n a 2,4 GHz con supporto WPA/WPA2
  • modi operativi STA/AP/STA+AP
  • supporto Smart Link Function per entrambi i dispositivi Android e iOS
  • SDIO 2.0, (H) SPI, UART, I2C, I2S, IRDA, PWM, GPIO

Esistono principalmente due versioni della scheda la cui unica differenza risiede nella quantità di memoria Flash, 1 MB oppure 0,5 MB. Il modulo ESP-01 costa intorno ai 5 euro, si tratta quindi di una scheda abbastanza economica. Tuttavia, presenta anche delle limitazioni di cui occorre tenere conto:

  • la scheda opera a livello logico ed è alimentata con una tensione da 3,3 V. Alimentarla con 5 V potrebbe danneggiarla irrimediabilmente;
  • la programmazione della scheda può risultare difficoltosa poiché non è presente una porta USB ed occorre comprare appositi convertitori (comunque non costosi, parliamo di qualche euro). In alternativa, è possibile programmare la scheda con l'ambiente IDE Arduino tramite connessione seriale con una scheda Arduino, che è ciò che viene descritto in questo articolo. Tuttavia, anche questa strada non è priva di ostacoli;
  • la piedinatura del modulo, riportata in Figura 2, è costituita da un connettore maschio 2x4 con un passo di 0,1", rendendo la scheda inadatta per l'utilizzo con una breadboard. Anche in questo caso esistono in commercio degli adattatori che per pochi euro permettono di aggirare il problema.

Figura 2: Piedinatura della scheda ESP-01

Vediamo nel dettaglio i pin a cui è possibile accedere:

  • VCC va collegata alla tensione di alimentazione da 3,3 V; una sorgente da 5 V potrebbe danneggiare la scheda
  • GND va connesso a massa
  • CH_PD rappresenta il pin di enable del chip; attivo alto permette l'avvio del modulo
  • RST rappresenta il pin di reset del chip; attivo basso resetta il modulo
  • GPIO0, GPIO2 sono i General Purpose Input/Output pin
  • Tx, Rx permettono di stabilire la connessione seriale con altri dispositivi.

Collegare ESP-01 con Arduino UNO

La Figura 3 descrive la configurazione dei collegamenti tra Arduino e ESP-01. Tale configurazione permette la programmazione seriale del modulo ESP8266 attraverso l'IDE Arduino.

Figura 3: Configurazione dei collegamenti tra Arduino UNO e la scheda ESP-01 per la programmazione seriale del modulo ESP8266

I collegamenti riportati in Figura 3 vengono riassunti nella Tabella 1. La tabella deve essere letta nel seguente modo: i pin della scheda Arduino UNO nella colonna di destra sono collegati ai pin dell'ESP-01 nella colonna di sinistra che si trovano sulla stessa riga.

Tabella 1: I pin presenti sulla stessa riga rappresentano un collegamento tra le due schede
Arduino UNO ESP-01
Rx (pin 0) Rx
Tx (pin 1) Tx
3,3 V Vcc
3,3 V CH_PD
GND GND
GND GPIO0
GPIO2
RST

Occorre un piccolo approfondimento per quanto riguarda il pin GPIO0. Il suo stato stabilisce la modalità operativa del modulo ESP8266, in particolare:

  1. nello stato logico basso (GND) permette la programmazione del modulo
  2. nello stato logico alto (VCC) invece, permette al dispositivo l'esecuzione del programma presente in memoria

Un'altra precisazione riguarda i collegamenti riportati in Figura 3. Anche se non viene riportata nell'immagine si consiglia l'utilizzo di una breadboard per facilitare l'implementazione della configurazione.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2498 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Send this to a friend