Thiết kế hệ thống tưới cây tự động

66 1.2K 7
Thiết kế hệ thống tưới cây tự động

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÕNG ISO 9001:2008 THIẾT KẾ HỆ THỐNG TƢỚI CÂY TỰ ĐỘNG ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY NGÀNH ĐIỆN TỰ ĐỘNG CÔNG NGHIỆP HẢI PHÕNG - 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÕNG ISO 9001:2008 THIẾT KẾ HỆ THỐNG TƢỚI CÂY TỰ ĐỘNG ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY NGÀNH ĐIỆN TỰ ĐỘNG CÔNG NGHIỆP Sinh viên: Phạm Minh Anh Ngƣời hƣớng dẫn: GS TSKH Thân Ngọc Hoàn HẢI PHÕNG - 2016 Cộng hoà xã hội chủ nghĩa Việt Nam Độc lập – Tự Do – Hạnh Phúc o0o BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÕNG NHIỆM VỤ ĐỀ TÀI TỐT NGHIỆP Sinh viên : Phạm Minh Anh – MSV : 1412102108 Lớp : ĐC1802- Ngành Điện Tự Động Công Nghiệp Tên đề tài : Thiết kế hệ thống tƣới tự động NHIỆM VỤ ĐỀ TÀI Nội dung yêu cầu cần giải nhiệm vụ đề tài tốt nghiệp ( lý luận, thực tiễn, số liệu cần tính toán vẽ) Các số liệu cần thiết để thiết kế, tính toán Địa điểm thực tập tốt nghiệp : CÁC CÁN BỘ HƢỚNG DẪN ĐỀ TÀI TỐT NGHIỆP Ngƣời hƣớng dẫn thứ nhất: Họ tên : Học hàm, học vị : Cơ quan công tác : Nội dung hƣớng dẫn : Thân Ngọc Hoàn GS TSKH Trƣờng Đại học dân lập Hải Phòng Toàn đề tài Ngƣời hƣớng dẫn thứ hai: Họ tên : Học hàm, học vị : Cơ quan công tác : Nội dung hƣớng dẫn : Đề tài tốt nghiệp đƣợc giao ngày 31 tháng năm 2016 Yêu cầu phải hoàn thành xong trƣớc ngày 31 tháng 12 năm 2016 Đã nhận nhiệm vụ Đ.T.T.N Sinh viên Đã giao nhiệm vụ Đ.T.T.N Cán hƣớng dẫn Đ.T.T.N Phạm Minh Anh GS TSKH Thân Ngọc Hoàn Hải Phòng, ngày tháng năm 2016 HIỆU TRƢỞNG GS.TS.NGƢT TRẦN HỮU NGHỊ PHẦN NHẬN XÉT TÓM TẮT CỦA CÁN BỘ HƢỚNG DẪN 1.Tinh thần thái độ sinh viên trình làm đề tài tốt nghiệp Đánh giá chất lƣợng Đ.T.T.N ( so với nội dung yêu cầu đề nhiệm vụ Đ.T.T.N, mặt lý luận thực tiễn, tính toán giá trị sử dụng, chất lƣợng vẽ ) Cho điểm cán hƣớng dẫn ( Điểm ghi số chữ) Ngày……tháng…….năm 2016 Cán hƣớng dẫn (Ký ghi rõ họ tên) NHẬN XÉT ĐÁNH GIÁ CỦA NGƢỜI CHẤM PHẢN BIỆN ĐỀ TÀI TỐT NGHIỆP Đánh giá chất lƣợng đề tài tốt nghiệp mặt thu thập phân tích số liệu ban đầu, sở lý luận chọn phƣơng án tối ƣu, cách tính toán chất lƣợng thuyết minh vẽ, giá trị lý luận thực tiễn đề tài Cho điểm cán chấm phản biện ( Điểm ghi số chữ) Ngày……tháng…….năm 2016 Ngƣời chấm phản biện (Ký ghi rõ họ tên) MỤC LỤC LỜI NÓI ĐẦU CHƢƠNG GIỚI THIỆU TỔNG QUÁT VỀ TƢỚI TIÊU TỰ ĐỘNG TRONG NÔNG NGHIỆP 1.1 KHÁI QUÁT VỀ NHÀ TRỒNG THÔNG MINH………………… 1.2 THỰC TIỄN ÁP DỤNG CỦA ARDUINO VÀO ĐỀ TÀI 1.3 KHÁI NIỆM, NHIỆM VỤ CỦA HỆ THỐNG TƢỚI NƢỚC TỰ ĐỘNG 1.3.1 Tổng quan thiết kế hệ thống tƣới……………………… 1.3.2 Thiết kế hệ thống tƣới CHƢƠNG 2.CẤU TRÖC VÀ TÍNH NĂNG CỦA ARDUINO 2.1 GIỚI THIỆU CHUNG VỀ ARDUINO 2.2 BOARD ARDUINOMEGA 2560 2.3 ARDUINO LCD KEYPAD SHIELD 16 2.4 CẢM BIẾN NHIỆT ĐỘ, ĐỘ ẨM DHT 21 17 2.5 MODULE CẢM BIẾN MƢA (SENSRAIN) 18 2.6 GIỚI THIỆU VỀ MODULE RELAY 12VDC 20 2.7 MODULE THỜI GIAN THỰC 22 2.8 ĐỘNG CƠ MỘT CHIỀU 12VDC 23 2.9 NGUỒN TỔ ONG 12VDC 24 2.10 PHẦN MỀM MÔ PHỎNG PROTEUS 25 2.11 THƢ VIỆN ARDUINO TRONG PROTEUS 26 2.12 ARDUINO IDE VÀ LẬP TRÌNH CHO ARDUINO 27 CHƢƠNG 3.THIẾT KẾ, LẬP TRÌNH, LẮP ĐẶT MẠCH THỰC TẾ 29 3.1 GIỚI THIỆU CHUNG CỦA HỆ THỐNG 29 3.2 THIẾT KẾ MẠCH TRÊN PROTEUS 30 3.3 LẬP TRÌNH HIỂN THỊ LCD 31 3.3.1 Lập trình đo nhiệt độ, độ ẩm 31 3.3.2 Lập trình trạng thái cảm biến mƣa 34 3.3.3 Lập trình cho module DS3231(DS1307) 34 3.3.4 Lập trình hiển thị giá trị lên LCD 16.2 35 3.4 LẬP TRÌNH HỆ THỐNG CÀI ĐẶT THỜI GIAN, NHIỆT ĐỘ, ĐỘ ẨM, CẢM BIẾN MƢA ĐIỀU KHIỂN ĐÓNG CẮT ĐỘNG 37 3.4.1 Thiết kế hệ thống điều khiển đóng cắt động 37 3.4.2 Tổng thể mạch hoạt động cấp nguồn nạp Code 39 Kết luận……………………………………………………………………53 TÀI LIỆU THAM KHẢO 57 LỜI NÓI ĐẦU Ngày khoa học công nghệ ngày phát triển, vi điều khiển AVR vi điều khiển PIC ngày thông dụng hoàn thiện , nhƣng nói xuất củaArduino vào năm 2005 Italia mở hƣớng cho vi điều khiển Sự xuất Arduino hỗ trợ cho ngƣời nhiều lập trình thiết kế, ngƣời bắt đầu tìm tòi vi điều khiển mà nhiều kiến thức, hiểu biết sâu sắc vật lý điện tử Phần cứng thiết bị đƣợc tích hợp nhiều chức mã nguồn mở Ngôn ngữ lập trình Java lại vô dễ sử dụng tƣơng thích với ngôn ngữ C hệ thƣ viện phong phú đƣợc chia sẻ miễn phí Chính lý nhƣ nên Arduino dần phổ biến đƣợc phát triển ngày mạnh mẽ toàn giới Trên sở kiến thức học môn học : Tin học đại cƣơng , Điện tử tƣơng tự số… với hiểu biết thiết bị điện tử, em định thực đề tài :Thiết kế hệ thống tƣới tự động GS TSKH Thân Ngọc Hoàn hƣớng dẫn Đề tài gồm nội dung sau: Chƣơng Giới thiệu tổng quan tƣới tiêu tự động nông nghiệp Chƣơng Cấu trúc tĩnh arduino Chƣơng Thiết kế, lập trình, lắp đặt mạch thực tế lcd.createChar(5, mua); lcd.createChar(6, chuong); lcd.createChar(7, nang); dht.begin(); } // Vòn lặp hệ thống void loop() { timeRef = millis(); // Các hệ thống khởi tạo chương trình switch (state) { case MH_CHINH: showTime(); break; case TG_CAI_ON: showTime(); checkMOTime(); 43 break; case HT_TG_CAI: showMOTime(); break; case CAI_GIO: setMOHours(); if ( state != CAI_PHUT ) break; case CAI_PHUT: setMOMinutes(); break; } // Chờ khoảng 1s cho lần bấm nút // Nếu nút nhấn chạy nhả sau chuyển đổi trạng thái while ( (unsigned long)(millis() - timeRef) < 970 ) { if ( (button = lcd.button()) != KEYPAD_NONE ) { 44 while ( lcd.button() != KEYPAD_NONE ) ; transition(button); break; } } } // Các hệ thống hiển thị kích hoạt nút ấn //sau chuyển đổi trạng thái lập trình void transition(uint8_t trigger) { int value = digitalRead(rainSensor); float h = dht.readHumidity(); float t = dht.readTemperature(); switch (state) { case MH_CHINH: if ( trigger == KEYPAD_LEFT ) state = HT_TG_CAI; else if ( trigger == KEYPAD_RIGHT ) { set = true; state = TG_CAI_ON; } else if ( trigger == KEYPAD_SELECT ) state = CAI_GIO; break; case TG_CAI_ON: if ( trigger == KEYPAD_LEFT ) state = HT_TG_CAI; else if ( trigger == KEYPAD_RIGHT ) { set = false; state = MH_CHINH; } else if ( trigger == KEYPAD_SELECT ) state = CAI_GIO; 45 else if ( trigger == TIME_MET ) {if(value == ) {analogWrite(BUZZER_PIN, 220);delay(30000);analogWrite(BUZZER_PIN, 0);state = MH_CHINH;} else h30 || ){analogWrite(BUZZER_PIN, 220);delay(60000);analogWrite(BUZZER_PIN, 0);state = MH_CHINH;} else if (h>95) {analogWrite(BUZZER_PIN, 0);state = MH_CHINH;} else if(value ==0){analogWrite(BUZZER_PIN, 0);state = MH_CHINH;} } break; case HT_TG_CAI: if ( trigger == TIME_OUT ) { if ( !set ) state = MH_CHINH; else state = TG_CAI_ON; } break; case CAI_GIO: if ( trigger == KEYPAD_SELECT ) state = CAI_PHUT; else if ( trigger == TIME_OUT ) { if ( !set ) state = MH_CHINH; else state = TG_CAI_ON; } break; case CAI_PHUT: if ( trigger == KEYPAD_SELECT ) { set = true; state = TG_CAI_ON; } else if ( trigger == TIME_OUT ) { if ( !set ) state = MH_CHINH; 46 else state = TG_CAI_ON; } break; } } // Mảng hiển thị LCD void showTime() { now = RTC.now(); const char* dayName[] = { "CN", "T2", "T3", "T4", "T5", "T6", "T7" }; const char* monthName[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" }; lcd.clear(); lcd.print(String(dayName[now.dayOfTheWeek()]) + " " + (now.day() < 10 ? "0" : "") + now.day() + "." + monthName[now.month()-1] + "." + now.year()); lcd.setCursor(0,1); lcd.print((now.hour() < 10 ? "0" : "") + String(now.hour()) + ":" + (now.minute() < 10 ? "0" : "") + now.minute() + ":" + (now.second() < 10 ? "0" : "") + now.second() ); lcd.setCursor(8,1); if (set == ) lcd.write(6); // Đọc nhiệt độ độ ẩm khoảng 250ms // Đọc cảm biến lên tới 2s (do khả thay đổi giá trị cũ chậm) { 47 float h = dht.readHumidity(); float t = dht.readTemperature(); //.F int sensorReading = analogRead(A0); // kiểm tra giá trị sensor sai báo failed if (isnan(t) || isnan(h)) { lcd.setCursor(10,1); lcd.println("Failed !"); } else { lcd.setCursor(10,1); lcd.print(round(h)); lcd.print("%"); lcd.setCursor(13,1); lcd.print(round(t)); //lcd.println(" *C"); lcd.write(4); } } //cảm biến mưa { int value = digitalRead(rainSensor);//Đọc tín hiệu cảm biến mưa if (value == LOW) {transition(OFF);// Cảm biến mưa lcd.setCursor(15,0); lcd.write(5);; } else { lcd.setCursor(15,0); lcd.write(7); 48 } } } // Hiển thị thời gian cài đặt // THời gian hiển thị sau 3s quay lại hình void showMOTime() { lcd.clear(); lcd.print("Thoi gian cai"); lcd.setCursor(0,1); lcd.print(String("Gio: ") + ( MOHours < ? "0" : "" ) + MOHours + " Phut: " + ( MOMinutes < ? "0" : "" ) + MOMinutes); delay(3000); transition(TIME_OUT); } // Kiểm tra thời gian hẹn đáp ứng // Nếu đáp ứng n chuyển trạng thái void checkMOTime() { if ( now.hour() == MOHours && now.minute() == MOMinutes ) transition(TIME_MET); } //Cài thời gian báo động chạy 49 void setMOHours() { unsigned long timeRef; boolean timeOut = true; lcd.clear(); lcd.print("Cai thoi gian"); tmpHours = 8; timeRef = millis(); lcd.setCursor(0,1); lcd.print("cai gio: 8"); while ( (unsigned long)(millis() - timeRef) < 5000 ) { uint8_t button = lcd.button(); if ( button == KEYPAD_UP ) { tmpHours = tmpHours < 23 ? tmpHours + : tmpHours; lcd.setCursor(11,1); lcd.print(" "); lcd.setCursor(11,1); if ( tmpHours < 10 ) lcd.print(" "); lcd.print(tmpHours); timeRef = millis(); } else if ( button == KEYPAD_DOWN ) 50 { tmpHours = tmpHours > ? tmpHours - : tmpHours; lcd.setCursor(11,1); lcd.print(" "); lcd.setCursor(11,1); if ( tmpHours < 10 ) lcd.print(" "); lcd.print(tmpHours); timeRef = millis(); } else if ( button == KEYPAD_SELECT ) { while ( lcd.button() != KEYPAD_NONE ) ; timeOut = false; break; } delay(150); } if ( !timeOut ) transition(KEYPAD_SELECT); else transition(TIME_OUT); } // Quá trình cài thời gian lần để kết thúc hẹn // Nếu không nhận thời gian cài 5s sau hình // Nếu cài phút kết thúc bắt đầu hẹn 51 void setMOMinutes() { unsigned long timeRef; boolean timeOut = true; uint8_t tmpMinutes = 0; lcd.clear(); lcd.print("Cai thoi gian"); timeRef = millis(); lcd.setCursor(0,1); lcd.print("Cai phut: 0"); while ( (unsigned long)(millis() - timeRef) < 5000 ) { uint8_t button = lcd.button(); if ( button == KEYPAD_UP ) { tmpMinutes = tmpMinutes < 59 ? tmpMinutes + : tmpMinutes; lcd.setCursor(13,1); lcd.print(" "); lcd.setCursor(13,1); if ( tmpMinutes < 10 ) lcd.print(" "); lcd.print(tmpMinutes); timeRef = millis(); } else if ( button == KEYPAD_DOWN ) 52 { tmpMinutes = tmpMinutes > ? tmpMinutes - : tmpMinutes; lcd.setCursor(13,1); lcd.print(" "); lcd.setCursor(13,1); if ( tmpMinutes < 10 ) lcd.print(" "); lcd.print(tmpMinutes); timeRef = millis(); } else if ( button == KEYPAD_SELECT ) { while ( lcd.button() != KEYPAD_NONE ) ; timeOut = false; break; } delay(150); } if ( !timeOut ) { MOHours = tmpHours; MOMinutes = tmpMinutes; transition(KEYPAD_SELECT); } else transition(TIME_OUT); } 53 Kết lập trình đƣợc thể hình 3.13 bên phải thiết bị điều khiển động cơ, bên trái nguồn Hình 3.5 : Hình ảnh mạch sau nạp code cấp nguồn 54 KẾT LUẬN Qua thời gian làm đồ án tốt nghiệp với nội dung:Thiết kế hệ thông tƣới tự độngem thiết kế xây dựng đƣợc hệ thống tƣới tự động gồm: -Thiết kế đo nhiệt độ (oC), độ ẩm thời tiết dựa sở để điều khiển động hoạt động VD: thời tiết nhiệt độ 30 oC với điều kiện động hoạt động lâu việc tƣới nƣớc tăng lên đảm bảo cho trồng phát triển tốt gặp thời tiếp xấu -Thiết kế cảm biến mƣa tạo khả băng tiết kiệm lƣợng nhƣ nguyên liệu tƣới không cần thiết với khí hậu xấu Đảm bảo cho trồn nhƣ tạo thêm khả thông minh cho điều khiển -Thiết kế mảng thời gian thực bám sát thời gian thực tế đƣa cho ngƣời dùng thông tin thời gian, nhƣ tạo mảng thời gian điều khiển động tƣới tự động -Thiét kế LCD hiển thị đƣa thông tin LCD đƣa thông tin cho ngƣời sử dụng thông tin để đặt thời gian điều khiển hệ thống Trong trình thực hiện, lập trình cho mạch đo nhiệt độ, độ ẩm gặp phải nhiều khó khăn khác nhƣ: phải nghiên cứu nhiều tài liệu nƣớc ngoài, datasheets,… dẫn đến nhiều chỗ dịch sai, dịch nhầm dẫn đến áp dụng hàm, câu lệnh bị sai ý nghĩa, cấu trúc…, trình viết code gặp phải nhiều lỗi phát sinh mà không tìm nguyên nhân cần đầu tƣ thời gian để giải quyết, nhiều linh kiện khó để tìm đƣợc thƣ viện chuẩn để lập trình… Quá trình lắp mạch gặp phải khó khăn định nhiên em cố gắng giải đƣợc vấn đề phát sinh để hoàn thành đƣợc đề tài 55 Do thời gian có hạn việc thiết kế hệ thống em nhiều sai sót Hệ thống chƣa tối ƣu, việc điều khiển từ xa lấy phát thông tin chƣa thành công Phát triển liệu máy tính chƣa phát huy đƣợc hết tính tốt Em mong đƣợc ủng hộ giúp đỡ thầy giáo để đề tài chúng em thực đƣợc hoàn thiện có thêm nhiều cải tiến đáng kể ứng dụng tốt vào thực tiễn Hƣớng phát triển đề tài Đo thông báo đƣợc thông số môi trƣờng xung quanh - Đo đƣợc thông số độ ẩm môi trƣờng xung quanh - Đo thông số nhiệt độ thời tiết địa phƣơng - Thông báo trạng thái thời tiết - Đƣa thông tin đo lên thẻ nhớ liệu thông báo việc tƣới tiêu 2.Phát triển giao diện giám sát mô phần mềm C# - Phát triển lập trình qua cổng COM lập trình arduino - Thêm phần điều khiển động bơm, trực tiếp giao diện C# - Có thể up load file liệu nhận trục tiếp từ cổng COM lên giao diện 3.Đƣa đề tài phát triển rộng rãi vào thực tế - Trƣớc hết áp dụng mô hình trồng rau, cây, hoa cảnh hộ gia đình - Có thể phát triển khu sản xuất rau diện rộng -Trên thực tế điều khiển từ xa lấy thông tin qua máy tính 56 TÀI LIỆU THAM KHẢO Massimo Banzi (2009), Getting Started with Arduino, O’Reilly Media Michael Margollis and Nicholas Weldin (2009), Arduino Cookbook, O’Reilly Media GS Phạm Văn Ất (2009), Kĩ thuật lập trình C sở nâng cao, Nhà xuất Giao thông vân tải http://learning.grobotronics.com/2014/09/arduino-lesson-14-dc-motor-l293/ http://www.adafruit.com/ http://arduino.vn/ http://arduino.cc/ 57 ... 1.2: Hệ thống phun sƣơng tự động nhà trồng lan áp dụng arduino 1.3 KHÁI NIỆM, NHIỆM VỤ CỦA HỆ THỐNG TƢỚI NƢỚC TỰ ĐỘNG Thiết kế hệ thông tƣới tự động đòi hỏi phải có số thông tin vật tƣ thiết. .. ĐỀ TÀI Ứng dụng Arduino mô hình hệ thống tự động Sử dụng cảm biến đọ ẩm nhiệt độ kết nối với Arduino điều khiển động tạo hệ thống tƣới tiêu tự động Tất việc tự động diễn trình cài đặt sẵn qua... xử lí, cảm biến, điều khiển đóng cắt Vậy nên việc đặt toán thiết kế cần thiết 1.3.1.Tổng quan thiết kế hệ thống tƣới Để thiết kế hệ thống tƣới nƣớc cho trồng, cần quan tâm đến vấn đề sau: – Hình

Ngày đăng: 16/06/2017, 00:04

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan