Tutoriel ESP32 50/55 - Contrôlez une LED RGB de n'importe où dans le monde | Kit ESP32 de SunFounder
Dans ce tutoriel, nous allons apprendre comment contrôler la couleur d'une LED RGB en utilisant le microcontrôleur ESP32 via Wi-Fi, en utilisant le protocole MQTT et le service Adafruit IO. Cette configuration vous permet de changer la couleur de la LED RGB depuis n'importe où dans le monde, offrant une application pratique de la technologie IoT. Nous explorerons également comment utiliser des curseurs et un sélecteur de couleurs pour choisir la couleur désirée.

L'ESP32 est un microcontrôleur puissant qui possède des capacités Wi-Fi et Bluetooth intégrées, ce qui le rend idéal pour les projets IoT. Dans cette construction, nous allons connecter une LED RGB à l'ESP32 et contrôler sa couleur via un courtier MQTT fourni par Adafruit. Le tutoriel vous guidera à travers la configuration matérielle, les instructions de câblage et le code nécessaire pour faire fonctionner le tout de manière transparente (dans la vidéo à 00:00).
Matériel expliqué
Pour ce projet, les composants principaux que nous utiliserons sont le microcontrôleur ESP32 et la LED RVB. L'ESP32 est capable de se connecter à des réseaux Wi-Fi, lui permettant de communiquer avec le service Adafruit IO. La LED RVB contient trois LEDs individuelles (rouge, vert et bleu) qui peuvent être mélangées pour créer une large gamme de couleurs.
La LED RVB fonctionne selon un principe d'anode commune ou de cathode commune, ce qui signifie que l'anode (positive) ou la cathode (négative) des LED individuelles doit être correctement connectée pour qu'elles fonctionnent. Chaque couleur peut être contrôlée à l'aide de la modulation de largeur d'impulsion (PWM), qui ajuste la luminosité de chaque LED en faisant varier le rapport cyclique.
Détails de la fiche technique
| Fabricant | SunFounder |
|---|---|
| Numéro de pièce | LED RGB |
| Tension directe (V)F) | 2,0-3,4 V |
| Courant de fuite (IF) | 20 mA |
| Longueur d'onde de crête (nm) | Rouge : 620, Vert : 525, Bleu : 465 |
| Paquet | Standard 4 broches |
| Notes / variantes | Options d'anode commune ou de cathode commune disponibles |
- Utilisez des résistances de 220 ohms pour chaque couleur de LED afin de limiter le courant.
- Assurez-vous d'un câblage correct pour une configuration à anode ou cathode commune.
- Vérifiez l'alimentation de l'ESP32 pour éviter les baisses de tension.
- Gardez la fréquence PWM dans les limites pour des transitions de couleur fluides.
- Assurez-vous que les identifiants Wi-Fi sont corrects pour se connecter au service Adafruit IO.
Instructions de câblage

