Communication MQTT entre Arduino et Arduino
Dans ce tutoriel, nous allons apprendre :
- Communication bidirectionnelle entre deux Arduino via MQTT
- Exemple d'application : un bouton/interrupteur connecté à Arduino #1 contrôle une LED connectée à Arduino #2 via MQTT
Préparation du matériel
2 | × | Arduino UNO R4 WiFi | |
2 | × | USB Cable Type-C | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | |
1 | × | (Optional) Transparent Acrylic Enclosure For Arduino Uno |
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
Nous avons un tutoriel détaillé sur la manière d’utiliser Arduino avec MQTT ici :
Communication entre deux Arduino via MQTT
Deux cartes Arduino peuvent communiquer entre elles via un serveur MQTT. Si vous souhaitez que deux Arduinos communiquent directement sans utiliser de serveur MQTT, veuillez consulter le tutoriel sur la communication Client/Serveur TCP Arduino à Arduino.
Lorsque Arduino #1 et Arduino #2 échangent des données via un courtier MQTT :
- Les deux Arduinos se connectent au courtier MQTT.
- Pour que l'Arduino n°2 envoie des données à l'Arduino n°1 :
- L'Arduino n°1 s'abonne à un sujet, par exemple : arduino-1/data.
- L'Arduino n°2 peut envoyer des données à l'Arduino n°1 en publiant les données sur le sujet auquel l'Arduino n°1 est abonné.
- De manière similaire, pour que l'Arduino n°1 envoie des données à l'Arduino n°2 :
- L'Arduino n°2 s'abonne à un sujet, par exemple : arduino-2/data.
- L'Arduino n°1 peut envoyer des données à l'Arduino n°2 en publiant les données sur le sujet auquel L'Arduino n°2 est abonné.
En suivant cette méthode, deux Arduinos peuvent échanger des données de manière bidirectionnelle.
Exemple de cas d'utilisation
Réalisons l'application suivante : Un bouton/interrupteur connecté à Arduino #1 contrôle une LED connectée à Arduino #2 via MQTT.
Comme mentionné ci-dessus, il existe certains protocoles d'application que nous pouvons utiliser. Dans cet exemple, pour simplifier, nous allons définir un protocole par nous-mêmes (un protocole auto-défini)
Protocole auto-défini
Définissons un protocole simple :
- Arduino #1 et Arduino #2 se connectent au Broker MQTT (serveur MQTT)
- Arduino #1 :
- Arduino #1 publie un message MQTT sur un sujet lorsque l'état de l'interrupteur change.
- Lorsque le bouton/interrupteur est mis en position on, la charge utile du message MQTT est 1.
- Lorsque le bouton/interrupteur est mis en position off, la charge utile du message MQTT est 0.
- Arduino #2 :
- Arduino #2 s'abonne au sujet
- Si Arduino #2 reçoit un message MQTT dont la charge utile est 1, il allume la LED
- Si Arduino #2 reçoit un message MQTT dont la charge utile est 0, il éteint la LED
- Schéma de câblage entre Arduino et bouton
- Arduino #2 - Schéma de câblage entre l'Arduino et la LED
Schéma de câblage
This image is created using Fritzing. Click to enlarge image
This image is created using Fritzing. Click to enlarge image
Communication entre deux Arduino via MQTT
Code Arduino #1
Code Arduino #2
Étapes rapides
- Connectez un bouton/interrupteur à Arduino #1
- Connectez une LED à Arduino #2
- Ouvrez Arduino IDE (nommé Arduino IDE #1)
- Ouvrez une autre fenêtre Arduino IDE (nommée Arduino IDE #2) en cliquant sur l'icône Arduino IDE sur votre PC (important !(**))
- Ouvrez le gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques dans la barre de navigation gauche de l'Arduino IDE
- 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 ezButton dans la barre de recherche, puis trouvez la bibliothèque de boutons par ArduinoGetStarted.
- Cliquez sur le bouton Install pour installer la bibliothèque ezButton.
- Connectez Arduino #1 au PC via un câble USB et sélectionnez le port COM de Arduino #1 sur Arduino IDE #1
- Connectez Arduino #2 au PC via un câble USB et sélectionnez le port COM de Arduino #2 sur Arduino IDE #2
- Copiez le code de Arduino #1, collez-le dans Arduino IDE #1 et enregistrez-le (nommé Arduino-1)
- Copiez le code de Arduino #2, collez-le dans Arduino IDE #2 et enregistrez-le (nommé Arduino-2)
- Remplacez les informations WiFi (SSID et mot de passe) dans les deux codes par les vôtres.
- Remplacez l'adresse du courtier MQTT dans les deux codes (nom de domaine ou adresse IP).
- Téléversez le code de Arduino #1 sur Arduino #1
- Téléversez le code de Arduino #2 sur Arduino #2
- Ouvrez le moniteur série sur Arduino IDE #1
- Ouvrez le moniteur série sur Arduino IDE #2
- Appuyez et maintenez le bouton sur Arduino #1 → observez l'état de la LED sur Arduino #2 (ON)
- Relâchez le bouton sur Arduino #1 → observez l'état de la LED sur Arduino #2 (OFF)
- Appuyez, maintenez et relâchez le bouton plusieurs fois.
- Observez les sorties sur les deux moniteurs série
- Moniteur série de Arduino #2