Código de Pesquisa

Tutorial ESP32 48/55 - Monitoramento Remoto de Temperatura e Controle de LED MQTT | Kit IoT ESP32 da SunFounder

Tutorial ESP32 48/55 - Monitoramento Remoto de Temperatura e Controle de LED MQTT | Kit IoT ESP32 da SunFounder

Neste tutorial, exploraremos como utilizar o módulo ESP32 em conjunto com a placa de extensão ESP32 da SunFounder para monitorar temperatura e umidade remotamente usando a plataforma Adafruit IO. Além disso, implementaremos a funcionalidade para controlar um LED através de uma interface web. Ao final deste projeto, você será capaz de visualizar dados de temperatura e umidade em tempo real e ativar ou desativar um LED a partir do seu navegador.

Este projeto aproveita o protocolo MQTT para uma comunicação eficiente entre o ESP32 e o serviço Adafruit IO. O MQTT é leve e bem adequado para aplicações de IoT, permitindo-nos publicar facilmente os dados do sensor e assinar os comandos para o controle do LED. Para mais esclarecimentos sobre o código e a fiação, não esqueça de conferir o vídeo que acompanha este tutorial (no vídeo às 00:00).

Hardware Explicado

Os principais componentes deste projeto incluem o microcontrolador ESP32, um sensor de temperatura e umidade DHT11 e um LED. O ESP32 é um microcontrolador poderoso que possui capacidades Wi-Fi e Bluetooth integradas, tornando-o uma escolha ideal para projetos de IoT. Ele pode lidar com várias tarefas e se conectar à internet de forma contínua.

O sensor DHT11 é responsável por medir a temperatura e a umidade. Ele emite sinais digitais que podem ser lidos pelo ESP32. O LED serve como um indicador e pode ser controlado remotamente para demonstrar a eficácia do protocolo MQTT na gestão de dispositivos pela internet.

Detalhes da Ficha Técnica

Fabricante Adafruit
Número da peça DHT11
Tensão lógica/IO 3,3 V
Tensão de alimentação 3,3 V
Corrente de saída (por canal) 20 mA
Corrente de pico (por canal) 50 mA
Orientação sobre frequência PWM N/A
Limiares de lógica de entrada 0,3 V (baixo), 0,7 V (alto)
Queda de tensão / RDS(on)/ saturação N/A
Limites térmicos 0 a 50 °C
Pacote 3-pinos
Notas / variantes Use DHT22 para maior precisão.

  • Certifique-se de que a fiação está correta para evitar danos.
  • Use um resistor de 220 Ohms com o LED para limitar a corrente.
  • Use resistores de pull-up para o pino de dados do DHT11, se necessário.
  • Verifique as credenciais do Wi-Fi quanto a maiúsculas e minúsculas.
  • Monitore a saída serial para depurar problemas de conexão.
  • Mantenha os tópicos MQTT únicos para evitar conflitos.
  • Teste as leituras do sensor para garantir que são válidas.
  • Tenha cuidado com o tempo de resposta do DHT11; pode levar um tempo para estabilizar as leituras.

LED= controle LED;temperature= publicar dados de temperatura;humidity= publicar dados de umidade.

Instruções de Fiação

Para ligação dos componentes, comece conectando o sensor DHT11. Conecte o pino esquerdo do DHT11 ao trilho de alimentação de 3,3V na placa de ensaio usando um fio vermelho. O pino do meio do DHT11 deve ser conectado ao pino 13 no ESP32 usando um fio amarelo. Por fim, conecte o pino direito do DHT11 ao trilho de terra usando um fio azul.

Em seguida, para o LED, conecte o ânodo (perna mais longa) ao pino 15 do ESP32 através de um resistor de 220 Ohms. Conecte o cátodo (perna mais curta) diretamente ao barramento de terra na placa de ensaio. Certifique-se de que todas as conexões estejam seguras e verifique se há fios soltos.