Pour connecter le LED RGB à l'ESP32, commencez par identifier les broches sur le LED RGB. La broche la plus longue est la broche commune. Pour une configuration à anode commune, connectez cette broche à l'alimentation en tension positive (3,3 V). Les trois autres broches correspondent aux LED rouge, verte et bleue. Connectez la broche rouge à la GPIO 27, la broche verte à la GPIO 26 et la broche bleue à la GPIO 25. Chacune de ces connexions doit être faite via une résistance de 220 ohms pour limiter le courant qui traverse les LED.
Ensuite, connectez le ground (GND) de l'ESP32 à la ligne de terre de votre circuit. Assurez-vous que le câblage est sécurisé pour éviter toute connexion intermittente. Si vous utilisez une LED RVB à cathode commune, connectez la broche commune à la terre et connectez les broches de couleur individuelles à l'alimentation positive à travers les résistances. Vérifiez toutes les connexions avant d'alimenter le circuit.
Exemples de code et guide étape par étape
Dans le code Arduino, nous commençons par définir les broches des LED rouge, verte et bleue en utilisant les identifiants.redPin,greenPin, etbluePin. De plus, nous définissons les canaux PWM pour chaque couleur en utilisantredChannel,greenChannel, etblueChannelLa fréquence PWM est réglée sur 5000 Hz avec une résolution de 8 bits.
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;Dans lesetup()fonction, nous initialisons les canaux PWM et attachons les broches correspondantes. Nous nous connectons également au réseau Wi-Fi en utilisant les identifiants définis et configurons le client MQTT pour la communication avec Adafruit IO.
void setup() {
ledcSetup(redChannel, freq, resolution);
ledcAttachPin(redPin, redChannel);
// Connect to WiFi
WiFi.begin(WLAN_SSID, WLAN_PASS);
}La boucle principale vérifie la connexion MQTT et traite les messages entrants. Elle imprime également les valeurs RVB actuelles sur le moniteur série. La couleur de la LED est mise à jour en fonction des valeurs reçues via les abonnements MQTT.
void loop() {
MQTT_connect();
mqtt.processPackets(500);
setColor();
}Pour plus de détails sur le code complet, veuillez vous référer au code complet chargé en dessous de l'article.
Démonstration / À quoi s'attendre
Une fois que tout est configuré et le code téléchargé, vous devez voir la LED RGB réagir aux changements de couleur effectués via le tableau de bord Adafruit IO. En ajustant les curseurs pour le rouge, le vert et le bleu, la LED devrait changer de couleur en conséquence. Si vous rencontrez des problèmes, assurez-vous que la connexion Wi-Fi est stable et que les noms des sujets MQTT correspondent à ceux définis dans le code (dans la vidéo à 17:30).
Les pièges courants incluent un câblage incorrect, des noms de sujet non correspondants et l'oubli de définir les bonnes informations d'identification Wi-Fi. Si la LED ne s'allume pas, vérifiez à nouveau les connexions des résistances et assurez-vous que l'ESP32 est correctement alimenté.
Horodateurs vidéo
- 00:00 Début
- 2:23 Introduction au projet
- 4:43 Qu'est-ce que MQTT
- 7:55 Configuration d'Adafruit IO
- 14:09 Explication du câblage
- 16:07 Code expliqué
- 27:03 Sélection de la carte ESP32 et du port COM dans Arduino IDE
- 29:12 Démonstration du projet
- Qu'est-ce qu'un LED RGB ?
- 35:26 Couleur RVB
/*
* Ceci est un croquis Arduino pour ESP32 pour contrôler une LED RGB en utilisant le service MQTT d'Adafruit. Instruction vidéo https://youtu.be/-9q1GfGsnr0 📚⬇️ Page de téléchargement et de ressources https://robojax.com/RJT672 Écrit par Ahamd Shamshiri le 18 février 2024 Exemple de bibliothèque Adafruit MQTT ESP32 Adafruit IO SSL/TLS /// ref : https://www.electronicwings.com/esp32/esp32-mqtt-client // Définir les broches de la LED RGB
*/
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Définir les canaux PWM
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;
// Définir la fréquence PWM et la résolution
const int freq = 5000;
const int resolution = 8;
int colorR, colorG, colorB;
#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/*
* Point d'accès WiFi *********************************/
*
* #define WLAN_SSID "Livre"
* #define WLAN_PASS "888-888"
*
* /************************* 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_CLE_ADAFRUIT_IO"
#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_NBQQ75Rn7liRNcRn5uGUBMsBYmjD"
/*
* État global (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 racine CA
* 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_flux>
Adafruit_MQTT_Subscribe COLOR_R = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/rgb-led-color.red");
Adafruit_MQTT_Subscribe COLOR_G = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/rgb-led-color.green");
Adafruit_MQTT_Subscribe COLOR_B = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/rgb-led-color.blue");
Adafruit_MQTT_Subscribe COLOR_RGB = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/color-picker");
Common Course Links
Common Course Files
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Aucun fichier disponible.