Código de Pesquisa

Tutorial ESP32 50/55 - Controle o LED RGB de qualquer lugar do mundo | Kit ESP32 da SunFounder

Tutorial ESP32 50/55 - Controle o LED RGB de qualquer lugar do mundo | Kit ESP32 da SunFounder

Neste tutorial, aprenderemos como controlar a cor de um LED RGB usando o microcontrolador ESP32 via Wi-Fi, utilizando o protocolo MQTT e o serviço Adafruit IO. Esta configuração permite que você mude a cor do LED RGB de qualquer lugar do mundo, oferecendo uma aplicação prática da tecnologia IoT. Também exploraremos como usar deslizadores e um seletor de cores para escolher a cor desejada.

esp32-50-RGB-led-mqtt-principal

O ESP32 é um microcontrolador poderoso que possui capacidades embutidas de Wi-Fi e Bluetooth, tornando-o ideal para projetos de IoT. Neste projeto, conectaremos um LED RGB ao ESP32 e controlaremos sua cor através de um broker MQTT fornecido pela Adafruit. O tutorial irá guiá-lo através da configuração de hardware, instruções de fiação e o código necessário para fazer tudo funcionar perfeitamente (no vídeo às :00).

Hardware Explicado

esp32-50-RGB-led
esp32-50-led-RGB

Para este projeto, os componentes principais que usaremos são o microcontrolador ESP32 e o LED RGB. O ESP32 é capaz de se conectar a redes Wi-Fi, permitindo que ele se comunique com o serviço Adafruit IO. O LED RGB contém três LEDs individuais (vermelho, verde e azul) que podem ser misturados para criar uma ampla variedade de cores.

O LED RGB opera com o princípio do ânodo comum ou do cátodo comum, o que significa que o ânodo (positivo) ou o cátodo (negativo) dos LEDs individuais devem ser conectados corretamente para que funcionem. Cada cor pode ser controlada usando Modulação por Largura de Pulso (PWM), que ajusta o brilho de cada LED variando o ciclo de trabalho.

ES32-38_RGB_LED-fiação

Detalhes da Ficha Técnica

Fabricante SunFounder
Número da peça LED RGB
Tensão de polarização (V)F) 2,0-3,4 V
Corrente de avanço (IF) 20 mA
Comprimento de onda de pico (nm) Vermelho: 620, Verde: 525, Azul: 465
Pacote Pino padrão de 4 pinos
Notas / variantes Opções de ânodo comum ou cátodo comum disponíveis

  • Use resistores de 220 ohms para cada cor de LED para limitar a corrente.
  • Assegure a fiação correta para configuração de ânodo ou cátodo comum.
  • Verifique a fonte de alimentação do ESP32 para evitar quedas de tensão.
  • Mantenha a frequência PWM dentro dos limites para transições de cor suaves.
  • Verifique se as credenciais do Wi-Fi estão corretas para se conectar ao serviço Adafruit IO.

Instruções de Fiação

ES32-38_RGB_LED-wiring

Para conectar o LED RGB ao ESP32, comece identificando os pinos do LED RGB. O pino mais longo é o pino comum. Para uma configuração de anodo comum, conecte este pino à fonte de tensão positiva (3,3V). Os outros três pinos correspondem aos LEDs vermelho, verde e azul. Conecte o pino vermelho ao GPIO 27, o pino verde ao GPIO 26 e o pino azul ao GPIO 25. Cada uma dessas conexões deve ser feita através de um resistor de 220 ohms para limitar a corrente que passa pelos LEDs.

Em seguida, conecte o terra (GND) do ESP32 ao fio de terra do seu circuito. Certifique-se de que a fiação esteja segura para evitar conexões intermitentes. Se estiver usando um LED RGB de cátodo comum, conecte o pino comum ao terra e conecte os pinos de cores individuais à fonte positiva através dos resistores. Verifique todas as conexões antes de energizar o circuito.

Exemplos de Código e Tutoriais

No código Arduino, começamos definindo os pinos para os LEDs vermelho, verde e azul usando os identificadores.redPin,greenPin, ebluePin. Além disso, definimos os canais PWM para cada cor usandoredChannel,greenChannel, eblueChannelA frequência PWM é definida como 5000 Hz com uma resolução 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;

In thesetup()função, inicializamos os canais PWM e conectamos os pinos correspondentes. Também nos conectamos à rede Wi-Fi usando as credenciais definidas e configuramos o cliente MQTT para comunicação com o Adafruit IO.

