เช่น ปั้มน้ำทำงานเมือค่าความชื้นในดินน้อย ใช้ควบคู่กับแอพ Blynk น่ะครับ
#define BLYNK_TEMPLATE_ID "TMPLILF06iiT"
#define BLYNK_DEVICE_NAME "project"
#define BLYNK_FIRMWARE_VERSION "0.1.0"
#define BLYNK_PRINT Serial
//#define BLYNK_DEBUG
#define APP_DEBUG
#include "BlynkEdgent.h"
#include <DHT.h>
#define FLOW1 16
#define DHTPIN 4 // DHT22 Sensor
#define DHTTYPE DHT22 // DHT22 if useDHT22
DHT dht(DHTPIN, DHTTYPE);
float t; //วัดอุณหภูมิ
float h; //วัดความชื้น
int s1; //วัดความชื่นในดิน1
int s2; //วัดความชื่นในดิน2
int totalAllSoil;
#define Relay1 19 //pump
#define Relay2 18 //vlaue2
#define Relay3 5 //vlaue1
#define Relay4 21 //fan
#define BUTTON1 V3 //pump
#define BUTTON2 V4 //vlaue2
#define BUTTON3 V5 //vlaue1
#define BUTTON4 V6 //fan
////////////////////////////////////BUTTON////////////////////////////////////
BLYNK_WRITE(BUTTON1)
{
if (param.asInt()==1)
{
digitalWrite(Relay1, HIGH);
}
if (param.asInt()==0)
{
digitalWrite(Relay1, LOW);
}
}
BLYNK_WRITE(BUTTON2)
{
if (param.asInt()==1)
{
digitalWrite(Relay2, HIGH);
}
if (param.asInt()==0)
{
digitalWrite(Relay2, LOW);
}
}
BLYNK_WRITE(BUTTON3)
{
if (param.asInt()==1)
{
digitalWrite(Relay3, HIGH);
}
if (param.asInt()==0)
{
digitalWrite(Relay3, LOW);
}
}
BLYNK_WRITE(BUTTON4) {
if (param.asInt()==1)
{
digitalWrite(Relay4, HIGH);
}
if ((param.asInt()==0) )
{
digitalWrite(Relay4, LOW);
}
}
////////////////////////////////////BUTTON////////////////////////////////////
void setup()
{
Serial.begin(9600);
delay(100);
BlynkEdgent.begin();
pinMode(FLOW1, INPUT);
pinMode(DHTPIN, INPUT);
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
pinMode(Relay4, OUTPUT);
digitalWrite(Relay1, HIGH);
digitalWrite(Relay2, HIGH);
digitalWrite(Relay3, HIGH);
digitalWrite(Relay4, HIGH);
}
void SENSERDHT()
{
h = dht.readHumidity(); //รับค่าความชื้น
t = dht.readTemperature(); //รับค่าอุณหภูมิ
Serial.print("Humidity = "); //แสงค่าความชิ้นในอากาศในSerial
Serial.print(h);
Serial.print("% \n");
Serial.print("temperature = "); //แสดงค่าอุณหภูมิในSerial
Serial.print(t);
Serial.print("°c\n");
delay(500);
Blynk.virtualWrite(V0, t); //แสดงค่าอุณหภูมิในBlynk
Blynk.virtualWrite(V1, h); //แสดงค่าความชื้นในอากาศในBlynk
}
void SENSERSOIL()
{
s1 = map(analogRead(A6), 0, 1023, 0, 100); //แมพค่าเพื่อให้อ่านจาก 1023 เป็น 100
s2 = map(analogRead(A7), 0, 1023, 0, 100); //แมพค่าเพื่อให้อ่านจาก 1023 เป็น 100
Serial.print("Soil moisture1 = "); //แสดงค่าความชื้นในดินใน Serial
Serial.print(s1);
Serial.print("% \n");
Serial.print("Soil moisture2 = "); //แสดงค่าความชื้นในดินใน Serial
Serial.print(s2);
Serial.print("% \n");
delay(500);
Serial.print("Soil moistureALL = "); //แสดงค่าความชื้นในดินใน Serial
Serial.print(totalAllSoil);
Serial.print("% \n");
delay(500);
totalAllSoil = (s1+s2)/2;
Blynk.virtualWrite(V2, s1); //แสดงค่าความชื้นในดินในBlynk
Blynk.virtualWrite(V13, s2); //แสดงค่าความชื้นในดินในBlynk
Blynk.virtualWrite(V14, totalAllSoil); //แสดงค่าความชื้นในดินใน เอาสองค่ามาหาค่าเฉลี่ยBlynk
}
void SENSERFLOW()
{
//สูตรคำนวณหาค่าการไหลผ่าน
uint32_t pulse = pulseIn(FLOW1, HIGH);
float Hz = 1/(2*pulse*pow(10,-6));
float flow = 7.2725*(float)Hz + 3.2094;
float TotalFlow1 ;
TotalFlow1 = flow/60;
//สูตรคำนวณหาค่าการไหลผ่าน
Serial.print(Hz); //แสดงค่าความการไหลของน้ำในSerial
Serial.print("Hz\t");
Serial.print(flow/60);
Serial.println(" L/minute\t\n");
delay(500);
Blynk.virtualWrite(V7, TotalFlow1); //แสดงค่าการไหลของน้ำในBlynk
}
void loop()
{
BlynkEdgent.run();
Blynk.run();
SENSERDHT();
SENSERSOIL();
SENSERFLOW();
}ข้อความก่อนจัดรูปแบบ