Configurando o Painel de Controle

  1. VisitaAdafruit IO, então clique emComece grátispara criar uma conta gratuita.

    ../../_images/sp230516_102503.png
  2. Preencha o formulário para criar uma conta.

    ../../_images/sp230516_102629.png
  3. Após criar uma conta Adafruit, você precisará reabrir o Adafruit io. Clique emPainéis de controle, em seguida clique emNovo Painel de Controle.

    ../../_images/sp230516_103347.png
  4. Criar umNovo Painel de Controle.

    ../../_images/sp230516_103744.png
  5. Insira o recém-criadoPainel de Controlee criar um novo bloco.

    ../../_images/sp230516_104234.png
  6. Criar 1Alternarbloco.

    ../../_images/sp230516_105727.png
  7. Em seguida, você precisará criar um novo feed aqui. Este interruptor será usado para controlar o LED, e chamaremos este feed de "LED".

    ../../_images/sp230516_105641.png
  8. Verifique oLEDalimente, então passe para a próxima etapa.

    ../../_images/sp230516_105925.png
  9. Complete as configurações do bloco (principalmente Título do Bloco, Texto Ligado e Texto Desligado), em seguida clique noCriar blocobotão no canto inferior direito para finalizar.

    ../../_images/sp230516_110124.png
  10. Também precisamos criar doisBlocos de Textopróximo. Eles serão usados para exibir temperatura e umidade. Então, crie dois feeds nomeadostemperaturaeumidade.

    ../../_images/sp230516_110657.png
  11. Após a criação, seu Painel deve parecer algo assim:

    ../../_images/sp230516_111134.png
  12. Você pode ajustar o layout usando oEditar Layoutopção no Painel.

    ../../_images/sp230516_111240.png
  13. Clique emCHAVE DA API, e você verá seu nome de usuário eCHAVE DA APIanotados. Lembre-se deles, pois você vai precisar para o seu código.

    ../../_images/sp230516_111641.png

Exemplos de Código e Passo a Passo

O código começa incluindo as bibliotecas necessárias, configurando as credenciais do Wi-Fi e definindo os parâmetros MQTT. Identificadores-chave comoAIO_USERNAMEeAIO_KEYsão usados para autenticar com o serviço Adafruit IO.

#define AIO_USERNAME "YourUsername"
#define AIO_KEY "YourKey"

Essas linhas definem seu nome de usuário e chave do Adafruit IO, que são essenciais para se conectar ao broker MQTT. Certifique-se de que esses valores estejam corretos para estabelecer uma conexão bem-sucedida.

No textosetup()função, a conexão Wi-Fi é inicializada e o cliente MQTT é configurado com o certificado CA raiz para comunicação segura.

WiFi.begin(WLAN_SSID, WLAN_PASS);
client.setCACert(adafruitio_root_ca);

Este código conecta o ESP32 à rede Wi-Fi especificada e define a CA raiz para conexões MQTT seguras. Manipular corretamente essas conexões é crítico para uma transmissão de dados confiável.

Finalmente, oloop()a função gerencia a conexão MQTT e publica leituras de temperatura e umidade em intervalos regulares.

mqtt.processPackets(5000);

Esta linha permite que o ESP32 processe mensagens recebidas para tópicos assinados, garantindo que o dispositivo permaneça responsivo a comandos enviados a partir da interface web.

Para o código completo, consulte o programa completo carregado abaixo do artigo.

Demonstração / O que Esperar

Após a configuração bem-sucedida, você deverá ver atualizações em tempo real da temperatura e umidade no seu painel do Adafruit IO. Você também pode ligar e desligar o LED através da interface web. Se o LED não responder como esperado, verifique sua fiação e garanta que os nomes dos tópicos MQTT correspondam aos definidos no código.

Esteja ciente de que certos erros de conexão MQTT podem ocorrer devido a certificados expirados. Certifique-se de ter o último certificado CA raiz em seu código para evitar esses problemas (no vídeo às 15:30).

