#include <WiFi.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#define TFT_DC 2
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define DHT_PIN 22
#define LDR 34
const char* WIFI_NOME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int meuNumeroCanal = 2706612;
const char* minhaApiKey = "OTQWL0JF5W7RPPKT";
const char* servidor = "api.thingspeak.com";
DHTesp dhtSensor;
WiFiClient client;
void setup() {
Serial.begin(115200);
Serial.println("Iniciando ...");
tft.begin();
tft.setRotation(0);
tft.fillScreen(ILI9341_BLACK);
pinMode(LDR, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
WiFi.begin(WIFI_NOME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi nao conectado!");
tft.setTextSize(2);
tft.setCursor(10, 20);
tft.setTextColor(ILI9341_WHITE);
tft.println("WiFi nao conectado!");
delay(500);
}
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.setCursor(20, 60);
tft.println(String(WiFi.localIP()));
delay(500);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
analogReadResolution(10);
tft.fillScreen(ILI9341_BLACK);
}
void loop() {
int luminosidade = analogRead(LDR);
int L = map(luminosidade, 1023, 0, 0, 100); // Mapeia de 0-1023 para 0-100%
TempAndHumidity dados = dhtSensor.getTempAndHumidity();
ThingSpeak.setField(1,dados.temperature);
ThingSpeak.setField(2,dados.humidity);
ThingSpeak.setField(3,L);
int x = ThingSpeak.writeFields(meuNumeroCanal,minhaApiKey);
Serial.println("Temperatura: " + String(dados.temperature, 2) + "°C");
Serial.println("Umidade: " + String(dados.humidity, 1) + "%");
Serial.println("Lumunosidade: " + String(L) + "%");
tft.setTextColor(ILI9341_WHITE);
tft.setCursor(10, 80);
tft.print("Temperatura: ");
tft.print(String(dados.temperature, 2));
tft.print("C");
tft.setCursor(10, 120);
tft.print("Humidade: ");
tft.print(String(dados.humidity, 1));
tft.print("%");
tft.setCursor(10, 160);
tft.print("Luminosidade: ");
tft.print(String(L));
tft.print("%");
if(x == 200){
Serial.println("Dados enviados com sucesso!");
tft.setTextColor(ILI9341_GREEN);
tft.setCursor(10, 20);
tft.println("Dados enviados com sucesso!");
}else{
Serial.println("Erro de envio " + String(x));
tft.setTextColor(ILI9341_RED);
tft.setCursor(10, 20);
tft.print("Erro de envio: ");
tft.println(String(x));
}
Serial.println("---");
delay(10000);
tft.fillScreen(ILI9341_BLACK);
}