#include <WiFi.h>
#include "ThingSpeak.h"
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
// === Wi-Fi ===
const char* ssid = "Wokwi-GUEST";
const char* password = "";
WiFiClient client;
// === ThingSpeak ===
unsigned long tempChannelNumber =22965994 ; // <<< Substitua com seu ID
const char* tempWriteAPIKey = "42MLGHRW7BCABJ7Z"; // <<< Substitua com sua API key
unsigned long humChannelNumber = 22965994;
const char* humWriteAPIKey = "42MLGHRW7BCABJ7Z";
// === DHT22 ===
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// === LCD ===
LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C, 16x2
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
WiFi.begin(ssid, password);
Serial.print("Conectando ao Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi conectado!");
ThingSpeak.begin(client);
dht.begin();
}
void loop() {
float temperatura = dht.readTemperature();
float umidade = dht.readHumidity();
if (isnan(temperatura) || isnan(umidade)) {
Serial.println("Erro ao ler o sensor DHT!");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Erro leitura");
delay(2000);
return;
}
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" °C | Umidade: ");
Serial.print(umidade);
Serial.println(" %");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Umid: ");
lcd.print(umidade);
lcd.print(" %");
int x1 = ThingSpeak.writeField(tempChannelNumber, 1, temperatura, tempWriteAPIKey);
if (x1 == 200) {
Serial.println("Temperatura enviada com sucesso!");
} else {
Serial.println("Erro ao enviar temperatura. Código HTTP: " + String(x1));
}
int x2 = ThingSpeak.writeField(humChannelNumber, 1, umidade, humWriteAPIKey);
if (x2 == 200) {
Serial.println("Umidade enviada com sucesso!");
} else {
Serial.println("Erro ao enviar umidade. Código HTTP: " + String(x2));
}
delay(20000);
}