Iniziare con MQTT e Arduino Uno

Ari Mahpour
|  Creato: ottobre 19, 2021  |  Aggiornato: luglio 1, 2024
Iniziare con MQTT

Nel mondo di oggi, dove i dispositivi connessi sono diventati onnipresenti, il termine Internet delle Cose (IoT) è diventato la descrizione de facto per "dispositivo connesso a internet". Sebbene questo acronimo, reso glorioso e in camel case, sia bello di suo, c'è molto di più nei "dispositivi connessi a internet" di quanto la gente si renda conto. In questo articolo vorrei approfondire uno dei protocolli più diffusi utilizzati nei dispositivi IoT: il protocollo MQ Telemetry Transport (MQTT). Tratteremo brevemente cos'è, come funziona e cosa lo rende nuovo rispetto ad altre tecnologie utilizzate. Esamineremo anche un esempio dettagliato utilizzando un dispositivo Arduino.

Il Cosa e il Perché di MQTT

In una tipica configurazione client-server abbiamo un fornitore (ovvero i dispositivi stessi) che invia dati dei sensori al server e un consumatore che richiede di visualizzare tali dati dei sensori dal server. MQTT non è diverso. È un protocollo leggero utilizzato per comunicare tra dispositivi. I dispositivi tipicamente "pubblicano" (ovvero inviano) dati a un "broker" MQTT (o server) che poi viene conservato per essere servito ad altri dispositivi o applicazioni web. Un altro dispositivo o applicazione web "sottoscriverà" quel set di dati (ovvero richiederà i dati) dal broker MQTT e poi il broker MQTT consegna quei dati a loro. Pensate a questo davvero come a un server web glorificato con due eccezioni principali:

  1. I pacchetti di dati sono molto leggeri (ciò migliora velocità, efficienza e costo)
  2. MQTT può utilizzare modalità di comunicazione diverse da internet (ad esempio, Bluetooth)
Figure 1: MQTT Broker with Devices
Figura 1: Broker MQTT con Dispositivi

Per le due ragioni sopra menzionate, MQTT è diventato un protocollo molto popolare con i dispositivi IoT. Storicamente, le persone utilizzavano richieste HTTP POST/GET per ottenere questa forma di comunicazione dispositivo-server, ma ciò limitava la loro capacità di utilizzare altri dispositivi di comunicazione come Bluetooth o ZigBee. Poiché MQTT è agnostico in questo senso, possiamo ora avere capacità di passaggio di messaggi all'interno di una rete mesh utilizzando MQTT senza mai connettersi a internet

Iniziare con MQTT

