Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 76 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
76
Dung lượng
2,7 MB
Nội dung
ĐẠI HỌC CÔNG NGHIỆP TP.HCM KHOA CÔNG NGHỆ ĐIỆN ĐỒ ÁN TỐT NGHIỆP TÊN ĐỀ TÀI: THIẾT KẾ HỆ THỐNG TƯỚI TIÊU TỰ ĐỘNG SINH VIÊN: HUỲNH QUỐC CƯỜNG MSSV: 15088511 NGƠ PHÚC ĐẠT MSSV: 15092231 NGUYỄN DUY BÌNH MSSV: 15094241 NGÔ QUANG HẠ MSSV: 15088991 LỚP: DHDKTD11C GVHD: THS.VŨ ĐỨC VẠN TP.HCM, THÁNG … NĂM 2019 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM KHOA CÔNG NGHỆ ĐIỆN PHIẾU GIAO NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP Họ tên sinh viên/ nhóm sinh viên giao đề tài (1): Huỳnh Quốc Cường MSSV: 15088511 (2): Nguyễn Duy Bình MSSV: 15094241 (3): Ngô Quang Hạ MSSV: 15088991 (4): Ngô Phúc Đạt MSSV: 15092231 Tên đề tài NGHIÊN CỨU HỆ THỐNG TƯỚI TIÊU TỰ ĐỘNG DỰA VÀO NHIỆT ĐỘ VÀ ĐỘ ẨM CÓ HIỂN THỊ VÀ ĐIỀU KHIỂN QUA WIFI Nhiệm vụ (Nội dung số liệu ban đầu) - Đọc nhiệt độ, độ ẩm từ cảm biến => Hiển thị lên app web - Đóng cắt giám sát relay theo chế độ: cầm tay, thông minh, qua wifi - Tính tốn vẽ sơ đồ mạch điện thiết kế tủ cung cấp Kết dự kiến - Hoàn thành báo cáo + chi tiết vẽ thiết kế - Viết chương trình điều khiển giám sát hệ thống - Hồn thành mơ hình điều khiển thực nghiệm Giảng viên hướng dẫn Tp HCM, ngày tháng Sinh viên Trưởng môn ii năm 2019 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN iii LỜI CẢM ƠN Q trình thực khóa luận tốt nghiệp giai đoạn quan trọng quãng đời sinh viên Khóa luận tốt nghiệp tiền đề nhằm trang bị cho chúng em kĩ nghiên cứu, kiến thức thực tiễn quý báu trước lập nghiệp Trước hết, chúng em xin gửi lời cảm ơn tới quý thầy cô môn Điều khiển tự động tận tình dạy trang bị cho chúng em kiến thức cần thiết suốt thời gian ngồi giảng đường làm tảng cho việc thực khóa luận Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc tới thầy Vũ Đức Vạn - Giảng viên Khoa Công Nghệ Điện - Trường Đại học Cơng Nghiệp Thành Phố Hồ Chí Minh, thầy tận tình hướng dẫn, định hướng giúp đỡ chúng em suốt thời gian nghiên cứu thực khóa luận Đây góp ý q báu khơng suốt q trình thực khóa luận mà cịn hành trang để chúng em tiếp bước trình học tập lập nghiệp tới Chúng xin gửi lòng biết ơn sâu sắc đến ba mẹ, thành viên gia đình Những người ln ln bên cạnh động viên, khuyến khích hỗ trợ tối đa cho việc học tập chúng Một lần chúng em xin chân thành cảm ơn! iv MỤC LỤC PHIẾU GIAO NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP ii NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN iii LỜI CẢM ƠN iv MỤC LỤC v DANH MỤC CÁC HÌNH viii DANH MỤC CÁC BẢNG x CHƯƠNG 1: GIỚI THIỆU TỔNG QUÁT VỀ HỆ THỐNG TƯỚI TIÊU TỰ ĐỘNG TRONG NÔNG NGHIỆP 1.1 Tính cấp thiết đề tài 1.2 Lý chọn đề tài 1.3 Khái niệm, ý nghĩa hệ thống tưới tiêu tự động 1.4 Tổng quan thiết kế hệ thống tưới 1.5 Thiết kế hệ thống tưới CHƯƠNG 2: LỰA CHỌN THIẾT BỊ VÀ THIẾT KẾ MÔ HÌNH 2.1 Sơ đồ khối hệ thống 2.2 Giới thiệu Module Wifi ESP8266 2.2.1 Tính đặc điểm 2.2.2 Thông số 2.2.3 Mô tả chân ESP8266 2.3 Giới thiệu phần mềm lập trình Arduino IDE 12 2.3.1 Cài đặt Arduino IDE 12 2.3.2 Cài đặt Driver 13 2.3.3 Giao diện thao tác ứng dụng Arduino IDE 13 v 2.4 Cảm biến nhiệt độ, độ ẩm DHT11 18 2.4.1 Cảm biến DHT11 chuẩn liệu OneWire 18 2.4.2 Thông số kỹ thuật DHT11 19 2.5 Cảm biến độ ẩm đất 23 2.6 Relay 27 2.7 Mạch nguồn 29 2.7.1 Mạch nguồn chuyển từ 220VAC xuống 12VDC 29 2.7.2 Mạch nguồn chuyển từ 12V sang 5V 30 2.8 Sơ đồ thiết kế chi tiết 32 2.9 Mạch Node MCU ESP12 36 2.10 Lưu đồ giải thuật 40 CHƯƠNG 3: CÁC ĐỊNH NGHĨA WEB VÀ CHƯƠNG TRÌNH LẬP TRÌNH 45 3.1 Khái niệm web server 45 3.2 KHÁI NIỆM MQTT 46 3.3 NTP Server 50 3.3.1 Khái niệm NTP Server 50 3.3.2 Làm để dùng NTP Server 50 3.3.3 Độ xác NTP Server 50 3.3.4 Khái niệm thời gian Unix timestamp 51 3.4 Chương trình lập trình hệ thống 51 CHƯƠNG 4: KẾT LUẬN – HƯỚNG PHÁT TRIỂN 65 4.1 Kết đạt 65 4.2 Những khó khăn thực đề tài 65 4.3 Những hạn chế thực đề tài 65 vi 4.4 Hướng phát triển đề tài 65 TÀI LIỆU THAM KHẢO 66 vii DANH MỤC CÁC HÌNH Hình 2.1 Sơ đồ khối hệ thống Hình 2.2 Module Wifi Esp8266 Hình 2.3 Sơ đồ liệt kê chân Esp8266 Hình 2.4 Chi tiết chân Esp8266 11 Hình 2.5 Trang chủ phần mềm Arduino IDE 12 Hình 2.6 Giao diện Ảduino 13 Hình 2.7 Thêm đường link thư viện cho Esp8266 14 Hình Cài đặt Esp8266 kết nối với laptop 15 Hình 2.9 Cài đặt Esp8266 kết nối với laptop 16 Hình 2.10 Giao diện chương trình khơng lỗi 17 Hình 2.11 Cảm biến nhiệt độ DHT11 18 Hình 2.12 Các mặt DHT11 19 Hình 2.13 Cấu tạo bên DHT11 20 Hình 2.14 Cấu tạo lớp DHT11 21 Hình 2.15 Điện trở nhiệt 5D-11 22 Hình 2.16 Sơ đồ chân module chuyển đổi DHT11 23 Hình 2.17 Cảm biến độ ẩm đất 23 Hình 2.18 Module chuyển đổi 24 Hình 2.19 Sơ đồ cảm biến độ ẩm đất nối với module chuyển đổi 25 Hình 2.20 Mạch module chuyển đổi 26 Hình 2.21 Sơ đồ chân LM393 27 Hình 2.22 Module relay BC547 28 Hình 2.23 Sơ đồ mạch module relay BC547 28 Hình 2.24 Mạch nguồn 220V sang 12V 30 Hình 2.25 Mạch nguồn từ 12V sang 5V 30 Hình 2.26 Sơ đồ chi tiết LM2576 31 Hình 2.27 Mạch Relay 32 viii Hình 2.28 Sơ đồ nối chân mơ hình 33 Hình 2.29 Mạch nút nhấn 33 Hình 2.30 Mạch Node MCU Esp8266 34 Hình 2.31 Mạch nguồn từ 12 sang 5V 34 Hình 2.32 Lớp thứ mạch thiết kế Altium 35 Hình 2.33 Mạch nguồn từ 5V sang 3.3V 35 Hình 2.34 Lớp thứ hai mạc thiết kế Altium 36 Hình 2.35 Mạch Node MCU Esp8266 36 Hình 2.36 Mạch ESP-12 CORE 37 Hình 2.37 Mạch USB TO UART 37 Hình 2.38 Mạch Key ADC 38 Hình 2.39 Mạch Power IO 38 Hình 3.1 Trang HTML bản………… ……… …………………………………… 41 Hình 3.2 Truyền liệu MQTT qua client………………………………………… 42 Hình 3.3 Kết nối gửi data……………………………….…………………………… 44 Hình 3.4 Kiến trúc phân cấp NTP …………………………………………… …45 ix DANH MỤC CÁC BẢNG Bảng 2.1 Thông số module Esp8266 Bảng 2.2 Tên chân chức chân Esp8266 Bảng 2.3 Thông số chân DHT11 20 Bảng 2.4 Thông số chân module chuyển đổi 24 x Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt #include // Gọi thư viện DHT22 #include WiFiUDP u;// khai bao bien nhan NTPClient n(u,"2.asia.pool.ntp.org",3600*7);//dang nhap vao sever va lay gio Viet Nam // Kết nối // DHT | ESP8266 // -// VCC(1) | 3.3V // DATA(2) | D1 // Nối trở 10k chân chân // NC(3) // GND(4) | x | GND //Cảm biến độ ẩm | ESP8266 // -// VCC(1) | 3.3V // GND(2) | GND // D0(3) | x // A0(4) | A0 #define DAD A0 // Chân A0 nối với cảm biến độ ẩm #define DHTTYPE DHT11 // DHT 22 #define CBM D8 // Cam bien mua #define DHTPIN D4 // Chân DATA nối với chân D1 #define RELAYA D5 //Bom #define RELAYB D6 //Den #define RELAYC D7 //Quat #define SWA D3// cong tac A #define SWB D1 // cong tac B #define SWC D2 //cong tac C 52 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt /* Thơng số điều khiển tự động */ #define DRY_SOIL 20 #define WET_SOIL 50 #define COLD_TEMP #define HOT_TEMP #define TEMP 26 32 29 #define TIMER_RELAYA_ON 15//thời gian bật #define TIMER_RELAYB_ON 15 #define TIMER_RELAYC_ON 15 /* TIMER */ #define TDOCSW 1L #define TDOCDOAMDAT 10L //Đọc cảm biến ẩm đất #define TDOCDHT 2L //Đọc DHT #define TDISPLAYDATA 5L #define TAUTO 10L //Chế độ tư động 10s #define TGUIDATA 15L #define TSETHENGIO 10L // Biến lưu giá trị cảm biến float humDHT= 0;//do am float tempDHT= 0;//nhiet int doamG= 0;// am dat // Biến lưu trạng thái relay boolean RELAYAStatus = 0; boolean RELAYBStatus = 0; boolean RELAYCStatus = 0; //Biến trạng thái hệ thống 53 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt boolean AUTO = 0; boolean CAMTAY = 0; boolean digiValue; //Biến hẹn int HenGio; int HenPhut; String TNoiDung; String TGio; String TPhut; //Biến lấy thời gian hệ thống byte Hour;//lay thoi gian gio byte Minutes; SimpleTimer timer; DHT dht(DHTPIN, DHTTYPE); // Khởi tạo cảm biến void nhandl(char * , byte * nd, unsigned int length) // topic , nội dung liệu nhận được, chiều dài nội dung nhận { String topic(tp); String noidung=String((char*)nd); noidung.remove(length);// nhận liệu Serial.println(topic); Serial.println(noidung); if(topic=="AUTO") { if(noidung=="0") AUTO=0; if(noidung=="1") 54 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt AUTO=1; } if(topic=="hengio") { TNoiDung=noidung; TGio=TNoiDung; TPhut=TNoiDung; TGio.remove(3); TPhut.remove(0,3); HenGio=TGio.toInt(); HenPhut=TPhut.toInt(); } if (topic=="ESPnRLA") { if(noidung=="0") digitalWrite(RELAYA,HIGH); if(noidung=="1") digitalWrite(RELAYA,LOW); } if (topic=="ESPnRLB") { if(noidung=="0") digitalWrite(RELAYB,HIGH); if(noidung=="1") digitalWrite(RELAYB,LOW); } 55 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt if (topic=="ESPnRLC") { if(noidung=="0") digitalWrite(RELAYC,HIGH); if(noidung=="1") digitalWrite(RELAYC,LOW); } } WiFiClient c; PubSubClient MQTT("m16.cloudmqtt.com",13553,nhandl,c);//khai bao dia chi cua MQTT void setup(){ Serial.begin(9600); WiFi.begin("My Wifi","abc135xyz79");// ten mk wifi while(1) { delay(100); if(WiFi.status() == WL_CONNECTED)//kiem tra ket noi duoc hay khong break; // dừng vòng lặp } Serial.println("Da nhan duoc internet"); Serial.print("IP address is :"); Serial.print(WiFi.localIP()); while(1) { delay(500); 56 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt if(MQTT.connect("ESP","ayerfoiy","gPB3pXFMxt2O")) //ten,User,Password clound để đăng nhập break; // thoat khoi vong lap } Serial.println("Da nhan duoc MQTT"); MQTT.publish("test","gui du lieu thu");// gửi liệu từ esp lên web MQTT.subscribe("ESPnRLA"); // nhận liệu từ web esp MQTT.subscribe("ESPnRLB");// nhận liệu liệu web truyền xuống làm hàm truyendl MQTT.subscribe("ESPnRLC"); MQTT.subscribe("AUTO"); MQTT.subscribe("hengio"); pinMode(RELAYA,OUTPUT); pinMode(RELAYB,OUTPUT); pinMode(RELAYC,OUTPUT); pinMode(SWA,INPUT_PULLUP); pinMode(SWB,INPUT_PULLUP); pinMode(SWC,INPUT_PULLUP); digitalWrite(RELAYA,HIGH); digitalWrite(RELAYB,HIGH); digitalWrite(RELAYC,HIGH); dht.begin(); // Khởi động cảm biến n.begin();// dang nhap sever thoi gian giao thức UDP startTimers(); aplyCmd(); 57 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt } void loop() { MQTT.loop(); n.update(); // ESP gửi yêu cầu đến server để lấy thời gian lưu vào chip String (HH:MM:SS) timer.run(); // Chạy SimpleTimer if (AUTO ==1) autoControlPlantation(); } boolean debounce(int pin) // ham kiem tra trang thai nut nhan { boolean state; // trang thai hien tai boolean previousState;// trang thai truoc const int debounceDelay = 60; previousState = digitalRead(pin); for (int counter = 0; counter < debounceDelay; counter++) // doi nut nhan nha { delay(1); state = digitalRead(pin); if (state != previousState) { counter = 0; previousState = state; } 58 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt } return state; } void readLocal() { Hour=n.getHours();//lay thoi gian gio Minutes=n.getMinutes(); digiValue = debounce(SWA); if (!digiValue) { RELAYAStatus = !RELAYAStatus; aplyCmd(); } digiValue = debounce(SWB); if (!digiValue) { RELAYBStatus = !RELAYBStatus; aplyCmd(); } digiValue = debounce(SWC); if (!digiValue) { RELAYCStatus = !RELAYCStatus; aplyCmd(); } 59 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt } void readdoamG(void)// ham doc gia tri am dat { int i = 0; doamG = 0; for (i = 0; i < 10; i++) // { doamG += analogRead(DAD); //Đọc giá trị cảm biến độ ẩm đất delay(50); // Đợi đọc giá trị ADC } doamG = doamG / (i); doamG = map(doamG, 1023, 0, 0, 100); //Ít nước:0% ==> Nhiều nước 100% ham map doi tu 1023-0:0-100 } void getDhtData(void) { tempDHT = dht.readTemperature(); humDHT = dht.readHumidity(); if (isnan(humDHT) || isnan(tempDHT)) { Serial.println("Failed to read from DHT sensor!"); return; } } void printData(void) { // IN thông tin hình 60 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt Serial.print("\t Thoi gian hien tai tren he thong: "); Serial.println(n.getFormattedTime());//in thoi gian Serial.print("Do am: "); Serial.print(humDHT); Serial.print(" %\t"); Serial.print("Nhiet do: "); Serial.print(tempDHT); Serial.print(" *C\t"); Serial.print(" %\t"); Serial.print("Do am dat: "); Serial.print(doamG); Serial.println(" %"); Serial.print("\t gia tri SW A B C: "); Serial.print(digitalRead(SWA)); Serial.print(digitalRead(SWB)); Serial.print(digitalRead(SWC)); Serial.print("\t CHE DO LAM VIEC AUTO: "); Serial.print(AUTO); Serial.println("Thoi gian he thong"); Serial.print(Hour); Serial.print(Minutes); Serial.print("\t Thoi gian dong relay: "); Serial.print(HenGio); Serial.print(HenPhut); Serial.print("\t trang thai statusA B C: "); Serial.print(RELAYAStatus); Serial.print(RELAYBStatus); 61 Thiết kế hệ thống tưới tiêu tự động SV: Cường, Bình, Hạ, Đạt Serial.print(RELAYCStatus); } void autoControlPlantation(void) { //Cảm biến độ ẩm đất: //Ướt: 50%, không cần phải bơm thêm nước //Khô: 20%, cần phải bơm nước //Nhiệt độ môi trường //Lạnh: Dưới 26 độ C, cần bật đèn sưởi //Bình thường: từ 29 tat den quat //Nóng: 32 độ C, bat quat if (doamG < DRY_SOIL) digitalWrite(RELAYA, LOW); if(doamG > WET_SOIL ) digitalWrite(RELAYA, HIGH); if (tempDHT < COLD_TEMP) digitalWrite(RELAYB, LOW); if (tempDHT > TEMP) digitalWrite(RELAYB, HIGH); if(tempDHT>HOT_TEMP) digitalWrite(RELAYC,HIGH); if(tempDHT