Tutorial ESP32 50/55 - Controlla il LED RGB da qualsiasi parte del mondo | Kit ESP32 di SunFounder
In questo tutorial, impareremo a controllare il colore di un LED RGB utilizzando il microcontrollore ESP32 via Wi-Fi, utilizzando il protocollo MQTT e il servizio Adafruit IO. Questa configurazione consente di cambiare il colore del LED RGB da qualsiasi parte del mondo, fornendo un'applicazione pratica della tecnologia IoT. Esploreremo anche come utilizzare cursori e un selettore di colore per scegliere il colore desiderato.

L'ESP32 è un potente microcontrollore che ha capacità Wi-Fi e Bluetooth integrate, rendendolo ideale per progetti IoT. In questa realizzazione, collegheremo un LED RGB all'ESP32 e controlleremo il suo colore attraverso un broker MQTT fornito da Adafruit. Il tutorial ti guiderà attraverso la configurazione hardware, le istruzioni di cablaggio e il codice necessario per far funzionare tutto senza problemi (nel video a :00).
Hardware spiegato
Per questo progetto, i componenti principali che utilizzeremo sono il microcontrollore ESP32 e il LED RGB. L'ESP32 è in grado di connettersi a reti Wi-Fi, permettendogli di comunicare con il servizio Adafruit IO. Il LED RGB contiene tre LED individuali (rosso, verde e blu) che possono essere mescolati per creare un'ampia gamma di colori.
Il LED RGB funziona secondo il principio dell'anodo comune o del catodo comune, il che significa che l'anodo (positivo) o il catodo (negativo) dei singoli LED devono essere collegati correttamente affinché funzionino. Ogni colore può essere controllato utilizzando la modulazione della larghezza degli impulsi (PWM), che regola la luminosità di ciascun LED variando il ciclo di lavoro.
Dettagli della scheda tecnica
| Produttore | SunFounder |
|---|---|
| Numero di parte | LED RGB |
| Tensione diretta (VF) | 2,0-3,4 V |
| Corrente di uscita (IF) | 20 mA |
| Lunghezza d'onda di picco (nm) | Rosso: 620, Verde: 525, Blu: 465 |
| Pacchetto | Standard a 4 pin |
| Note / varianti | Opzioni per anodo comune o catodo comune disponibili |
- Utilizza resistori da 220 ohm per ogni colore LED per limitare la corrente.
- Assicurati che il cablaggio sia corretto per la configurazione dell'anodo comune o del catodo comune.
- Controlla l'alimentazione dell'ESP32 per evitare cali di tensione.
- Mantieni la frequenza PWM entro i limiti per transizioni di colore fluide.
- Assicurati che le credenziali Wi-Fi siano corrette per connetterti al servizio Adafruit IO.
Istruzioni per il cablaggio