Ci sono molti modi per iniziare con MQTT, inclusa la progettazione di una soluzione completa da un capo all'altro. Per semplificare le cose, utilizzeremo un servizio di broker MQTT gratuito fornito da Adafruit in questo esempio. Ciò ci consentirà di concentrarci solo sul lato client del processo di sviluppo. Per iniziare avrai bisogno di quanto segue:

  1. Dispositivo Arduino (Questo esempio utilizza l'Arduino Uno)
  2. Shield Arduino che supporta la connettività internet (ad es. Arduino Ethernet shield) o un dispositivo compatibile con Arduino basato su Wifi come l'ESP8266.
  3. Arduino IDE Software
  4. Account con Adafruit IO.

Ci sono alcune cose che dobbiamo fare prima di poter configurare il nostro ambiente. Iniziamo a configurare il nostro hardware. Userò un Arduino Uno e uno shield Ethernet Arduino collegato alla mia rete locale.

Figure 2: Arduino Uno and Arduino Ethernet Shield side by side
Figura 2: Arduino Uno e Arduino Ethernet Shield affiancati

Dovremo impilare lo shield Ethernet sopra l'Arduino e collegarlo alla rete in questo modo:

Figure 3: Arduino Uno and Arduino Ethernet Shield hooked up together and plugged in
Figura 3: Arduino Uno e Arduino Ethernet Shield collegati insieme e collegati

Una volta configurato il nostro hardware, apriamo l'Arduino IDE e installiamo le librerie necessarie. Apriamo l'Arduino IDE e andiamo su Strumenti > Gestisci Librerie...

Figure 4: Manage Libraries menu option
Figura 4: Opzione del menu Gestisci Librerie

Cerca la libreria Adafruit MQTT e clicca su installa:

Figure 5: Library Manager
Figura 5: Gestore delle Librerie

Ti verrà chiesto di installare anche le dipendenze della libreria. Procedi cliccando su “Installa tutto”.

Figure 6: Library Dependencies Dialog
Figura 6: Dialogo delle Dipendenze delle Librerie

Una volta installate le librerie di supporto, puoi aprire un esempio navigando in File > Esempi > Adafruit MQTT Library > mqtt_ethernet.

Figure 7: Menu navigation for the mqtt_ethernet example
Figura 7: Navigazione del menu per l'esempio mqtt_ethernet

A questo punto dobbiamo fare una pausa e recuperare le nostre credenziali dal nostro account Adafruit IO. Accedi a Adafruit IO e clicca su "My Key" in alto:

Figure 8: My Key Menu Option
Figura 8: Opzione del Menu La Mia Chiave

Ora torna al tuo esempio di sketch Arduino mqtt_ethernet e riempi i campi AIO_USERNAME e AIO_KEY con i campi "Username" e "Active Key" situati nel tuo account Adafruit IO. Assicurati che il tuo dispositivo sia connesso e poi clicca su Carica:

Figure 9: Arduino Sketch ready for the upload
Figura 9: Sketch Arduino pronto per il caricamento

Per visualizzare lo stato del dispositivo (e per assicurarsi che sia connesso al broker MQTT) naviga in Strumenti > Monitor Seriale. Dovresti vedere un output che assomiglia a questo:

Figure 10: Serial Monitor output of the Arduino mqtt_ethernet example
Figura 10: Output del Monitor Seriale dell'esempio Arduino mqtt_ethernet

A questo punto abbiamo confermato che i dati vengono inviati con successo al broker MQTT. Per dare un'occhiata ai dati effettivi sul server, torniamo al nostro account Adafruit IO e clicchiamo su "Feeds" poi clicchiamo su "photocell"

Figure 11: Adafruit IO Feeds
Figura 11: Feed di Adafruit IO

Ora otteniamo una cattura in tempo reale dei dati che il nostro Arduino sta inviando al broker MQTT. Possiamo anche scaricare dati storici.

Figure 12: Live and historical data sent to the MQTT broker from the Arduino
Figura 12: Dati in diretta e storici inviati al broker MQTT dall'Arduino

Congratulazioni! Hai ora configurato un dispositivo abilitato MQTT e pubblicato i tuoi dati su un broker MQTT. Ora passa al passo successivo costruendo i tuoi sensori personalizzati e pubblicando i dati sul tuo broker MQTT.

Conclusione

In questo articolo abbiamo appreso cos'è MQTT, perché viene utilizzato e come implementarlo su un microcontrollore. Abbiamo anche dimostrato come iniziare con un servizio di broker MQTT gratuito e visualizzare i dati sul loro server. Ora dovresti sentirti a tuo agio nell'avviare il tuo sketch Arduino basato sull'esempio che abbiamo utilizzato per pubblicare i tuoi dati sensoriali sul broker MQTT e visualizzarli sul cloud.

Sull'Autore

Sull'Autore

Ari è un ingegnere con una solida esperienza nei campi di progettazione, produzione, collaudo e integrazione di sistemi elettrici, meccanici e software. Ama riunire gli ingegneri addetti alla progettazione, alla verifica e al collaudo e farli lavorare insieme come un'unità affiatata.

Risorse correlate

Tornare alla Pagina Iniziale
Thank you, you are now subscribed to updates.