#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <WiFiClient.h>
// ---------- WiFi ----------
char ssid[] = "wokwi-GUEST";
char pass[] = "";
const int DHT_PIN = 13;
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
// ---------- Blynk ----------
#define BLYNK_TEMPLATE_ID "TMPL2HrzEHiDL"
#define BLYNK_TEMPLATE_NAME "Construcción de la solución de telemetría"
#define BLYNK_AUTH_TOKEN "TdOeead4s7nNjg1lB70syDD2FQML6n3i"
#include <BlynkSimpleEsp32.h>
//Timer
BlynkTimer timer;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Serial.println("PRODUCCIÓN DE PLANTAS AROMÁTICAS");
Serial.println("Temperatura (C) , Humedad (%)");
lcd.setCursor(0, 0);
lcd.print("Temperatura: ");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
// wifi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500); Serial.print(".");
}
Serial.println("\nWiFi connectado");
//Blynk sin bloqueo
Blynk.config(BLYNK_AUTH_TOKEN);
Blynk.connect();
timer.setInterval(2000L, enviarDatos);
}
void loop() {
Blynk.run();
timer.run(); }
void enviarDatos() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
lcd.setCursor(6, 0);
lcd.print(String(data.temperature, 2) + "C");
lcd.setCursor(5,1);
lcd.print(String(data.humidity, 1) + "%");
delay(2000); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate) if (isnan(data.temperature) || isnan(data.humidity)) { Serial.println("Error leyendo DHT22"); return; Serial.print("Temperatura: "); Serial.print(data.temperature); Serial.print(" °C | hum: "); Serial.print(data.humidity); Serial.println("%"); } //Blink Blynk.virtualWrite(V0, data.temperature); Blynk.virtualWrite(V1, data.humidity); }"
if (isnan(data.temperature) || isnan(data.humidity)) {
Serial.println("Error leyendo DHT22");
return;
}
Serial.print("Temperatura: ");
Serial.print(data.temperature);
Serial.print(" °C | hum: ");
Serial.print(data.humidity);
Serial.println("%");
//Blink
Blynk.virtualWrite(V0, data.temperature);
Blynk.virtualWrite(V1, data.humidity);
}