Per collegare il LED RGB all'ESP32, inizia identificando i pin sul LED RGB. Il pin più lungo è il pin comune. Per una configurazione a catodo comune, collega questo pin all'alimentazione positiva (3.3V). Gli altri tre pin corrispondono ai LED rosso, verde e blu. Collega il pin rosso al GPIO 27, il pin verde al GPIO 26 e il pin blu al GPIO 25. Ognuna di queste connessioni dovrebbe essere effettuata tramite un resistore da 220 ohm per limitare la corrente che scorre attraverso i LED.
Successivamente, collega il ground (GND) dell'ESP32 alla linea di ground del tuo circuito. Assicurati che i cablaggi siano sicuri per prevenire eventuali connessioni intermittenti. Se utilizzi un LED RGB a catodo comune, collega il pin comune a terra e collega i pin dei singoli colori all'alimentazione positiva tramite le resistenze. Controlla di nuovo tutte le connessioni prima di alimentare il circuito.
Esempi di codice e guida passo passo
Nel codice Arduino, iniziamo definendo i pin per i LED rosso, verde e blu utilizzando gli identificatori.redPin,greenPin, ebluePin. Inoltre, definiamo i canali PWM per ciascun colore utilizzandoredChannel,greenChannel, eblueChannelLa frequenza PWM è impostata a 5000 Hz con una risoluzione a 8 bit.
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;In thesetup()funzione, inizializziamo i canali PWM e colleghiamo i pin corrispondenti. Ci connettiamo anche alla rete Wi-Fi utilizzando le credenziali definite e configuriamo il client MQTT per la comunicazione con Adafruit IO.
void setup() {
ledcSetup(redChannel, freq, resolution);
ledcAttachPin(redPin, redChannel);
// Connect to WiFi
WiFi.begin(WLAN_SSID, WLAN_PASS);
}Il ciclo principale controlla la connessione MQTT e elabora i messaggi in arrivo. Stampa anche i valori RGB attuali sul monitor seriale. Il colore del LED viene aggiornato in base ai valori ricevuti tramite le sottoscrizioni MQTT.
void loop() {
MQTT_connect();
mqtt.processPackets(500);
setColor();
}Per ulteriori dettagli sul codice completo, si prega di fare riferimento al codice completo caricato sotto l'articolo.
Dimostrazione / Cosa Aspettarsi
Una volta che tutto è impostato e il codice è caricato, dovresti vedere il LED RGB rispondere ai cambiamenti di colore effettuati tramite il dashboard di Adafruit IO. Man mano che regoli i cursori per il rosso, il verde e il blu, il LED dovrebbe cambiare colore di conseguenza. Se riscontri problemi, assicurati che la connessione Wi-Fi sia stabile e che i nomi dei topic MQTT corrispondano a quelli definiti nel codice (nel video alle 17:30).
I pericoli comuni includono cablaggi errati, nomi dei temi incongruenti e dimenticare di impostare le corrette credenziali Wi-Fi. Se il LED non si accende, controlla di nuovo le connessioni dei resistori e assicurati che l'ESP32 sia alimentato correttamente.
Timestamp video
- 00:00 Inizio
- 2:23 Introduzione al progetto
- 4:43 Che cos'è MQTT
- 7:55 Configurazione di Adafruit IO
- 14:09 Spiegazione del cablaggio
- 16:07 Codice spiegato
- 27:03 Selezionare la scheda ESP32 e la porta COM su Arduino IDE
- 29:12 Dimostrazione del progetto
- Cos'è un LED RGB?
- 35:26 Colore RGB
/*
* Questo è uno sketch Arduino per ESP32 per controllare un LED RGB utilizzando il servizio MQTT di Adafruit
* istruzioni video https://youtu.be/-9q1GfGsnr0
* 📚⬇️ Pagina di download e risorse https://robojax.com/RJT672
* Scritto da Ahamd Shamshiri
* il 18 febbraio 2024
*
* Esempio di libreria Adafruit MQTT ESP32 Adafruit IO SSL/TLS
*
* /// riferimento: https://www.electronicwings.com/esp32/esp32-mqtt-client
* /
* // Definire i pin del LED RGB
*/
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
// Definisci i canali PWM
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;
// Definire la frequenza PWM e la risoluzione
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"
/*
* Punto di Accesso WiFi *********************************/
*
* #define WLAN_SSID "Book"
* #define WLAN_PASS "888-888"
*
* /************************* Configurazione Adafruit.io
*/
#define AIO_SERVER "io.adafruit.com"
// Utilizzando la porta 8883 per MQTTS
#define AIO_SERVERPORT 8883
// Configurazione dell'account Adafruit IO
// (per ottenere questi valori, visita https://io.adafruit.com e fai clic su Chiave attiva)
// #define AIO_USERNAME "IL_TUO_NOME_UTENTE_ADAFRUIT_IO"
// #define AIO_KEY "IL_TUO_ADAFRUIT_IO_KEY"
#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_NBQQ75Rn7liRNcRn5uGUBMsBYmjD"
/*
* Stato globale (non è necessario modificarlo!) ******************/
*
* // WiFiFlientSecure per supporto SSL/TLS
* WiFiClientSecure client;
*
* // Configura la classe del client MQTT passando il client WiFi e i dettagli del server MQTT e di accesso.
* Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
*
* // CA radice di 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";
*/
// Imposta un feed chiamato 'test' per la pubblicazione e 'test2' per l'abbonamento.
// Si prega di notare che i percorsi MQTT per AIO seguono la forma: <nomeutente>/feeds/<nomedelfeed>
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
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Nessun file disponibile.