Timestamps de Vídeo

  • 00:00 Início
  • 1:50 Introdução ao projeto
  • 3:16 O que é MQTT
  • 6:36 Configuração do Adafruit IO
  • 11:13 fiação
  • 13:38 Código Arduino explicado
  • 22:03 Selecionando a placa ESP32 e a porta COM
  • 23:44 Demonstração do projeto
  • 27:05 Atualizando painel
849-ESP32 Tutorial 48/55- Arduino code for Remote Temperature Monitoring and LED control MQTT
Idioma: C++
/*
 * Biblioteca MQTT Adafruit ESP32 Exemplo Adafruit IO SSL/TLS
 * 
 * Use a versão mais recente do núcleo Arduino ESP32:
 * https://github.com/espressif/arduino-esp32
 * 
 * Funciona perfeitamente com Adafruit Huzzah32 Feather e Breakout Board:
 * https://www.adafruit.com/product/3405
 * https://www.adafruit.com/products/4172
 * 
 * A Adafruit investe tempo e recursos fornecendo este código aberto,
 * por favor, apoiem a Adafruit e o hardware de código aberto comprando
 * produtos da Adafruit!
 * 
 * Escrito por Tony DiCola para a Adafruit Industries.
 * Modificado por Brent Rubell para a Adafruit Industries
 * Licença MIT, todo o texto acima deve ser incluído em qualquer redistribuição
 * /
 * 
 * /// ref: https://www.electronicwings.com/esp32/esp32-mqtt-client
 */
#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

/*
 * Ponto de Acesso WiFi *********************************/
 * 
 * #define WLAN_SSID "SSID"
 * #define WLAN_PASS "SENHA"
 * 
 * /************************* Configuração do 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 "SEU_ADAFRUIT_IO_KEY"

#define AIO_USERNAME "JimmyKernel"
#define AIO_KEY "aio_Mxiv12i74b5jKfKNSKLYjlhPmoHC"

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

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

850-ESP32 Tutorial 48/55- Basic Adafruit MQTT code (watch video)
Idioma: C++
/*
 * Aula 1 Básica de MQTT da Adafruit
 * Assista à instrução em vídeo para este código no YouTube https://youtu.be/M9BQweAsHJM
 * Página de recursos para esta aula e código:
 * 📚⬇️ Página de download e recursos https://robojax.com/RJT670
 * Tutorial por https://youTube.com/@robojax
 * 
 * Biblioteca Adafruit MQTT exemplo SSL/TLS para ESP32 Adafruit IO
 * 
 * Use a versão mais recente do ESP32 Arduino Core:
 * https://github.com/espressif/arduino-esp32
 * 
 * Funciona muito bem com o Adafruit Huzzah32 Feather e Breakout Board:
 * https://www.adafruit.com/product/3405
 * https://www.adafruit.com/products/4172
 * 
 * A Adafruit investe tempo e recursos fornecendo este código open source,
 * por favor, apoie a Adafruit e o hardware open-source comprando
 * produtos da Adafruit!
 * 
 * Escrito por Tony DiCola para a Adafruit Industries.
 * Modificado por Brent Rubell para a Adafruit Industries
 * Licença MIT, todo o texto acima deve ser incluído em qualquer redistribuição
 * /
 * 
 * /// ref: https://www.electronicwings.com/esp32/esp32-mqtt-client
 */
#include <WiFi.h>
#include "WiFiClientSecure.h"
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

/*
 * Ponto de Acesso WiFi *********************************/
 * 
 * #define WLAN_SSID "dars"
 * #define WLAN_PASS "5152535455"
 * 
 * /************************* Configuração do 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 "SEU_AADAFRUIT_IO_KEY"

#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_wCyL33EVKLcGoAotGNEQ4dGQYOLZ"

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

 // Configure um feed chamado 'test' para publicação e 'test2' para assinatura.
 // Observe que os caminhos MQTT para AIO seguem a forma: <username>/feeds/<feedname>
Adafruit_MQTT_Subscribe LED = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED");
 // Adafruit_MQTT_Publish umidade = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/humidity");
 // Adafruit_MQTT_Publish temperatura = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/temperatura");

Arquivos📁

Nenhum arquivo disponível.