Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <TridentTD_LineNotify.h>
- #define BLYNK_PRINT Serial
- #include <ESP8266WiFi.h>
- #include <BlynkSimpleEsp8266.h>
- #include <DHT.h>
- #include <Wire.h>
- #define LINE_TOKEN "l0hbWupW9KXTU1H5BdFCRUIIyLR5c9qAr7cbwZsf1wm" //// //Token ของแอป Line
- char auth[] = "f1b0e635363d40749291a186c144da58"; //Token ของแอป blynk
- char ssid[] = "BB"; /// User WiFI
- char pass[] = "bbbbbbbbbb"; /// Password WiFi
- /////////////////////// ขาที่ต้องต่อใช้งาน //////////////////////
- #define Switch_check_Home D1 //ต่อสวิทให้ราวตากผ้าวิ่งมาชนเพื่อเช็คราวตากผ้าว่าอยู่ด้านในตู้แล้ว
- #define Fan D2 //ต่อรีเลย์ 2 ควบคุมพัดลม
- #define LED D4 //ต่อกับหลอดไฟ
- #define Sensor_1 D5 //ต่อกับ DHT22 ตัวที่ 1
- #define Sensor_2 D6 //ต่อกับ DHT22 ตัวที่ 2
- #define Relay_MOVE D7 //ต่อรีเลย์ 1 ควบคุมมอเตอร์เดินหน้าถอยหลัง
- #define Relay_ON D8 //ต่อรีเลย์ 2 ควบคุมการเปิดปิดมอเตอร์
- #define Sensor_Rain A0 //ต่อกับตัวรับค่าน้ำฝน
- ////////////////////////////////////////////////////////////
- int Sensor_Rain_Value = 0; //เก็บค่าน้ำฝน
- int Humidity_Set = 0; // เซ็ทค่าความชื้น
- String Status_In_Out = ""; // เก็บสถานะราวตากผ้า
- int Status_Line1 = 0; // เก็บสถานะ Line
- int Status_Line2 = 0; // เก็บสถานะ Line
- int Status_Line3 = 0; // เก็บสถานะ Line
- int Status_Line_Alert = 0; // เก็บสถานะ Line แจ้งเตือน
- int Status_Mode = 0; // เก็บสถานะ Mode
- int Status_Fan = 0; // เก็บสถานะพัดลม
- int Manaul_IN = 0; // เก็บสถานะ Manaul_IN
- int Manaul_OUT = 0; // เก็บสถานะ Manaul_OUT
- int Rain_Max = 0; // เก็บสถานะเซทค่าน้ำฝนมากสุด
- int Rain_Min = 0; // เก็บสถานะเซทค่าน้ำฝนน้อยสุด
- int Timer_Motor = 0; // เก็บสถานะเซทค่าเวลามอเตอร์
- int Roww = 0; // เก็บสถานะราว
- BlynkTimer SetTimer;
- #define DHTTYPE DHT11 // ชนิด Sensor วัดอุณหภูมิ
- DHT dht1(Sensor_1, DHTTYPE);
- DHT dht2(Sensor_2, DHTTYPE);
- BLYNK_CONNECTED() {
- Blynk.syncAll();
- }
- BLYNK_WRITE(V18)
- {
- int value = param.asInt();
- Rain_Min = value;
- }
- BLYNK_WRITE(V19)
- {
- int value = param.asInt();
- Rain_Max = value;
- }
- BLYNK_WRITE(V17)
- {
- int value = param.asInt();
- Humidity_Set = value;
- }
- BLYNK_WRITE(V20)
- {
- int value = param.asInt();
- Timer_Motor = value * 1000;
- }
- BLYNK_WRITE(V12)
- {
- int value = param.asInt();
- Status_Line_Alert = value;
- }
- BLYNK_WRITE(V13)
- {
- int value = param.asInt();
- Status_Mode = value;
- }
- BLYNK_WRITE(V14)
- {
- int value = param.asInt(); // manaul สั่งราวผ้าออกข้างนอก
- if (Status_Mode == 0 && value == 1) {
- Manaul_OUT = 1;
- } else {
- Manaul_OUT = 0;
- Blynk.virtualWrite(V14, LOW); // ส่งเข้าแอป blynk
- }
- }
- BLYNK_WRITE(V15)
- {
- int value = param.asInt(); // // manaul สั่งราวผ้าเข้าข้างใน
- if (Status_Mode == 0 && value == 1) {
- Manaul_IN = 1;
- } else {
- Manaul_IN = 0;
- Blynk.virtualWrite(V15, LOW); // ส่งเข้าแอป blynk
- }
- }
- BLYNK_WRITE(V16)
- {
- int value = param.asInt(); // // manaul พัดลม
- if (Status_Mode == 0 && value == 1) {
- digitalWrite(Fan, HIGH); /////// ให้พัดลมทำงาน
- Blynk.virtualWrite(V16, HIGH); // ส่งเข้าแอป blynk
- Status_Fan = 1;
- } else if (Status_Mode == 0 && value == 1) {
- digitalWrite(Fan, LOW); //////// ให้พัดลมหยุดทำงาน
- Blynk.virtualWrite(V16, LOW); // ส่งเข้าแอป blynk
- Status_Fan = 0;
- } else if (Status_Mode == 1 && Status_Fan == 1) {
- Blynk.virtualWrite(V16, HIGH); // ส่งเข้าแอป blynk
- } else if (Status_Mode == 1 && Status_Fan == 0) {
- Blynk.virtualWrite(V16, LOW); // ส่งเข้าแอป blynk
- }
- }
- void setup() {
- Serial.begin(9600);
- pinMode(Switch_check_Home , INPUT_PULLUP);
- pinMode(Manaul_IN , INPUT);
- pinMode(Manaul_OUT , INPUT);
- pinMode(Relay_ON , OUTPUT);
- pinMode(Relay_MOVE , OUTPUT);
- pinMode(Fan , OUTPUT);
- pinMode(LED , OUTPUT);
- dht1.begin();
- dht2.begin();
- Blynk.begin(auth, ssid, pass, "bstick-board.com", 8080);
- LINE.setToken(LINE_TOKEN);
- SetTimer.setInterval(3000, Check_Data); ///////////////// สั่งให้เช็คทุกๆ 3 วินาที
- Blynk.virtualWrite(V11, 0);
- digitalWrite(LED, LOW);
- }
- float h1 = 0;
- float h2 = 0;
- float t1 = 0;
- float t2 = 0;
- float Humidity_Total = 0;
- float Temperature_Total = 0;
- long rssi;
- void loop()
- {
- Blynk.run();
- SetTimer.run();
- }
- void Check_Data()
- {
- Sensor_Rain_Value = analogRead(Sensor_Rain); // อ่านค่าน้ำฝน
- int check_Home = digitalRead(Switch_check_Home); // อ่านค่าวิทตช์
- if (check_Home == LOW) { //ถ้าสวิทถูกด แสดงว่าราวอยู่ด้านใน
- Roww = 1;
- Blynk.virtualWrite(V21, HIGH); // ส่งเข้าแอป blynk
- } else { //ถ้าไม่ใช่แสดงว่าอยู่ด้านนอก
- Roww = 0;
- Blynk.virtualWrite(V21, LOW); // ส่งเข้าแอป blynk
- }
- //////////////// ค่าอุณภูมิความชื้น ////////////////
- h1 = dht1.readHumidity();
- h2 = dht1.readHumidity();
- Humidity_Total = h1 + h2;
- Humidity_Total = Humidity_Total / 2;
- t1 = dht1.readTemperature();
- t2 = dht1.readTemperature();
- Temperature_Total = t1 + t2;
- Temperature_Total = Temperature_Total / 2;
- /////////////////////////////////
- //////////////// ค่าอุณภูมิความชื้นส่งเข้าแอป blynk ////////////////
- Blynk.virtualWrite(V1, t1); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V2, h1); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V3, t2); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V4, h2); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V5, Temperature_Total); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V6, Humidity_Total); // ส่งเข้าแอป blynk
- /////////////////////////////////
- ///////////// ค่าไวไฟ ////////////////////
- rssi = WiFi.RSSI();
- if (rssi < -99)
- {
- rssi = -99;
- }
- Blynk.virtualWrite(V7, rssi + 100); // ส่งเข้าแอป blynk
- //////////////////////////// เอาไว้ดูค่าต่างๆ ทาง Serial monitor//////////////////////////
- Serial.println("Sensor_Rain_Value=" + String(Sensor_Rain_Value));
- Serial.println("h1=" + String(h1));
- Serial.println("h2=" + String(h2));
- Serial.println("Humidity_Total=" + String(Humidity_Total));
- Serial.println("Status_Line_Alert=" + String(Status_Line_Alert));
- Serial.println("Status_Line1=" + String(Status_Line1));
- Serial.println("Status_Line2=" + String(Status_Line2));
- Serial.println("Status_Line3=" + String(Status_Line3));
- Serial.println("Status_Mode=" + String(Status_Mode));
- Serial.println("Manaul_OUT=" + String(Manaul_OUT));
- Serial.println("Manaul_IN=" + String(Manaul_IN));
- Serial.println("Status_In_Out=" + String(Status_In_Out));
- Serial.println("Status_Fan=" + String(Status_Fan));
- Serial.println("Humidity_Set=" + String(Humidity_Set));
- Serial.println("Rain_Max=" + String(Rain_Max));
- Serial.println("Rain_Min=" + String(Rain_Min));
- Serial.println("Timer_Motor=" + String(Timer_Motor));
- Serial.println("//////////////////////////////////////////////");
- //////////////////////////////////////////////////////
- if (Status_Mode == 1) {
- if (Sensor_Rain_Value > Rain_Max) { //////// ถ้าฝนตก
- if (check_Home == HIGH) { ////// ถ้าราวอยู่ข้างนอกให้เก็บเข้าข้างใน
- digitalWrite(Relay_MOVE, HIGH); // หมุนถอยหลัง
- digitalWrite(Relay_ON, HIGH); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าเก็บเข้าข้างใน
- Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V15, HIGH); // ส่งเข้าแอป blynk
- if (Status_Line1 != 1 && Status_Line_Alert == 1) {
- LINE.notifySticker(2, 507);
- LINE.notify("ตอนนี้ฝนตกกำลังเก็บราวผ้าเข้าด้านใน");
- Status_Line1 = 1;
- Status_In_Out = "OUT";
- digitalWrite(LED, LOW); //หลอดไฟดับ
- }
- } else if ( check_Home == LOW && Status_In_Out == "OUT") { /////////////////////////////// ถ้าราวถึงข้างในแล้ว
- digitalWrite(Relay_MOVE, LOW); /// ให้มอเตอร์หยุด
- digitalWrite(Relay_ON, LOW); ///// สั่งมอเตอร์หยุดทำงาน
- Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V15, LOW); // ส่งเข้าแอป blynk
- Status_In_Out = "IN"; //////////// เก็บสถานะราวตากผ้า
- if (Status_Line1 != 2 && Status_Line_Alert == 1) {
- Status_Line1 = 2;
- LINE.notify("ราวผ้าถึงด้านในแล้ว");
- digitalWrite(LED, LOW); //หลอดไฟดับ
- }
- }
- if (Humidity_Total > Humidity_Set) { //////////// แล้วเช็คความชื้นว่าเกินค่าที่กำหนดไหม ถ้าเกินค่าที่กำหนด
- if (Status_Line2 != 3 && Status_Line_Alert == 1) {
- LINE.notifySticker(2, 27);
- LINE.notify("ความชื้นว่าเกินค่าที่กำหนด สั่งพัดลมทำงาน");
- Status_Line2 = 3;
- digitalWrite(LED, LOW); //หลอดไฟดับ
- }
- digitalWrite(Fan, HIGH); /////// ให้พัดลมทำงาน
- Blynk.virtualWrite(V16, HIGH); // ส่งเข้าแอป blynk
- Status_Fan = 1;
- }
- else { ///////////////////////////// ถ้าค่าไม่เกินค่าที่กำหนด
- digitalWrite(Fan, LOW); //////// ให้พัดลมหยุดทำงาน
- Blynk.virtualWrite(V16, LOW); // ส่งเข้าแอป blynk
- Status_Fan = 0;
- if (Status_Line2 != 4 && Status_Line_Alert == 1) {
- LINE.notify("ความชื้นไม่เกินค่าที่กำหนด สั่งพัดลมไม่ทำงาน");
- Status_Line2 = 4;
- digitalWrite(LED, LOW); //หลอดไฟดับ
- }
- }
- }
- else if (Sensor_Rain_Value < Rain_Min) { ////// ถ้าฝนหยุดตก หรือ ไม่ตกทั้งวัน
- if (Humidity_Total < Humidity_Set && Status_In_Out == "IN") { ///// ให้เช็คความชื้นถ้าไม่เกินค่าที่กำหนด และ ถ้าผ้าอยู่ข้างใน
- if (Status_Line3 != 5 && Status_Line_Alert == 1) {
- LINE.notifySticker(1, 114);
- LINE.notify("ตอนนี้ฝนไม่ตก ค่าความชื้นปรกติ เสื้อผ้าพร้อมใช้งาน");
- Status_Line3 = 5;
- digitalWrite(LED, HIGH); //หลอดไฟติด
- }
- }
- else if (Humidity_Total > Humidity_Set && Status_In_Out == "IN") { //////////// ให้เช็คความชื้นถ้าเกินค่าที่กำหนด และ ถ้าผ้าอยู่ข้างใน ให้ราวตากผ้าออกข้างนอก
- digitalWrite(Relay_MOVE, LOW); /// หมุนถอยเดินหน้า
- digitalWrite(Relay_ON, HIGH); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าออกข้างนอก
- Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V14, HIGH); // ส่งเข้าแอป blynk
- delay(Timer_Motor); // หมุนไปตามเวลาที่เรากำหนด
- digitalWrite(Relay_ON, LOW); //// สั่งมอเตอร์หยุดทำงาน
- Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V14, LOW); // ส่งเข้าแอป blynk
- Status_In_Out = "OUT"; //////////// เก็บสถานะราวตากผ้า
- if (Status_Line3 != 6 && Status_Line_Alert == 1) {
- LINE.notifySticker(2, 509);
- LINE.notify("ตอนนี้ฝนไม่ตก ค่าความชื้นเกิน สั่งราวตากผ้าออกด้านนอก");
- Status_Line3 = 6;
- digitalWrite(LED, LOW); //หลอดไฟดับ
- }
- }
- }
- }
- //////////////////////////////////////////////////////
- if (Manaul_OUT == 1 && Status_Mode == 0) {
- Serial.println("Manaul_OUT");
- if (check_Home == HIGH) { ////// ถ้าราวอยู่ข้างนอกให้เก็บเข้าข้างใน
- digitalWrite(Relay_MOVE, HIGH); // หมุนถอยหลัง
- digitalWrite(Relay_ON, HIGH); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าเก็บเข้าข้างใน
- Status_In_Out = "IN"; //////////// เก็บสถานะราวตากผ้า
- Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
- } else {
- digitalWrite(Relay_MOVE, LOW); /// หมุนถอยเดินหน้า
- digitalWrite(Relay_ON, HIGH); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าออกข้างนอก
- delay(Timer_Motor); // หมุนไปตามเวลาที่เรากำหนด
- digitalWrite(Relay_ON, LOW); //// สั่งมอเตอร์หยุดทำงาน
- Status_In_Out = "OUT";
- Manaul_OUT = 0;
- Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V14, LOW); // ส่งเข้าแอป blynk
- }
- }
- if (Manaul_IN == 1 && Status_Mode == 0) {
- Serial.println("Manaul_IN");
- if (check_Home == HIGH) { ////// ถ้าราวอยู่ข้างนอกให้เก็บเข้าข้างใน
- Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
- digitalWrite(Relay_MOVE, HIGH); // หมุนถอยหลัง
- digitalWrite(Relay_ON, HIGH); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าเก็บเข้าข้างใน
- } else {
- digitalWrite(Relay_MOVE, LOW); /// หมุนถอยเดินหน้า
- digitalWrite(Relay_ON, LOW); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าออกข้างนอก
- Status_In_Out = "IN";
- Manaul_IN = 0;
- Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
- Blynk.virtualWrite(V15, LOW); // ส่งเข้าแอป blynk
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement