//#include<DNSServer.h>
//#include<WiFiManager.h>
//#define BLYNK_PRINT Serial
//#include "DHT.h"
#include "DHTesp.h"
//#include <BlynkSimpleEsp32.h>
//char auth[] = "qV_HugLa0DY7Nk0lQNfSJ8DpGHpt0gos"; //ถ้ามีเซิฟเวอร์ของตัวเองให้ปิดบรรทัดนี้ และเปิดบรรทัดบน
//และนำ Auth Token ได้จากอีเมลของเราที่ Blynk ส่งไปให้ไปใส่บรรทัดบน
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
//กำหนดขาและชนิด DHT
//#define DHTPIN 32 //ขา D32
//#define DHTTYPE DHT11 // DHT 11
//DHT dht(DHTPIN, DHTTYPE);
DHTesp dhtSensor;
const int DHT_PIN = 32;
//กำหนดขา relay
#define relay1 27 // หัวหยดน้ำ D27
#define relay2 26 // หัวพ่นหมอก D26
#define relay3 25 // หลอดไฟ D25
#define relay4 33 // พัดลม D33
//int Reset_wifi = 23; // Pin Reset Wifi ให้ต่อขา D23 เข้ากับ GND ของบอร์ด
int Light = A10; // เสียบ Pin D4
int val = 0;
int soil = 0;
int SoilSensor = A12; // เสียบPin D2
byte auto_relay = 0;
float temp_auto=0, humi_auto=0, Light_auto=0, Soil_auto=0;
void setup() {
//ส่วน WifiManager-----------------------------------
/*pinMode (Reset_wifi, INPUT_PULLUP);
WiFiManager wifiManager;
for (int i = 5; i>0; i--) {
delay(1000);
}
if(digitalRead (Reset_wifi) == LOW){
Serial.println("Reset wifi");
wifiManager.resetSettings();
}
wifiManager.autoConnect ("Smart Farm");*/
//----------------------------------------------------
Serial.begin (9600);
//Blynk.config(auth,"blynk.jpnet.co.th",8080);
//Blynk.begin(auth, ssid, pass,"blynk.jpnet.co.th",8080);
// Blynk.config(auth,8080);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
//dht.begin();
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
digitalWrite(relay3, HIGH);
digitalWrite(relay4, HIGH);
//Blynk.virtualWrite(V0,LOW);
auto_relay = 0;
}
void loop()
{
//ส่วนแสดงค่าแสงจากเซ็นเซอร์ LDR ----------------------------------------
val = analogRead(Light);
float LevelLight = (val * (100.0 / 4095.0))-100; //มืดสุดเต็ม 100%
float LevelLight1 = LevelLight*(-1);
Serial.print("LDR Value = ");
Serial.println(LevelLight1);
//Blynk.virtualWrite(V9, LevelLight1);
//-------------------------------------------------------------------
//ส่วนแสดงค่าความชื้นในดินจาก SoilSensor ---------------------------------
soil = analogRead(SoilSensor);
float LevelSoil = (soil * (100.0 / 4095.0))-100;
float LevelSoil1 = LevelSoil*(-1);
Serial.print("Soil Value = ");
Serial.println(LevelSoil1);
//Blynk.virtualWrite(V10, LevelSoil1);
//-------------------------------------------------------------------
//float h = dht.readHumidity(); //รับค่าความชื้นในอากาศ
//float t = dht.readTemperature(); //รับค่าอุณหภูมิ
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float h = (data.humidity); //รับค่าความชื้นในอากาศ
float t = (data.temperature); //รับค่าอุณหภูมิ
Serial.print("Temperature = ");
Serial.println(t);
Serial.print("Humidity = ");
Serial.println(h);
//Blynk.virtualWrite(V11, String(t,1)); //ส่งค่าอุณหถูมิไปยัง Blynk
//Blynk.virtualWrite(V12, String(h,1)); //ส่งค่าความชื้นในอากาศไปยัง Blynk
delay(1000);
if (auto_relay == 1) {
//Blynk.virtualWrite(V1,LOW);
//Blynk.virtualWrite(V2,LOW);
//Blynk.virtualWrite(V3,LOW);
//Blynk.virtualWrite(V4,LOW);
if (t > temp_auto) {
digitalWrite(relay4, LOW); //โหมด auto หากอุณหภูมิมากกว่าค่าที่ตั้งไว้ relay ch4 จะทำงาน
//led4.on();
}
else {
digitalWrite(relay4, HIGH); //โหมด auto หากอุณหภูมิน้อยกว่าค่าที่ตั้งไว้ relay ch4 จะไม่ทำงาน
//led4.off();
}
if (h < humi_auto) {
digitalWrite(relay2, LOW); //โหมด auto หากความชื้นมากกว่าค่าที่ตั้งไว้ relay ch2 จะทำงาน
//led2.on();
}
else {
digitalWrite(relay2, HIGH); //โหมด auto หากความชื้นน้อยกว่าค่าที่ตั้งไว้ relay ch2 จะไม่ทำงาน
//led2.off();
}
if (LevelLight1 < Light_auto ) {
digitalWrite(relay3, LOW); //โหมด auto หากค่าแสงน้อยกว่าค่าที่ตั้งไว้ relay ch3 จะทำงาน
//led3.on();
}
else {
digitalWrite(relay3, HIGH); //โหมด auto หากค่าแสงมากกว่าค่าที่ตั้งไว้ relay ch3 จะไม่ทำงาน
//led3.off();
}
if (LevelSoil1 < Soil_auto ) {
digitalWrite(relay1, LOW); //โหมด auto หากความชื้นในดินน้อยกว่าค่าที่ตั้งไว้ relay ch1 จะทำงาน
//led1.on();
}
else {
digitalWrite(relay1, HIGH); //โหมด auto หากความชื้นในดินมากกว่าค่าที่ตั้งไว้ relay ch1 จะทำงาน
//led1.off();
}
}
//Blynk.run();
// timer.run();
}