#include <WiFi.h> // Biblioteca para conectar o ESP32 ao Wi-Fi
#include "DHTesp.h" // Biblioteca para manipular o sensor DHT22
#include "ThingSpeak.h" // Biblioteca para enviar dados ao ThingSpeak
// Configurações iniciais
const int DHT_PIN = 15; // Pino onde o DHT22 está conectado
const char* WIFI_NAME = "Wokwi-GUEST"; // Nome da rede Wi-Fi (simulada pelo Wokwi)
const char* WIFI_PASSWORD = ""; // Senha da rede Wi-Fi
const int myChannelNumber = 1881348; // Número do canal no ThingSpeak
const char* myApiKey = "0VT00L9VQJYCLBLI"; // Chave de escrita da API do canal
const char* server = "api.thingspeak.com"; // Endereço do servidor ThingSpeak
DHTesp dhtSensor; // Cria um objeto para o sensor DHT22
WiFiClient client; // Cria um cliente Wi-Fi para comunicação
void setup() {
Serial.begin(115200); // Inicia a comunicação serial com baud rate 115200 (velocidade do monitor serial)
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Inicializa o sensor DHT22 no pino especificado
WiFi.begin(WIFI_NAME, WIFI_PASSWORD); // Inicia a conexão com o Wi-Fi
while (WiFi.status() != WL_CONNECTED) { // Espera até que a conexão seja estabelecida
delay(1000); // Aguarda 1 segundo entre as tentativas
Serial.println("Wifi not connected"); // Exibe mensagem enquanto não estiver conectado
}
Serial.println("Wifi connected !"); // Confirma conexão Wi-Fi
Serial.println("Local IP: " + String(WiFi.localIP())); // Mostra o IP local atribuído ao ESP32
WiFi.mode(WIFI_STA); // Define o modo Wi-Fi como estação (cliente)
ThingSpeak.begin(client); // Inicializa a biblioteca ThingSpeak com o cliente Wi-Fi
}
void loop() {
// Lê a temperatura e umidade do sensor
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// Preenche os campos 1 e 2 com os dados lidos
ThingSpeak.setField(1, data.temperature); // Campo 1 = Temperatura
ThingSpeak.setField(2, data.humidity); // Campo 2 = Umidade
// Envia os dados para o canal no ThingSpeak
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
// Exibe os dados no monitor serial
Serial.println("Temp: " + String(data.temperature, 2) + "°C"); // Temperatura com 2 casas decimais
Serial.println("Humidity: " + String(data.humidity, 1) + "%"); // Umidade com 1 casa decimal
// Verifica se o envio foi bem-sucedido (HTTP 200)
if (x == 200) {
Serial.println("Data pushed successfully"); // Dados enviados com sucesso
} else {
Serial.println("Push error: " + String(x)); // Exibe código de erro se falhar
}
Serial.println("---"); // Separador visual
delay(10000); // Aguarda 10 segundos antes de repetir a leitura e envio
}