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
| Fabricante | Espressif |
|---|---|
| Número da peça | ESP32-WROOM-32 |
| Tensão lógica/IO | 3,3 V |
| Tensão de alimentação | 3,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 PWM | 1 kHz |
| Limiares de lógica de entrada | 0,3 V (baixo), 0,7 V (alto) |
| Queda de tensão / RDS(on)/ saturação | 0,5 V |
| Limites térmicos | -40 a 85 °C |
| Pacote | QFN48 |
| Notas / variantes | Inclui 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

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
Common Course Links
Common Course Files
Recursos e referências
-
DocumentaçãoTutorial ESP32 43/55 - Página do doc SunFounder para Estação Meteorológica IoTdocs.sunfounder.com
Arquivos📁
Nenhum arquivo disponível.