#define BLYNK_TEMPLATE_ID "TMPL2hd1zvyBL"
#define BLYNK_TEMPLATE_NAME "ESP32"
#define BLYNK_AUTH_TOKEN "oAvz_vvO4EEP8xabsy9IWqZQ1rAUoB6R"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// WiFi y Blynk
char ssid[] = "Wokwi-GUEST"; // Reemplaza con tu red real si usas hardware
char pass[] = "";
// Pines y sensores
#define DHTPIN 15
#define DHTTYPE DHT22
#define YL_PIN 34 // Pin analógico del YL-69
DHT dht(DHTPIN, DHTTYPE);
// Timer para enviar datos
BlynkTimer timer;
void sendData() {
float temperatura = dht.readTemperature();
float humedadAmbiente = dht.readHumidity();
int lecturaYL69 = analogRead(YL_PIN);
// Calibración del sensor YL-69:
// 4095 = completamente seco
// ~1500 = muy húmedo
float humedadSuelo = map(lecturaYL69, 4095, 1500, 0, 100);
humedadSuelo = constrain(humedadSuelo, 0, 100); // Limita entre 0-100%
if (isnan(temperatura) || isnan(humedadAmbiente)) {
Serial.println("Error leyendo DHT22");
return;
}
Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println(" °C");
Serial.print("Humedad Ambiental: "); Serial.print(humedadAmbiente); Serial.println(" %");
Serial.print("Humedad Suelo: "); Serial.print(humedadSuelo); Serial.println(" %");
Serial.println("---");
// Enviar a Blynk
Blynk.virtualWrite(V0, humedadSuelo);
Blynk.virtualWrite(V1, temperatura);
Blynk.virtualWrite(V2, humedadAmbiente);
}
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, pass);
Serial.print("Conectando a WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi conectado");
Blynk.config(BLYNK_AUTH_TOKEN);
delay(1000);
timer.setInterval(2000L, sendData);
}
void loop() {
Blynk.run();
timer.run();
}