Tutorial ESP32 43/55 - Estação Meteorológica IoT Internet | Kit de Aprendizado IoT ESP32 da SunFounder

Tutorial ESP32 43/55 - Estação Meteorológica IoT Internet | Kit de Aprendizado IoT ESP32 da SunFounder

Neste tutorial, construiremos uma estação meteorológica conectada à Internet usando o ESP32 e sua placa de extensão de câmera da SunFounder. Este projeto permite que o ESP32 recupere dados meteorológicos em tempo real, incluindo temperatura e umidade, e os exiba em uma tela LCD. Esta aplicação não apenas demonstra as capacidades do ESP32, mas também mostra como buscar e analisar dados de uma API externa.

À medida que avançamos pelo tutorial, vamos conectar os componentes, configurar o código e garantir que tudo funcione perfeitamente em conjunto. O resultado final será uma estação meteorológica totalmente funcional que atualiza suas medições a cada 10 segundos, fornecendo uma exibição clara e concisa das condições meteorológicas atuais (no vídeo em 00:30).

Hardware Explicado

Os principais componentes utilizados neste projeto incluem o microcontrolador ESP32, um display LCD e a fiação necessária. O ESP32 é equipado com Wi-Fi e Bluetooth integrados, permitindo que se conecte à Internet e recupere dados. O display LCD mostrará as informações atuais do tempo, incluindo temperatura e umidade.

O LCD que estamos usando é um display de caracteres 16x2, o que significa que pode mostrar duas linhas de 16 caracteres cada. Isso será suficiente para a saída das informações meteorológicas. O ESP32 se comunicará com o LCD via I2C, o que simplifica a fiação usando apenas duas linhas de dados.

Detalhes da Ficha Técnica

FabricanteEspressif
Número da peçaESP32-WROOM-32
Tensão lógica/IO3,3 V
Tensão de alimentação3,0-3,6 V
Corrente de saída (por canal)12 mA máx
Corrente de pico (por canal)40 mA
Orientação sobre frequência PWM1 kHz
Limiares de lógica de entrada0,3 V (baixo), 0,7 V (alto)
Queda de tensão / RDS(on)/ saturação0,5 V
Limites térmicos-40 a 85 °C
PacoteQFN48
Notas / variantesInclui múltiplas variantes para diferentes aplicações.

  • Certifique-se de que o ESP32 está alimentado com uma fonte estável de 3,3 V.
  • Use um terreno comum para todos os componentes para evitar problemas de comunicação.
  • Verifique o endereço I2C do LCD usando um scanner I2C.
  • Monitore o status da conexão Wi-Fi para evitar desconexões durante a recuperação de dados.
  • Lidar com erros de análise JSON para robustez na recuperação de dados.

Instruções de Fiação

esp32-43-weather_station-wiring

Para conectar os componentes, comece ligando o LCD ao ESP32. O LCD usará a interface I2C, então conecte o pino SDA do LCD ao GPIO21 no ESP32 e o pino SCL ao GPIO22. Certifique-se de conectar os pinos de energia e terra do LCD aos pinos de 5V e GND no ESP32, respectivamente.

Em seguida, certifique-se de que o ESP32 esteja alimentado corretamente usando a bateria de lítio incluída ou uma conexão USB. A bateria oferece portabilidade, enquanto a conexão USB é útil para programação e depuração. Por fim, verifique se todas as conexões estão seguras para evitar problemas de fiação solta que possam interromper a funcionalidade.

Exemplos de Código & Tutorial

Na fase de configuração do nosso programa, inicializamos a comunicação serial e conectamos à rede Wi-Fi usando o SSID e a senha fornecidos. O trecho de código a seguir lida com a conexão Wi-Fi:

WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
}
Serial.println("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());

Este código garante que o ESP32 se conecte à rede Wi-Fi especificada antes de prosseguir com qualquer coleta de dados. Se a conexão falhar, ele tentará reconectar continuamente.

Em seguida, precisamos enviar uma solicitação HTTP GET para recuperar dados meteorológicos. Isso é realizado usando o seguinte trecho de código:

String serverPath = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + countryCode + "&units=metric" + "&APPID=" + openWeatherMapApiKey;
jsonBuffer = httpGETRequest(serverPath.c_str());

Aqui, construímos a URL para a solicitação da API, que inclui a cidade, o código do país e nossa chave da API.httpGETRequesta função é então chamada para buscar os dados meteorológicos.

Finalmente, analisamos a resposta JSON e exibimos os dados relevantes no LCD:

lcd.clear(); 
lcd.setCursor(0, 0); 
lcd.print(time);
lcd.print(" ");        
lcd.print(myObject["weather"][0]["main"]);             
lcd.setCursor(0, 1);
lcd.print("T:");    
lcd.print(myObject["main"]["temp"]); 
lcd.print("\xDF");  // "°" char
lcd.print("C ");    
lcd.print("H:");    
lcd.print(myObject["main"]["humidity"]);  
lcd.print("%");

Este trecho de código atualiza o display LCD com a hora atual, condição meteorológica, temperatura e umidade. Ele limpa o display anterior e posiciona o cursor nas posições apropriadas para cada linha.

Demonstração / O que Esperar

Após a fiação e programação bem-sucedidas, sua estação meteorológica se conectará ao Wi-Fi e começará a buscar dados meteorológicos a cada 10 segundos. Você verá a temperatura atual, a umidade e as condições meteorológicas exibidas na tela LCD. Se o ESP32 não conseguir se conectar ao Wi-Fi, ele imprimirá uma mensagem de erro no monitor serial.

Fique atento aos limites de chamadas da API para evitar ser bloqueado pelo serviço OpenWeatherMap. Se você encontrar qualquer problema com a recuperação de dados, verifique sua chave da API e assegure-se de que sua cidade e o código do país estejam especificados corretamente (no vídeo às 15:45).

Marcadores de Vídeo

  • 00:00 Início
  • 2:00 introdução ao projeto
  • 5:04 Conta do OpenWeather
  • 6:11 Fiação
  • 8:05 Código do Arduino explicado
  • 14:13 JASON Elementos no código
  • 20:23 Selecionando a placa ESP32 e a porta COM no Arduino IDE
  • 22:05 Demonstração da Estação Meteorológica no LCD1602
  • 23:45 Demonstração da Estação Meteorológica no LCD2004

Imagens

esp32-43-weather_station-main
esp32-43-weather_station-main
esp32-43-weather_station-wiring
esp32-43-weather_station-wiring
844-ESP32 Tutorial 43/55- Arduino code for IoT Internet Weather Station
Idioma: C++
Copiado!

Arquivos📁

Nenhum arquivo disponível.