Tutoriel ESP32 48/55 - Surveillance de la température à distance et contrôle des LED MQTT | Kit IoT ESP32 de SunFounder
Dans ce tutoriel, nous explorerons comment utiliser le module ESP32 en conjonction avec la carte d'extension ESP32 de SunFounder pour surveiller la température et l'humidité à distance en utilisant la plateforme Adafruit IO. De plus, nous mettrons en œuvre la fonctionnalité pour contrôler une LED via une interface web. À la fin de ce projet, vous serez en mesure de visualiser des données de température et d'humidité en temps réel et d'activer ou de désactiver une LED depuis votre navigateur.
Ce projet utilise le protocole MQTT pour une communication efficace entre l'ESP32 et le service Adafruit IO. MQTT est léger et bien adapté aux applications IoT, ce qui nous permet de publier facilement des données de capteur et de nous abonner à des commandes pour le contrôle des LED. Pour plus de précisions sur le code et le câblage, assurez-vous de consulter la vidéo accompagnant ce tutoriel (dans la vidéo à 00:00).
Matériel expliqué
Les composants principaux de ce projet comprennent le microcontrôleur ESP32, un capteur de température et d'humidité DHT11, et une LED. L'ESP32 est un microcontrôleur puissant qui dispose de capacités Wi-Fi et Bluetooth intégrées, ce qui en fait un choix idéal pour les projets IoT. Il peut gérer plusieurs tâches et se connecter à Internet sans problème.
Le capteur DHT11 est responsable de la mesure de la température et de l'humidité. Il émet des signaux numériques qui peuvent être lus par l'ESP32. La LED sert d'indicateur et peut être contrôlée à distance pour démontrer l'efficacité du protocole MQTT dans la gestion des dispositifs sur Internet.
Détails de la fiche technique
| Fabricant | Adafruit |
|---|---|
| Numéro de pièce | DHT11 |
| Tension logique/IO | 3,3 V |
| Tension d'alimentation | 3,3 V |
| Courant de sortie (par canal) | 20 mA |
| Courant de pointe (par canal) | 50 mA |
| Guide de fréquence PWM | N/A |
| Seuils de logique d'entrée | 0,3 V (bas), 0,7 V (élevé) |
| Chute de tension / RDS(on)/ saturation | N/A |
| Limites thermiques | 0 à 50 °C |
| Colis | 3 broches |
| Notes / variantes | Utilisez le DHT22 pour une plus grande précision. |
- Assurez-vous d'un câblage correct pour éviter les dommages.
- Utilisez une résistance de 220 Ohms avec la LED pour limiter le courant.
- Utilisez des résistances de tirage pour la broche de données DHT11 si nécessaire.
- Vérifiez les identifiants Wi-Fi pour la sensibilité à la casse.
- Surveillez la sortie série pour dépanner les problèmes de connexion.
- Gardez les sujets MQTT uniques pour éviter les conflits.
- Testez les lectures des capteurs pour vous assurer qu'elles sont valides.
- Soyez prudent quant au temps de réponse du DHT11 ; il peut falloir du temps pour stabiliser les lectures.
LED= contrôle LED;temperature= publier les données de température;humidity= publier des données d'humidité.
Instructions de câblage
Pour câbler les composants, commencez par connecter le capteur DHT11. Connectez la broche de gauche du DHT11 au rail d'alimentation 3.3V sur la plaque d'essai en utilisant un fil rouge. La broche du milieu du DHT11 doit être connectée à la broche 13 de l'ESP32 à l'aide d'un fil jaune. Enfin, connectez la broche de droite du DHT11 au rail de terre en utilisant un fil bleu.
Ensuite, pour la LED, connectez l'anode (la jambe la plus longue) à la pin 15 de l'ESP32 à travers une résistance de 220 Ohms. Connectez la cathode (la jambe la plus courte) directement à la barrette de masse sur la plaque d'essai. Assurez-vous que toutes les connexions sont sécurisées et vérifiez qu'il n'y a pas de fils lâches.
Configurer le tableau de bord
-
VisitezAdafruit IO, puis cliquez surCommencez gratuitementcréer un compte gratuit.

-
Remplissez le formulaire pour créer un compte.

-
Après avoir créé un compte Adafruit, vous devrez rouvrir Adafruit io. Cliquez sur leTableaux de bord, puis cliquez surNouveau tableau de bord.

