Arduino - MQTT
Dans ce tutoriel, nous apprendrons comment utiliser Arduino pour envoyer/recevoir des données à un courtier MQTT en utilisant le protocole MQTT. En détail, nous apprendrons :
- Comment connecter Arduino à un courtier MQTT
- Comment programmer Arduino pour envoyer des données à un courtier MQTT en publiant des données sur un sujet MQTT
- Comment programmer Arduino pour recevoir des données en s'abonnant à un sujet MQTT.
Nous explorerons deux cas d'utilisation différents :
- Utilisation d'Arduino avec un courtier MQTT en ligne.
- Utilisation d'Arduino avec le courtier MQTT installé sur votre PC.
Préparation du matériel
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos d'Arduino et MQTT
En supposant que vous êtes déjà familier avec le protocole MQTT. Sinon, veuillez effectuer des recherches sur Internet. Ce tutoriel se concentre sur la programmation d'Arduino pour envoyer et recevoir des données en utilisant le protocole MQTT.
Voici des cas d'utilisation de l'Arduino avec MQTT :
- Arduino se connecte à un courtier MQTT en ligne, par exemple : courtier Mosquitto en ligne, AWS IoT...
- Arduino se connecte à un courtier MQTT installé sur votre PC, par exemple : courtier Mosquitto, courtier HiveMQ
- Arduino se connecte à un courtier MQTT installé sur votre Raspberry Pi, par exemple : courtier Mosquitto
- Arduino se connecte à un courtier MQTT installé sur le cloud, par exemple : courtier Mosquitto ou HiveMQ sur AWS EC2
Dans ce tutoriel, nous commencerons par vérifier rapidement si Arduino peut se connecter à un courtier Mosquitto en ligne. Arduino publiera et s'abonnera à ce courtier via Internet.
Ensuite, nous passerons à l'installation du courtier Mosquitto sur notre PC. Nous connecterons ensuite l'Arduino au courtier MQTT installé sur notre PC, continuant à publier et à souscrire des données via ce courtier local.
Une fois ce tutoriel terminé, vous pourrez approfondir vos connaissances en apprenant à utiliser Arduino avec MQTT dans les tutoriels suivants :
Connectez Arduino à un courtier MQTT en ligne
Dans cette partie, nous apprendrons à connecter Arduino à test.mosquitto.org, un courtier MQTT en ligne créé par Mosquitto. Veuillez noter que ce courtier doit être utilisé uniquement à des fins de test.
Code Arduino
Le code Arduino ci-dessous fait :
- Se connecter au courtier MQTT
- S'abonner à un sujet
- Publier périodiquement des messages sur le même sujet auquel il est abonné
Étapes rapides
- Si c'est la première fois que vous utilisez Arduino Uno R4, consultez comment configurer l'environnement pour Arduino Uno R4 sur Arduino IDE.
- Ouvrez Arduino IDE sur votre PC
- Ouvrez le Gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques dans la barre de navigation gauche de l'IDE Arduino
- Tapez MQTT dans la boîte de recherche, puis recherchez la bibliothèque MQTT de Joel Gaehwiler.
- Cliquez sur le bouton Install pour installer la bibliothèque MQTT.
- Tapez ArduinoJson dans la boîte de recherche, puis cherchez la bibliothèque ArduinoJson de Benoit Blanchon.
- Cliquez sur le bouton Install pour installer la bibliothèque ArduinoJson.
- Copiez le code ci-dessus et ouvrez-le avec Arduino IDE.
- Remplacez les informations WiFi (SSID et mot de passe) dans le code par les vôtres.
- Dans le code, vous verrez le mot 'YOUR-NAME' trois fois. Remplacez ce mot par votre nom ou des caractères aléatoires (uniquement des caractères alphabétiques, sans espaces). Ceci est nécessaire car si vous ne faites pas le changement, il pourrait y avoir plusieurs personnes exécutant ce code en même temps, ce qui pourrait entraîner des conflits car les identifiants et les sujets des clients MQTT sont les mêmes pour tout le monde.
- Cliquez sur le bouton Upload sur l'Arduino IDE pour téléverser le code sur Arduino.
- Ouvrez le Moniteur Série.
- Voir le résultat sur le Moniteur Série.
Comme vous pouvez le voir, Arduino publie des messages vers le courtier MQTT, puis reçoit le même message en retour. Cela est dû au fait que le code ci-dessus s'abonne au même sujet sur lequel il publie des données. Si vous ne souhaitez pas qu'Arduino reçoive le message qu'il publie, il suffit de rendre le sujet de SOUSCRIPTION différent du sujet de PUBLICATION.
Connectez Arduino au courtier MQTT installé sur votre PC
Installation du courtier MQTT Mosquitto
- Téléchargez le Mosquitto MQTT Broker
- Installez-le sur le lecteur D: au lieu du lecteur C:. Évitez d'installer le courtier Mosquitto sur le lecteur C: pour prévenir les problèmes potentiels.
Exécuter le courtier MQTT Mosquitto
Vérifions maintenant si le courtier MQTT fonctionne correctement en suivant ces étapes :
- Accédez au répertoire où Mosquitto a été installé. Par exemple : D:\Draft\mosquitto>
- Créez un nouveau fichier nommé test.conf, copiez le contenu ci-dessous et enregistrez-le dans ce répertoire :
- Exécutez une invite de commande en tant qu'administrateur sur votre PC. Appelons-la Fenêtre Broker. Ne la fermez pas jusqu'à la fin du tutoriel.
- Exécutez les commandes ci-dessous une par une :
- Vous verrez :
- Ouvrez une autre invite de commande en tant qu'administrateur sur votre PC.
- Trouvez l'adresse IP de votre PC en exécutant la commande ci-dessous :
- Notez l'adresse IP pour une utilisation ultérieure. Dans l'exemple ci-dessus : 192.168.0.26
Tester si le Broker Mosquitto fonctionne
- Ouvrez une autre invite de commande en tant qu'administrateur sur votre PC. Appelons-la Fenêtre Abonné
- Abonnez-vous à un sujet en exécutant les commandes ci-dessous une par une (remplacez par votre adresse IP) :
- Ouvrez une autre invite de commande en tant qu'administrateur sur votre PC. Appelons-la Fenêtre de l'éditeur
- Publiez un message sur le même sujet en exécutant les commandes ci-dessous une à une (remplacez par votre adresse IP) :
- Vous verrez :
Vous verrez que le message est transféré à la Fenêtre d'Abonné comme suit :
Maintenant, vous avez installé avec succès le courtier MQTT Mosquitto sur votre PC. Veuillez NE PAS fermer trois fenêtres : Fenêtre du Courtier, Fenêtre de l'Abonné et Fenêtre de l'Éditeur. Nous les utiliserons ensuite.
Code Arduino
Le code Arduino ci-dessous effectue les opérations suivantes :
- Se connecter au courtier MQTT
- S'abonner à un sujet
- Publier périodiquement des messages sur un autre sujet
Étapes rapides
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
- Remplacez les informations WiFi (SSID et mot de passe) dans le code par les vôtres.
- Remplacez l'adresse du broker MQTT dans le code (nom de domaine ou adresse IP).
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code vers Arduino.
Envoyer un message de l'Arduino au PC via MQTT
Les codes Arduino publient des données sur le sujet MQTT arduino-001/send, Fenêtre d'abonné sur PC s'abonne à ce sujet pour recevoir les données.
- Ouvrez le moniteur série, vous verrez l'Arduino publier périodiquement un message à un sujet.
- Vérifiez la Fenêtre d'Abonné, vous verrez qu'elle reçoit le message publié par Arduino comme suit :
Envoyer un message du PC à l'Arduino via MQTT
Arduino souscrit au sujet arduino-001/receive, Fenêtre de l'éditeur sur PC publie un message sur ce sujet pour l'envoyer à l'Arduino.
- Publiez un message sur le sujet auquel Arduino est abonné en exécutant la commande suivante dans la fenêtre de l'éditeur :
- Vous verrez que ce message est reçu par Arduino sur le moniteur série comme ci-dessous :