1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế mô hình iot ứng dụng trong trại chăn nuôi gà

100 7 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

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỆN TỬ VIỄN THÔNG THIẾT KẾ MƠ HÌNH IOT ỨNG DỤNG TRONG TRẠI CHĂN NI GÀ GVHD: PGS.TS PHAN VĂN CA SVTH: ĐỖ THẾ QUANG PHẠM MINH HẠNH SKL010827 Tp Hồ Chí Minh, tháng 7/2023 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO KHĨA LUẬN TỐT NGHIỆP CHUN NGÀNH: ĐIỆN TỬ VIỄN THƠNG THIẾT KẾ MƠ HÌNH IOT ỨNG DỤNG TRONG TRẠI CHĂN NUÔI GÀ SINH VIÊN THỰC HIỆN MSSV ĐỖ THẾ QUANG 19161153 PHẠM MINH HẠNH 19161103 GIẢNG VIÊN HƯỚNG DẪN PGS-TS PHAN VĂN CA Tp Hồ Chí Minh, tháng năm 2023 CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* Tp Hồ Chí Minh, ngày tháng năm 2023 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên Sinh viên: Phạm Minh Hạnh MSSV:19161103 Đỗ Thế Quang MSSV:19161153 Ngành: Công nghệ kỹ thuật Điện tử - truyền thông Giảng viên hướng dẫn: PGS.TS PHAN VĂN CA Ngày nhận đề tài: 05/03/2023 Lớp:19161CLVT2A ĐT: 0902994358 Ngày nộp đề tài: 15/06/2023 Tên đề tài: - Thiết kế mơ hình IoT ứng dụng trại chăn nuôi gà Các số liệu, tài liệu ban đầu: - Trang thiết bị tài liệu liên quan Nội dung thực đề tài: - Tìm hiểu thi công lắp đặt thiết bị, phần mềm cho hệ thống chăn nuôi bao gồm điều kiện ánh sáng, nhiệt độ, chế độ ăn uống - Thiết kế cài đặt hệ thống giám sát thông tin thông qua ứng dụng điện thoại Sản phẩm: - Tài liệu báo cáo thuyết minh đề tài TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN Khoa ĐT CLC – ĐH SPKT TP.HCM i CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên Sinh viên: Phạm Minh Hạnh MSSV: 19161103 Họ tên Sinh viên: Đỗ Thế Quang MSSV: 19161153 Ngành: Công Nghệ Kỹ Thuật Điện Tử Truyền Thông Tên đề tài: Thiết kế mơ hình IoT ứng dụng trại chăn ni gà Họ tên Giáo viên hướng dẫn: PGS.TS Phan Văn Ca NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm: …………… (Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng Giáo viên hướng dẫn (Ký & Ghi rõ họ tên) ii năm 20… CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Đỗ Thế Quang MSSV: 19161153 Họ tên Sinh viên: Phạm Minh Hạnh MSSV: 19161103 Ngành: Công Nghệ Kỹ Thuật Điện Tử Truyền Thông Tên đề tài: Thiết kế mơ hình IoT ứng dụng trại chăn nuôi gà Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Câu hỏi phản biện: Điểm: …………… (Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng Giáo viên phản biện (Ký & Ghi rõ họ tên) iii năm 20… LỜI CÁM ƠN Nhờ dạy tận tình, ân cần chu đáo từ quý Thầy Cô, Giảng viên khoa Đào Tạo Chất Lượng Cao mà suốt quãng thời gian theo học (2019 – 2023) Trường Đại học Sư Phạm Kỹ Thuật TP.HCM, chúng em gặt hái không kiến thức chuyên ngành, mà học kinh nghiệm sống quý báu Đặc biệt chúng em xin gửi lời cảm ơn chân thành đến Thầy Phan Văn Ca, người trực tiếp hướng dẫn, định hướng giúp đỡ nhóm em thực hồn thành đề tài Khóa Luận Tốt Nghiệp Tuy kiến thức kinh nghiệm nhóm có cịn hạn chế, nhờ có hướng dẫn tận tình để đưa hướng phù hợp từ Thầy điều chúng em cảm thấy đáng trân trọng Ngồi ra, khơng thể khơng nhắc đến quan tâm giúp đỡ từ phía gia đình, anh chị em bạn bè Trong trình thực chắn không tránh khỏi sai sót Chúng em mong rằng q Thầy Cơ bạn hợp tác đóng góp ý kiến để đề tài chúng em hồn thành trọn vẹn Nhóm em xin chân thành cảm ơn! Nhóm thực đề tài Đỗ Thế Quang iv Phạm Minh Hạnh TÓM TẮT Ngày nay, nhu cầu tiêu thụ nông sản loại thịt gia súc, gia cầm tăng cao đáng kể, ngành nông nghiệp Việt Nam chứng kiến phát triển vượt bậc không ngừng tiến Nhận thấy việc kiểm sốt chất lượng, thơng tin nguồn gốc gia cầm nói chung, loại gà nói riêng, không mang lại hiệu vượt bậc sản lượng mà cịn giúp người nơng dân tránh tối đa rủi ro các mầm bệnh tiềm ẩn dễ lây lan, ảnh hưởng đến môi trường sống người ni Và từ đó, nhóm định ứng dụng công nghệ IoT cho nông nghiệp thông minh để triển khai ý tưởng Mục đích để tìm hướng phát triển giải pháp tốt cho việc xây dựng hệ thống giám sát, nhằm đáp ứng kịp thời nhu cầu chăn nuôi gà giống Cụ thể, tự động chuyển đổi hệ thống điều hòa chuồng trại, giúp người chăn nuôi giảm chu kỳ theo dõi định kỳ Ngồi ra, hệ thống hỗ trợ người nơng dân giám sát đàn gà họ từ xa Thức ăn cho gà cần đảm bảo làm đầy, người nuôi cần quan sát quản lý qua thiết bị di động Ngoài ra, sử dụng hệ thống chuồng trại thông minh, người chăn nuôi giám sát việc tiêm thuốc cho vật nuôi thời điểm hợp lý v MỤC LỤC Trang phụ bìa NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CÁM ƠN .iv TÓM TẮT v MỤC LỤC vi DANH MỤC CÁC TỪ VIẾT TẮT ix DANH MỤC HÌNH ẢNH xi DANH MỤC BẢNG xiii CHƯƠNG 1: TỔNG QUAN 1.1 Giới thiệu tình hình nghiên cứu đề tài 1.2 Tính cấp thiết đề tài 1.3 Mục tiêu nghiên cứu 1.4 Nhiệm vụ nghiên cứu 1.5 Đối tượng phạm vi nghiên cứu 1.6 Phương pháp nghiên cứu 1.7 Bố cục đồ án CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Mơ hình IoT nơng nghiệp 2.2 Các chuẩn truyền thông 2.3 Một số chuẩn truyền thông liệu 11 vi 2.3.1 Giao tiếp I2C 11 2.3.2 Giao tiếp SPI 13 2.3.3 Giao tiếp UART 14 2.3.4 Google Firebase 16 2.3.5 Hệ điều hành Android 17 2.4 Khu vực nuôi gà 18 2.4.1 Khu vực ấp trứng 18 2.4.2 Khu vực nuôi gà nở 18 2.4.3 Khu vực nuôi gà trưởng thành 19 2.5 Ánh sáng chuồng trại 19 2.6 Các loại vắc-xin dùng cho gà 20 CHƯƠNG 3: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG 22 3.1 Yêu cầu người dùng 22 3.2 Yêu cầu kỹ thuật 22 3.3 Thiết kế hệ thống 24 3.4 Sơ đồ khối hệ thống 24 3.5 Thiết kế chi tiết 26 3.6 Sơ đồ nguyên lý hệ thống 46 3.7 Thi công phần cứng 47 3.8 Thiết kế phần mềm 48 3.8.1 Lưu đồ giải thuật 48 3.8.2 Lập trình vi điều khiển 50 3.8.3 Lập trình ứng dụng điện thoại có hỗ trợ Android 51 vii 3.8.4 Lập trình giao tiếp Google Sheets sở liệu Firebase 52 CHƯƠNG 4: KẾT QUẢ - NHẬN XÉT, ĐÁNH GIÁ 53 4.1 Kết so sánh 53 4.2 Nhận xét 59 4.3 Đánh giá 60 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61 5.1 Kết luận 61 5.2 Hướng phát triển 61 TÀI LIỆU THAM KHẢO 62 PHỤ LỤC 64 viii digitalWrite(CLK595, HIGH); switch (i+1) { case mangan1: if (bitRead(data_devices_fb, i) == 1) servo_on(ser_mangan1,val_ser_mangan1); else servo_off(ser_mangan1,val_ser_mangan1); break; case mangan2: if (bitRead(data_devices_fb, i) == 1) servo_on(ser_mangan2,val_ser_mangan2); else servo_off(ser_mangan2,val_ser_mangan2); break; default: break; // } } } digitalWrite(LATCH595, HIGH); val_ser_mangan1 = bitRead(data_devices_fb, mangan1 - 1); val_ser_mangan2 = bitRead(data_devices_fb, mangan2 - 1); } void update_data_devices_fb (byte relayNumber, bool state) { if (state == true) { bitWrite( data_devices_fb, relayNumber-1, 1); bitWrite( data_devices_fb, relayNumber-1, 0); } } void docDHT(DHT &dht, float& h, float& tc, float& tf, byte tag, char* linknd, char* linkda, 71 byte mintemp, byte maxtemp, byte dvquat, byte dvden, char* linkquat, char* linkden) { float ndC = dht.readTemperature(); float ndF = dht.readTemperature(true); float doam= dht.readHumidity(); if (isnan(doam) || isnan(ndC) || isnan(ndF)) { Serial.printf("Không thể đọc liệu từ cảm biến DHT%d!\n",tag); } else { tc = ndC; tf = ndF; h = doam; } Firebase.setFloat (fbData, linknd, tc); Firebase.setFloat (fbData, linkda, h); if( tc < mintemp ) { update_data_devices_fb(dvden,true); update_data_devices_fb(dvquat,false); Firebase.setString (fbData, linkquat, "0"); Firebase.setString (fbData, linkden , "1"); } else if ( tc > maxtemp ) { update_data_devices_fb(dvden,false); update_data_devices_fb(dvquat,true); Firebase.setString (fbData, linkquat, "1"); Firebase.setString (fbData, linkden , "0"); } } void getdatafb_endentran (char* link_en, char* link_thietbi, byte thietbi, 72 char* link_gettime, int value_en) { if(Firebase.getString(fbData, link_en)){ value_en = atoi(fbData.stringData().c_str()); if(value_en == 0) { getdatafb(link_thietbi,thietbi); } else if(value_en == 1) { if(Firebase.getString(fbData, link_gettime)) { int t_get = atoi(fbData.stringData().c_str()); if (timeon + t_get < 24) { //giữ lệnh xài relay if( timeon hour && hour > 24 - (timeon + t_get)) { update_data_devices_fb(thietbi,false); Firebase.setString (fbData, link_thietbi, "0"); } else { update_data_devices_fb(thietbi,true); Firebase.setString (fbData, link_thietbi, "1"); } } } } 73 } } void getdatafb (char* link_thietbi, byte thietbi) { if(Firebase.getString(fbData, link_thietbi)) { int ss = atoi(fbData.stringData().c_str()); if(ss == 1) { update_data_devices_fb(thietbi,true); } else { update_data_devices_fb(thietbi,false); } } } #define trigPin1 #define echoPin1 36 #define trigPin2 12 #define echoPin2 39 byte l_value = 20; byte h_value = 70; int khoangcach1 = 0; int khoangcach2 = 0; #define hc04height 10 #define v_amthanh 0.034 void muc_nuoc_call() { muc_nuoc(trigPin1, echoPin1, khoangcach1, en_maybom1, maybom1); muc_nuoc(trigPin2, echoPin2, khoangcach2, en_maybom2, maybom2); } void muc_nuoc (int trig, int echo, int& percent_kc, int& value_en, byte thietbi){ digitalWrite(trig, LOW); delayMicroseconds(2); digitalWrite(trig, HIGH); 74 delayMicroseconds(10); digitalWrite(trig, LOW); unsigned long duration = pulseIn(echo, HIGH); percent_kc = map(hc04height-(duration * v_amthanh / 2),0,hc04height,0,100); if(percent_kc > h_value) { update_data_devices_fb(thietbi,false); send_data_74HC595(data_devices_fb); } else if (percent_kc < l_value) { update_data_devices_fb(thietbi,true); send_data_74HC595(data_devices_fb); } } void getdatafb_enmucnuoc (char* link_en, char* link_thietbi, byte thietbi, char* link_ss, int& value_en, int trig, int echo, int& percent_kc) { if(Firebase.getString(fbData, link_en)){ value_en = atoi(fbData.stringData().c_str()); if(value_en == 0) { getdatafb(link_thietbi,thietbi); } else if(value_en == 1) { muc_nuoc(trig, echo, percent_kc, value_en, thietbi); } } Firebase.setInt(fbData, link_ss, percent_kc); } void reset_value(){ 75 max_value_amg = 0; min_value_amg = 100; avg_value_amg = 0; } int minUs = 1000; int maxUs = 2000; //HÀM SETUP void setup() { Serial.begin(115200); pinMode(wifiled , OUTPUT) ; pinMode(DS_PIN595 , OUTPUT) ; pinMode(LATCH595 , OUTPUT) ; pinMode(CLK595 , OUTPUT) ; pinMode(echoPin1 , INPUT ) ; pinMode(echoPin2 , INPUT ) ; pinMode(trigPin1 , OUTPUT) ; pinMode(trigPin2 , OUTPUT) ; ESP32PWM::allocateTimer(0); ESP32PWM::allocateTimer(1); ESP32PWM::allocateTimer(2); ESP32PWM::allocateTimer(3); ser_mangan1.setPeriodHertz(50); ser_mangan2.setPeriodHertz(50); ser_mangan1.attach(dv_mangan1, minUs, maxUs); ser_mangan2.attach(dv_mangan2, minUs, maxUs); dht1.begin(); dht2.begin(); dht3.begin(); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("."); 76 } digitalWrite(wifiled, HIGH); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); Firebase.reconnectWiFi(true); timeClient.begin(); timeClient.setTimeOffset(7 * 3600); while(!timeClient.update()) { timeClient.forceUpdate(); } tft.initR(INITR_144GREENTAB); tft.fillScreen(ST7735_BLACK); displayPixelWidth = tft.width() / 8; displayPixelHeight = tft.height() / 8; bool status; status = amg.begin(); delay(100); } void loop() { docDHT( dht1,doam1,ndC1,ndF1,1, fb_ssnhietdo1,fb_ssdoam1, min_t_pa,max_t_pa, quatpa,densuoipa, fb_dvdieuhoaPA,fb_dvdensuoiPA); docDHT( dht2,doam2,ndC2,ndF2,2, fb_ssnhietdo2,fb_ssdoam2, min_t_p1,max_t_p1, quat1,densuoi1, fb_dvdieuhoa1,fb_dvdensuoi1); docDHT( dht3,doam3,ndC3,ndF3,3, fb_ssnhietdo3,fb_ssdoam3, min_t_p2,max_t_p2, quat2,densuoi2, 77 fb_dvdieuhoa2,fb_dvdensuoi2); getdatafb_enmucnuoc(fb_dvmanguongen1, fb_dvmanguong1, maybom1, fb_ssmucnuoc1, en_maybom1, trigPin1, echoPin1, khoangcach1); getdatafb_enmucnuoc(fb_dvmanguongen2, fb_dvmanguong2, maybom2, fb_ssmucnuoc2, en_maybom2, trigPin2, echoPin2, khoangcach2); getdatafb(fb_dvmangan1 , dv_mangan1); getdatafb(fb_dvmangan2 , dv_mangan2); getdatafb_endentran(fb_dvdentranen1, fb_dvdentran1, dentran1, fb_timeden1, en_dentran1); getdatafb_endentran(fb_dvdentranen2, fb_dvdentran2, dentran2, fb_timeden2, en_dentran2); amg.readPixels(pixels); for(int i=0; i { outString += row.join(',') + '\n'; }); return ContentService.createTextOutput(outString).setMimeType(ContentService.MimeTyp e.TEXT); } else if (e.parameter.func == "SendDataluaga") { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName("Đăng kí thơng tin gà"); // Send thông tin lứa gà P1 P2 var maluaP1 = e.parameter.maluaP1; var maluaP2 = e.parameter.maluaP2; sh.getRange("F2").setValue(maluaP1); sh.getRange("F3").setValue(maluaP2); } else if ( e.parameter.func == "ReadThongtinGa") { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName("Thông tin gà"); var rg = sh.getRange("A:I").getValues(); var filteredRows = rg.filter(row => row.some(cell => cell != "")); var outString = ''; filteredRows.forEach(row => { outString += row.join(',') + '\n'; }); return ContentService.createTextOutput(outString).setMimeType(ContentService.MimeTyp e.TEXT); } else if ( e.parameter.func == "ReadVacxin") { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName("Thông tin tiêm chủng"); var rg = sh.getRange("C2:E").getValues(); 81 var filteredRows = rg.filter(row => row.some(cell => cell != "")); var outString = ''; filteredRows.forEach(row => { outString += row.join(',') + '\n'; }); return ContentService.createTextOutput(outString).setMimeType(ContentService.MimeTyp e.TEXT); } else if (e.parameter.func == "GetIDDrive") { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName("Đăng kí thơng tin gà"); var rg = sh.getRange("F1").getValue(); var outString = rg + '\n'; return ContentService.createTextOutput(outString).setMimeType(ContentService.MimeTyp e.TEXT); } else if (e.parameter.func == "SendIDDrive") { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName("Đăng kí thơng tin gà"); var sendId = e.parameter.sendId; var cell = sh.getRange("F1"); cell.setValue(sendId); } else if (e.parameter.func == "SendTimebatden") { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName("Đăng kí thơng tin gà"); var timebatden = e.parameter.timebatden; var cell = sh.getRange("F4"); cell.setValue(timebatden); } else if (e.parameter.func == "SendVacxin") { 82 var ss = SpreadsheetApp.getActive(); var shthongtin = ss.getSheetByName("Thông tin tiêm chủng"); var shthongtinga = ss.getSheetByName("Thông tin gà"); var sendId = e.parameter.sendId; var vacxintype = e.parameter.vacxintype; var datadate = e.parameter.datadate; var dataset = datadate.substring(0, 2) + " " + datadate.substring(2, 4) + " " + datadate.substring(4);; var vacxinRow = findMatchingRow(shthongtin, vacxintype); // Lấy giá trị cột C hàng chứa giá trị vacxintype var namevacxin = shthongtin.getRange(vacxinRow,3).getValue(); var vacxinCol = findMatchingCol(shthongtinga, namevacxin); // Tìm kiếm hàng chứa giá trị sendId cột A sheet Thông tin gà var sendIdRow = findMatchingRow(shthongtinga, sendId); shthongtinga.getRange(sendIdRow, vacxinCol).setValue(dataset); // gán giá trị cho ô } else if (e.parameter.func == "SendQRpic") { var data = Utilities.base64Decode(e.parameters.data); var blob = Utilities.newBlob(data, e.parameters.mimetype, e.parameters.filename); var folderId = e.parameters.folderId; var fileID = DriveApp.getFolderById(folderId).createFile(blob).getId(); return ContentService.createTextOutput(fileID); } } function findMatchingRow(sheet, value ) { var data = sheet.getDataRange().getValues(); for (var i = 0; i < data.length; i++) { if (data[i][0] == value) { return i+1; } } 83 } function findMatchingCol(sheet, value ) { var data = sheet.getDataRange().getValues(); for (var i = 0; i < data[0].length; i++) { if (data[0][i] == value) { return i+1; } } } 84

Ngày đăng: 08/12/2023, 15:29

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

TÀI LIỆU LIÊN QUAN

w