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

Nghiên cứu, thiết kế và thi công mô hình đếm và phân loại sản phẩm theo cân nặng, màu sắc

122 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

Thông tin cơ bản

Định dạng
Số trang 122
Dung lượng 13,34 MB

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 CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THƠNG NGHIÊN CỨU, THIẾT KẾ VÀ THI CƠNG MƠ HÌNH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM THEO CÂN NẶNG, MÀU SẮC GVHD: NGUYỄN ĐÌNH PHÚ SVTH1: PHẠM THỊ THANH THẢO MSSV: 15141284 SVTH2: PHAN TRẦN HOÀI VŨ MSSV:15141333 SKL006110 Tp Hồ Chí Minh, tháng 6/2019 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: NGHIÊN CỨU, THIẾT KẾ VÀ THI CƠNG MƠ HÌNH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM THEO CÂN NẶNG, MÀU SẮC GVHD: Th.S NGUYỄN ĐÌNH PHÚ SVTH: PHẠM THỊ THANH THẢO 15141284 PHAN TRẦN HỒI VŨ 15141333 Tp Hồ Chí Minh – 06/2019 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: NGHIÊN CỨU, THIẾT KẾ VÀ THI CÔNG MƠ HÌNH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM THEO CÂN NẶNG, MÀU SẮC GVHD: ThS NGUYỄN ĐÌNH PHÚ SVTH: PHẠM THỊ THANH THẢO 15141284 PHAN TRẦN HOÀI VŨ 15141333 Tp Hồ Chí Minh – 07/2019 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: I TÊN ĐỀ TÀI: NGHIÊN CỨU, THIẾT KẾ VÀ THI CƠNG MƠ HÌNH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM THEO CÂN NẶNG, MÀU SẮC II NHIỆM VỤ Các số liệu ban đầu: (ghi thông số, tập tài liệu tín hiệu, hình ảnh, …) Nội dung thực hiện: (ghi nội dung cần thực phần tổng quan) i III NGÀY GIAO NHIỆM VỤ: 18/02/2019 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 10/06/2019 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Nguyễn Đình Phú CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CƠNG NGHIỆP – Y SINH ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Phạm Thị Thanh Thảo Lớp: 1514DT2A MSSV: 15141284 Họ tên sinh viên 2: Phan Trần Hoài Vũ Lớp: 1514DT2A MSSV: 15141333 Tên đề tài: NGHIÊN CỨU, THIẾT KẾ VÀ THI CƠNG MƠ HÌNH ĐẾM VÀ PHÂN LOẠI SẢN PHẨM THEO CÂN NẶNG, MÀU SẮC Tuần/ngày Tuần (18-24/02/2019) Tuần (25-03/03/2019) Tuần (04-10/03/2019) Tuần (11-17/03/2019) Tuần (18-24/03/2019) Tuần 6, 7, (25-14/04/2019) Tuần 9, 10, 11, 12 (15-12/05/2019) Tuần 13, 14, 15 (13-02/06/2019) 03/06/2019 GV HƯỚNG DẪN (Ký ghi rõ họ tên) iv LỜI CAM ĐOAN Đề tài “Nghiên cứu, thiết kế thi cơng mơ hình đếm phân loại sản phẩm theo cân nặng màu sắc” nhóm đề tài tự thực dựa vào tham khảo số tài liệu trước khơng chép từ tài liệu hay cơng trình khác Người thực đề tài Phạm Thị Thanh Thảo Phan Trần Hoài Vũ v LỜI CẢM ƠN Lời đầu tiên, nhóm đề tài xin gởi lời cảm ơn chân thành đến Thầy Nguyễn Đình Phú - giảng viên khoa Điện-Điện tử, Trường ĐH Sư phạm Kỹ thuật Tp HCM theo sát hỗ trợ hướng dẫn nhóm cách chi tiết q trình thực đề tài Thầy ln hỗ trợ hết mình, giải đáp thắc mắc, sai sót gợi ý phương án thực cho khả thi dễ tiếp cận Nhóm xin gửi lời cảm ơn đến quý thầy(cô) khoa Điện-Điện tử tận tình giải đáp thắc mắc, nguyện vọng q trình thực đề tài nhóm Sự hỗ trợ q thầy(cơ) đóng góp phần khơng nhỏ vào thành cơng ngày hơm Nhóm đề tài xin cảm ơn bạn sinh viên khoa Điện-Điện tử nhiệt tình giúp đỡ, hỗ trợ nhóm, đặc biệt tập thể lớp 15141DT2A Những đóng góp bạn ln nhóm tiếp nhận đánh giá cao Cuối cùng, nhóm xin cảm ơn chân thành sâu sắc đến Cha, Mẹ - người ln bên cạnh hỗ trợ tài tinh thần suốt năm tháng qua Thành cơng đề tài ngày hơm phần đóng góp to lớn người Một lần nữa, nhóm xin gởi lời cảm ơn chân thành đến quý thầy cô, bạn bè quý phụ huynh hỗ trợ nhóm thực đề tài hồn chỉnh Xin chân thành cảm ơn! Người thực đề tài Phạm Thị Thanh Thảo Phan Trần Hoài Vũ vi CHƯƠNG KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ Sau hoàn thiện đề tài, sản phẩm đạt mục tiêu đặt đề trước So với hệ thống phân loại có sẵn thị trường, ví dụ Hệ thống máy phân loại cà chua đất canh tác(có diện tích lớn), Hệ thống máy phân loại cà chua công nghiệp(đắt tiền) Sản phẩm nhóm ưu việt chỗ: có độ xác, độ tin cậy cao, mơ hình phù hợp với phạm vi hộ gia đình, thương lái nhỏ, dễ dàng vận hành tùy chỉnh mà không cần phiền đến kỹ thuật viên Vì thế, nhóm đánh giá việc áp dụng sản phẩm để thương mại hóa điều hồn tồn khả thi 6.2 HƯỚNG PHÁT TRIỂN Từ mặt hạn chế đề tài, nhóm đưa số hướng phát triển để hệ thống hồn chỉnh hoạt động hiệu hơn: - Xử lý đa luồng, tức nhận biết phân loại lúc nhiều cà chua - Điều khiển tồn hệ thống thơng qua webserver qua ứng dụng điện thoại thông minh - Mở rộng phạm vi đối tượng phân loại (có thể nhận biết cà chua bị sâu đục, thối, dập; mở rộng nông sản khác dưa chuột, hồng, chanh…) - Thay dùng loadcell sử dụng thuật tốn phân loại theo kích thước cà chua - Thiết kế phận khí trước đầu băng chuyền để thuận tiện việc di chuyển cà chua vào buồng chụp - Thay dùng xi-lanh khí nén thay xi-lanh điện để hệ thống gọn gàng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 88 TÀI LIỆU THAM KHẢO Sách tham khảo: [1] Nguyễn Quang Hoan, “Xử lý ảnh”, Học Viện Bưu Chính Viên Thơng, 2006 [2] Nguyễn Thanh Hải, “Giáo Trình Xử lý ảnh”, Nhà xuất Đại Học Quốc Gia, Thành phố Hồ Chí Minh, 2014 [4] Theo SYGENTA, tài liệu “Kỹ thuật canh tác cà chua” [8] Alexander Mordvintsev & Abid K, tài liệu “OpenCV-Python Tutorials Documentation Release 1”, ngày tháng 11 năm 2017 [9] Hà Duy Khánh, Đồ án tốt nghiệp “Phân loại sản phẩm dùng kit Raspberry Pi”, TP HCM, tháng năm 2018 Trang web: [3] Nguyễn Nghĩa, “Tổng quan thư viện OpenCV, đăng ngày 10 tháng 11 năm 2016 https://www.tutorialspoint.com/python/ [5] Raspberry Pi Việt Nam, sản phẩm Raspberry Pi B Model https://raspberrypi.vn/shop/mach-raspberry-pi/raspberry-pi-4-model-b-2019 [7] Nguyên Minh, viết “Xi-lanh khí nén gì? Cấu tạo xi-lanh khí nén”, đăng ngày 30 tháng năm 2018 tạihttps://medium.com/@minh.nhatnguyen0820/xilanh-kh%C3%AD-n%C3%A9n-l%C3%A0-g%C3%AC-c%E1%BA%A5u-t %E1%BA%A1o-ch%E1%BB%A9c-n%C4%83ng-c%E1%BB%A7a-xi-lanh45e8518087a4 Quynh Ty, viết “Cách tạo điều khiển tốc độ động PWM DC IC 555”, đăng 12 tháng 01 năm 2019 https://vietmachine.com.vn/cach-taobo-dieu-khien-toc-do-dong-co-pwm-dc-bang-ic555.html?fbclid=IwAR2EkFQPCI7b3sXWFqqzQnPKrKz_gwDuEV56twXaGeI3K79eFUp-GfLyVY [10] BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 89 PHỤ LỤC Code chương trình điều khiển: from firebase import firebase import json import import import import import cv2 time numpy as np sys RPi.GPIO as GPIO import weight as wei import tkinter as tk GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) cap = cv2.VideoCapture(0) start_time = time.time() PIN_INPUT_SENSOR_1 = 26 PIN_INPUT_SENSOR_2 = 19 PIN_INPUT_SENSOR_3 = 13 PIN_INPUT_SENSOR_4 = 27 PIN_OUTPUT_XILANH_1 = 21 PIN_OUTPUT_XILANH_2 = 20 PIN_OUTPUT_XILANH_3 = 16 PIN_OUTPUT_XILANH_4 = 12 #xxxxxxxxxxxxxxxxxxxxx_out_put_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx GPIO.setup(PIN_OUTPUT_XILANH_1, GPIO.OUT) GPIO.setup(PIN_OUTPUT_XILANH_2, GPIO.OUT) GPIO.setup(PIN_OUTPUT_XILANH_3, GPIO.OUT) GPIO.setup(PIN_OUTPUT_XILANH_4, GPIO.OUT) #xxxxxxxxxxxxxxxxxxxxx_in_put_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(PIN_INPUT_SENSOR_1, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(PIN_INPUT_SENSOR_2, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(PIN_INPUT_SENSOR_3, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(PIN_INPUT_SENSOR_4, GPIO.IN, pull_up_down=GPIO.PUD_UP) #xxxxxxxxxxxxxxxxxxxxx_nhan_du_lieu_tu_fire_basexxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx firebase = firebase.FirebaseApplication('https://datnc53f0.firebaseio.com/') result1 = {} result1= firebase.get('/',None) struct_data_wed = [] #xxxxxxxxxxxxxxxxxxxxx_lưu nội dung fire base đọc zô file txt_xxxxxxxxxxxxxxxx with open('result_firebase.txt', 'w') as outfile: json.dump(result1, outfile) print("save result_firebase.txt ======================== > ok") #xxxxxxxxxxxxxxxxxxxxx_thiet lap gia tri gan cho giao dien_xxxxxxxxxxxxxxxxxxxxxx wei1_min_tk = int(result1['level_1']['min']) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 90 wei1_max_tk = int(result1['level_1']['max']) red1_tk = bool(result1['level_1']['RED']) ogrange1_tk = bool(result1['level_1']['ORANGE']) green1_tk = bool(result1['level_1']['GREEN']) wei2_min_tk = int(result1['level_2']['min']) wei2_max_tk = int(result1['level_2']['max']) red2_tk = bool(result1['level_2']['RED']) ogrange2_tk = bool(result1['level_2']['ORANGE']) green2_tk = bool(result1['level_2']['GREEN']) wei3_min_tk = int(result1['level_3']['min']) wei3_max_tk = int(result1['level_3']['max']) red3_tk = bool(result1['level_3']['RED']) ogrange3_tk = bool(result1['level_3']['ORANGE']) green3_tk = bool(result1['level_3']['GREEN']) wei4_min_tk = int(result1['level_4']['min']) wei4_max_tk = int(result1['level_4']['max']) red4_tk = bool(result1['level_4']['RED']) ogrange4_tk = bool(result1['level_4']['ORANGE']) green4_tk = bool(result1['level_4']['GREEN']) #xxxxxxxxxxxxxxxxxxxxx_thiet ke giao dien_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root = tk.Tk() root.geometry("1000x600") root.resizable(0, 0) #Don't allow resizing in the x or y direction lblz1 = tk.Label(master = root, text = "Running ",fg = "Green",font = "Times 25") lblz1.place(x = 0, y = 500) def close_window(): root.destroy() button = tk.Button (master = root,fg = "red", font = "Times 20", text = "EXIT", command = close_window) button.place(x = 900, y = 500) Content = "Graduate Project Thanh Thao - Hoai Vu" lbl0 = tk.Label(master = root, text = Content,fg = "black",font = "Times 30") lbl0.place(x = 200, y = 0) Content_2 = "Product Classification: Weight, Color - Remote Control Via Web" lbl001 = tk.Label(master = root, text = Content_2,fg = "red",font = "Times 17") lbl001.place(x = 210, y = 50) lbl = tk.Label(master = root, fg = "black",font "Level_1:") lbl.place(x = 200, y = 100) lb2 = tk.Label(master = root,fg = "black", font "Level_2:") lb2.place(x = 400, y = 100) lb3 = tk.Label(master = root,fg = "black", font "Level_3:") lb3.place(x = 600, y = 100) lb4 = tk.Label(master = root,fg = "black", font "Level_4:") lb4.place(x = 800, y = 100) = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 91 lb0l = tk.Label(master = root, fg = "black",font "Green:") lb0l.place(x = 0, y = 150) lb02 = tk.Label(master = root,fg = "black", font "Orange:") lb02.place(x = 0, y = 200) lb03 = tk.Label(master = root,fg = "black", font "Red:") lb03.place(x = 0, y = 250) lb04 = tk.Label(master = root,fg = "black", font "Min:") lb04.place(x = 0, y = 300) lb05 = tk.Label(master = root,fg = "black", font "Max:") lb05.place(x = 0, y = 350) lb06 = tk.Label(master = root,fg = "black", font "Amount:") lb06.place(x = 0, y = 400) = "Times 20", text = lbxl = tk.Label(master = root, fg = "black",font green1_tk) lbxl.place(x = 230, y = 150) lbx2 = tk.Label(master = root,fg = "black", font ogrange1_tk) lbx2.place(x = 230, y = 200) lbx3 = tk.Label(master = root,fg = "black", font red1_tk) lbx3.place(x = 230, y = 250) lbx4 = tk.Label(master = root,fg = "black", font wei1_min_tk) lbx4.place(x = 230, y = 300) lbx5 = tk.Label(master = root,fg = "black", font wei1_max_tk) lbx5.place(x = 230, y = 350) = "Times 20", text = lbal = tk.Label(master = root, fg = "black",font green2_tk) lbal.place(x = 430, y = 150) lba2 = tk.Label(master = root,fg = "black", font ogrange2_tk) lba2.place(x = 430, y = 200) lba3 = tk.Label(master = root,fg = "black", font red2_tk) lba3.place(x = 430, y = 250) lba4 = tk.Label(master = root,fg = "black", font wei2_min_tk) lba4.place(x = 430, y = 300) lba5 = tk.Label(master = root,fg = "black", font wei2_max_tk) lba5.place(x = 430, y = 350) = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = lbbl = tk.Label(master = root, fg = "black",font = "Times 20", text = green3_tk) lbbl.place(x = 630, y = 150) lbb2 = tk.Label(master = root,fg = "black", font = "Times 20", text = ogrange3_tk) lbb2.place(x = 630, y = 200) lbb3 = tk.Label(master = root,fg = "black", font = "Times 20", text = red3_tk) lbb3.place(x = 630, y = 250) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 92 lbb4 = tk.Label(master = root,fg = "black", font = "Times 20", text = wei3_min_tk) lbb4.place(x = 630, y = 300) lbb5 = tk.Label(master = root,fg = "black", font = "Times 20", text = wei3_max_tk) lbb5.place(x = 630, y = 350) lbcl = tk.Label(master = root, fg = "black",font green4_tk) lbcl.place(x = 830, y = 150) lbc2 = tk.Label(master = root,fg = "black", font ogrange4_tk) lbc2.place(x = 830, y = 200) lbc3 = tk.Label(master = root,fg = "black", font red4_tk) lbc3.place(x = 830, y = 250) lbc4 = tk.Label(master = root,fg = "black", font wei4_min_tk) lbc4.place(x = 830, y = 300) lbc5 = tk.Label(master = root,fg = "black", font wei4_max_tk) lbc5.place(x = 830, y = 350) = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = = "Times 20", text = flag=0 flag1=0 flag2=0 flag3=0 flag4=0 count_1 count_2 count_3 count_4 = = = = 0 #xxxxxxxxxxxxxxxxxxxxx_thiet_lap_gia_tri_ban_dau_xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx level = '' find_result = False green_standard = False red_standard = False ogrange_standard = False GPIO.output(21, GPIO.output(20, GPIO.output(16, GPIO.output(12, False) False) False) False) red_color = False green_color = False ogrange_color = False flag_main = False def process_analyze_image(image, debug_mode): red_color = False green_color = False ogrange_color = False result = False flag_main = False try: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 93 hsv = cv2.cvtColor(image , cv2.COLOR_BGR2HSV) red_lower = np.array([0, 150, 0], np.uint8) red_upper = np.array([7, 255, 255], np.uint8) green_lower = np.array([32, 76, 0], np.uint8) green_upper = np.array([48, 255, 255], np.uint8) ogrange_lower = np.array([9, 76, 0], np.uint8) ogrange_upper = np.array([31, 255, 255], np.uint8) # finding the range of red,blue and yellow color in the image red = cv2.inRange(hsv, red_lower, red_upper) green = cv2.inRange(hsv, green_lower, green_upper) ogrange = cv2.inRange(hsv, ogrange_lower, ogrange_upper) # Morphological transformation, Dilation kernal = np.ones((5, 5), "uint8") red = cv2.dilate(red, kernal) res = cv2.bitwise_and(image , image , mask=red) green = cv2.dilate(green, kernal) res1 = cv2.bitwise_and(image , image , mask=green) ogrange = cv2.dilate(ogrange, kernal) res2 = cv2.bitwise_and(image , image , mask=ogrange) #xxxxxxxxxxxxxxxxxxxxx_tim duong bao cua vat co mau tuong ung_tinh dien tich duong bao_set co tuowng ung_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx numPixel_red = cv2.countNonZero(red) numPixel_green = cv2.countNonZero(green) numPixel_ogrange = cv2.countNonZero(ogrange) numPixel_red = cv2.countNonZero(red) # print("so pixel do",numPixel_red) numPixel_green = cv2.countNonZero(green) # print("so pixel xanh",numPixel_green) numPixel_ogrange = cv2.countNonZero(ogrange) # print("so pixel cam",numPixel_ogrange) R = (numPixel_red/(1+numPixel_red + numPixel_green + numPixel_ogrange))*100 G = (numPixel_green/(1+numPixel_red + numPixel_green + numPixel_ogrange))*100 O = (numPixel_ogrange/(1+numPixel_red + numPixel_green + numPixel_ogrange))*100 if (R>50): red_color =True if (G>50): green_color =True if (O>50): ogrange_color =True = if (red_color == True) or (green_color == True )or (ogrange_color True): BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 94 flag_main = True return image, red_color, green_color, ogrange_color, True, flag_main except cv2.error as e: print("error process analyzing image") return image, red_color, green_color, ogrange_color, result def setting_contrain(setting_data, wei, red, green, orange): find_result = False level = 'unknow' for key, value in result1.items(): if (key != 'Result'): wei_min_wed = int(result1[key]['min']) wei_max_wed = int(result1[key]['max']) red_wed = bool(result1[key]['RED']) ogrange_wed = bool(result1[key]['ORANGE']) green_wed = bool(result1[key]['GREEN']) if( wei_standard >= wei_min_wed and wei_standard 10): if state == True: if (state == True) and (lag == 0): res, img = cap.read() wei_standard = wei.weight() print(wei_standard) time.sleep(0.3) = "red", font = "Times = "red", font = "Times = "red", font = "Times = "red", font = "Times cv2.imwrite('/home/pi/Desktop/THAO/TEST/test_camera_cam/test_new.jpg',img ) time.sleep(0.3) result_analyzing_image = False #print('step result_analyzing_image') #xxxxxxxxxxxxxxxxxxxxx_end_snapshot_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxx image, red_standard, green_standard, ogrange_standard, result_analyzing_image,flag_main = process_analyze_image(img, False) if(result_analyzing_image == False): print("process error ===================== :(") continue #xxxxxxxxxxxxxxxxxxxxx_check loai cua ca chua_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 96 if (flag_main == True): cv2.imwrite('/home/pi/Desktop/THAO/TEST/test_camera_cam/test.jpg',img) level = setting_contrain(result1, wei_standard, red_standard, green_standard, ogrange_standard) # setting gate num gate_num = -1 if('unknow' in level): gate_num = count_char = else: count_char = len(level.split('_')) if(count_char == 2): if('unknow' in level): gate_num = else: gate_num = int(level.split('_')[1]) print('gate: {}'.format(gate_num)) # end setting gate num #control xilanh time_sleep = 0.5 if(gate_num == 1): flag1 = control_gate(1, flag1, time_sleep) count_1 = count_1 + lb8 = tk.Label(master = root, text = count_1,fg = "red", font = "Times 25") lb8.place(x = 230, y = 400) elif(gate_num == 2): flag2 = control_gate(2, flag2, time_sleep) count_2 = count_2 + lb5 = tk.Label(master = root, text = count_2,fg = "red", font = "Times 25") lb5.place(x = 430, y = 400) elif(gate_num == 3): flag3 = control_gate(3, flag3, time_sleep) count_3 = count_3 + lb6 = tk.Label(master = root, text = count_3,fg = "red", font = "Times 25") lb6.place(x = 630, y = 400) elif(gate_num == 4): flag4 = control_gate(4, flag4, time_sleep) count_4 = count_4 + lb7 = tk.Label(master = root, text = count_4,fg = "red", font = "Times 25") lb7.place(x = 830, y = 400) else: print('dont care') find_result = True lag=1 state= not GPIO.input(17) if state == False and (lag == 1): lag = else: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 97 print('No tomato') # start_time_wei = time.time() resultPut = firebase.put('/', 'Result',{'count_1':count_1,'count_2':count_2,'count_3':count_3,'count_4' :count_4}) Chương trình thư viện Weight #!/usr/bin/python2 import RPi.GPIO as gpio #import threading import time DAT=5 CLK=6 num=0 #def weight(DAT = 5, CLK =6, num = 0): def weight(): start_time = time.time() gpio.setup(CLK, gpio.OUT) i=0 num=0 gpio.setup(DAT, gpio.OUT) gpio.output(DAT,1) gpio.output(CLK,0) gpio.setup(DAT, gpio.IN) while gpio.input(DAT) == 1: i=0 for i in range(24): gpio.output(CLK,1) gpio.output(CLK,1) gpio.output(CLK,1) num=num footer{ background-color:#ccc; font-family: Arial; text-align:center; padding:12px; font-size:19px; }

