1. Trang chủ
  2. » Nông - Lâm - Ngư

luận văn nghiên cứu tìm hiểu và thi công tủ trồng rau trong căn hộ

134 123 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 134
Dung lượng 4,78 MB

Nội dung

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chun ngành: Hệ đào tạo: Khóa: Đào Xn Sang Ngơ Đức Phú Điện tử cơng nghiệp Đại học quy 2015 MSSV: 15141261 MSSV: 15141244 Mã ngành: 41 Mã hệ: Lớp: 15141DT1A 15141DT1A I TÊN ĐỀ TÀI: NGHIÊN CỨU, TÌM HIỂU VÀ THI CƠNG TỦ TRỒNG RAU CHO CĂN HỘ II NHIỆM VỤ Các số liệu ban đầu: - Vi điều khiển NodeMCU ESP8266 ngôn ngữ lập trình - Tài liệu NodeMCU ESP8266, Firebase - Thư viện LCD, Arduino, ESP 8266, Firebase Nội dung thực hiện:  Nội dung 1: Tìm hiểu nghiên cứu module Arduino, mod ule ESP8266, module RS485, cảm biến DHT11, cảm biến ánh sáng, cảm biến độ ẩm đất  Nội dung 2: Giao tiếp Module ESP 8266 với cảm biến  Nội dung 3: Điều khiển thiết bị theo cảm biến thời gian thực  Nội dung 4: Hiển thị thông tin web Firebase  Nội dung 5: Thiết kế, lập trình giám sát qua điện thoại  Nội dung 6: Thiết kế mơ hình sản phẩm  Nội dung 7: Đánh giá kết thực III NGÀY GIAO NHIỆM VỤ: 26/08/2019 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 25/12/2019 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Trương Ngọc Anh CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH i TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o Tp HCM, ngày tháng 07 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Đào Xuân Sang Lớp: 15141DT1A Họ tên sinh viên 2: Ngô Đức Phú Lớp: 15141DT1A MSSV: 15141261 MSSV: 15141244 Tên đề tài: Nghiên cứu, tìm hiểu thi công tủ trồng rau cho hộ Xác Tuần/ngày Nội dung cần thực nhận GVHD Tuần (26/8 – 31/8) Tuần (02/9 – 07/9) Gặp GV môn để nghe phổ biến yêu cầu làm đồ án, nhận giấy giới thiệu làm đồ án Gặp GVHD để chọn đề tài GVHD tiến hành xét duyệt đề tài viết đề cương nộp lại Tham khảo mơ hình trồng rau tủ kính, Tuần (09/09 – 14/09) thơng tin đặc tính, nhiệt độ, độ ẩm loại rau muốn trồng - Tìm hiểu cách kết nối ,lập trình với Tuần (16/09 – 21/09) module cảm biến - Kết nối module thực tế để xem hoạt động ii Tuần (23/09 – 28/09) Tuần (29/9– 5/10) Tuần (30/09– 05/10) Tuần 8,9,10,11,12 (07/10–12/10 ) Tuần 13 (11/11– 16/11) Tuần 14 (18/11 – 23/11) Tuần 15, 16 (25/11 – 07/12) - Tìm hiểu ESP8266, cách giao tiếp module ESP8266 -Thiết kế sơ đồ khối, giải thích chức - Tính tốn lựa chọn linh kiện cho khối -Thiết kế sơ đồ nguyên lý,giải thích nguyên lý hoạt động - Tìm hiểu app android cách viết ứng dụng -Thi công mạch, xây dựng mơ hình - Viết app android - Kiểm tra mơ hình, chạy thử sửa lỗi - Viết báo cáo -Hồn thiện mơ hình, chạy thử sửa lỗi - Viết báo cáo -Hoàn thiện, chỉnh sửa báo cáo gửi cho GVHD để xem xét góp ý lần cuối trước in báo cáo Tuần 17, 18, 19 (09/12 – 25/12) -Nộp báo cáo làm Slide báo cáo GV HƯỚNG DẪN (Ký ghi rõ họ tên) iii LỜI CAM ĐOAN Đề tài tự thực dựa vào số tài liệu khơng chép từ tài liệu hay cơng trình có trước Nếu có gian lận xin chịu trách nhiệm nội dung đồ án Người thực Đào Xuân Sang – Ngô Đức Phú iv LỜI CẢM ƠN  Lời cho phép nhóm chúng em gửi lời cảm ơn đến quý thầy cô trường Đại Học Sư Phạm Kỹ Thuật dạy dỗ suốt năm tháng đại học Trong phải kể đến quý thầy cô khoa Điện- Điện Tử truyền đạt kiến thức chuyên môn lẫn kĩ để giúp nhóm có chuẩn bị chu đáo để bước khỏi ghế nhà trường không bị bỡ ngỡ Những kiến thức nhóm đúc kết lại thành đồ án cuối cùng, đồ án tốt nghiệp tay tạo Nó bàn đạp để chúng em bước cánh cửa lớn Đặc biệt, nhóm chúng em xin gửi lời cảm ơn sâu sắc đến thầy Trương Ngọc Anh giúp đỡ chúng em trình lựa chọn đề tài Trong trình thực có nhiều điều khó khăn, thiếu sót khơng thống nhất, nhờ đóng góp ý kiến thầy, chúng em hiểu cách tìm hiểu kiến thức Nhóm cảm ơn đến bạn bè, anh chị có chia sẻ, trao đổi kiến thức, kinh nghiệm thực tế người cho nhóm gặp khó khăn Và cuối lời cảm ơn đến bậc phụ huynh, người thân gia đình Nhờ quan tâm, ủng hộ lời động viên người giúp nhóm hồn thành xong chương trình đại học để có kiến thức vào đời Xin chân thành cám ơn! Người thực đề tài Đào Xuân Sang – Ngô Đức Phú v MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ii LỜI CAM ĐOAN iv LỜI CẢM ƠN v DANH MỤC HÌNH x DANH MỤC BẢNG xiv TÓM TẮT xv CHƯƠNG 1: TỔNG QUAN 1 ĐẶT VẤN ĐỀ 1 MỤC TIÊU Đ Ề TÀI NỘI DUNG T HỰC HIỆN GIỚI HẠN CỦA ĐỀ TÀI BỐ CỤC ĐỒ ÁN CHƯƠNG 2: CƠ SỞ LÝ THUYẾT GIỚI THIỆU VỀ RAU THƠM VÀ QUY TRÌNH TRỒNG RAU TỰ ĐỘNG 2.1.1 Các loại rau thơm 2.1.2 Mơ tả quy trình chăm sóc tự động 2 QUY TRÌNH HO ẠT ĐỘNG CỦA HỆ THỐNG GIỚI THIỆU VỀ PHẦN CỨNG 2.3.1 Giới thiệu module ESP8266 2.3.2 Module UART TTL RS-485 TO V2 11 2.3.3 Module LCD 2004-20X4 12 2.3.4 Module I2C 13 2.3.5 Cảm biến độ ẩm đất 14 2.3.6 Cảm biến nhiệt độ - độ ẩm (DHT11) 15 2.3.7 Cảm biến ánh sáng 16 2.3.8 Module thời gian thực DS1307 17 vi Bơm mini 12V 19 2.3.9 2.3.10 Nút nhấn 19 2.3.11 Module relay 20 2.3.12 Đèn led chiếu sáng 21 2.3.13 Mạch giảm áp LM2596 22 2.3.14 Quạt tản nhiệt 22 CHUẨN GIAO TI ẾP UART 23 CHUẨN GIAO TI ẾP I2C 24 CHU ẨN TRUYỀN THÔNG RS -4 85 25 GIAO TH ỨC MODBUS 29 2.7.1 Tìm hiểu modbus RTU: 29 2.7.2 Cách giao tiếp modbus RTU: 31 GIỚI THIỆU FIREBASE 32 2.8.1 Firebase Realtime Database 33 2.8.2 Xác thực người dùng 33 CHƯƠNG TÍNH TOÁN VÀ THIẾT KẾ 35 3.1 GIỚI THIỆU 35 TÍNH TỐN VÀ THIẾT KẾ PHẦN CỨNG 35 3.2.1 Thiết kế sơ đồ khối hệ thống 35 3.2.2 Chức khối 36 3.2.2.1 Khối nguồn 37 3.2.2.2 Khối Master 37 3.2.2.3 Khối Slave 37 3.2.2.4 Khối liệu database 38 3.2.3 Tính toán thiết kế mạch 38 3.2.3.1 Tính tốn cho khối Master 38 a Khối xử lý trung tâm (tủ điều khiển-master): 38 b Khối nút nhấn 39 c Khối hiển thị: 41 d Khối RS-485: 42 e Khối realtime 43 vii f Sơ đồ nguyên lý mạch Master 44 3.2.2.2 Tính tốn cho khối Slave: 45 a Khối điều khiển trung tâm (tủ điều khiển - slave) 45 b Các module cảm biến 45 c Sơ đồ nguyên lý mạch Slave 48 3.2.2.3 Tính tốn chọn khối nguồn 49 a Khối Master 49 b Khối Slave 50 3.2.3 Sơ đồ nguyên lý toàn mạch 50 CHƯƠNG 4: THI CÔNG HỆ THỐNG 52 GIỚI THIỆU 52 THI CÔNG H Ệ THỐN G 52 4.2.1 Thi công mạch master 52 4.2.2 Thi công mạch Slave 53 4.2.3 Thi công mạch nút nhấn 55 4.2.4 Lắp ráp kiểm tra 56 TIẾN HÀNH THI CƠNG VÀ L ẮP RÁP HỆ THỐNG HỒN CHỈNH 57 LƯU ĐỒ GIẢI THUẬT 58 4.3.1 Lưu đồ chương trình điều khiển cho mạch Master 58 4.3.2 Lưu đồ nhận liệu từ slave 59 4.3.3 Lưu đồ truyền nhận liệu đưa lên Firebase 60 4.4.4 Lưu đồ chương trình chế độ hiển thị 61 4.4.5 Lưu đồ chế độ điều khiển nút nhấn hẹn tưới nước 61 4.4.6 Lưu đồ chương trình chế độ auto 62 4.4.7 Lưu đồ điều khiển slave 63 GIỚI THIỆU VỀ PHẦN MỀM LẬP TRÌNH 64 4.5.1 Giới thiệu Arduino IDE 64 4.5.2 Giới thiệu App Inventor 70 4.5.3 Tiến hành thiết kế giao diện 75 CHƯƠNG 5: KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁ 84 viii KẾT QUẢ ĐẠT ĐƯỢC 84 5.2 KẾT QUẢ THỬ NGHIỆM HỆ THỐNG: 85 5.2.1 Quá trình chạy ứng dụng điện thoại hiển thị web 85 5.2.2 Quá trình vận hành phần cứng hệ thống 86 NHẬN XÉT - ĐÁNH GIÁ 91 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 93 6.1 KẾT LUẬN 93 HƯỚNG PHÁT TRIỂN 93 TÀI LIỆU THAM KHẢO 94 PHỤ LỤC 95 ix DANH MỤC HÌNH Hình Sơ đồ chân ESP8266MOD Hình 2 Sơ đồ chân Board ESP-12E Node MCU Hình Sơ đồ chân module UART TTL RS4-85 V2 11 Hình Hình ảnh mặt trước LCD 20x4 12 Hình Hình ảnh module I2C 14 Hình Cảm biến độ ẩm đất 15 Hình Cảm biến DHT11 16 Hình Cảm biến ánh sáng 17 Hình Sơ đồ chân Realtime 17 Hình 10 Module Realtime 18 Hình 11 Sơ đồ nguyên lý Realtime 18 Hình 12 Bơm 12 VDC 19 Hình 13 Nút nhấn chân 19 Hình 14 Module Relay Mức Cao 20 Hình 15 Module Relay mức thấp 20 Hình 16 Đèn led nông nghiệp 21 Hình 17 Mạch giảm áp LM2596 22 Hình 18 Quạt 12V 22 Hình 19 Hệ thống truyền liệu bất đồng 23 Hình 20 Sơ đồ truyền I2C 24 Hình 21 Tín hiệu dây hệ thống cân 26 Hình 22 Cặp dây xoắn RS485 27 Hình 23 Cách xác định áp kiểu chung 27 Hình 24 Truyền RS485 tham chiếu với đất 28 Hình 25 Phân cực cho đường truyền RS485 29 Hình 26 Sơ đồ frame truyền Modbus RTU 30 Hình 27 Giao diện FireBase 33 Hình Sơ đồ khối hệ thống 36 x PHỤ LỤC if (soil1 != s1) { Firebase.setFloat ("Cabinet1/Moisture", soil1); s1 = soil1; } if (lumen1 != lu1) { Firebase.setInt ("Cabinet1/Light", lumen1); lu1 = lumen1; } // gui du lieu tu2 len fifebase if (temp2 != t2) { Firebase.setFloat ("Cabinet2/Temperature", temp2); t2 = temp2; } if (humd2 != h2) { Firebase.setFloat ("Cabinet2/Humidity", humd2); h2 = humd2; } if (soil2 != s2) { Firebase.setFloat ("Cabinet2/Moisture", soil2); s2 = soil2; } if (lumen2 != lu2) { Firebase.setInt ("Cabinet2/Light", lumen2); lu2 = lumen2; } // gui du lieu tu if (temp3 != t3) { Firebase.setFloat ("Cabinet3/Temperature", temp3); t3 = temp3; } if (humd3 != h3) { Firebase.setFloat ("Cabinet3/Humidity", humd3); h3 = humd3; } if (soil3 != s3) { Firebase.setFloat ("Cabinet3/Moisture", soil3); s3 = soil3; } if (lumen3 != lu3) { Firebase.setInt ("Cabinet3/Light", lumen3); lu3 = lumen3; } } void getdata_slave() { static uint32_t _time; uint32_t _timeout = millis(); if(millis() - _time > 500) { // thoi gian request lai BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 105 PHỤ LỤC if(Request_Read_Data_Slave(/*address cua slave can request*/2, /*data sensor*/&SensorData_Read, /*tim out*/200) == REQUEST_SLAVE_STATUS_OK) { printdata(); temp1=SensorData_Read.temp; humd1=SensorData_Read.humd; lumen1=SensorData_Read.lumen; soil1=SensorData_Read.soil; } else { /*thiet bi khong phan hoi*/ Serial1.printf("thiet bi khong phan hoi"); } if(Request_Read_Data_Slave(/*address cua slave can request*/3, /*data sensor*/&SensorData_Read, /*tim out*/200) == REQUEST_SLAVE_STATUS_OK) { printdata(); temp2=SensorData_Read.temp; humd2=SensorData_Read.humd; lumen2=SensorData_Read.lumen; soil2=SensorData_Read.soil; } else { /*thiet bi khong phan hoi*/ Serial1.printf("thiet bi khong phan hoi"); } if(Request_Read_Data_Slave(/*address cua slave can request*/4, /*data sensor*/&SensorData_Read, /*tim out*/200) == REQUEST_SLAVE_STATUS_OK) { printdata(); temp3=SensorData_Read.temp; humd3=SensorData_Read.humd; lumen3=SensorData_Read.lumen; soil3=SensorData_Read.soil; } else { /*thiet bi khong phan hoi*/ Serial1.printf("thiet bi khong phan hoi"); } _time = millis(); } guilenfirebase(); } // -void hienthi_lcd() { lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(0, 1); lcd.print("He thong IOT"); lcd.setCursor(0, 2); lcd.print("Trong cay thong minh"); delay(1000); lcd.clear(); lcd.setCursor(0, 3); lcd.print("Vui long cho "); delay(3000); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 106 PHỤ LỤC lcd.clear(); lcd.setCursor(5,0); lcd.print("Tu 1"); lcd.setCursor(5,1); lcd.print("Tu 2"); lcd.setCursor(5,2); lcd.print("Tu 3"); } void showDataLCD(int nd,int da,int dad,int as) { lcd.setCursor(0,0); lcd.print("anh sang :"); if(as==1) lcd.print("toi "); else lcd.print("sang"); lcd.setCursor(0,1); lcd.print("nhiet :");lcd.print(nd); lcd.print("*C"); lcd.setCursor(0,2); lcd.print("do am kk :");lcd.print(da); lcd.print("%"); lcd.setCursor(0,3); lcd.print("do am dat:");lcd.print(dad); lcd.print("%");lcd.print(" "); } void printdata() { Serial1.printf("temp: %.3f\r\n", SensorData_Read.temp); Serial1.printf("humd: %.3f\r\n", SensorData_Read.humd); Serial1.printf("lumen: %3u\r\n", SensorData_Read.lumen); Serial1.printf("soil: %.3f\r\n", SensorData_Read.soil); } byte getButton() { int value =0; byte button=0; value= analogRead(A0); if ( value > && value < 15) { button= 1; } else if ( value >160 && value 250 && value < 300) { button= 3; } else if ( value > 390 && value < 400) { button= 4; } else if ( value >482 && value < 500) { button= 5; } else if ( value >550 && value < 600) { button= 6; } else if ( value >610 && value 680 && value < 700) { button= 8; } else button=0; return button; } void che_do_hien_thi() { switch(dem) { case 1: if(tt==1 ) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 107 PHỤ LỤC { lcd.setCursor(1,0); lcd.print("che dieu khien 1"); lcd.setCursor(4,1); lcd.print("TT Bom :"); lcd.setCursor(4,2); lcd.print("TT Quat:"); lcd.setCursor(4,3); lcd.print("TT Den :"); light_1_control(2); pump_control(2); fan_control(2); } else if(tt==2) { lcd.setCursor(16, 0); lcd.print("Tu 1"); showDataLCD(temp1,humd1,soil1,lumen1); } else if(tt==3 ) { lcd.setCursor(16, 0); lcd.print("Tu 1"); lcd.setCursor(0,0); lcd.print("Pump:"); lcd.setCursor(0,1); lcd.print("Time_on:"); HienThiSo(Giohen1); lcd.print(":"); HienThiSo(Phuthen1); lcd.print(":"); HienThiSo(Giayhen1); lcd.setCursor(0,3); lcd.print("Time_off:"); HienThiSo(Giohen2); lcd.print(":"); HienThiSo(Phuthen2); lcd.print(":"); HienThiSo(Giayhen2); HienThiThoiGian(); Watering_timer_control(2); Watering_timer_control(3); Watering_timer_control(4); phim_mod(); phim_up(); phim_dw(); } else { lcd.setCursor(5,0); lcd.print("Control 1"); lcd.setCursor(5,1); lcd.print("Auto 1"); lcd.setCursor(0,2); lcd.print("Auto Watering Mode 1"); } break; case : if(tt==1 ) { lcd.setCursor(1,0); lcd.setCursor(4,1); lcd.setCursor(4,2); lcd.setCursor(4,3); light_1_control(3); pump_control(3); fan_control(3); } else if(tt==2) lcd.print("che dieu khien 2"); lcd.print("TT Bom :"); lcd.print("TT Quat:"); lcd.print("TT Den :"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 108 PHỤ LỤC { lcd.setCursor(16, 0); lcd.print("Tu 2"); showDataLCD(temp2,humd2,soil2,lumen2); } else if(tt==3) { lcd.setCursor(16, 0); lcd.print("Tu 2"); lcd.setCursor(0,0); lcd.print("Pump:"); lcd.setCursor(0,1); lcd.print("Time_on:"); HienThiSo(Giohen1); lcd.print(":"); HienThiSo(Phuthen1); lcd.print(":"); HienThiSo(Giayhen1); lcd.setCursor(0,3); lcd.print("Time_off:"); HienThiSo(Giohen2); lcd.print(":"); HienThiSo(Phuthen2); lcd.print(":"); HienThiSo(Giayhen2); HienThiThoiGian(); Watering_timer_control(2); Watering_timer_control(3); Watering_timer_control(4); phim_mod(); phim_up(); phim_dw(); } else { lcd.setCursor(5,0); lcd.print("Control 2"); lcd.setCursor(5,1); lcd.print("Auto 2"); lcd.setCursor(0,2); lcd.print("Auto Watering Mode 2"); } break; case 3: if(tt==1 ) { lcd.setCursor(1,0); lcd.setCursor(4,1); lcd.setCursor(4,2); lcd.setCursor(4,3); light_1_control(4); pump_control(4); fan_control(4); lcd.print("che dieu khien 3"); lcd.print("TT Bom :"); lcd.print("TT Quat:"); lcd.print("TT Den :"); } else if(tt==2 ) { lcd.setCursor(16, 0); lcd.print("Tu 3"); showDataLCD(temp3,humd3,soil3,lumen3); } else if(tt==3 ) { lcd.setCursor(16, 0); lcd.print("Tu 3"); lcd.setCursor(0,0); lcd.print("Pump:"); lcd.setCursor(0,1); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 109 PHỤ LỤC lcd.print("Time_on:"); HienThiSo(Giohen1); lcd.print(":"); HienThiSo(Phuthen1); lcd.print(":"); HienThiSo(Giayhen1); lcd.setCursor(0,3); lcd.print("Time_off:"); HienThiSo(Giohen2); lcd.print(":"); HienThiSo(Phuthen2); lcd.print(":"); HienThiSo(Giayhen2); HienThiThoiGian(); Watering_timer_control(2); Watering_timer_control(3); Watering_timer_control(4); phim_mod(); phim_up(); phim_dw(); } else { lcd.setCursor(5,0); lcd.print("Control 3"); lcd.setCursor(5,1); lcd.print("Auto 3"); lcd.setCursor(0,2); lcd.print("Auto Watering Mode 3"); } break; default: lcd.setCursor(5,0); lcd.print("Tu 1"); lcd.setCursor(5,1); lcd.print("Tu 2"); lcd.setCursor(5,2); lcd.print("Tu 3"); break; } } void light_button() { if(btn==3) { static uint32_t _time; if(millis() - _time > 300) { if(btn==3) { lcd.clear(); b1++; if(b1>2) b1=1; Serial.println(b1); while(btn!=3); } } } } void pump_button() { if(btn==4) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 110 PHỤ LỤC static uint32_t _time; if(millis() - _time > 300) { if(btn==4) { lcd.clear(); b2++; if(b2>2) b2=1; while(btn!=4); } } } } void fan_button() { if(btn==5) { static uint32_t _time; if(millis() - _time > 300) { if(btn==5) { lcd.clear(); b3++; if(b3>2) b3=1; while(btn!=5); } } } } // void phim_menu() { if(btn==1) { static uint32_t _time; if(millis() - _time > 300) { if(btn==1) { dem++; lcd.clear(); Serial.println(dem); if(dem>3) dem=0; } _time=millis(); } } } void phim_dk() { if(btn==2) { static uint32_t _time; if(millis() - _time > 300) { if(btn==2) { tt++; lcd.clear(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 111 PHỤ LỤC if(tt>4) tt=1; } _time=millis(); } } } // void phim_mod() { if(btn==6) // phim menu { static uint32_t _time; if(millis() - _time > 300) { if(btn==6) { chedo++; if(chedo>6) chedo=0; Serial.print(chedo); } } } if(chedo==1) { lcd.setCursor(8,1); lcd.print(" "); delay(300); lcd.setCursor(8,1); HienThiSo(Giohen1); } else if (chedo==2) { lcd.setCursor(11,1); lcd.print(" "); delay(300); lcd.setCursor(11,1); HienThiSo(Phuthen1); } else if (chedo==3) { lcd.setCursor(14,1); lcd.print(" "); delay(300); lcd.setCursor(14,1); HienThiSo(Giayhen1); } else if (chedo==4) { lcd.setCursor(9,3); lcd.print(" "); delay(300); lcd.setCursor(9,3); HienThiSo(Giohen2); } else if (chedo==5) { lcd.setCursor(12,3); lcd.print(" "); delay(300); lcd.setCursor(12,3); HienThiSo(Phuthen2); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 112 PHỤ LỤC } else if (chedo==6) { lcd.setCursor(15,3); lcd.print(" "); delay(300); lcd.setCursor(15,3); HienThiSo(Giayhen2); } else { lcd.setCursor(0,1); lcd.print("Time_on:"); HienThiSo(Giohen1); lcd.print(":"); HienThiSo(Phuthen1); lcd.print(":"); HienThiSo(Giayhen1); lcd.setCursor(0,3); lcd.print("Time_off:"); HienThiSo(Giohen2); lcd.print(":"); HienThiSo(Phuthen2); lcd.print(":"); HienThiSo(Giayhen2); } } void phim_up() { if(btn==7)//neu nhan nut nhan { delay(200); if(btn==7) { switch (chedo) { case 1: if(Giohen1==23) Giohen1 =0; else Giohen1++; break; case 2: if(Phuthen1==59) Phuthen1=0; else Phuthen1++; break; case 3: if(Giayhen1==59) Giayhen1=0; else Giayhen1++; break; case 4: if(Giohen2==23) Giohen2 =0; else Giohen2++; break; case 5: if(Phuthen2==59) Phuthen2=0; else Phuthen2++; break; case 6: if(Giayhen2==59) Giayhen2=0; else Giayhen2++; break; } } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 113 PHỤ LỤC } void phim_dw() { if(btn==8)//neu nhan nut nhan { delay(200); if(btn==8) { switch (chedo) { case 1: if(Giohen1==0) Giohen1 =23; else Giohen1 ; break; case 2: if(Phuthen1==0) Phuthen1=59; else Phuthen1 ; break; case 3: if(Giayhen1==0) Giayhen1=59; else Giayhen1 ; break; case 4: if(Giohen2==0) Giohen2 =23; else Giohen2 ; break; case 5: if(Phuthen2==0) Phuthen2=59; else Phuthen2 ; break; case 6: if(Giayhen2==0) Giayhen2=59; else Giayhen2 ; break; } } } } void HienThiSo(signed int SoDem) { signed char Ngan, Tram, Chuc, DonVi; signed int Tam = SoDem; //1234 DonVi = SoDem%10; SoDem = SoDem/10; Chuc = SoDem%10; SoDem = SoDem/10; Tram = SoDem%10; SoDem = SoDem/10; Ngan = SoDem%10; if(TamBegin(); dht.begin(); LIGHT_Init(); PUMP_Init(); FAN_Init(); LIGHT_OFF(); FAN_OFF(); PUMP_OFF(); Serial1.begin(9600); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 116 PHỤ LỤC } void loop() { static uint32_t _time; if(millis() - _time > 500) { SensorData.temp = dht.readTemperature(); SensorData.humd = dht.readHumidity(); SensorData.soil = map(analogRead(SOIL), 1023, 0, 0, 100); SensorData.light = digitalRead(LUMEN); temp1= SensorData.temp; humd1= SensorData.humd ; soil1= SensorData.soil; lumen1= SensorData.light; _time = millis(); } if(modbus->Modbus_available()) //neu Address nhan dung Address set ban dau thi dung { Serial1.print("\r\n\r\n"); Serial1.print("***Modbus data****\r\n"); Serial1.print("Funtion: "); Serial1.println(modbus->ModbusGetFuntion()); Serial1.print("data size: "); Serial1.println(modbus->ModbusGetSizeData()); Serial1.print("data: "); uint8_t *data = modbus->ModbusGetData(); for(int i = 0; i < modbus->ModbusGetSizeData(); i++) { Serial1.print(data[i]); Serial1.print(" "); } Serial1.println("\r\n"); cmd_funtion_modbus = (CMD_FUNTION_MODBUS) modbus>ModbusGetFuntion(); switch (cmd_funtion_modbus) { case CMD_READ_DATA_SENSOR: ReturnDataSensorToMaster(); break; case CMD_STATE_LIGHT_1: ControlLight1(); break; case CMD_STATE_PUMP: ControlPump(); break; case CMD_STATE_FAN: ControlFan(); break; case CMD_WATERING_TIMER: ControlPump(); break; case CMD_STATE_LIGHT1_AUTO:// LIGHT2, LIGHT3 ControlLight1(); break; case CMD_STATE_FAN1_AUTO: // FAN2, FAN3 ControlFan(); break; default: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 117 PHỤ LỤC break; } } } void ControlLight1() { uint8_t *data = modbus->ModbusGetData(); if(data[0] == 0) { LIGHT_OFF(); } else if(data[0] == 1) { LIGHT_ON(); } ModbusData.address = Address_Master; ModbusData.funtion = modbus->ModbusGetFuntion(); ModbusData.size = 0; modbus->ModbusSendDataPaket(ModbusData); } void ControlPump() { uint8_t *data = modbus->ModbusGetData(); if(data[0] == 0) { PUMP_OFF(); } else if(data[0] == 1) { PUMP_ON(); } ModbusData.address = Address_Master; ModbusData.funtion = modbus->ModbusGetFuntion(); ModbusData.size = 0; modbus->ModbusSendDataPaket(ModbusData); } void ControlFan() { uint8_t *data = modbus->ModbusGetData(); if(data[0] ==0 ) { FAN_OFF(); } else if(data[0] == 1) { FAN_ON(); } ModbusData.address = Address_Master; ModbusData.funtion = modbus->ModbusGetFuntion(); ModbusData.size = 0; modbus->ModbusSendDataPaket(ModbusData); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 118 PHỤ LỤC // -void ReturnDataSensorToMaster() { ModbusData.address = Address_Master; ModbusData.funtion = modbus->ModbusGetFuntion(); ModbusData.size = sizeof(SensorDataStruct); //gan kich thuoc du lieu truyen di //copy du lieu tu vung nho SensorData sang cho ModbusData.data voi kich thuoc sizeof(SensorDataStruct) memcpy(ModbusData.data, (uint8_t *)&SensorData, sizeof(SensorDataStruct)); //delay(50); modbus->ModbusSendDataPaket(ModbusData); //gui nguoc lai cho master Serial1.print("***Send Paket***\r\n"); Serial1.print("size: "); Serial1.print(ModbusData.size); Serial1.print("\r\ndata: "); for(int i = 0; i < ModbusData.size; i++) { Serial1.print(ModbusData.data[i]); Serial1.print(" "); } Serial1.println("\r\n"); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 119 ... backend BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34 CHƯƠNG TÍNH TỐN VÀ THI? ??T KẾ CHƯƠNG TÍNH TỐN VÀ THI? ??T KẾ 3.1 GIỚI THI? ??U Đối với đề tài ? ?Nghiên cứu, tìm hiểu thi công tủ trồng rau cho hộ? ?? yêu cầu đặt đề... ? ?Nghiên cứu, tìm hiểu thi cơng tủ trồng rau cho hộ. ” Hệ thống bao gồm: tủ Master để điều khiển giám sát, tủ Slave để trồng rau có nhiệm vụ thu thập thơng số mơi trường gửi cho master Trong tủ. .. Chúng tơi đề xuất đề tài “NGHIÊN CỨU, TÌM HIỂU VÀ THI CƠNG TỦ TRỒNG RAU CHO CĂN HỘ” BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG TỔNG QUAN 1.2 MỤC TIÊU ĐỀ TÀI Thi? ??t kế, thi cơng mơ hình quản lý

Ngày đăng: 22/04/2020, 19:05

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w