ความจริงโปรแกรมหนูมีฟังก์ชันหลายการทำงานค่ะ แต่พอดีตอนนี้ทำตรงส่วนนี้อยู่ แต่ลองโค้ดอื่นก็เป็นเหมือนกันกัน ._.
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <SimpleTimer.h>
#include <time.h>
//โหลดไลบารี่ DHT22
#include <SimpleDHT.h>
char auth[] = "YrXN2El3fb2GNR4Gxks7bSxUHgnylP2d";
char ssid[] = "Zodiannm";
char pass[] = "anm6024418050";
char server[] = "oasiskit.com";
int port = 8080;
int DHTSENSOR = 15; //GPIO15 (ADC2_CH3)
byte temperature = 0;
byte humidity = 0;
//ระบุรุ่นเซ็นเซอร์รุ่น
SimpleDHT22 dht22(15);
BlynkTimer timer;
//กำหนดให้ขาควบคุม Relay ใช้ขา GPIO
#define Relay6Pin 19 // โซลินอยด์น้ำ
#define Relay7Pin 18 // ปั๊มน้ำ
#define Relay8Pin 23 // พัดลมระบายอากาศ
#define Relay9Pin 22 // พัดลมฮีตเตอร์
#define Relay10Pin 5 //ฮีตเตอร์
void sendSensor() {
//กำหนดตัวแปรเก็บค่าอุณหภูมิ
byte temperature = 0;
//กำหนดตัวแปรเก็บค่าความชื้นสัมสัทธ์
byte humidity = 0;
//อ่านค่าจากเซ็นเซอร์
dht22.read(DHTSENSOR, &temperature, &humidity, NULL);
while (temperature == 0) {
//อ่านค่าจากเซ็นเซอร์
dht22.read(DHTSENSOR, &temperature, &humidity, NULL);
Serial.println("DHT22 get failed");
delay(1500);
}
//ส่งค่า humidity V13 ไปยัง blynk server
Blynk.virtualWrite(V13, humidity);
//ส่งค่า temperature V12 ไปยัง blynk server
Blynk.virtualWrite(V12, temperature);
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("% | ");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println("C");
}
int tempmin = 0;
int tempmax = 0;
BLYNK_WRITE(V17) //Numeric_input_tempcool
{
tempmin = param.asInt();
dht22.read(DHTSENSOR, &temperature, &humidity, NULL);
if(temperature >= tempmin)
{
digitalWrite(Relay6Pin, LOW);
digitalWrite(Relay7Pin, LOW);
digitalWrite(Relay8Pin, LOW);
}
else
{
digitalWrite(Relay6Pin, HIGH);
digitalWrite(Relay7Pin, HIGH);
digitalWrite(Relay8Pin, HIGH);
}
}
BLYNK_WRITE(V18) //Numeric_input_temphot
{
tempmax = param.asInt();
dht22.read(DHTSENSOR, &temperature, &humidity, NULL);
if(temperature <= tempmax)
{
digitalWrite(Relay9Pin, LOW);
digitalWrite(Relay10Pin, LOW);
}
else
{
digitalWrite(Relay9Pin, HIGH);
digitalWrite(Relay10Pin, HIGH);
}
}
void setup() {
Serial.begin(115200);
Serial.println("กำลังเชื่อมต่อไปที่ Blynk Server");
//เริ่มการเชื่อมต่อ Blynk Server
//Blynk.begin(auth, ssid, pass, "oasiskit.com", 8080);
//ตั้งเวลาส่งข้อมูลให้ Blynk Server ทุกๆ 1 วินาที
timer.setInterval(5000L, sendSensor);
Serial.println("กำลังเชื่อมต่อไปที่ Blynk Server");
WiFi.begin(ssid, pass); //เชื่อมต่อ WiFi
Blynk.config(auth, "oasiskit.com", 8080); //กำหนด Token key , ชื่อ Server และ port
Blynk.connect(); //เชื่อมต่อไปยัง Blynk
pinMode(Relay6Pin, OUTPUT);
pinMode(Relay7Pin, OUTPUT);
pinMode(Relay8Pin, OUTPUT);
pinMode(Relay9Pin, OUTPUT);
pinMode(Relay10Pin, OUTPUT);
digitalWrite(Relay6Pin,HIGH);// ให้รีเลย์ไม่ทำงานก่อนเสมอ
digitalWrite(Relay7Pin,HIGH);// ให้รีเลย์ไม่ทำงานก่อนเสมอ
digitalWrite(Relay8Pin,HIGH);// ให้รีเลย์ไม่ทำงานก่อนเสมอ
digitalWrite(Relay9Pin,HIGH);// ให้รีเลย์ไม่ทำงานก่อนเสมอ
digitalWrite(Relay10Pin,HIGH);// ให้รีเลย์ไม่ทำงานก่อนเสมอ
}
void loop() {
Blynk.run();
timer.run();
}