#define BLYNK_TEMPLATE_ID "TMPL6Dfh04lhB"
#define BLYNK_TEMPLATE_NAME "IOT LAB2"
#define BLYNK_AUTH_TOKEN "lEOfPl0XJZHSg8mR3LDTYeTRPkdciaDY"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define SOILMOISTURE_PIN 35 //chân độ ẩm đất
#define RELAY_PIN 23 //relay pin
#define BUTTON 14
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
char auth[] = BLYNK_AUTH_TOKEN;
int mode=0;
int nd_s=20,A;
float t,h;
#define LED 4
int tt_dc;
BLYNK_WRITE(V2){
int ttdk = param.asInt();
if(ttdk==0)
{
digitalWrite(RELAY_PIN, LOW);
tt_dc=0;
A=0;
}
else if(ttdk==1)
{
digitalWrite(RELAY_PIN, HIGH);
tt_dc=1;
A=0;
}
}
BLYNK_WRITE(V3){
int ttdk_A = param.asInt();
if(ttdk_A==1)
{
A=1;
}
}
BLYNK_WRITE(V1){
nd_s = param.asInt();
}
void sendSensor()
{
t = dht.readTemperature();
int hu = analogRead(SOILMOISTURE_PIN);
h = map(hu, 0, 4095, 100, 0);
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// ghi giá trị h lên v1 và t lên v0
Blynk.virtualWrite(V1, t);
Blynk.virtualWrite(V0, h);
}
void setup()
{
// Debug console
Serial.begin(115200);
delay(1000);
Blynk.begin(auth, ssid, pass);
pinMode(RELAY_PIN, OUTPUT);
dht.begin();
// Setup a function to be called every second
timer.setInterval(1000L, sendSensor);
}
void loop()
{
Blynk.run();
Blynk.virtualWrite(V4, tt_dc);
timer.run();
if(A==1)
{
if(t<nd_s)
{
digitalWrite(RELAY_PIN, LOW);
tt_dc=0;
}
else
{
digitalWrite(RELAY_PIN, HIGH);
tt_dc=1;
}
}
}