GRADUATION PROJECT_PHAM THI THANH THAO-15141284-PHAN TRAN HOAI VU-15141333

PRODUCT CLASSIFICATION: COLOR, WEIGHT; REMOTE CONTROL

/ Initialize Firebase var config = { apiKey: "AIzaSyBBshWk7M2RkV-XAWr-vTATWcSewDVFbOk", authDomain: "datn-c53f0.firebaseapp.com", databaseURL: "https://datn-c53f0.firebaseio.com", projectId: "datn-c53f0", storageBucket: "datn-c53f0.appspot.com", messagingSenderId: "472165330944" }; firebase.initializeApp(config); function writeData(){ var x = document.getElementById("Category").value; firebase.database().ref(x).set({ min:document.getElementById("minField").value, max:document.getElementById("maxField").value, GREEN:document.getElementById("chkgreen").checked, BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 99 ORANGE:document.getElementById("chkorange").checked, RED:document.getElementById("chkred").checked, }); getData(); } function getData(){ firebase.database().ref('/').once('value', function(snapshot) { snapshot.forEach(function(childSnapshot) { var childKey = childSnapshot.key; var childData = childSnapshot.val(); document.getElementById("data").innerHTML = childData['min'] +", "+ childData['max'] ; }) }) } getData();

COLOR

Red : Orange: Green:

WEIGHT

TYPE

= "writeData()">

Ngày đăng: 26/12/2021, 17:45

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w