-
Créer unNouveau tableau de bord.

-
Entrer le nouveau crééTableau de bordet créer un nouveau bloc.

-
Créer 1Basculerbloc.

-
Ensuite, vous devrez créer un nouveau flux ici. Ce commutateur sera utilisé pour contrôler la LED, et nous nommerons ce flux "LED".

-
Vérifiez leDELnourrir, puis passer à l'étape suivante.

-
Complétez les paramètres du bloc (principalement le Titre du bloc, le Texte Activé et le Texte Désactivé), puis cliquez sur leCréer un blocbouton en bas à droite pour finir.

-
Nous devons également créer deuxBlocs de textesuivant. Ils seront utilisés pour afficher la température et l'humidité. Donc, créez deux flux nomméstempératureethumidité.

-
Après la création, votre tableau de bord devrait ressembler à ceci :

-
Vous pouvez ajuster la mise en page en utilisant leModifier la mise en pageoption dans le tableau de bord.

-
Cliquez surCLÉ D'API, et vous verrez votre nom d'utilisateur etCLÉ APIaffichées. Notez-les car vous en aurez besoin pour votre code.

Exemples de code et guide pas à pas
Le code commence par inclure les bibliothèques nécessaires, configurer les identifiants Wi-Fi et définir les paramètres MQTT. Les identifiants clés tels queAIO_USERNAMEetAIO_KEYsont utilisés pour s'authentifier avec le service Adafruit IO.
#define AIO_USERNAME "YourUsername"
#define AIO_KEY "YourKey"Ces lignes définissent votre nom d'utilisateur et votre clé Adafruit IO, qui sont essentiels pour se connecter au broker MQTT. Assurez-vous que ces valeurs sont exactes pour établir une connexion réussie.
Dans lesetup()la fonction, la connexion Wi-Fi est initialisée, et le client MQTT est configuré avec le certificat CA racine pour une communication sécurisée.
WiFi.begin(WLAN_SSID, WLAN_PASS);
client.setCACert(adafruitio_root_ca);Ce code connecte l'ESP32 au réseau Wi-Fi spécifié et configure le CA racine pour des connexions MQTT sécurisées. Gérer correctement ces connexions est essentiel pour une transmission de données fiable.
Enfin, leloop()La fonction gère la connexion MQTT et publie les lectures de température et d'humidité à intervalles réguliers.
mqtt.processPackets(5000);Cette ligne permet à l'ESP32 de traiter les messages entrants pour les sujets abonnés, garantissant ainsi que l'appareil reste réactif aux commandes envoyées depuis l'interface web.
Pour le code complet, veuillez vous référer au programme complet chargé en dessous de l'article.
Démonstration / À quoi s'attendre
Une fois la configuration réussie, vous devriez voir des mises à jour en temps réel de la température et de l'humidité sur votre tableau de bord Adafruit IO. Vous pouvez également activer et désactiver la LED via l'interface web. Si la LED ne répond pas comme prévu, vérifiez votre câblage et assurez-vous que les noms des sujets MQTT correspondent à ceux définis dans le code.
Soyez conscient que certaines erreurs de connexion MQTT peuvent survenir en raison de certificats expirés. Assurez-vous d'avoir le dernier certificat CA racine dans votre code pour éviter ces problèmes (dans la vidéo à 15:30).
Horodatages vidéo
- 00:00 Début
- 1:50 Introduction au projet
- 3:16 Qu'est-ce que MQTT
- 6:36 Configuration d'Adafruit IO
- 11:13 câblage
- 13:38 Code Arduino expliqué
- 22:03 Sélection de la carte ESP32 et du port COM
- 23:44 Démonstration de projet
- 27:05 Mise à jour du tableau de bord
/*
* Bibliothèque Adafruit MQTT ESP32 Exemples Adafruit IO SSL/TLS
*
* Utilisez la dernière version du noyau Arduino ESP32 :
* https://github.com/espressif/arduino-esp32
*
* Fonctionne très bien avec Adafruit Huzzah32 Feather et Breakout Board :
* https://www.adafruit.com/product/3405
* https://www.adafruit.com/products/4172
*
* Adafruit consacre du temps et des ressources à fournir ce code source ouvert,
* veuillez soutenir Adafruit et le matériel open-source en achetant
* des produits chez Adafruit !
*
* Écrit par Tony DiCola pour Adafruit Industries.
* Modifié par Brent Rubell pour Adafruit Industries
* Licence MIT, tout le texte ci-dessus doit être inclus dans toute redistribution
* /
*
* /// ref : https://www.electronicwings.com/esp32/esp32-mqtt-client
*/
#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/*
* Point d'accès WiFi *********************************/
*
* #define WLAN_SSID "SSID"
* #define WLAN_PASS "MOTDEPASSE"
*
* /************************* Configuration Adafruit.io
*/
#define AIO_SERVER "io.adafruit.com"
// Utilisation du port 8883 pour MQTTS
#define AIO_SERVERPORT 8883
// Configuration du compte Adafruit IO
// (pour obtenir ces valeurs, visitez https://io.adafruit.com et cliquez sur Clé Active)
// #define AIO_USERNAME "VOTRE_NOM_UTILISATEUR_ADAFRUIT_IO"
// #define AIO_KEY "VOTRE_ADAFRUIT_IO_KEY"
#define AIO_USERNAME "JimmyKernel"
#define AIO_KEY "aio_Mxiv12i74b5jKfKNSKLYjlhPmoHC"
/*
* État mondial (vous n'avez pas besoin de changer ceci !) ******************/
*
* // WiFiFlientSecure pour le support SSL/TLS
* WiFiClientSecure client;
*
* // Configurer la classe du client MQTT en passant le client WiFi ainsi que les détails du serveur MQTT et de connexion.
* Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
*
* // CA racine io.adafruit.com
* const char* adafruitio_root_ca = \
* "-----BEGIN CERTIFICATE-----\n"
* "MIIEjTCCA3WgAwIBAgIQDQd4KhM/xvmlcpbhMf/ReTANBgkqhkiG9w0BAQsFADBh\n"
* "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
* "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH\n"
* "MjAeFw0xNzExMDIxMjIzMzdaFw0yNzExMDIxMjIzMzdaMGAxCzAJBgNVBAYTAlVT\n"
* "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
* "b20xHzAdBgNVBAMTFkdlb1RydXN0IFRMUyBSU0EgQ0EgRzEwggEiMA0GCSqGSIb3\n"
* "DQEBAQUAA4IBDwAwggEKAoIBAQC+F+jsvikKy/65LWEx/TMkCDIuWegh1Ngwvm4Q\n"
* "yISgP7oU5d79eoySG3vOhC3w/3jEMuipoH1fBtp7m0tTpsYbAhch4XA7rfuD6whU\n"
* "gajeErLVxoiWMPkC/DnUvbgi74BJmdBiuGHQSd7LwsuXpTEGG9fYXcbTVN5SATYq\n"
* "DfbexbYxTMwVJWoVb6lrBEgM3gBBqiiAiy800xu1Nq07JdCIQkBsNpFtZbIZhsDS\n"
* "fzlGWP4wEmBQ3O67c+ZXkFr2DcrXBEtHam80Gp2SNhou2U5U7UesDL/xgLK6/0d7\n"
* "6TnEVMSUVJkZ8VeZr+IUIlvoLrtjLbqugb0T3OYXW+CQU0kBAgMBAAGjggFAMIIB\n"
* "PDAdBgNVHQ4EFgQUlE/UXYvkpOKmgP792PkA76O+AlcwHwYDVR0jBBgwFoAUTiJU\n"
* "IBiV5uNu5g/6+rkS7QYXjzkwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsG\n"
* "AQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMDQGCCsGAQUFBwEB\n"
* "BCgwJjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEIGA1Ud\n"
* "HwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEds\n"
* "b2JhbFJvb3RHMi5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEW\n"
* "HGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwDQYJKoZIhvcNAQELBQADggEB\n"
* "AIIcBDqC6cWpyGUSXAjjAcYwsK4iiGF7KweG97i1RJz1kwZhRoo6orU1JtBYnjzB\n"
* "c4+/sXmnHJk3mlPyL1xuIAt9sMeC7+vreRIF5wFBC0MCN5sbHwhNN1JzKbifNeP5\n"
* "ozpZdQFmkCo+neBiKR6HqIA+LMTMCMMuv2khGGuPHmtDze4GmEGZtYLyF8EQpa5Y\n"
* "jPuV6k2Cr/N3XxFpT3hRpt/3usU/Zb9wfKPtWpoznZ4/44c1p9rzFcZYrWkj3A+7\n"
* "TNBJE0GmP2fhXhP1D/XVfIW/h0yCJGEiV9Glm/uGOa3DXHlmbAcxSyCRraG+ZBkA\n"
* "7h4SeM6Y8l/7MBRpPCz6l8Y=\n"
* "-----END CERTIFICATE-----\n";
*
* /****************************** Flux
*/
// Configurez un flux appelé 'test' pour la publication et 'test2' pour l'abonnement.
// Les chemins MQTT pour AIO suivent la forme : <nom_utilisateur>/feeds/<nom_du_feed>
Adafruit_MQTT_Subscribe LED = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED");
Adafruit_MQTT_Publish humidity = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/humidity");
Adafruit_MQTT_Publish temperature = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temperature");
/*
* Leçon 1 de base sur MQTT d'Adafruit
* Regardez l'instruction vidéo pour ce code sur YouTube https://youtu.be/M9BQweAsHJM
* Page de ressources pour cette leçon et ce code :
* 📚⬇️ Téléchargement et page de ressources https://robojax.com/RJT670
* Tutoriel par https://youTube.com/@robojax
*
* Bibliothèque MQTT Adafruit exemple ESP32 Adafruit IO SSL/TLS
*
* Utilisez la dernière version du cœur Arduino ESP32 :
* https://github.com/espressif/arduino-esp32
*
* Fonctionne parfaitement avec Adafruit Huzzah32 Feather et la carte Breakout :
* https://www.adafruit.com/product/3405
* https://www.adafruit.com/products/4172
*
* Adafruit investit du temps et des ressources pour fournir ce code open source,
* merci de soutenir Adafruit et le matériel open-source en achetant
* des produits chez Adafruit !
*
* Écrit par Tony DiCola pour Adafruit Industries.
* Modifié par Brent Rubell pour Adafruit Industries
* Licence MIT, tout le texte ci-dessus doit être inclus dans toute redistribution
* /
*
* /// ref : https://www.electronicwings.com/esp32/esp32-mqtt-client
*/
#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/*
* Point d'accès WiFi *********************************/
*
* #define WLAN_SSID "dars"
* #define WLAN_PASS "5152535455"
*
* /************************* Configuration Adafruit.io
*/
#define AIO_SERVER "io.adafruit.com"
// Utilisation du port 8883 pour MQTTS
#define AIO_SERVERPORT 8883
// Configuration du compte Adafruit IO
// (visitez https://io.adafruit.com et cliquez sur Clé Active pour obtenir ces valeurs)
// #define AIO_USERNAME "VOTRE_NOM_D_UTILISATEUR_ADAFRUIT_IO"
// #define AIO_KEY "VOTRE_CLE_ADAFRUIT_IO"
#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_wCyL33EVKLcGoAotGNEQ4dGQYOLZ"
/*
* État mondial (vous n'avez pas besoin de changer cela !) ******************/
*
* // WiFiFlientSecure pour le support SSL/TLS
* WiFiClientSecure client;
*
* // Configuration de la classe client MQTT en passant le client WiFi et les détails du serveur et de connexion MQTT.
* Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
*
* // io.adafruit.com CA racine
* const char* adafruitio_root_ca =
* "-----BEGIN CERTIFICATE-----\n"
* "MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\n"
* "MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\n"
* "d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\n"
* "QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\n"
* "MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\n"
* "b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n"
* "9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\n"
* "CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\n"
* "nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n"
* "43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\n"
* "T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\n"
* "gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\n"
* "BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\n"
* "TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\n"
* "DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\n"
* "hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n"
* "06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\n"
* "PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\n"
* "YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\n"
* "CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n"
* "-----END CERTIFICATE-----\n";
*/
// Configurez un flux appelé 'test' pour la publication et 'test2' pour l'abonnement.
// Les chemins MQTT pour AIO suivent la forme : <username>/feeds/<feedname>
Adafruit_MQTT_Subscribe LED = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED");
// Adafruit_MQTT_Publish humidité = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/humidity");
// Adafruit_MQTT_Publish température = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temperature");
Common Course Links
Common Course Files
Ressources et références
-
Documentation
Fichiers📁
Aucun fichier disponible.