Commencer avec MQTT et Arduino Uno

Ari Mahpour
|  Créé: Octobre 19, 2021  |  Mise à jour: Juillet 1, 2024
Commencer avec MQTT

Dans le monde d'aujourd'hui où les dispositifs connectés sont devenus omniprésents, le terme Internet des Objets (IoT) est devenu la description par défaut pour "dispositif connecté à internet". Bien que cet acronyme glorifié, en camel case, soit beau en soi, il y a bien plus à propos des "dispositifs connectés à internet" que ce que les gens réalisent. Dans cet article, j'aimerais plonger plus profondément dans l'un des protocoles les plus répandus utilisés dans les dispositifs IoT : le protocole MQ Telemetry Transport (MQTT). Nous allons brièvement couvrir ce que c'est, comment cela fonctionne, et ce qui est novateur à son sujet par rapport à d'autres technologies utilisées. Nous passerons également en revue un exemple complet en utilisant un dispositif Arduino.

Le Quoi et le Pourquoi du MQTT

Dans une configuration client-serveur typique, nous avons un fournisseur (c'est-à-dire les appareils eux-mêmes) qui publie des données de capteurs sur le serveur et un consommateur qui demande à voir ces données de capteurs depuis le serveur. MQTT n'est pas différent. C'est un protocole léger utilisé pour communiquer entre les appareils. Les appareils vont typiquement « publier » (c'est-à-dire envoyer) des données à un « courtier » MQTT (ou serveur) qui est ensuite conservé pour être servi à d'autres appareils ou applications web. Un autre appareil ou application web va « s'abonner » à cet ensemble de données (c'est-à-dire demander les données) auprès du courtier MQTT et ensuite le courtier MQTT livre ces données à eux. Pensez à cela vraiment comme juste un serveur web glorifié avec deux exceptions majeures :

  1. Les paquets de données sont très légers (ce qui améliore la vitesse, l'efficacité et le coût)
  2. MQTT peut utiliser d'autres modes de communication que l'internet seul (par exemple, le Bluetooth)
Figure 1: MQTT Broker with Devices
Figure 1 : Courtier MQTT avec des dispositifs

Pour les deux raisons mentionnées ci-dessus, MQTT est devenu un protocole très populaire avec les appareils IoT. Historiquement, les gens utilisaient des requêtes HTTP POST/GET pour réaliser cette forme de communication appareil-serveur, mais cela limitait leur capacité à utiliser d'autres dispositifs de communication tels que le Bluetooth ou le ZigBee. Puisque MQTT est agnostique à cet égard, nous pouvons maintenant avoir des capacités de passage de messages au sein d'un réseau maillé en utilisant MQTT sans jamais se connecter à l'internet

Commencer avec MQTT

Il existe de nombreuses façons de commencer avec MQTT, y compris la conception d'une solution complète de bout en bout. Pour simplifier les choses, nous utiliserons un service de courtier MQTT gratuit fourni par Adafruit dans cet exemple. Cela nous permettra de nous concentrer uniquement sur le côté client du processus de développement. Pour commencer, vous aurez besoin de ce qui suit :

  1. Appareil Arduino (Cet exemple utilise l'Arduino Uno)
  2. Shield Arduino supportant la connectivité internet (par ex. Shield Ethernet Arduino) ou un dispositif compatible Arduino basé sur Wifi tel que l'ESP8266.
  3. Logiciel Arduino IDE
  4. Compte avec Adafruit IO.

Il y a quelques étapes à suivre pour configurer notre environnement. Commençons par préparer notre matériel. Je vais utiliser un Arduino Uno et un Shield Ethernet Arduino connectés à mon réseau local. 

Figure 2: Arduino Uno and Arduino Ethernet Shield side by side
Figure 2 : Arduino Uno et Arduino Ethernet Shield côte à côte

Nous devons empiler le Shield Ethernet sur l'Arduino et le brancher au réseau comme ceci :

Figure 3: Arduino Uno and Arduino Ethernet Shield hooked up together and plugged in
Figure 3 : Arduino Uno et Arduino Ethernet Shield connectés ensemble et branchés

Une fois notre matériel configuré, ouvrons l'Arduino IDE et installons les bibliothèques nécessaires. Lancez l'Arduino IDE et allez dans Outils > Gérer les bibliothèques…

Figure 4: Manage Libraries menu option
Figure 4 : Option de menu Gérer les bibliothèques

Recherchez la bibliothèque Adafruit MQTT et cliquez sur installer :

Figure 5: Library Manager
Figure 5 : Gestionnaire de bibliothèques

Il vous sera demandé d'installer également les dépendances de la bibliothèque. Cliquez sur « Installer tout ».

Figure 6: Library Dependencies Dialog
Figure 6 : Dialogue des dépendances de la bibliothèque

Une fois que vous avez installé les bibliothèques de support, vous pouvez ouvrir un exemple en naviguant vers Fichier > Exemples > Adafruit MQTT Library > mqtt_ethernet.

Figure 7: Menu navigation for the mqtt_ethernet example
Figure 7 : Navigation dans le menu pour l'exemple mqtt_ethernet

À ce stade, nous devons faire une pause et récupérer nos identifiants depuis notre compte Adafruit IO. Connectez-vous à Adafruit IO et cliquez sur "Ma Clé" en haut :

Figure 8: My Key Menu Option
Figure 8 : Option de menu Ma Clé

Maintenant, revenez à votre exemple de sketch Arduino mqtt_ethernet et remplissez les champs AIO_USERNAME et AIO_KEY avec les champs "Nom d'utilisateur" et "Clé Active" situés dans votre compte Adafruit IO. Assurez-vous que votre appareil est connecté puis cliquez sur Téléverser :

Figure 9: Arduino Sketch ready for the upload
Figure 9 : Esquisse Arduino prête pour le téléchargement

Pour voir le statut de l'appareil (et pour s'assurer qu'il est connecté au courtier MQTT) naviguez vers Outils > Moniteur Série. Vous devriez voir une sortie qui ressemble à ceci :

Figure 10: Serial Monitor output of the Arduino mqtt_ethernet example
Figure 10 : Sortie du moniteur série de l'exemple Arduino mqtt_ethernet

À ce point, nous avons confirmé que les données sont bien envoyées au courtier MQTT. Pour jeter un œil aux données réelles sur le serveur, retournons à notre compte Adafruit IO et cliquons sur "Flux" puis cliquons sur "photocell"

Figure 11: Adafruit IO Feeds
Figure 11 : Flux Adafruit IO

Nous obtenons maintenant une capture en direct des données que notre Arduino envoie au courtier MQTT. Nous pouvons également télécharger des données historiques.

Figure 12: Live and historical data sent to the MQTT broker from the Arduino
Figure 12 : Données en direct et historiques envoyées au courtier MQTT depuis l'Arduino

Félicitations ! Vous avez maintenant configuré un appareil compatible MQTT et publié vos données sur un courtier MQTT. Passez à l'étape suivante en construisant vos propres capteurs personnalisés et en publiant les données sur votre courtier MQTT.

Conclusion

Dans cet article, nous avons appris ce qu'est MQTT, pourquoi il est utilisé et comment l'implémenter sur un microcontrôleur. Nous avons également démontré comment commencer avec un service de courtier MQTT gratuit et visualiser les données sur leur serveur. Vous devriez maintenant être à l'aise pour démarrer votre propre sketch Arduino basé sur l'exemple que nous avons utilisé pour publier vos propres données de capteur sur le courtier MQTT et les visualiser dans le cloud.

A propos de l'auteur

A propos de l'auteur

Ari est un ingénieur doté d'une solide expérience dans la conception, la fabrication, les tests et l'intégration de systèmes électriques, mécaniques et logiciels. Il aime collaborer avec des ingénieurs chargés de la conception, la vérification et les tests afin de favoriser les synergies.

Ressources associées

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.