Khóa luận tốt nghiệp GVHD Th S Nguyễn Trung Dũng 53 CHƯƠNG 5 KẾT LUẬN VÀ HƯƠNG PHÁT TRIỂN ĐÈ TÀI 5 1 Các vấn đề nghiên cứu và làm được ✓ Nghiên cứu module arduino mega 2560, Module wifi ESP8266V1, Module thời gian thực RTC DS3231, cảm biến ánh sáng, nhiệt độ và độ ẩm đất ✓ Tìm hiểu về phần mềm và cách đ5 332iều khiển thông qua phần mềm Wamp ✓ Lập trình điều khiển và giám sát thông qua Arduino và Blynk ✓ Xây dựng thành công hệ thống nhà kính thông minh và quản lý dữ liệu của cảm biến ánh sáng, nh.
GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp CHƯƠNG KẾT LUẬN VÀ HƯƠNG PHÁT TRIỂN ĐÈ TÀI 5.1 Các vấn đề nghiên cứu làm ✓ Nghiên cứu module arduino mega 2560, Module wifi ESP8266V1, Module thời gian thực RTC DS3231, cảm biến ánh sáng, nhiệt độ độ ẩm đất ✓ Tìm hiểu phần mềm cách đ5 332iều khiển thông qua phần mềm Wamp ✓ Lập trình điều khiển giám sát thơng qua Arduino Blynk ✓ Xây dựng thành công hệ thống nhà kính thơng minh quản lý liệu cảm biến ánh sáng, nhiệt độ độ ẩm đất 5.2 Đánh giá hệ thống ✓ Hệ thống giúp người dùng giám sát, tự động điều khiển thiết bị có thay đổi nhiệt độ, độ ẩm ánh sáng nhà kính ✓ Hệ thống quản lý việc tiết kiệm lượng mang tính thơng minh ✓ Hệ thống địi hỏi phải có kết nối liên tục từ khối điều khiển lên phần mềm ngược lại Nếu hai điều kiện không đáp ứng liệu truyền nhận bị gián đoạn 5.3 Hướng phát triển đề tài ✓ Thay đổi sử dụng cảm biến công nghiệp để điều khiển xác áp dụng vào thực tế ✓ Xây dựng giao thức webserver để giám sát điều khiển ✓ Khử nhiễu ✓ Thiết kế nguồn pin lượng mặt trời dự trữ cho nguồn điện, tiết kiệm lượng ✓ Thiết kế thêm chức phun thuốc trừ sâu 53 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp CHƯƠNG TÀI LIỆU THAM KHẢO [1] Website: http://www.howkteam.vn/course/su-dung-sql-server-31 [2] Website: http://arduino.vn/ [3] Website: http://hshop.vn/ [4] Website: https://hocarm.org/he-thong-nong-nghiep-thong-minh-phienban-arduino/ 54 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp PHỤ LỤC #define BLYNK_PRINT Serial #include #include // You should get Auth Token in the Blynk App // Địa Auth Token Blynk char auth[] = "b2074e796bf340758c73e35629ab66c5"; //Cài đặt Wifi char ssid[] = "MSI"; char pass[] = "12345678"; // Hardware Serial on Mega #define EspSerial Serial1 // Your ESP8266 baud rate: #define ESP8266_BAUD 115200 ESP8266 wifi(&EspSerial); #include "DHT.h" #include #define DHTPIN // Chân DATA nối với D8 #define LDR_PIN A0 // Chân A0 nối với chân OUT cảm biến ánh sáng #define SOIL_MOIST_1_PIN A1 // Chân A1 nối với cảm biến độ ẩm #define DHTTYPE DHT11 // DHT 11 //Địa thiết bị giao tiếp qua Blynk WidgetLED QUAT(V0); 55 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp WidgetLED DEN(V1); WidgetLED BOMPS(V3); WidgetLED BOMNG(V4); //Các nút nhấn ảo: BLYNK_WRITE(V11) { int pinValue = param.asInt(); // gán giá trị từ V11 cho biến // You can also use: // String i = param.asStr(); // double d = param.asDouble(); if (pinValue==1){ digitalWrite(13,HIGH); } else digitalWrite(13,LOW); if (digitalRead(13)==0){ } } BLYNK_WRITE(V12) { int pinValue = param.asInt(); // gán giá trị từ V12 cho biến // You can also use: // String i = param.asStr(); // double d = param.asDouble(); if (pinValue==1){ digitalWrite(14,HIGH); } else digitalWrite(14,LOW); if (digitalRead(14)==0){ } } BLYNK_WRITE(V13) 56 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp { int pinValue = param.asInt(); // gán giá trị từ V13 cho biến // You can also use: // String i = param.asStr(); // double d = param.asDouble(); if (pinValue==1){ digitalWrite(15,HIGH); } else digitalWrite(15,LOW); if (digitalRead(15)==0){ } } BlynkTimer timer; //Các chế độ điều khiển: int PHONE; int STOP; int MANUAL; int AUTO; //Thiết bị: int b=0; int Den=43; int buttonDen=23; int Quat = 45; int buttonQuat=25; int PumpNg=47; int buttonPumpNg=27; int PumpPs=49; int buttonPumpPs=29; int buttonMoRem=31; int buttonDongRem=33; 57 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp int CT1=35; // CTHT1 int CT2=37; // CTHT2 int MoRem=51; int DongRem=53; int Switch1= 11; // Manual int Switch2= 12; // Auto //Các biến điểu khiển điện thoại int Switch3= 13; int Switch4= 14; int Switch5= 15; //Biến lưu giá trị cảm biến: int humDHT; int tempDHT; int lumen; int soilMoist; //Các thông số điểu khiển nhà trồng: int DRY=40; int WET=60; int COLD=28; int HOT=32; int SOIL_DRY=65; int SOIL_WET=85; int DARK=45; int LIGHT=70; int SHINING=80; // kéo rèm int CTHT1; int CTHT2; 58 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp // Khởi tạo cảm biến DHT dht(DHTPIN, DHTTYPE); // Khởi tạo LCD #include #include LiquidCrystal_I2C lcd(0x27,20,4); void setup() { // Khởi tạo cổng serial baud 9600 Serial.begin(9600); //Khởi tạo tốc độ baud cho ESP8266 EspSerial.begin(ESP8266_BAUD); delay(10); // Kết nối với Blynk Blynk.begin(auth, wifi, ssid, pass); // Cũng dùng: // Blynk.config(wifi,auth); //Blynk.connectWiFi(ssid, pass); // Bắt đầu đọc liệu dht.begin(); lcd.init(); lcd.backlight(); // Chế độ Manual: pinMode(Den,OUTPUT); pinMode(buttonDen,INPUT); pinMode(Quat,OUTPUT); pinMode(buttonQuat,INPUT); pinMode(PumpNg,OUTPUT); pinMode(buttonPumpNg,INPUT); pinMode(PumpPs,OUTPUT); pinMode(buttonPumpPs,INPUT); 59 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp pinMode(Switch1,INPUT); pinMode(Switch2,INPUT); pinMode(buttonMoRem,INPUT); pinMode(buttonDongRem,INPUT); pinMode(CT1,INPUT); pinMode(CT2,INPUT); pinMode(MoRem,OUTPUT); pinMode(DongRem,OUTPUT); //Điều khiển qua điện thoại: pinMode(Switch3,OUTPUT); pinMode(Switch4,OUTPUT); pinMode(Switch5,OUTPUT); //Gửi giá trị cảm biến lên Blynk: timer.setInterval(500L, sendSensor); } void sendSensor(void) { Blynk.virtualWrite(V5, humDHT); Blynk.virtualWrite(V6, tempDHT); Blynk.virtualWrite(V7, lumen); Blynk.virtualWrite(V8, soilMoist); if (digitalRead(Den)==0) { DEN.on(); }else DEN.off(); if (digitalRead(Quat)==0) { QUAT.on(); }else QUAT.off(); if (digitalRead(PumpPs)==0) { 60 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp BOMPS.on(); }else BOMPS.off(); if (digitalRead(PumpNg)==0) { BOMNG.on(); }else BOMNG.off(); } void loop() { Blynk.run(); readSensors(); printData(); showDataLCD(); if (digitalRead(Switch1)== 1){ MANUAL=1; AUTO=0; STOP=0; } if (digitalRead(Switch2)== 1){ MANUAL=0; AUTO=1; STOP=0; } if (digitalRead(Switch1)== && digitalRead(Switch2)==0){ STOP=1; MANUAL=0; AUTO=0; } 61 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp if (digitalRead(Switch3)==1){ PHONE=1; MANUAL=0; STOP=0; AUTO=0; } if (digitalRead(Switch4)==1){ MANUAL=0; AUTO=1; STOP=0; } if (digitalRead(Switch5)==1){ MANUAL=0; AUTO=0; STOP=1; } if (MANUAL==1) { Manual(); } if (AUTO==1) { Auto(); } if (STOP==1) { Off(); } if (PHONE==1){ Phone(); } if (digitalRead(CT1)==1) { 62 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp CTHT1=1; CTHT2=0; } if (digitalRead(CT2)==1) { CTHT2=1; CTHT1=0; } timer.run(); } int getLumen(int anaPin) { int anaValue = 0; for (int i = 0; i < 10; i++) // Đọc giá trị cảm biến 10 lần lấy giá trị trung bình { anaValue += analogRead(anaPin); //Đọc giá trị cảm biến ánh sáng delay(1); } anaValue = anaValue / 10; anaValue = map(anaValue, 0, 1023, 100, 0); //Tối:0 ==> Sáng 100% return anaValue; } int getSoilMoist() { int i = 0; int anaValue = 0; for (i = 0; i < 10; i++) //Đọc giá trị cảm biến 10 lần lấy giá trị trung bình { anaValue += analogRead(SOIL_MOIST_1_PIN); //Đọc giá trị cảm biến độ ẩm đất delay(1); 63 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp } anaValue = anaValue / (i); anaValue = map(anaValue, 0, 1023, 100, 0); //Ít nước:0% ==> Nhiều nước 100% return anaValue; } void readSensors(void) { tempDHT = dht.readTemperature(); //Đọc nhiệt độ DHT11 humDHT = dht.readHumidity(); //Đọc độ ẩm DHT11 lumen = getLumen(LDR_PIN); //Đọc ánh sáng soilMoist = getSoilMoist(); //Đọc cảm biến độ ẩm đất } void showDataLCD(void) { b=b+1; if(b>=0&&b=3&&b=4) { b=0; } } void printData(void) { // IN thông tin hình Serial.print("Do am: "); Serial.print(humDHT); Serial.print(" %\t"); Serial.print("Nhiet do: "); Serial.print(tempDHT); Serial.print(" *C\t"); Serial.print("Anh sang: "); Serial.print(lumen); Serial.print(" %\t"); Serial.print("Do am dat: "); Serial.print(soilMoist); 65 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp Serial.println(" %"); } void Manual(void){ if (digitalRead(buttonDen)== 1){ digitalWrite(Den,LOW); }else digitalWrite(Den,HIGH); if (digitalRead(buttonQuat)== 1){ digitalWrite(Quat,LOW); }else digitalWrite(Quat,HIGH); if (digitalRead(buttonPumpNg)== 1){ digitalWrite(PumpNg,LOW); }else digitalWrite(PumpNg,HIGH); if (digitalRead(buttonPumpPs)== 1){ digitalWrite(PumpPs,LOW); }else digitalWrite(PumpPs,HIGH); ///REM //int CTHTrinh2=digitalRead(CT2); if (digitalRead(buttonMoRem)==1) { digitalWrite(MoRem,HIGH); digitalWrite(DongRem,LOW); if (CTHT1==1){ digitalWrite(DongRem,LOW); digitalWrite(MoRem,LOW ); } } 66 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp if (digitalRead(buttonDongRem)==1) { digitalWrite(DongRem,HIGH); digitalWrite(MoRem,LOW); if (CTHT2==1){ digitalWrite(DongRem,LOW); digitalWrite(MoRem,LOW ); } } if (digitalRead(buttonMoRem)==0 && digitalRead(buttonDongRem)==0){ digitalWrite(DongRem,LOW); digitalWrite(MoRem,LOW ); } } void Auto(void){ //Nhiệt độ if (tempDHT > HOT){ digitalWrite(Quat,LOW); } if (tempDHT < COLD){ digitalWrite(Den,LOW); } if (tempDHT < HOT && tempDHT > COLD){ digitalWrite(Den,HIGH); digitalWrite(Quat,HIGH); } //Độ ẩm if (humDHT > WET){ 67 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp digitalWrite(Quat,LOW); } if (humDHT < DRY){ digitalWrite(PumpPs,LOW); } if (humDHT < WET && humDHT > DRY){ digitalWrite(PumpPs,HIGH); digitalWrite(Quat,HIGH); } //Độ ẩm đất if (soilMoist< SOIL_DRY){ digitalWrite(PumpNg,LOW); } if (soilMoist> SOIL_DRY && soilMoist< SOIL_WET){ digitalWrite(PumpNg,HIGH); } if (soilMoist> SOIL_WET){ digitalWrite(PumpNg,HIGH); } //Ánh sáng if (lumen < DARK) { digitalWrite(Den,LOW); digitalWrite(DongRem,LOW); digitalWrite(MoRem,HIGH);a if (CTHT1==1){ digitalWrite(DongRem,LOW); digitalWrite(MoRem,LOW ); } 68 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp } if ( lumen > DARK && lumen < LIGHT){ digitalWrite(Den,HIGH); digitalWrite(DongRem,LOW); digitalWrite(MoRem,HIGH); if (CTHT1==1){ digitalWrite(DongRem,LOW); digitalWrite(MoRem,LOW ); } } if (lumen > SHINING) { digitalWrite(MoRem,LOW); digitalWrite(DongRem,HIGH); digitalWrite(Den,HIGH); if (CTHT2==1){ digitalWrite(DongRem,LOW); digitalWrite(MoRem,LOW ); } } } void Phone(void){ } void Off(void){ digitalWrite(Den,HIGH); digitalWrite(Quat,HIGH); digitalWrite(PumpNg,HIGH); digitalWrite(PumpPs,HIGH); digitalWrite(DongRem,HIGH); 69 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp digitalWrite(MoRem,HIGH); } 70 GVHD: Th.S Nguyễn Trung Dũng Khóa luận tốt nghiệp LỜI CẢM ƠN Chúng em xin chân thành cảm ơn đến: Ban giám hiệu trường Đại Học Cơng Nghiệp TP.Hồ Chí Minh tạo điều kiện thuận lợi sở vật chất suốt q trình chúng em thực khố luận Khoa Công Nghệ Điện giúp đỡ chúng em nhiều việc tiếp thu kiến thức Arduino Thư viện trường ĐH Cơng Nghiệp TP.Hồ Chí Minh tạo điều kiện để chúng em tìm kiếm tài liệu phục vụ cho khoá luận Đặc biệt, chúng em xin gửi lời cảm ơn chân thành sâu sắc đến giáo viên hướng dẫn thầy Nguyễn Trung Dũng, tận tình giảng dạy giúp đỡ chúng em q trình thực hồn thành khố luận Chúng em xin chân thành cảm ơn! SINH VIÊN THỰC HIỆN Bùi Minh Tứ Tạ Đình Thốt Phan Vũ Minh Đạt Nguyễn Trung Toàn 71 ... Switch5= 15; //Biến lưu giá trị cảm biến: int humDHT; int tempDHT; int lumen; int soilMoist; //Các thông số điểu khiển nhà trồng: int DRY=40; int WET=60; int COLD=28; int HOT=32; int SOIL_DRY= 65; ... "b2074e796bf340 758 c73e 356 29ab66c5"; //Cài đặt Wifi char ssid[] = "MSI"; char pass[] = "123 456 78"; // Hardware Serial on Mega #define EspSerial Serial1 // Your ESP8266 baud rate: #define ESP8266_BAUD 1 152 00... (pinValue==1){ digitalWrite( 15, HIGH); } else digitalWrite( 15, LOW); if (digitalRead( 15) ==0){ } } BlynkTimer timer; //Các chế độ điều khiển: int PHONE; int STOP; int MANUAL; int AUTO; / /Thiết bị: int b=0;