Tutorial ESP32 52/55 - Sincronização Global WS2812 CheerLights MQTT com LCD | Kit IoT SunFounder ESP32

Tutorial ESP32 52/55 - Sincronização Global WS2812 CheerLights MQTT com LCD | Kit IoT SunFounder ESP32

Neste tutorial, criaremos um projeto CheerLights usando o ESP32, que irá sincronizar cores globalmente através do MQTT. Este projeto não apenas mudará de cor com base nas entradas de outros usuários, mas também exibirá a cor atual e quantas vezes foi atualizada em uma tela LCD. O resultado é uma demonstração divertida das capacidades de IoT, mostrando como os dispositivos podem interagir e manter os usuários conectados através de distâncias. Para esclarecimentos adicionais, assista ao vídeo (no vídeo em 00:00).

esp32-52-luz-anímica-lcd-principal

Hardware Explicado

Para construir este projeto, você precisará de um microcontrolador ESP32, uma fita de LED WS2812 e um display LCD. O ESP32 serve como o cérebro da operação, utilizando suas funcionalidades de Wi-Fi integradas para se conectar à internet e receber mensagens MQTT. Isso permite atualizações em tempo real nas cores dos LEDs com base em uma entrada global de outros usuários.

A fita LED WS2812 é uma escolha popular para projetos que exigem LEDs RGB endereçáveis. Cada LED pode ser controlado independentemente, permitindo exibições de cores ricas. O LCD fornecerá uma confirmação visual da cor atual e do número de vezes que foi alterada, melhorando a interação com o usuário.

cheeLights_LCD

Detalhes da Ficha Técnica

Fabricante SunFounder
Número da peça ESP32
Tensão de Lógica/IO 3,3 V
Tensão de alimentação 5 V
Corrente de saída (por canal) 20 mA
Corrente de pico (por canal) 60 mA
Orientação sobre a frequência PWM 400 Hz
Limiares de lógica de entrada 0,15 V (baixo), 0,8 V (alto)
Queda de tensão / RDS(on)/ saturação 0,2 V
Limites térmicos 85 °C
Pacote módulo ESP32
Notas / variantes Inclui Wi-Fi e Bluetooth integrados.

  • Garanta um fornecimento de energia adequado para o ESP32 (5 V) e a fita WS2812 (5 V).
  • Use um terra comum entre o ESP32 e a fita de LED.
  • Implemente um broker MQTT apropriado para sincronização de cores.
  • Preste atenção à conexão do pino de dados para o WS2812 (pino 14 conforme o código).
  • Tenha cuidado com o número de LEDs; exceder os limites de potência requer fontes de energia adicionais.

Instruções de Fiação

ESP32-11_LCD-wiring
esp32-47-cheer-light-wiring

Para conectar os componentes, comece ligando a fita de LED WS2812. Conecte o pino de terra (geralmente preto) da fita de LED ao pino de terra no ESP32. Em seguida, conecte o pino VCC (geralmente vermelho) da fita de LED à saída de 5V no ESP32. Por fim, conecte o pino de dados (frequentemente amarelo) ao pino GPIO 14 no ESP32.

Para o LCD, conecte o pino de terra (geralmente preto) ao terra do ESP32. O pino VCC (normalmente vermelho) deve ser conectado à saída de 5V. O pino SDA (tipicamente cinza) conecta-se ao pino GPIO 21, enquanto o pino SCL (geralmente branco) conecta-se ao pino GPIO 22. Esta configuração permite que o ESP32 se comunique com o LCD e exiba informações conforme necessário.

Exemplos de Código e Passo a Passo

Na função de configuração, inicializamos o LCD e conectamos ao Wi-Fi. O código abaixo demonstra como definir as bibliotecas necessárias e configurar o LCD:

#include  
#include 
LiquidCrystal_I2C lcd(0x27, 16,2);  // set the LCD address
void setup() {
  Serial.begin(115200);
  lcd.init(); // initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.
}

Isso inicializa o LCD para uso, permitindo que exiba mensagens. O próximo trecho mostra como a conexão Wi-Fi é estabelecida:

void setup_wifi() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    lcdConnect(); //for LCD
    delay(500);
  }
  Serial.println("WiFi connected");
}

Esta função estabelece uma conexão com a rede Wi-Fi especificada, exibindo uma mensagem no LCD enquanto se conecta. Por fim, a lógica de mudança de cor é tratada na função de callback:

void callback(char* topic, byte* message, unsigned int length) {
  String messageTemp;
  for (int i = 0; i < length; i++) {
    messageTemp += (char)message[i];
  }
  if (String(topic) == "cheerlights") {
    setColor(messageTemp);
  }
}

Esta função escuta por mensagens recebidas no tópico "cheerlights" e atualiza a cor de acordo. O código completo está carregado abaixo do artigo, então certifique-se de revisá-lo para a implementação completa.

Demonstração / O que Esperar

Após a conclusão do projeto, você pode esperar que a fita de LED mude de cores com base nas entradas de um feed MQTT global. O LCD exibirá o nome da cor atual e quantas vezes ela foi alterada. Se você desconectar a internet, o LCD indicará "Conectando..." até que uma conexão seja restabelecida (no vídeo às 12:30).

Erros comuns incluem garantir que os pinos corretos sejam usados para as conexões de dados e verificar se as credenciais do Wi-Fi estão corretas. Se houver qualquer discrepância no SSID ou na senha, o ESP32 não conseguirá se conectar, e o LCD continuará exibindo a mensagem de conexão.

Timestamps de Vídeo

  • 00:00 Início
  • 1:59 Introdução ao projeto
  • 6:16 Fiação explicada
  • 8:13 Código Arduino explicado
  • 14:26 Selecionando a placa ESP32 e a porta COM no Arduino IDE
  • 16:07 Demonstração CheerLight com LCD

Imagens

ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
esp32-47-cheer-light-wiring
esp32-47-cheer-light-wiring
esp32-52-cheer-light-lcd-main
esp32-52-cheer-light-lcd-main
cheeLights_LCD
cheeLights_LCD
853-ESP32 Tutorial 52/55- CheerLight MQTT and LCD
Idioma: C++
Copiado!

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.