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.
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 tốn vẽ) Các số liệu cần thiết để thiết kế, tính tố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 Tồ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 Hồ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 tố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 tố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 CƠ 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 hồ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à khơng có q 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ế SỔ TAY ARDUINO Góc dị lớn Để tăng độ nhậy cho đầu dị, Bạn dùng kính Fresnel, thiết kế cho loại đầu có cảm biến, góc dị lớn, có tác dụng ngăn tia tử ngoại Nguyên lý làm việc loại đầu dị PIR nhƣ hình sau: Các nguồn nhiệt (với người vật nguồn thân nhiệt) phát tia hồng ngoại, qua kính Fresnel, qua kích lọc lấy tia hồng ngoại, cho tiêu tụ cảm biến hồng ngoại gắn đầu dò, tạo điện áp khuếch đại với transistor FET Khi có vật nóng ngang qua, từ cảm biến cho xuất tín hiệu tín hiệu khuếch có biên độ đủ cao đưa vào mạch so áp để tác động vào thiết bị điều khiển hay báo động Sơ đồ chân cảm biến PIR Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO GND – kết nối với mặt đất OUT – kết nối đến chân digital Arduino 5V – kết nối với 5V Linh kiện thí nghiệm: 1x PIR Motion Sensor 1x Arduino UNO (hoặc bất kỳ) 1x LED loa Sơ đồ kết nối arduino cảm biến: Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO Lập trình điều khiển: int ledPin = 13; // chọn chân 13 báo hiệu LED int inputPin = 2; // chọn ngõ tín hiệu vào cho PIR int pirState = LOW; // Bắt đầu với khơng có báo động int val = 0; int pinSpeaker = 10; //chọn chân cho chng có đột nhập void setup() { pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT); pinMode(pinSpeaker, OUTPUT); Serial.begin(9600); } void loop() { val = digitalRead(inputPin); // đọc giá trị đầu vào Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO if (val == HIGH) // giá trị mức cao.(1) { digitalWrite(ledPin, HIGH); // LED On playTone(300, 160); // thời gian chuông kêu delay(150); if (pirState == LOW) { Serial.println("Motion detected!"); pirState = HIGH; } } else { digitalWrite(ledPin, LOW); playTone(0, 0); delay(300); if (pirState == HIGH) { Serial.println("Motion ended!"); pirState = LOW; } } } void playTone(long duration, int freq) { Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO duration *= 1000; int period = (1.0 / freq) * 1000000; long elapsed_time = 0; while (elapsed_time < duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period); } } 13 CẢM BIẾN KHOẢNG CÁCH ( SRF05) PHẦN NÀY BỔ XUNG Đối với robot, chế độ tự động, phải lấy thông tin môi trường xung quanh như: khoảng cách, nhiệt độ, ánh sáng Và tiến hành phân tích liệu đó, cuối định phù hợp Ví dụ robot tự tìm đường phải tính xem phía trước có vật cản hay không, tiến hành tới hay rẽ sang hướng khác Bài viết hướng dẫn bạn đọc hiểu sử dụng cảm biến khoảng cách phổ biến - SRF05 Thiết bị cần chuẩn bị Các bạn cần chuẩn bị thiết bị sau: x Arduino Uno R3 x cảm biến siêu âm SRF05 x breadboard để cắm mạch test Dây cắm loại Cảm biến siêu âm SRF05 Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO Sóng siêu âm (sonar) loại sóng cao tầng mà người khơng thể nghe thấy Tuy nhiên, ta thấy diện sóng siêu âm khắp nơi tự nhiên Ta có lồi động vật dơi, cá heo dùng sóng siêu âm để liên lạc với nhau, để săn mồi hay định vị khơng gian Việc tính tốn khoảng cách cịn phụ thuộc nhiều vào mơi trường truyền dẫn, ví dụ sóng âm truyền mơi trường nước hay kim loại nhanh nhiều so với sóng âm truyền mơi trường khơng khí Lƣu ý sóng âm khơng thể truyền đƣợc mơi trƣờng chân không Cảm biến siêu âm SRF05 hoạt động theo nguyên tắc trên, thiết bị gồm có loa - thu phát - với chân để kết nối với Arduino, tầm hoạt động tối đa cảm biến nằm khoảng 5m Chức chân nhƣ sau: Vcc: cấp nguồn cho cảm biến Trigger: kích hoạt q trình phát sóng âm Q trình kích hoạt chu kì điện cao / thấp diễn Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO Echo: bình thường trạng thái 0V, kích hoạt lên 5V có tín hiệu trả về, sau trở 0V Gnd: nối với cực âm mạch OUT: không sử dụng Ta tiến hành lắp đặt cảm biến khoảng cách SRF05 theo sơ đồ sau: Vcc: nối với nguồn 5V Adruino Gnd: nối với PIN GND Trigger: nối với PIN Echo: nối với PIN Lập trình điều khiển const int trig = 8; // chân trig HC-SR05 const int echo = 7; // chân echo HC-SR05 void setup() { Serial.begin(9600); // giao tiếp Serial với baudrate 9600 pinMode(trig,OUTPUT); // chân trig phát tín hiệu pinMode(echo,INPUT); // chân echo nhận tín hiệu } void loop() { unsigned long duration; // biến đo thời gian int distance; // biến lƣu khoảng cách /* Phát xung từ chân trig */ digitalWrite(trig,0); // tắt chân trig Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO delayMicroseconds(2); digitalWrite(trig,1); // phát xung từ chân trig delayMicroseconds(5); // xung có độ dài microSeconds digitalWrite(trig,0); // tắt chân trig /* Tính tốn thời gian */ // Đo độ rộng xung HIGH chân echo duration = pulseIn(echo,HIGH); // Tính khoảng cách đến vật distance = int(duration/2/29.1); /* In kết Serial Monitor */ Serial.print(distance); Serial.println("cm"); delay(200); } Giải tích code: Ta biết thời gian âm truyền khơng khí 20°C 344 m/s Bằng quy tắc tam suất đơn giản ta dễ dàng tính sóng âm di chuyển cm khơng khí 1000 / 344 * 100 ~= 29.1 Arduino cung cấp cho ta hàm pulseIn có tác dụng trả thời gian (tính milisec) kể từ hàm gọi có tín hiệu PIN định trước, hay trả không nhận tín hiệu / thời gian timeout Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO 14 CẢM BIẾN MÀU ( TCS3200) Module cảm biến màu TCS3200 module cảm biến phát đầy đủ màu sắc, bao gồm cảm biến màu TCS3200 với khả nhận biết màu RGB đèn LED trắng Các TCS3200 phát đo lường gần tất màu sắc nhìn thấy Ứng dụng bao gồm kiểm tra đọc dải, phân loại theo màu sắc, cảm biến ánh sáng xung quanh hiệu chuẩn, kết hợp màu sắc, vài ứng dụng TCS3200 có tách sóng quang, có lọc màu sắc lọc màu đỏ, xanh, màu xanh, khơng có lọc ( rõ ràng) Các lọc màu phân bố khắp mảng để loại bỏ sai lệch vị trí điểm màu Bên dao động tạo đầu sóng vng có tần số tỷ lệ thuận với cường độ màu sắc lựa chọn Thông số kỹ thuật: Điện áp cung cấp: (2.7V đến 5.5V) Chuyển đổi từ cường độ ánh sáng sang tần số với độ phân giải cao Có khả lập trình để nhận biết đầy đủ màu sắc Điện tiêu thụ thấp Giao tiếp trực tiếp với vi điều khiển S0 ~ S1: Dùng để lựa chọn tỉ lệ tần số đầu S2 ~ S3: Dùng để lựa chọn kiểu photodiode OUT Pin: Đầu tần số OE Pin: Tần số đầu cho phép hoạt động (hoạt động mức thấp) Hỗ trợ đèn LED bổ sung kiểm soát ánh sáng Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO Kích thước: 28.4x28.4mm Nguyên tắc nhận biết màu: TCS3200 có lọc màu, lựa chọn lọc màu cho phép nhận biết màu màu khác bị chặn Ví dụ, lựa chọn lọc màu đỏ, Chỉ có ánh sáng tới màu đỏ thông qua, màu xanh màu xanh ngăn chặn Vì nhận cường độ ánh sáng màu đỏ Tương tự vậy, lựa chọn lọc khác mà nhận ánh sáng màu xanh màu xanh Cách thiết lập màu sắc cho TCS3200: Tần số đầu TCS3200 khoảng 2HZ~500KHZ Tần số đầu có dạng xung vng với tần số khác mà màu sắc khác cường độ sáng khác Chúng ta lựa chọn tỉ lệ cừng độ sáng màu sắc theo bảng sau Trên module có chân LED EN chân điều khiển đèn LED để tắt bật Cách thiết lập tần số cho TCS3200: Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO Sơ đồ nối dây: Lập trình điều khiển: #define S0 #define S1 #define S2 #define S3 #define sensorOut int frequency = 0; void setup() { 10 pinMode(S0, OUTPUT); 11 pinMode(S1, OUTPUT); 12 pinMode(S2, OUTPUT); 13 pinMode(S3, OUTPUT); 14 pinMode(sensorOut, INPUT); 15 16 // Setting frequency-scaling to 20% 17 digitalWrite(S0,HIGH); 18 digitalWrite(S1,LOW); 19 20 Serial.begin(9600); 21 } 22 23 void loop() { 24 // Setting red filtered photodiodes to be read 25 digitalWrite(S2,LOW); 26 digitalWrite(S3,LOW); Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO 27 frequency = pulseIn(sensorOut, LOW); 28 Serial.print("R= ");//printing name 29 Serial.print(frequency);//printing RED color frequency 30 Serial.print(" "); 31 delay(100); 32 digitalWrite(S2,HIGH); 33 digitalWrite(S3,HIGH); 34 frequency = pulseIn(sensorOut, LOW); 35 Serial.print("G= ");//printing name 36 Serial.print(frequency);//printing RED color frequency 37 Serial.print(" "); 38 delay(100); 39 digitalWrite(S2,LOW); 40 digitalWrite(S3,HIGH); 41 frequency = pulseIn(sensorOut, LOW); 42 Serial.print("B= ");//printing name 43 Serial.print(frequency);//printing RED color frequency 44 Serial.println(" "); 45 delay(100); 46 } Sau upload chương trình kết nối xong lấy mẫu giấy màu đưa sát vào led màu trắng cảm biến, sau mở serial port lên xem giá trị trả màu Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO 15 CẢM BIẾN GIA TỐC ( MPU 6050) Cảm biến gia tốc MPU 6050 cảm biến có trục thiết kế cho ứng dụng nguồn ni thấp, giá rẻ, có hiệu xuất cao, ứng dụng điện thoại máy tình bảng, thiết bị di động khác MPU-6000/6050 gồm có trục quay hồi chuyển (gyroscope) trục gia tốc (accelerometer ) thiết kế nhân chip Digital Motion Processor (DMP) sử dụng thuật tốn MotionFusion thuật tốn MotionFusion có khả giao tiếp với số cảm biến khác qua chân I2C phụ trợ (auxiliary master I2C bus), giúp cho thiết bị trang bị đầy đủ loại cảm biến hệ thống điều khiển Board MPU6050 thiết kế với IC nguồn 3.3V trện board trở kéo bus I2C Thông số kĩ thuật cảm biến gia tốc MPU 6050 : - Điện áp cấp: 3~5v - góc quay hồi chuyển với độ nhạy lên đến 131 LSBs/sps đầy đủ độ ±250, ±500, ±1000, and ±2000dps - góc gia tốc kế với đầy đủ khả lập trình với ±2g, ±4g, ±8g and ±16g - Kích thước: 14 x 21mm Sơ đồ nối dậy: Web: tdhshop.com.vn - Chuyên Kit TỰ HỌC ARDUINO SỔ TAY ARDUINO Lập trình điều khiển: Trƣớc hết ta phải cài thƣ viện MPU6050 I2C vào arduino IDE #include const int MPU_addr=0x68; // I2C address of the MPU-6050 int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; void setup(){ Wire.begin(); Wire.beginTransmission(MPU_addr); Wire.write(0x6B); // PWR_MGMT_1 register Wire.write(0); // set to zero (wakes up the MPU-6050) Wire.endTransmission(true); Serial.begin(9600); } void loop(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers AcX=Wire.read()