#include <WiFi.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
const int DHT_PIN = 22;
const char* WIFI_NOME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int meuNumeroCanal = 2706612;
const char* minhaApiKey = "OTQWL0JF5W7RPPKT";
DHTesp dhtSensor;
WiFiClient client;
#define TFT_DC 2
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define LDR 34
void setup() {
Serial.begin(115200);
pinMode(LDR, INPUT);
// Configurações do display
tft.setRotation(0);
tft.fillScreen(ILI9341_BLACK);
// Inicializa o sensor DHT
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// Conexão WiFi
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_NOME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi não conectado!");
tft.setTextSize(2);
tft.setCursor(20, 20);
tft.setTextColor(ILI9341_WHITE);
tft.print("WiFi não conectado!");
}
Serial.println("WiFi conectado!");
tft.fillScreen(ILI9341_BLACK);
tft.setTextSize(2);
tft.setCursor(20, 20);
tft.setTextColor(ILI9341_WHITE);
tft.print("WiFi conectado!");
Serial.println("IP Local: " + String(WiFi.localIP()));
tft.setCursor(20, 40);
tft.println("IP Local: ");
tft.println(String(WiFi.localIP()));
ThingSpeak.begin(client);
analogReadResolution(10); // Ajusta a resolução do ADC
}
void loop() {
// Leitura dos dados do sensor
TempAndHumidity dados = dhtSensor.getTempAndHumidity();
// Lê luminosidade
int L = analogRead(LDR);
int luminosidade = map(L, 0, 1023, 0, 100); // Mapeia de 0-1023 para 0-100%
// Envia os dados para o ThingSpeak
ThingSpeak.setField(1, dados.temperature);
ThingSpeak.setField(2, dados.humidity);
ThingSpeak.setField(3, luminosidade);
int x = ThingSpeak.writeFields(meuNumeroCanal, minhaApiKey);
// Exibe os dados no console
Serial.print("Temperatura: ");
Serial.println(dados.temperature);
Serial.print("Umidade: ");
Serial.println(dados.humidity);
Serial.print("Luminosidade: ");
Serial.println(luminosidade);
// Verifica o status do envio
if (x == 200) {
Serial.println("Dados enviados com sucesso!");
tft.setTextColor(ILI9341_GREEN);
tft.setCursor(10, 5);
tft.print("Dados enviados com sucesso!");
} else {
Serial.print("Erro de envio ");
Serial.println(String(x));
tft.setTextColor(ILI9341_RED);
tft.setCursor(10, 10);
tft.print("Erro de envio ");
tft.print(String(x));
}
Serial.println("---");
delay(10000); // Aumentar o intervalo para evitar spam no ThingSpeak
}