void setup() {
  ledcSetup(redChannel, freq, resolution);
  ledcAttachPin(redPin, redChannel);
  // Connect to WiFi
  WiFi.begin(WLAN_SSID, WLAN_PASS);
}

O loop principal verifica a conexão MQTT e processa as mensagens recebidas. Ele também imprime os valores RGB atuais no monitor serial. A cor da LED é atualizada com base nos valores recebidos através das assinaturas MQTT.

void loop() {
  MQTT_connect();
  mqtt.processPackets(500);
  setColor();
}

Para mais detalhes sobre o código completo, consulte o código completo carregado abaixo do artigo.

Demonstração / O que Esperar

Uma vez que tudo esteja configurado e o código esteja carregado, você deve ver o LED RGB respondendo às mudanças de cor feitas através do painel do Adafruit IO. À medida que você ajusta os controles deslizantes para vermelho, verde e azul, o LED deve mudar sua cor de acordo. Se você tiver algum problema, certifique-se de que a conexão Wi-Fi esteja estável e que os nomes dos tópicos MQTT correspondam àqueles definidos no código (no vídeo às 17:30).

Os erros comuns incluem fiação incorreta, nomes de tópicos incompatíveis e esquecer de definir as credenciais corretas do Wi-Fi. Se o LED não acender, verifique novamente as conexões do resistor e certifique-se de que o ESP32 está alimentado corretamente.

Marcações de vídeo

  • 00:00 Início
  • 2:23 Introdução ao projeto
  • 4:43 O que é MQTT
  • 7:55 Configuração do Adafruit IO
  • 14:09 Fiação explicada
  • 16:07 Código explicado
  • 27:03 Selecionando a placa ESP32 e a porta COM no Arduino IDE
  • 29:12 Demonstração do projeto
  • O que é LED RGB?
  • 35:26 Cor RGB

Imagens

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
ES32-38_RGB_LED-wiring
ES32-38_RGB_LED-wiring
esp32-50-RGB-led
esp32-50-RGB-led
esp32-50-RGB-led-mqtt-main
esp32-50-RGB-led-mqtt-main
852-ESP32 Tutorial 50/55- Arduino code to control RGB LED using MQTT service of Adafruit
Idioma: C++
/*
 * Este é um esboço do Arduino para ESP32 para controlar LED RGB usando o serviço MQTT da Adafruit  
 * instrução em vídeo https://youtu.be/-9q1GfGsnr0  
 * 📚⬇️ Página de download e recursos https://robojax.com/RJT672  
 * Escrito por Ahamd Shamshiri  
 * em 18 de fevereiro de 2024
 * 
 * Biblioteca MQTT da Adafruit exemplo de SSL/TLS ESP32 Adafruit IO
 * 
 * /// ref: https://www.electronicwings.com/esp32/esp32-mqtt-client  
 * //  
 * // Defina os pinos do LED RGB
 */
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

 // Defina canais PWM
const int redChannel = 0;
const int greenChannel = 1;
const int blueChannel = 2;

 // Defina a frequência e a resolução do PWM.
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"

/*
 * Ponto de Acesso WiFi *********************************/
 * 
 * #define WLAN_SSID "Book"
 * #define WLAN_PASS "888-888"
 * 
 * ************************* Configuração Adafruit.io
 */

#define AIO_SERVER "io.adafruit.com"

 // Usando a porta 8883 para MQTTS
#define AIO_SERVERPORT 8883

 // Configuração da Conta Adafruit IO
 // (para obter esses valores, visite https://io.adafruit.com e clique em Chave Ativa)
 // #define AIO_USERNAME "SEU_NOME_DE_USUÁRIO_ADAFRUIT_IO"
 // #define AIO_KEY "SUA_CHAVE_ADAFRUIT_IO"

#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_NBQQ75Rn7liRNcRn5uGUBMsBYmjD"

/*
 * Estado Global (você não precisa mudar isso!) ******************/
 * 
 * // WiFiClientSecure para suporte SSL/TLS
 * WiFiClientSecure client;
 * 
 * // Configure a classe do cliente MQTT passando o cliente WiFi e os detalhes do servidor e login MQTT.
 * Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
 * 
 * // io.adafruit.com raiz 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";
 * 
 * /****************************** Feeds
 */

 // Configure um feed chamado 'teste' para publicação e 'teste2' para assinatura.
 // Observe que os caminhos MQTT para AIO seguem a forma: <username>/feeds/<feedname>
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");


Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.