#define BLYNK_TEMPLATE_ID "TMPL6YKsOwq-M"
#define BLYNK_TEMPLATE_NAME "at271"
#define BLYNK_AUTH_TOKEN "a9P5W1XPiRWvwQIwjBF9lcZife90nuaa"
#define DHTTYPE DHT22 // DHT sensor type
#define BLYNK_PRINT Serial // กำหนดการพิมพ์ข้อความของ Blynk ให้ใช้กับ Serial
//**********BLYNK, library**************************************
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <WiFiClient.h>
//***********DHT22, library************************************
#include <DHTesp.h> // เรียกใช้งานไลบรารี่สำหรับเซ็นเซอร์อุณหภูมิและความชื้น
DHTesp dht;
const int DHT22_PIN = 4;
//*********Soil Sensor, library*******************************
#include <Sensesiot.h>
const char key[] = "Tot6AwAyPmNNNmXKOPnR"; // แทนด้วยคีย์ของอุปกรณ์ของคุณ
const char wifissid[] = "Wokwi-GUEST"; // แทนด้วยชื่อ WiFi SSID ของคุณ
const char wifipw[] = ""; // แทนด้วยรหัสผ่าน WiFi ของคุณ
SensesiotClient sensesProtocol(key);
// กำหนดขาของเซนเซอร์ความชื้นในดิน
const int soilMoisturePin = A0;
//**********ESP32Servo, library*******************************
#include <ESP32Servo.h>
Servo servo;
servo.attach(19); // servo pin 19
//**********BLYNK, ssid, pass, token***************************
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
dht.setup(DHT22_PIN, DHTesp::DHT22);
int value0;
byte LED_R = 21;
void setup()
{
Serial.begin(115200);
sensesProtocol.begin(wifissid, wifipw);
sensesProtocol.waitUntilReady();
Serial.println(F("Connected"));
Blynk.begin(auth, ssid, pass); // เริ่มใช้งาน Blynk App
BlynkTimer timer; // ประกาศออบเจ็กต์ของคลาส BlynkTimer
timer.setInterval(1000, sendSensor); //ส่งค่าเซ็นเซอร์ ทุก 1 วินาที
}
void sendSensor()
{
TempAndHumidity data = dht.getTempAndHumidity();
Serial.print("% Temperature: ");
Serial.print(data.temperature);
Serial.println("C ");
Serial.print("% Humidity: ");
Serial.print(data.humidity);
Serial.println("% ");
Blynk.virtualWrite(V5, data.temperature); //temp virtual pin 5
Blynk.virtualWrite(V6, data.humidity); //humid virtual pin 6
}
BLYNK_WRITE(V0)
{
servo.write(param.asInt());
}
BLYNK_WRITE(V1)
{
servo.write(0);
}
BLYNK_WRITE(V2)
{
servo.write(180);
}
BLYNK_WRITE(V3)
{
value0 = param.asInt();
digitalWrite(LED_R, value0);
Blynk.virtualWrite(V3, value0);
}
void loop()
{
if (!sensesProtocol.ready())
{
Serial.println(F("Disconnected"));
sensesProtocol.begin(wifissid, wifipw);
sensesProtocol.waitUntilReady();
Serial.println(F("Connected"));
}
sensesProtocol.loop();
int soilMoistureValue = analogRead(soilMoisturePin);
int mappedValue = map(soilMoistureValue, 0, 1023, 0, 100); // แปลงค่าอินพุตจากเซนเซอร์ให้อยู่ในช่วง 0-100
sensesProtocol.setData(1, mappedValue);
Serial.println(F("Send Data"));
Blynk.run(); // เรียกใช้งานการทำงานของ Blynk
timer.run(); // รันการทำงานของ SimpleTimer
delay(2000);
}