SHARE
TWEET

Untitled

Bstick-board Oct 21st, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <TridentTD_LineNotify.h>
  2. #define BLYNK_PRINT Serial
  3. #include <ESP8266WiFi.h>
  4. #include <BlynkSimpleEsp8266.h>
  5. #include <DHT.h>
  6. #include <Wire.h>
  7.  
  8. #define LINE_TOKEN  "l0hbWupW9KXTU1H5BdFCRUIIyLR5c9qAr7cbwZsf1wm" //// //Token ของแอป Line
  9. char auth[] = "f1b0e635363d40749291a186c144da58"; //Token ของแอป blynk
  10. char ssid[] = "BB"; /// User WiFI
  11. char pass[] = "bbbbbbbbbb"; /// Password WiFi
  12.  
  13. /////////////////////// ขาที่ต้องต่อใช้งาน //////////////////////
  14.  
  15. #define Switch_check_Home  D1  //ต่อสวิทให้ราวตากผ้าวิ่งมาชนเพื่อเช็คราวตากผ้าว่าอยู่ด้านในตู้แล้ว
  16. #define Fan  D2  //ต่อรีเลย์ 2 ควบคุมพัดลม
  17. #define LED  D4  //ต่อกับหลอดไฟ
  18. #define Sensor_1  D5  //ต่อกับ DHT22 ตัวที่ 1
  19. #define Sensor_2  D6  //ต่อกับ DHT22 ตัวที่ 2
  20. #define Relay_IN  D7  //ต่อรีเลย์ 1 ควบคุมมอเตอร์เดินหน้าถอยหลัง
  21. #define Relay_OUT  D8  //ต่อรีเลย์ 2 ควบคุมการเปิดปิดมอเตอร์
  22. #define Sensor_Rain  A0  //ต่อกับตัวรับค่าน้ำฝน
  23.  
  24. ////////////////////////////////////////////////////////////
  25.  
  26. int Sensor_Rain_Value = 0; //เก็บค่าน้ำฝน
  27. int Humidity_Set = 0; // เซ็ทค่าความชื้น
  28. String Status_In_Out = ""; // เก็บสถานะราวตากผ้า
  29. int Status_Line1 = 0; // เก็บสถานะ Line
  30. int Status_Line2 = 0; // เก็บสถานะ Line
  31. int Status_Line3 = 0; // เก็บสถานะ Line
  32. int Status_Line_Alert = 0; // เก็บสถานะ Line แจ้งเตือน
  33. int Status_Mode = 0; // เก็บสถานะ Mode
  34. int Status_Fan = 0; // เก็บสถานะพัดลม
  35. int Manaul_IN = 0; // เก็บสถานะ Manaul_IN
  36. int Manaul_OUT = 0; // เก็บสถานะ Manaul_OUT
  37.  
  38. int Rain_Max = 0; // เก็บสถานะเซทค่าน้ำฝนมากสุด
  39. int Rain_Min = 0; // เก็บสถานะเซทค่าน้ำฝนน้อยสุด
  40.  
  41. int Timer_Motor = 0; // เก็บสถานะเซทค่าเวลามอเตอร์
  42. int Roww = 0; // เก็บสถานะราว
  43.  
  44. BlynkTimer SetTimer;
  45.  
  46. #define DHTTYPE DHT11           // ชนิด Sensor วัดอุณหภูมิ
  47. DHT dht1(Sensor_1, DHTTYPE);
  48. DHT dht2(Sensor_2, DHTTYPE);
  49.  
  50. BLYNK_CONNECTED() {
  51.   Blynk.syncAll();
  52. }
  53.  
  54. BLYNK_WRITE(V18)
  55. {
  56.   int value = param.asInt();
  57.   Rain_Min = value;
  58. }
  59.  
  60. BLYNK_WRITE(V19)
  61. {
  62.   int value = param.asInt();
  63.   Rain_Max = value;
  64. }
  65.  
  66. BLYNK_WRITE(V17)
  67. {
  68.   int value = param.asInt();
  69.   Humidity_Set = value;
  70. }
  71.  
  72. BLYNK_WRITE(V20)
  73. {
  74.   int value = param.asInt();
  75.   Timer_Motor = value * 1000;
  76. }
  77.  
  78. BLYNK_WRITE(V12)
  79. {
  80.   int value = param.asInt();
  81.   Status_Line_Alert = value;
  82. }
  83.  
  84. BLYNK_WRITE(V13)
  85. {
  86.   int value = param.asInt();
  87.   Status_Mode = value;
  88. }
  89.  
  90. BLYNK_WRITE(V14)
  91. {
  92.   int value = param.asInt(); // manaul สั่งราวผ้าออกข้างนอก
  93.   if (Status_Mode == 0 && value == 1) {
  94.     Manaul_OUT = 1;
  95.   } else {
  96.     Manaul_OUT = 0;
  97.     Blynk.virtualWrite(V14, LOW); // ส่งเข้าแอป blynk
  98.   }
  99. }
  100.  
  101. BLYNK_WRITE(V15)
  102. {
  103.   int value = param.asInt(); //  // manaul สั่งราวผ้าเข้าข้างใน
  104.   if (Status_Mode == 0 && value == 1) {
  105.     Manaul_IN = 1;
  106.   } else {
  107.     Manaul_IN = 0;
  108.     Blynk.virtualWrite(V15, LOW); // ส่งเข้าแอป blynk
  109.   }
  110. }
  111.  
  112. BLYNK_WRITE(V16)
  113. {
  114.   int value = param.asInt(); //  // manaul พัดลม
  115.   if (Status_Mode == 0 && value == 1) {
  116.     digitalWrite(Fan, HIGH); /////// ให้พัดลมทำงาน
  117.     Blynk.virtualWrite(V16, HIGH); // ส่งเข้าแอป blynk
  118.     Status_Fan = 1;
  119.   } else if (Status_Mode == 0 && value == 1) {
  120.     digitalWrite(Fan, LOW); //////// ให้พัดลมหยุดทำงาน
  121.     Blynk.virtualWrite(V16, LOW); // ส่งเข้าแอป blynk
  122.     Status_Fan = 0;
  123.   } else if (Status_Mode == 1  && Status_Fan == 1) {
  124.     Blynk.virtualWrite(V16, HIGH); // ส่งเข้าแอป blynk
  125.   } else if (Status_Mode == 1 &&  Status_Fan == 0) {
  126.     Blynk.virtualWrite(V16, LOW); // ส่งเข้าแอป blynk
  127.   }
  128. }
  129.  
  130.  
  131. void setup() {
  132.   Serial.begin(9600);
  133.  
  134.   pinMode(Switch_check_Home , INPUT_PULLUP);
  135.  
  136.   pinMode(Manaul_IN , INPUT);
  137.   pinMode(Manaul_OUT , INPUT);
  138.  
  139.   pinMode(Relay_OUT , OUTPUT);
  140.   pinMode(Relay_IN , OUTPUT);
  141.   pinMode(Fan , OUTPUT);
  142.   pinMode(LED , OUTPUT);
  143.  
  144.   dht1.begin();
  145.   dht2.begin();
  146.  
  147.   Blynk.begin(auth, ssid, pass, "bstick-board.com", 8080);
  148.   LINE.setToken(LINE_TOKEN);
  149.  
  150.   SetTimer.setInterval(3000, Check_Data); ///////////////// สั่งให้เช็คทุกๆ 3 วินาที
  151.   Blynk.virtualWrite(V11, 0);
  152.   digitalWrite(LED, LOW);
  153. }
  154.  
  155. float h1 = 0;
  156. float h2 = 0;
  157. float t1 = 0;
  158. float t2 = 0;
  159. float Humidity_Total = 0;
  160. float Temperature_Total = 0;
  161. long rssi;
  162. void loop()
  163. {
  164.   Blynk.run();
  165.   SetTimer.run();
  166. }
  167.  
  168. void Check_Data()
  169. {
  170.   Sensor_Rain_Value = analogRead(Sensor_Rain); // อ่านค่าน้ำฝน
  171.   int check_Home = digitalRead(Switch_check_Home);  // อ่านค่าวิทตช์
  172.  
  173.   if (check_Home == LOW) { //ถ้าสวิทถูกด แสดงว่าราวอยู่ด้านใน
  174.     Roww = 1;
  175.     Blynk.virtualWrite(V21, HIGH); // ส่งเข้าแอป blynk
  176.   } else {  //ถ้าไม่ใช่แสดงว่าอยู่ด้านนอก
  177.     Roww = 0;
  178.     Blynk.virtualWrite(V21, LOW); // ส่งเข้าแอป blynk
  179.   }
  180.  
  181.   //////////////// ค่าอุณภูมิความชื้น ////////////////
  182.   h1 = dht1.readHumidity();
  183.   h2 = dht1.readHumidity();
  184.   Humidity_Total = h1 + h2;
  185.   Humidity_Total = Humidity_Total / 2;
  186.  
  187.   t1 = dht1.readTemperature();
  188.   t2 = dht1.readTemperature();
  189.   Temperature_Total = t1 + t2;
  190.   Temperature_Total = Temperature_Total / 2;
  191.   /////////////////////////////////
  192.  
  193.   //////////////// ค่าอุณภูมิความชื้นส่งเข้าแอป blynk ////////////////
  194.   Blynk.virtualWrite(V1, t1); // ส่งเข้าแอป blynk
  195.   Blynk.virtualWrite(V2, h1); // ส่งเข้าแอป blynk
  196.   Blynk.virtualWrite(V3, t2); // ส่งเข้าแอป blynk
  197.   Blynk.virtualWrite(V4, h2); // ส่งเข้าแอป blynk
  198.   Blynk.virtualWrite(V5, Temperature_Total); // ส่งเข้าแอป blynk
  199.   Blynk.virtualWrite(V6, Humidity_Total); // ส่งเข้าแอป blynk
  200.   /////////////////////////////////
  201.  
  202.   ///////////// ค่าไวไฟ ////////////////////
  203.   rssi = WiFi.RSSI();
  204.   if (rssi < -99)
  205.   {
  206.     rssi = -99;
  207.   }
  208.   Blynk.virtualWrite(V7, rssi + 100); // ส่งเข้าแอป blynk
  209.  
  210.   //////////////////////////// เอาไว้ดูค่าต่างๆ ทาง Serial monitor//////////////////////////
  211.  
  212.   Serial.println("Sensor_Rain_Value=" + String(Sensor_Rain_Value));
  213.   Serial.println("h1=" + String(h1));
  214.   Serial.println("h2=" + String(h2));
  215.   Serial.println("Humidity_Total=" + String(Humidity_Total));
  216.   Serial.println("Status_Line_Alert=" + String(Status_Line_Alert));
  217.   Serial.println("Status_Line1=" + String(Status_Line1));
  218.   Serial.println("Status_Line2=" + String(Status_Line2));
  219.   Serial.println("Status_Line3=" + String(Status_Line3));
  220.   Serial.println("Status_Mode=" + String(Status_Mode));
  221.   Serial.println("Manaul_OUT=" + String(Manaul_OUT));
  222.   Serial.println("Manaul_IN=" + String(Manaul_IN));
  223.   Serial.println("Status_In_Out=" + String(Status_In_Out));
  224.   Serial.println("Status_Fan=" + String(Status_Fan));
  225.   Serial.println("Humidity_Set=" + String(Humidity_Set));
  226.   Serial.println("Rain_Max=" + String(Rain_Max));
  227.   Serial.println("Rain_Min=" + String(Rain_Min));
  228.   Serial.println("Timer_Motor=" + String(Timer_Motor));
  229.   Serial.println("//////////////////////////////////////////////");
  230.  
  231.   //////////////////////////////////////////////////////
  232.  
  233.   if (Status_Mode == 1) {
  234.     if (Sensor_Rain_Value > Rain_Max) { //////// ถ้าฝนตก
  235.       if (check_Home == HIGH) { ////// ถ้าราวอยู่ข้างนอกให้เก็บเข้าข้างใน
  236.         digitalWrite(Relay_IN, HIGH); // หมุนถอยหลัง
  237.         digitalWrite(Relay_OUT, LOW); ////
  238.         Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
  239.         Blynk.virtualWrite(V15, HIGH); // ส่งเข้าแอป blynk
  240.         if (Status_Line1 != 1 && Status_Line_Alert == 1) {
  241.           LINE.notifySticker(2, 507);
  242.           LINE.notify("ตอนนี้ฝนตกกำลังเก็บราวผ้าเข้าด้านใน");
  243.           Status_Line1 = 1;
  244.           Status_In_Out = "OUT";
  245.           digitalWrite(LED, LOW); //หลอดไฟดับ
  246.         }
  247.       } else if ( check_Home == LOW && Status_In_Out == "OUT") { /////////////////////////////// ถ้าราวถึงข้างในแล้ว
  248.         digitalWrite(Relay_IN, LOW); /// ให้มอเตอร์หยุด
  249.         digitalWrite(Relay_OUT, LOW);
  250.         Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
  251.         Blynk.virtualWrite(V15, LOW); // ส่งเข้าแอป blynk
  252.         Status_In_Out = "IN"; //////////// เก็บสถานะราวตากผ้า
  253.         if (Status_Line1 != 2 && Status_Line_Alert == 1) {
  254.           Status_Line1 = 2;
  255.           LINE.notify("ราวผ้าถึงด้านในแล้ว");
  256.           digitalWrite(LED, LOW); //หลอดไฟดับ
  257.         }
  258.       }
  259.  
  260.       if (Humidity_Total > Humidity_Set) { //////////// แล้วเช็คความชื้นว่าเกินค่าที่กำหนดไหม ถ้าเกินค่าที่กำหนด
  261.         if (Status_Line2 != 3 && Status_Line_Alert == 1) {
  262.           LINE.notifySticker(2, 27);
  263.           LINE.notify("ความชื้นว่าเกินค่าที่กำหนด สั่งพัดลมทำงาน");
  264.           Status_Line2 = 3;
  265.           digitalWrite(LED, LOW); //หลอดไฟดับ
  266.         }
  267.         digitalWrite(Fan, HIGH); /////// ให้พัดลมทำงาน
  268.         Blynk.virtualWrite(V16, HIGH); // ส่งเข้าแอป blynk
  269.         Status_Fan = 1;
  270.       }
  271.       else { ///////////////////////////// ถ้าค่าไม่เกินค่าที่กำหนด
  272.         digitalWrite(Fan, LOW); //////// ให้พัดลมหยุดทำงาน
  273.         Blynk.virtualWrite(V16, LOW); // ส่งเข้าแอป blynk
  274.         Status_Fan = 0;
  275.         if (Status_Line2 != 4 && Status_Line_Alert == 1) {
  276.           LINE.notify("ความชื้นไม่เกินค่าที่กำหนด สั่งพัดลมไม่ทำงาน");
  277.           Status_Line2 = 4;
  278.           digitalWrite(LED, LOW); //หลอดไฟดับ
  279.         }
  280.       }
  281.     }
  282.     else if (Sensor_Rain_Value < Rain_Min) { ////// ถ้าฝนหยุดตก หรือ ไม่ตกทั้งวัน
  283.       if (Humidity_Total < Humidity_Set && Status_In_Out == "IN") { ///// ให้เช็คความชื้นถ้าไม่เกินค่าที่กำหนด และ ถ้าผ้าอยู่ข้างใน
  284.         if (Status_Line3 != 5 && Status_Line_Alert == 1) {
  285.           LINE.notifySticker(1, 114);
  286.           LINE.notify("ตอนนี้ฝนไม่ตก ค่าความชื้นปรกติ เสื้อผ้าพร้อมใช้งาน");
  287.           Status_Line3 = 5;
  288.           digitalWrite(LED, HIGH); //หลอดไฟติด
  289.         }
  290.       }
  291.       else if (Humidity_Total > Humidity_Set && Status_In_Out == "IN") { //////////// ให้เช็คความชื้นถ้าเกินค่าที่กำหนด และ ถ้าผ้าอยู่ข้างใน ให้ราวตากผ้าออกข้างนอก
  292.         digitalWrite(Relay_IN, LOW); /// หมุนถอยเดินหน้า
  293.         digitalWrite(Relay_OUT, HIGH); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าออกข้างนอก
  294.         Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
  295.         Blynk.virtualWrite(V14, HIGH); // ส่งเข้าแอป blynk
  296.         delay(Timer_Motor); // หมุนไปตามเวลาที่เรากำหนด
  297.         digitalWrite(Relay_OUT, LOW); //// สั่งมอเตอร์หยุดทำงาน
  298.         Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
  299.         Blynk.virtualWrite(V14, LOW); // ส่งเข้าแอป blynk
  300.         Status_In_Out = "OUT"; //////////// เก็บสถานะราวตากผ้า
  301.         if (Status_Line3 != 6 && Status_Line_Alert == 1) {
  302.           LINE.notifySticker(2, 509);
  303.           LINE.notify("ตอนนี้ฝนไม่ตก ค่าความชื้นเกิน สั่งราวตากผ้าออกด้านนอก");
  304.           Status_Line3 = 6;
  305.           digitalWrite(LED, LOW); //หลอดไฟดับ
  306.         }
  307.       }
  308.     }
  309.   }
  310.   //////////////////////////////////////////////////////
  311.  
  312.   if (Manaul_OUT == 1 && Status_Mode == 0) {
  313.     Serial.println("Manaul_OUT");
  314.     if (check_Home == HIGH) { ////// ถ้าราวอยู่ข้างนอกให้เก็บเข้าข้างใน
  315.       digitalWrite(Relay_IN, HIGH); // หมุนถอยหลัง
  316.       digitalWrite(Relay_OUT, LOW); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าเก็บเข้าข้างใน
  317.       Status_In_Out = "IN"; //////////// เก็บสถานะราวตากผ้า
  318.       Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
  319.     } else {
  320.       digitalWrite(Relay_IN, LOW); /// หมุนถอยเดินหน้า
  321.       digitalWrite(Relay_OUT, HIGH); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าออกข้างนอก
  322.       delay(Timer_Motor); // หมุนไปตามเวลาที่เรากำหนด
  323.       digitalWrite(Relay_OUT, LOW); //// สั่งมอเตอร์หยุดทำงาน
  324.       Status_In_Out = "OUT";
  325.       Manaul_OUT = 0;
  326.       Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
  327.       Blynk.virtualWrite(V14, LOW); // ส่งเข้าแอป blynk
  328.     }
  329.   }
  330.  
  331.   if (Manaul_IN == 1 && Status_Mode == 0) {
  332.     Serial.println("Manaul_IN");
  333.     if (check_Home == HIGH) { ////// ถ้าราวอยู่ข้างนอกให้เก็บเข้าข้างใน
  334.       Blynk.virtualWrite(V11, 255); // ส่งเข้าแอป blynk
  335.       digitalWrite(Relay_IN, HIGH); // หมุนถอยหลัง
  336.       digitalWrite(Relay_OUT, LOW); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าเก็บเข้าข้างใน
  337.     } else {
  338.       digitalWrite(Relay_IN, LOW); /// หมุนถอยเดินหน้า
  339.       digitalWrite(Relay_OUT, LOW); //// สั่งมอเตอร์ทำงาน หมุนราวตากผ้าออกข้างนอก
  340.       Status_In_Out = "IN";
  341.       Manaul_IN = 0;
  342.       Blynk.virtualWrite(V11, 0); // ส่งเข้าแอป blynk
  343.       Blynk.virtualWrite(V15, LOW); // ส่งเข้าแอป blynk
  344.     }
  345.   }
  346.  
  347. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top