#define BLYNK_TEMPLATE_ID "TMPL60erwpwW0"
#define BLYNK_TEMPLATE_NAME "Hệ thống tưới tiêu tự động"
#define BLYNK_AUTH_TOKEN "j0TK2sgZ4Kd5OIqESttC3sW_rjbG8T5K"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <string.h>
#include <WiFi.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHT_TYPE DHT22
#define DHT_PIN 14
DHT dht(DHT_PIN,DHT_TYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define LED 27
WidgetLED LED_ON_APP(V2);
int button;
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass); // mã token, name wifi, password
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED){
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
lcd.init();
lcd.setCursor(4, 1);
lcd.print("Saving house");
pinMode(LED, OUTPUT);
delay(5000);
}
BLYNK_WRITE(V3)
{
button = param.asInt();
if (button == 1)
{
digitalWrite(LED, HIGH);
LED_ON_APP.on();
}
else
{
digitalWrite(LED, LOW);
LED_ON_APP.off();
}
}
void loop() {
lcd.clear();
Blynk.run();
float t = dht.readTemperature();
float h = dht.readHumidity();
if (isnan(h) || isnan(t))
{
delay(500);
Serial.println("Failed to read from DHT sensor!");
return;
}
Blynk.virtualWrite(V0,t);
Blynk.virtualWrite(V1,h);
Blynk.virtualWrite(V3,button);
lcd.setCursor(0, 0);
lcd.print("Temp: " + (String)t + " C");
lcd.setCursor(0, 1);
lcd.print("Humidity: " + (String)h + " %");
Serial.print("\n");
Serial.print("Temperature " + (String)t + " độ C");
Serial.print("\t");
Serial.print("Humidity " + (String)h + "%");
delay(3000);
}