Communication MQTT ESP32 à ESP32
Dans ce tutoriel, nous couvrirons les sujets suivants :
- Communication bidirectionnelle entre deux ESP32s utilisant MQTT.
- Exemple d'application pratique : Utilisation d'un bouton ou d'un interrupteur connecté à ESP32 #1 pour contrôler une LED connectée à ESP32 #2 via MQTT.
Préparation du matériel
2 | × | ESP-WROOM-32 Dev Module | |
2 | × | USB Cable Type-C | |
1 | × | (Recommended) ESP32 Screw Terminal Adapter |
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos de ESP32 et MQTT
Nous disposons d'un tutoriel détaillé sur l'utilisation de l'ESP32 avec MQTT ici :
Communication entre deux ESP32 via MQTT
Deux cartes ESP32 peuvent communiquer entre elles via un serveur MQTT. Si vous souhaitez qu'elles communiquent directement sans utiliser de serveur MQTT, veuillez consulter le tutoriel sur la communication TCP Client/Serveur de ESP32 à ESP32.
Lorsque ESP32 #1 et ESP32 #2 échangent des données via un courtier MQTT :
- Les deux ESP32 se connectent au courtier MQTT.
- Pour permettre à l'ESP32 #2 d'envoyer des données à l'ESP32 #1 :
- L'ESP32 #1 s'abonne à un sujet, par exemple : esp32-1/data.
- L'ESP32 #2 peut envoyer des données à l'ESP32 #1 en publiant les données sur le sujet auquel l'ESP32 #1 est abonné.
- De manière similaire, pour que l'ESP32 #1 envoie des données à l'ESP32 #2 :
- L'ESP32 #2 s'abonne à un sujet, tel que : esp32-2/data.
- L'ESP32 #1 peut envoyer des données à l'ESP32 #2 en publiant les données sur le sujet auquel l'ESP32 #2 est abonné.
En suivant cette méthode, deux ESP32 peuvent échanger des données de manière bidirectionnelle.
Exemple de cas d'utilisation
Réalisons l'application suivante : Un bouton/interrupteur connecté à ESP32 #1 contrôle une LED connectée à ESP32 #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ême (un protocole auto-défini).
Comment ça marche
Définissons un protocole simple :
- Les ESP32 #1 et ESP32 #2 se connectent à un courtier MQTT (serveur MQTT).
- Pour le ESP32 #1 :
- Il publie un message MQTT sur un sujet spécifique chaque fois que l'état d'un interrupteur change.
- Lorsque le bouton/interrupteur est enclenché, la charge utile du message MQTT est définie sur 1.
- Lorsque le bouton/interrupteur est éteint, la charge utile du message MQTT est définie sur 0.
- Pour le ESP32 #2 :
- Il s'abonne au même sujet.
- Si le ESP32 #2 reçoit un message MQTT avec une charge utile de 1, il allume une LED.
- Si le ESP32 #2 reçoit un message MQTT avec une charge utile de 0, il éteint la LED.
- Schéma de câblage entre l'ESP32 et le bouton
- Schéma de câblage entre ESP32 et LED
Schéma de câblage
This image is created using Fritzing. Click to enlarge image
Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.
This image is created using Fritzing. Click to enlarge image
Communication entre deux ESP32 via MQTT
Code ESP32 #1
Code ESP32 #2
Étapes rapides
- Si c'est la première fois que vous utilisez l'ESP32, consultez comment configurer l'environnement pour l'ESP32 sur Arduino IDE.
- Ouvrez deux Arduino IDE sur votre PC.
- Connectez un bouton/interrupteur au ESP32 #1
- Connectez une LED au ESP32 #2
- 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 zone de recherche, puis trouvez la bibliothèque de boutons par ESP32GetStarted
- Cliquez sur le bouton Install pour installer la bibliothèque ezButton.
- Sélectionnez la bonne carte ESP32 (par exemple, Module de développement ESP32).
- Connectez ESP32 #1 au PC via un câble USB et sélectionnez le port COM de ESP32 #1 sur Arduino IDE #1
- Connectez ESP32 #2 au PC via un câble USB et sélectionnez le port COM de ESP32 #2 sur Arduino IDE #2
- Copiez le code de ESP32 #1, collez-le dans Arduino IDE #1 et enregistrez-le (nommé ESP32-1)
- Copiez le code de ESP32 #2, collez-le dans Arduino IDE #2 et enregistrez-le (nommé ESP32-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échargez le code de ESP32 #1 sur ESP32 #1
- Téléchargez le code de ESP32 #2 sur ESP32 #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 ESP32 #1 → observez l'état de la LED sur ESP32 #2 (ON)
- Relâchez le bouton sur ESP32 #1 → observez l'état de la LED sur ESP32 #2 (OFF)
- Appuyez, maintenez et relâchez le bouton plusieurs fois.
- Observez les sorties sur les deux moniteurs série.
- Moniteur série de ESP32 #2