Hệ thống phân loại cà chua dựa vào màu sắc và khối lượng

96 31 0
Hệ thống phân loại cà chua dựa vào màu sắc và khối lượ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 & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: HỆ THỐNG PHÂN LOẠI CÀ CHUA THEO MÀU SẮC VÀ KHỐI LƯỢNG GVHD: Th.S Nguyễn Thanh Nghĩa SVTH: Trần Hoàng Minh MSSV: 14141196 SVTH: Lê Duy Ân MSSV: 13141008 Tp Hồ Chí Minh – 8/2020 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: HỆ THỐNG PHÂN LOẠI CÀ CHUA THEO MÀU SẮC VÀ KHỐI LƯỢNG GVHD: Th.S Nguyễn Thanh Nghĩa SVTH: Trần Hoàng Minh MSSV: 14141196 SVTH: Lê Duy Ân MSSV: 13141008 Tp Hồ Chí Minh - 8/20 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o Tp HCM, ngày 03 tháng 08 năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chun ngành: Hệ đào tạo: Khóa: Trần Hồng Minh Lê Duy Ân Kỹ thuật Điện - Điện tử Đại học quy 2014 MSSV: 14141196 MSSV: 13141008 Mã ngành: 01 Mã hệ: Lớp: 1414141 I TÊN ĐỀ TÀI: HỆ THỐNG PHÂN LOẠI CÀ CHUA THEO MÀU SẮC VÀ KHỐI LƯỢNG II NHIỆM VỤ Các số liệu ban đầu: − Kích thước băng tải : chiều dài 60cm, chiều rộng 10cm − Webcam Logitech C270p đóng vai trò thu nhận ảnh đầu vào − Board Arduino Nano điều khiển trung tâm mơ hình − Dùng xi lanh để đẩy sản phẩm − Động DC 24V điều khiển băng tải − Dùng cảm biến tiệm cận hồng ngoại xác định vị trí cà chua − Dùng LCD 16x2 hiển thị khối lượng cà chua − Dùng Loadcell module HX711 xác định khối lượng cà chua − Dùng van khí nén điều khiển xi lanh − Dùng module relay điều khiển van khí nén băng tải Nội dung thực hiện: − Tìm hiểu Arduino, Matlab, cảm biến, webcam − Kết nối Arduino với Matlab, webcam với Matlab, thiết bị ngoại vi với Arduino − Thiết kế khối nhận biết màu sắc, cân nặng − Thiết kế mơ hình tồn hệ thống − Xây dựng lưu đồ giải thuật viết chương trình điều khiển hệ thống − Thi cơng hồn chỉnh hệ thống điện, cho hệ thống chạy thử nghiệm hiệu chỉnh − Viết báo cáo thực − Báo cáo đề tài tốt nghiệp III NGÀY GIAO NHIỆM VỤ: 09/03/2020 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/08/2020 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Nguyễn Thanh Nghĩa CÁN BỘ HƯỚNG DẪN SINH BM ĐIỆN TỬ CÔNG NGHIỆP – Y TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o Tp HCM, ngày 15 tháng năm 2010 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Trần Hoàng Minh Lớp:14141DT1B MSSV:14141196 Họ tên sinh viên 2: Lê Duy Ân Lớp:13141DT1B MSSV:13141008 Tên đề tài: HỆ THỐNG PHÂN LOẠI CÀ CHUA THEO MÀU SẮC VÀ KHỐI LƯỢNG Tuần/ngày Tuần Từ 9/3/2020 đến 15/3/2020 Tuần Từ 16/3/2020 đến 22/3/2020 Tuần Từ 23/3/2020 đến 29/3/2020 Tuần Từ 30/3/2020 đến 5/4/2020 Tuần Từ 6/4/2020 đến 12/4/2020 Tuần Từ 13/4/2020 đến 19/4/2020 Tuần Từ 20/4/2020 đến 26/4/2020 Tuần Từ 27/4/2020 đến 3/5/2020 Tuần Từ 4/5/2020 đến 10/5/2020 Nội dung - Gặp GVHD nhận đề tài - Viết đề cương chi tiết - Tìm hiểu tham khảo đề tài nghiên cứu có liên quan đến điều khiển, giám sát xử lý hình ảnh dùng Arduino Matlab - Gặp báo cáo với GVHD hướng thực đề tài - Tìm hiểu cài đặt ngơn ngữ lập trình Matlab - Tìm hiểu vi điều khiển Arduino Nano cài đặt phần mệm lập trình arduino - Tìm hiểu webcam phục vụ cho đề tài - Cài đặt driver cho webcam - Tìm hiểu Loadcell, module HX711 - Tìm hiểu LCD 16x2, van khí nén xi lanh khí nén - Kết nối arduino webcam với Matlab - Kết nối Loadcell module HX711 với arduino, tiến hành cân chỉnh loadcell - Kết nối arduino với LCD 16x2 thiết bị ngoại vi cịn lại - Thiết kế mơ hình hệ thống - Xây dựng lưu đồ giải thuật - Báo cáo tiến độ cho GVHD - Viết chương trình Matlab phân tích xử lý màu sắc - Chạy mơ kết máy tính - Báo cáo tiến độ cho GVHD - Viết chương trình điều khiển cho phần nhập liệu, điều khiển van, xi lanh động Xác nhận GVHD - Chạy mô phỏng, kiểm tra hoạt động Tuần 10 Từ 11/5/2020 đến 17/5/2020 Tuần 11 Từ 18/5/2020 đến 24/5/2020 Tuần 12 Từ 25/5/2020 đến 31/6/2020 Tuần 13 Từ 1/6/2020 đến 7/6/2020 Tuần 14 Từ 8/6/2020 đến 14/6/2020 Tuần 15 Từ 15/6/2020 đến 21/6/2020 Tuần 16 Từ 22/6/2020 đến 28/6/2020 - Báo cáo tiến độ với GVHD - Viết chương trình thu nhận liệu loadcell - Viết chương trình điều khiển LCD - Chạy mô kiểm tra hoạt động - Báo cáo tiến độ cho GVHD - Thi cơng mơ hình hồn chỉnh - Viết chương trình hồn chỉnh cho tồn hệ thống - Báo cáo tiến độ cho GVHD - Thi cơng mơ hình hồn chỉnh - Viết chương trình hồn chỉnh cho toàn hệ thống - Báo cáo tiến độ cho GVHD - Thi cơng mơ hình hồn chỉnh - Viết chương trình hồn chỉnh cho tồn hệ thống - Báo cáo tiến độ cho GVHD - Hoàn thành mơ hình - Viết báo cáo luận văn - Báo cáo tiến độ cho GVHD - Viết báo cáo luận văn - Hoàn thiện báo cáo, chuận bị gặp GVPB bảo vệ GV HƯỚNG DẪN (Ký ghi rõ họ tên) CAM ĐOAN Đề tài nhóm chúng em tự thực dựa vào số tài liệu cơng trình nghiên cứu, khơng chép từ tài liệu hay cơng trình có trước Nếu có chép nhóm đồ án hồn tồn chịu trách nhiệm Tp Hồ Chí Minh, ngày tháng năm 2020 Sinh viên thực đề tài 1: Trần Hoàng Minh Sinh viên thực đề tài 2: Lê Duy Ân LỜI CẢM ƠN Trên thực tế thành cơng mà khơng gắn liền với hỗ trợ, giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp người khác Trong suốt thời gian từ bắt đầu học tập giảng đường đại học đến nay, em nhận nhiều quan tâm, giúp đỡ quý Thầy Cơ, gia đình bạn bè Với lịng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô Khoa Điện điện tử – Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM với tri thức tâm huyết để truyền đạt vốn kiến thức quý báu cho chúng em suốt thời gian học tập trường Chúng em xin chân thành cảm ơn Ths Nguyễn Thanh Nghĩa tận tâm hướng dẫn chúng em qua buổi gặp mặt, làm việc Nếu lời hướng dẫn, dạy bảo Thầy em nghĩ đồ án tốt nghiệp chúng em khó hồn thiện Một lần nữa, em xin chân thành cảm ơn Thầy Mặc dù cố gắng nhiều, nhóm khó tránh khỏi lúc làm Thầy Cơ, bạn phiền lịng Kính mong quý Thầy Cô, bạn lượng thứ bỏ qua Với vốn kiến thức hạn hẹp kinh nghiệm sống ỏi chắn báo cáo có sai lầm vỉ sót Nhóm nghiên cứu làm thứ lỗi mong nhận dạy, đóng góp vơ q báu q Thầy bạn để nhóm hoàn thiện tốt đề tài Một lần nữa, xin chân thành cảm ơn! Sinh viên thực Trần Hoàng Minh Sinh viên thực Lê Duy Ân MỤC LỤC TRANG BÌA Error! Bookmark not defined NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Error! Bookmark not defined LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC Error! Bookmark not defined LIỆT KÊ HÌNH VẼ iError! Bookmark not defined LIỆT KÊ BẢNG VẼ Error! Bookmark not defined TÓM TẮT Error! Bookmark not defined Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN CỦA ĐỀ TÀI 1.5 BỐ CỤC Chương 2: CỞ SỞ LÝ THUYẾT 2.1 GIỚI THIỆU VỀ XỬ LÝ ẢNH 2.2 KHÔNG GIAN MÀU CỦA ẢNH 2.2.1 Không gian màu RGB 2.2.2 Không gian màu HSV NHỮNG VẤN ĐỀ TRONG XỬ LÝ ẢNH 10 2.3.1 Điểm ảnh 10 2.3.2 Ảnh số 10 2.3.3 Phân loại ảnh 11 2.3.4 Quan hệ điểm ảnh 11 2.3.5 Chuyển đổi ảnh màu sang ảnh xám 12 2.3.6 Nhị phân hóa ảnh 14 2.3.7 Lọc nhiễu 14 2.3.8 Phương pháp phát biên 14 2.3.9 Phân đoạn ảnh 15 2.3 Chương 3: TÍNH TỐN THIẾT KẾ HỆ THỐNG 17 3.1 THIẾT KẾ PHẦN CỨNG 17 Bảng 3.1 Danh sách linh kiện 17 3.1.1 Khối thu nhận ảnh 18 3.1.2 Khối cảm biến 19 a Mô tả cảm biến tiệm cận hồng ngoại 19 b Mô tả Loadcell 1Kg module ADC HX711 20 3.1.2 Khối điều khiển 23 3.1.3 Khối chấp hành 25 a Mô tả động DC 25 b Mơ tả van khí nén 26 c Mô tả xylanh khí nén 27 d Mô tả Module Relay kênh 29 e Mô tả LCD kèm module I2C 30 3.1.4 Khối nguồn 31 a Nguồn cấp cho động DC, đèn báo 24VDC: 31 b Nguồn cấp cho Arduino Uno Nano 31 c Nguồn cấp cho động Servo, Module Relay 5VDC .32 3.2 SƠ ĐỒ NGUYÊN LÝ 33 3.3 NGUYÊN LÝ HOẠT ĐỘNG 34 Chương THI CÔNG HỆ THỐNG 34 4.1 THI CÔNG HỆ THỐNG 34 4.2 LẬP TRÌNH HỆ THỐNG 41 4.2.1 Lưu đồ giải thuật hệ thống 41 4.2.2 Lưu đồ giải thuật xác định màu sắc 42 4.3 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG VÀ THAO TÁC 43 Chương KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 47 5.1 KẾT QUẢ TỔNG QUAN 47 5.2 KẾT QUẢ ĐẠT ĐƯỢC 47 5.2.1 Giao diện chương trình 47 5.2.2 Kết mô hình hệ thống thực tế 48 5.2.3 Kết Quả Thực Nghiệm 52 5.3 NHẬN XÉT VÀ ĐÁNH GIÁ 53 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 54 6.1 KẾT LUẬN 54 6.2 HƯỚNG PHÁT TRIỂN 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 56 PHỤ LỤC if R ~= & R > G while cmd == % Gui tin hieu Mau_Do fprintf(s,'d');%send to arduino pause(1); break; end end if G > 5000 while cmd == %Gui tin hieu Mau_Xanh %dem_green = dem_green+1; fprintf(s,'x');% send to arduino pause(1); break; end end while cmd == %Gui tin hieu Mau_Vang %dem_yellow = dem_yellow+1; fprintf(s,'v'); pause(1); break; end while cmd == %Dem so luong Mau_Do nho dem_red_s = dem_red_s+1; fprintf(s,'4'); pause(1.5); break; end while cmd == %Dem so luong Mau_Do lon dem_red_l = dem_red_l+1; fprintf(s,'4'); pause(1.5); break; end while cmd == %Dem so luong Mau_Xanh BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67 PHỤ LỤC dem_green = dem_green+1; fprintf(s,'4'); pause(1.2); break; end while cmd == %Dem so luong Mau_Vang end dem_yellow = dem_yellow+1; fprintf(s,'4'); pause(1.2); break; end %% Clearing Memory release(hVideoIn); % Release all memory and buffer used release(vidDevice); function instrcallback(hObject, eventdata, handles) global s; global cmd_value; global cmd; cmd = fread(s,[1])% recieve from arduino cmd_value = str2double(cmd); CODE ARDUINO #include #include #include #include LiquidCrystal_I2C lcd(0x27,16,2); unsigned long time1 = 0; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68 PHỤ LỤC long t; int khoiluong_chuan = 2; float i; char incomingByte = 0; int k; int temp = -1; int s; int cb1_state = 1; int cb2_state = 1; int cb3_state = 1; int cb4_state = 1; int cb5_state = 1; int _d = 0; int d_state = 0; int dem2=0; int dem3=0; int dem4=0; int dem5=0; //pins: const int HX711_dout = 4; //mcu > HX711 dout pin const int HX711_sck = 5; //mcu > HX711 sck pin BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69 PHỤ LỤC //HX711 constructor: HX711_ADC LoadCell(HX711_dout, HX711_sck); / input declare const int CB1 = 6; const int CB2 = 7; const int CB3 = 8; const int CB4 = 9; const int CB5 = 10; / output declare const int xilanh5 = A2; const int xilanh2 = A3; const int motor = 11; const int xilanh1 = 12; const int xilanh4 = 2; const int xilanh3 = 3; //const int sda = A4; //const int scl = A5; void setup() { //setup LCD 16x2 lcd.init(); lcd.backlight(); lcd.setCursor(2,0); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70 PHỤ LỤC lcd.print("Welcome"); lcd.setCursor(0,1); lcd.print("loading "); //setup loadcell with HX711 LoadCell.begin(); float calibrationValue; // calibration value (see example file "Calibration.ino") calibrationValue = 696.0; // uncomment this if you want to set the calibration value in the sketch long stabilizingtime = 1000; // preciscion right after power-up can be improved by adding a few seconds of stabilizing time boolean _tare = true; //set this to false if you don't want tare to be performed in the next step LoadCell.start(stabilizingtime, _tare); if (LoadCell.getTareTimeoutFlag()) { //Serial.println("Timeout, check MCU>HX711 wiring and pin designations"); while (1); } else { LoadCell.setCalFactor(calibrationValue); // set calibration value (float) //Serial.println("Startup is complete"); } pinMode(CB1, INPUT); pinMode(CB2, INPUT); pinMode(CB3, INPUT); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71 PHỤ LỤC pinMode(CB4, INPUT); pinMode(CB5, INPUT); pinMode(xilanh1, OUTPUT); pinMode(xilanh2, OUTPUT); pinMode(xilanh3, OUTPUT); pinMode(xilanh4, OUTPUT); pinMode(xilanh5, OUTPUT); pinMode(motor, OUTPUT); digitalWrite(xilanh1,HIGH); digitalWrite(xilanh2,HIGH); digitalWrite(xilanh3,HIGH); digitalWrite(xilanh4,HIGH); digitalWrite(xilanh5,HIGH); digitalWrite(motor,HIGH); / settup Serial Serial.begin(9600); } void loop() { / put your main code here, to run repeatedly: digitalWrite(motor, LOW); i = LoadCell.getData(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72 PHỤ LỤC load_cell(); cb_1(); cb_2(); cb_3(); cb_4(); cb_5(); } void xilanh_1() { delay(300); digitalWrite(xilanh1,LOW); delay(1000); digitalWrite(xilanh1,HIGH); delay(300); } void xilanh_2() { digitalWrite(xilanh2,LOW); delay(1000); digitalWrite(xilanh2,HIGH); k=2; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73 PHỤ LỤC void xilanh_3() { digitalWrite(xilanh3,LOW); delay(1000); digitalWrite(xilanh3,HIGH); k=3; } void xilanh_4() { digitalWrite(xilanh4,LOW); delay(1000); digitalWrite(xilanh4,HIGH); k=4; } void xilanh_5() { { digitalWrite(xilanh5,LOW); delay(1000); digitalWrite(xilanh5,HIGH); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74 PHỤ LỤC } void load_cell() { static boolean newDataReady = 0; / check for new data/start next conversion: if (LoadCell.update()) newDataReady = true; / get smoothed value from the dataset: if (newDataReady) { if (Serial.available() > 0) { incomingByte = Serial.read(); if (incomingByte == 'd') { Serial.write(2); delay(1000); lcd.clear(); lcd.setCursor(0,0); lcd.print("KL:"); lcd.setCursor(3,0); lcd.print(i); lcd.setCursor(8,0); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75 PHỤ LỤC lcd.print("Gram"); xilanh_5(); if( i >= 35) { k=1; } else { k=3; } } if (incomingByte == 'v') { Serial.write(2); xilanh_5(); k=0; } if (incomingByte == 'x') { Serial.write(2); xilanh_5(); k=2; } if (incomingByte == '4') BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 76 PHỤ LỤC { Serial.write(2); } } } } void cb_1() { int cb1 = digitalRead(CB1); if (cb1 != cb1_state) { if(cb1 == 0) { s=0; xilanh_1(); start_(); Serial.write(1); } } cb1_state = cb1; } void cb_2() { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 77 PHỤ LỤC int cb2 = digitalRead(CB2); if (cb2 != cb2_state) { if(cb2 == 0) { if (k==3) { xilanh_2(); Serial.write(8); k=0; } } } cb2_state = cb2; } void cb_3() { int cb3 = digitalRead(CB3); if (cb3 != cb3_state) { if(cb3 == 0) { if (k==1) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 78 PHỤ LỤC delay(200); Serial.write(9); xilanh_3(); k=0; } } } cb3_state = cb3; } void cb_4() { int cb4 = digitalRead(CB4); if (cb4 != cb4_state) { if(cb4 == 0) { if (k==2) { Serial.write(4); delay(200); xilanh_4(); k=0; } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 79 PHỤ LỤC } cb4_state = cb4; } void cb_5() { int cb5 = digitalRead(CB5); if (cb5 != cb5_state) { if(cb5 == 0) { Serial.write(5); } } cb5_state = cb5; } void start_() { static boolean newDataReady = 0; while(s

Ngày đăng: 26/05/2021, 10:38

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan