Advertisement
Bstick-board

Untitled

Oct 21st, 2019
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.06 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement