#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL63FrG3xNl"
#define BLYNK_TEMPLATE_NAME "fishfeeder"
#define BLYNK_AUTH_TOKEN "JiHlbRK3sNcYMmmn9k7c5J4g819pPE_q"
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
// ====== WiFi ======
char ssid[] = "WAC_PocketWIFI#2_2.4GHz";
char pass[] = "029247601";
// ====== Motor Pins ======
#define IN1 14
#define IN2 27
#define IN3 26
#define IN4 25
// ====== DHT22 ======
#define DHTPIN 4 // ต่อ DHT22 ที่ขา GPIO4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// ====== LCD ======
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27 (บางบอร์ดอาจเป็น 0x3F)
// ====== Blynk Timer ======
BlynkTimer timer;
// ====== Motor Control ======
void forward() {
Serial.println("เดินหน้า");
digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
}
void backward() {
Serial.println("ถอยหลัง");
digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH);
}
void turnLeft() {
Serial.println("เลี้ยวซ้าย");
digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW);
}
void turnRight() {
Serial.println("เลี้ยวขวา");
digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH);
}
void stopMotor() {
Serial.println("หยุด");
digitalWrite(IN1,LOW); digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW); digitalWrite(IN4,LOW);
}
// ====== อ่านค่า DHT และอัปเดต Blynk + LCD ======
void sendSensor() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("อ่านค่า DHT22 ไม่สำเร็จ!");
return;
}
Serial.print("Temp: "); Serial.print(t);
Serial.print(" °C Hum: "); Serial.print(h);
Serial.println(" %");
// ส่งค่าไปที่ Blynk
Blynk.virtualWrite(V1, t); // Temperature
Blynk.virtualWrite(V2, h); // Humidity
// แสดงบน LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: "); lcd.print(t); lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Hum : "); lcd.print(h); lcd.print("%");
}
void setup() {
Serial.begin(115200);
// Motor Pin Mode
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
stopMotor();
// LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Connecting WiFi");
// DHT
dht.begin();
// WiFi & Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// ตั้งเวลาอ่านค่า DHT ทุก 2 วินาที
timer.setInterval(2000L, sendSensor);
}
void loop() {
Blynk.run();
timer.run();
}