1. Trang chủ
  2. » Luận Văn - Báo Cáo

ỨNG DỤNG sử lý ẢNH TRONG hệ THỐNG PHÂN LOẠI sản PHẨM

87 3 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

Tiêu đề Ứng Dụng Xử Lý Ảnh Trong Hệ Thống Phân Loại Sản Phẩm
Tác giả Phan Thanh May, Đỗ Hoàng Anh, Nguyễn Hùng Vĩ
Người hướng dẫn ThS. Nguyễn Thị Thanh Vi
Trường học Trường Đại Học Sư Phạm Kỹ Thuật
Chuyên ngành Công Nghệ Kỹ Thuật Cơ Điện Tử
Thể loại đồ án tốt nghiệp
Năm xuất bản 2022
Thành phố Đà Nẵng
Định dạng
Số trang 87
Dung lượng 3,19 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN (15)
    • 1.1 Đặt Vấn Đề (15)
    • 1.2 Mục Tiêu (16)
    • 1.3 Mục tiêu của từng nội dung cụ thể (16)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (17)
    • 2.1 Tổng quan về xử lý ảnh (17)
      • 2.1.1 Giới thiệu về xử lý ảnh (17)
      • 2.1.2 Những vấn đề trong xử lý ảnh (19)
    • 2.2 Giới thiệu về ngôn ngữ Python và thư viện openCV (23)
      • 2.2.1 Ngôn ngữ Python (23)
      • 2.2.2 Thư viên openCV (24)
    • 2.3 Phân tích xác định màu sắc (25)
      • 2.3.1 Hệ màu (25)
      • 2.3.2 Xác định HSV để phân loại (29)
    • 2.4 Giới thiệu linh kiện (31)
      • 2.4.1 Arduino Uno R3 (32)
      • 2.4.2 Raspberry Pi (39)
      • 2.4.3 Cảm biến hồng ngoại E18-D80NK (42)
      • 2.4.4 Động cơ servo mg955 (44)
      • 2.4.5 Động cơ giảm tốc JGB37-520-107RPM (46)
      • 2.4.6 Camera Pi V1.3 (47)
      • 2.4.7 Băng tải (49)
      • 2.4.8 Led LCD 16x2 (50)
  • CHƯƠNG 3: TÍNH TOÁN THIẾT KẾ (53)
    • 3.1 Lưu đồ thuật toán (53)
    • 3.2 Sơ đồ khối hệ thống (56)
    • 3.3 Sơ đồ nối dây và các thiêt bị trong hệ thống (57)
      • 3.3.2 Khối cảm biến (59)
      • 3.3.3 Khối camera (60)
      • 3.3.4 Khối xử lý (61)
      • 3.3.5 Khối động cơ (62)
      • 3.3.6 Khối hiển thị (63)
  • CHƯƠNG 4: LẮP RÁP VÀ THI CÔNG HỆ THỐNG (66)
    • 4.1 Mô hình sản phẩm 3D trên creo (66)
      • 4.1.1 Giới thiệu về creo (66)
      • 4.1.2 Mô hình 3d (66)
    • 4.2 Lắp ráp mô hình (67)
      • 4.2.1 Băng tải (67)
      • 4.2.2 Lắp ráp và kết nối Arduino vs Raspberry (67)
    • 4.3 Cài chương trình và lập trình (68)
  • CHƯƠNG 5: TỔNG KẾT VÀ KẾT LUẬN (75)
    • 5.1 Tổng kết (75)
    • 5.2 Kết luận (76)

Nội dung

TỔNG QUAN

Đặt Vấn Đề

Ngày nay, sự phát triển của xã hội đang diễn ra mạnh mẽ với công nghiệp hoá và hiện đại hoá được nâng cao nhằm thúc đẩy đất nước và cải thiện đời sống nhân dân Việc ứng dụng kỹ thuật khoa học ngày càng trở nên phổ biến và mang lại hiệu quả cao trong các lĩnh vực kinh tế, kỹ thuật cũng như trong đời sống xã hội.

Nhằm phát triển hệ thống phân loại sản phẩm hiệu quả trong nông nghiệp và công nghiệp, việc áp dụng công nghệ phù hợp với chi phí thấp là rất cần thiết Trong bối cảnh công nghiệp hóa hiện đại, tự động hóa quy trình sản xuất ngày càng trở nên phổ biến, dẫn đến sự hình thành các hệ thống sản xuất linh hoạt với sự hỗ trợ của máy CNC và robot công nghiệp Một yếu tố quan trọng ảnh hưởng đến chất lượng sản phẩm là hệ thống phân loại, giúp phân chia sản phẩm thành các nhóm tương đồng để đóng gói hoặc loại bỏ sản phẩm hỏng Hiện nay, các cảm biến với chức năng khác nhau như cảm biến phân loại màu sắc và hình dáng thường được sử dụng, mặc dù dễ lắp đặt nhưng cũng dễ bị nhiễu, dẫn đến phân loại không chính xác Do đó, dựa trên kiến thức đã học và sự đồng ý của giảng viên, nhóm chúng tôi quyết định nghiên cứu đề tài “Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm”.

Mục Tiêu

Mục tiêu của đề tài là nghiên cứu và ứng dụng công nghệ xử lý ảnh trong hệ thống phân loại sản phẩm, tập trung vào việc phân loại sản phẩm theo ba màu sắc chính: xanh, đỏ và vàng Đề tài sử dụng ngôn ngữ lập trình Python cùng với thư viện openCV, và được triển khai trên nền tảng Raspberry Pi và Arduino Uno.

Mục tiêu của từng nội dung cụ thể

 Hiểu biết rõ hơn vè các loại cảm biến, động cơ giảm tốc và servo…

 Biết cách thi công và hoàn thiện các mô hình

 Biết thêm về các ngôn ngữ lập trình thi công hệ thống phần cứng và phần mềm) Mô hình thực tế và nguyên lý hoạt động.

CƠ SỞ LÝ THUYẾT

Tổng quan về xử lý ảnh

2.1.1 Giới thiệu về xử lý ảnh

Xử lý ảnh là quá trình xử lý tín hiệu số với mục tiêu biến đổi ảnh đầu vào thành ảnh đầu ra đạt được kết quả mong muốn Quá trình này đã phát triển mạnh mẽ trong nhiều lĩnh vực như y tế, kinh tế, văn hóa, quân sự và quốc phòng Hiện nay, có bốn khía cạnh chính của xử lý ảnh: nâng cao hình ảnh, nhận dạng hình ảnh, truy vấn hình ảnh và nén hình ảnh Trong bài viết này, chúng ta sẽ tập trung vào nhận dạng ảnh dựa trên ảnh màu từ cảm biến Camera, với quy trình xử lý ảnh được thực hiện theo các bước cụ thể.

Xử lý ảnh là một lĩnh vực khoa học kỹ thuật Đây là một ngành công nghiệp

Khoa học mới so với nhiều ngành khoa học khác, nhưng tốc độ phát triển của nó là rất nhanh,

Xử lý hình ảnh là kỹ thuật nâng cao và chỉnh sửa hình ảnh từ các thiết bị như máy ảnh và webcam Kỹ thuật này đã được phát triển và ứng dụng rộng rãi trong nhiều lĩnh vực quan trọng.

 Trong lĩnh vực quân sự: xử lý và xác định hình ảnh quân sự

 Lĩnh vực giao tiếp với người máy: nhận dạng hình ảnh, xử lý âm thanh

 Lĩnh vực bảo mật: nhận dạng khuôn mặt, nhận dạng vân tay,

 Trong lĩnh vực giải trí: trò chơi điện tử

 Lĩnh vực y tế: Xử lý hình ảnh y sinh, X-quang, MRI.…

Các phương pháp xử lý ảnh chủ yếu tập trung vào hai ứng dụng chính: nâng cao chất lượng và phân tích hình ảnh Nâng cao chất lượng ảnh đã được áp dụng từ những năm 1920, khi hình ảnh báo chí từ London đến New York cần cải thiện Vấn đề này liên quan đến việc điều chỉnh mức độ ánh sáng và độ phân giải của hình ảnh Sự phát triển của công nghệ xử lý ảnh diễn ra mạnh mẽ vào khoảng năm 1955, nhờ vào sự tiến bộ của máy tính sau Thế chiến thứ 2, giúp việc xử lý ảnh kỹ thuật số trở nên dễ dàng hơn.

Vào năm 1964, máy tính đã có khả năng xử lý và cải thiện chất lượng hình ảnh từ Mặt Trăng thông qua nhiệm vụ Ranger 7 của Hoa Kỳ, bao gồm các kỹ thuật như xử lý viền hình ảnh và lưu trữ hình ảnh.

Từ năm 1964 đến nay, công nghệ xử lý hình ảnh đã có những bước tiến vượt bậc với sự phát triển của mạng nơ-ron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, cùng với các công cụ nén ảnh Những công nghệ này không chỉ cải thiện chất lượng hình ảnh mà còn nâng cao khả năng nhận dạng, mang lại kết quả ấn tượng và được ứng dụng rộng rãi trong nhiều lĩnh vực.

Hình 2 1 Quá trình xử lí ảnh

Quá trình thu nhận ảnh là bước đầu tiên và quyết định trong xử lý ảnh, nơi ảnh được thu từ các thiết bị như camera, cảm biến và máy quét, sau đó được số hóa Lựa chọn thiết bị thu nhận ảnh phụ thuộc vào đặc tính của đối tượng cần xử lý, với các thông số quan trọng như độ phân giải, chất lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh Việc này yêu cầu sự đối chiếu, so sánh và rút ra kết luận để đảm bảo hiệu quả trong quá trình xử lý.

Hậu xử lý Hệ quyết định, lưu trữ

Tiền xử lý ảnh là bước quan trọng nhằm cải thiện độ tương phản, khử nhiễu, khử bóng và khử độ lệch, giúp nâng cao chất lượng ảnh Quá trình này thường sử dụng các bộ lọc để chuẩn bị cho các bước xử lý phức tạp hơn sau đó.

Đặc trưng ảnh là nội dung thực sự của các bức ảnh, được thể hiện qua màu sắc, hình dạng, kết cấu và các đặc trưng cục bộ khác Nội dung ảnh cung cấp thông tin quan trọng từ chính bức ảnh, vì vậy việc nhận biết màu sắc là một phần quan trọng trong việc trích chọn đặc trưng.

Hậu xử lý đóng vai trò quan trọng trong việc xử lý các đặc điểm đã được trích chọn, cho phép loại bỏ hoặc biến đổi chúng để phù hợp với các kỹ thuật cụ thể trong hệ quyết định.

 Hệ quyết định, lưu trữ: Có nhiệm vụ đưa ra quyết định (phân loại) dựa trên dữ liệu đã học lưu trong khối lưu trữ

 Đối chiếu, so sánh và kết luận: Đưa ra kết luận cuối cùng dựa vào những cơ sở của hệ quyết định

2.1.2 Những vấn đề trong xử lý ảnh a Điểm ảnh

Điểm ảnh, hay pixel, là đơn vị cơ bản tạo nên một bức ảnh kỹ thuật số, với địa chỉ của nó được xác định bằng tọa độ (x, y) Một bức ảnh kỹ thuật số có thể được tạo ra thông qua chụp ảnh hoặc các phương pháp đồ họa khác, và được cấu thành từ hàng ngàn hoặc hàng triệu pixel riêng lẻ Số lượng pixel trong bức ảnh càng nhiều thì độ chi tiết càng cao, với một triệu pixel tương đương với 1 Megapixel.

Ảnh số là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp, mô tả ảnh gần với ảnh thật Độ phân giải của ảnh được xác định bởi số lượng điểm ảnh; ảnh có độ phân giải cao sẽ thể hiện rõ nét các đặc điểm và trở nên thực và sắc nét hơn Hình ảnh là tín hiệu hai chiều, được xác định bởi hàm toán học f (x, y), trong đó x và y là tọa độ theo chiều ngang và chiều dọc Các giá trị của f (x, y) tại bất kỳ điểm nào là các giá trị điểm ảnh tại điểm đó Ảnh số là biểu diễn số học của hình ảnh trong máy tính, thường là biểu diễn nhị phân.

Mức xám của điểm ảnh biểu thị cường độ sáng và được gán giá trị tại từng điểm Các mức ảnh xám phổ biến bao gồm 16, 32, 64, 128 và 256 Trong đó, mức 256 là mức sử dụng phổ biến nhất, tương đương với việc sử dụng 1 byte để biểu diễn mức xám.

 Ảnh nhị phân: Là ảnh có 2 mức trắng và đen, chỉ có 2 giá trị 0 và 1 và chỉ sử dụng 1bit dữ liệu trên 1 điểm ảnh

 Ảnh đen trắng: Là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám ở các điểm ảnh có thể khác nhau

Ảnh màu là sự kết hợp của ba màu cơ bản, tạo nên một thế giới màu sắc sinh động Mỗi màu thường được mô tả bằng 3 byte, cho phép hiển thị khoảng 16,7 triệu màu sắc khác nhau Quan hệ giữa các điểm ảnh cũng rất quan trọng trong việc tạo ra hình ảnh chất lượng cao.

Tập hợp những điểm ảnh có xung quanh điểm ảnh đang xét được gọi là lân cận ảnh.

Bốn điểm ảnh lân cận theo cột và hàng được xác định bởi các tọa độ (x+1, y), (x-1, y), (x, y+1), và (x, y-1), được ký hiệu là tập N4(p) Ngoài ra, bốn điểm ảnh lân cận theo đường chéo có tọa độ (x+1, y+1), (x+1, y-1), (x-1, y+1), và (x-1, y-1), được ký hiệu là tập ND(p) Tập 8 điểm ảnh lân cận là sự kết hợp của hai tập N4(p) và ND(p).

Liên kết ảnh là mối liên kết giữa hai điểm ảnh gần nhau, bao gồm ba loại: liên kết 4, liên kết 8 và liên kết m (liên kết hỗn hợp) Trong ảnh đa mức xám, ta có thể xác định V chứa nhiều giá trị, với V = {tập con} Đối với điểm p có tọa độ (x, y), các loại liên kết này đóng vai trò quan trọng trong việc phân tích và xử lý ảnh.

Liên kết 4: hai điểm ảnh p và q có giá trị thuộc về tập V được gọi là liên kết 4 của nhau nếu q thuộc về tập N4 (p)

Liên kết 8: hai điểm ảnh p và q có giá trị thuộc về tập V được gọi là liên kết 8 của nhau nếu q thuộc về tập N8 (p)

Hình 2 3 Các lân cận ảnh

Giới thiệu về ngôn ngữ Python và thư viện openCV

Python là một ngôn ngữ lập trình cao cấp, vẫn giữ vị thế quan trọng trong nhiều ứng dụng thực tế Với ưu điểm nổi bật như dễ đọc, dễ cấu trúc và tương thích tốt trên các hệ điều hành như Windows, Mac OS và Linux, Python trở thành lựa chọn phổ biến cho lập trình viên.

Python là một ngôn ngữ lập trình nổi bật với cấu trúc đơn giản, rõ ràng và ngắn gọn, đặc biệt dễ học Đây được xem là ngôn ngữ lý tưởng cho những ai mới bắt đầu theo đuổi sự nghiệp lập trình viên.

 Ngoài ứng dụng của Python rất đa năng thì ngôn ngữ này còn có mặt trên tất cả các hệ điều hành như Windows, MacOS, MS-DOS, Unix

Một trong những ưu điểm nổi bật của Python là khả năng tương thích với một hệ sinh thái thư viện phong phú, bao gồm các công cụ mạnh mẽ cho khai thác dữ liệu như Scikit-learn và Pandas, phục vụ cho khoảng 400 triệu người dùng trên toàn thế giới.

 Có tốc độ xử lý cực nhanh, Python có thể phát triển để tạo ra những script siêu nhỏ tới những phần mềm cực lớn như Blender 3D

 Python không có các thuộc tính như: protected, private haypublic, không có vòng lặp do…while và switch… case

 Dù có nhiều ưu điểm tốt hơn so với các ngôn ngữ lập trình khác nhưng lại có tốc độ chậm hơn ngôn ngữ lập trình C++, Java

Mặc dù Python có một số nhược điểm nhỏ, nhưng đây vẫn là ngôn ngữ lập trình mà mọi lập trình viên nên tìm hiểu và làm quen Việc sử dụng Python giúp tiết kiệm thời gian trong công việc và hỗ trợ sự phát triển nghề nghiệp.

OpenCV, initiated by Intel in 1999 under the leadership of Gary Bradsky, stands for Open Source Computer Vision Library It is a leading open-source library for computer vision and machine learning, now enhanced with high-speed GPU capabilities for real-time operations.

OpenCV là một thư viện mã nguồn mở được phát hành theo giấy phép BSD, cho phép miễn phí cho cả học tập và mục đích thương mại Thư viện này hỗ trợ nhiều ngôn ngữ lập trình như C++, C, Python và Java, đồng thời tương thích với các hệ điều hành như Windows, Linux, Mac OS, iOS và Android OpenCV được thiết kế để tối ưu hóa hiệu suất tính toán, đặc biệt cho các ứng dụng thời gian thực Khi được lập trình bằng C/C++ một cách tối ưu, thư viện này có khả năng tận dụng tối đa sức mạnh của bộ xử lý đa lõi.

Các tính năng của thư viện OpenCV:

 Đối với hình ảnh, chúng ta có thể đọc và lưu hay ghi chúng

 Có thể ghi và đọc video

 Xử lý hình ảnh có thể lọc nhiễu hoặc chuyển đổi ảnh

 Thực hiện nhận dạng đặc điểm của hình dạng ảnh

 Phát hiện các đối tượng được xác định trước như khuôn mặt, mắt, …

 Phân tích video, ước lượng chuyển động của đối tượng xuất hiện trong video, tách nền và đối tượng riêng biệt, …

Hình 2 6 Thư viện Open CV

Phân tích xác định màu sắc

2.3.1 Hệ màu a Hệ màu RGB (Red-Green-Blue)

Hệ màu RGB, ra đời từ năm 1953, đã trở thành tiêu chuẩn cho tivi màu và các màn hình Internet Đặc điểm nổi bật của hệ màu này là khả năng phát xạ ánh sáng, hay còn gọi là mô hình ánh sáng bổ sung Cụ thể, hệ màu RGB bao gồm ba màu cơ bản: Đỏ (Red), Xanh lá (Green) và Xanh dương (Blue), kết hợp với nhau để tạo ra hàng triệu màu sắc khác nhau.

Blue (Xanh dương) hòa trộn với nhau theo tỉ lệ 1:1:1 sẽ tạo thành màu trắng (màu sáng hơn màu gốc)

Hệ màu RGB hoạt động bằng cách phát ra các điểm sáng màu khác nhau trên nền đen, giúp tạo ra hình ảnh và màu sắc rõ nét trên các thiết bị như tivi, máy tính và máy ảnh Các file thiết kế và hình ảnh sử dụng màu RGB cùng ánh sáng trắng sẽ mang lại sự chân thực và sắc nét hơn, trong khi việc sử dụng các hệ màu khác có thể dẫn đến sai lệch lớn.

Khi mỗi kênh màu được mã hóa bằng 1 byte (8 bit) với giá trị từ 0 đến 255, ta có ảnh 24 bit màu, cho phép mã hóa khoảng 16.581.375 màu (khoảng 16 triệu màu) Dưới đây là một số màu cơ bản trong hệ màu RGB.

 (0, 255, 0) là màu xanh lá cây

 (255, 0, 255) là màu hồng cánh sen b Hệ màu HSV (Hue-Saturation-Light)

Sau khi hình ảnh được chụp và chuyển đổi sang định dạng RGB, chúng sẽ được chuyển sang hệ màu HSV, giúp phân tích màu sắc hiệu quả hơn Hệ màu này phân chia rõ ràng các thành phần về vùng màu, độ bão hòa và độ sáng, tạo điều kiện thuận lợi cho việc xử lý và nhận diện màu sắc.

HSV và HSL là không gian mẫu phổ biến trong chỉnh sửa và phân tích ảnh, cũng như trong lĩnh vực thị giác máy tính Không gian này mô tả màu sắc thông qua ba thông số: H (Hue - màu sắc), S (Saturation - độ đậm đặc, sự bảo hòa), và V (Value - giá trị cường độ sáng) Thông thường, HSV được thể hiện dưới dạng hình trụ hoặc hình nón, và được ứng dụng rộng rãi trong xử lý ảnh với thư viện OpenCV.

Các giá trị HSV được xác định qua nhiều lần lấy mẫu và hiệu chỉnh, dựa trên bảng màu HSV để chọn ra giá trị phù hợp Quá trình phân tách màu sắc bề mặt sử dụng các ngưỡng màu đã được so sánh thủ công với bảng màu HSV Mặc dù có thể xuất hiện sai lệch về màu sắc, nhưng mức độ sai lệch này không quá lớn Tuy nhiên, những sai lệch này có thể gây nhầm lẫn trong việc xác định màu sắc Do đó, cần điều chỉnh các ngưỡng màu để phản ánh chính xác hơn màu sắc bề mặt.

Sau khi hiệu chỉnh các ngưỡng màu, ta có được: 3 màu sắc

2.3.2 Xác định HSV để phân loại

Sau khi xác định ngưỡng màu HSV cho việc phân loại, bạn có thể sử dụng đoạn mã dưới đây để lấy ngưỡng màu Điều này có thể thực hiện bằng cách kéo thanh màu HSV mà nhóm đã thiết lập trực tiếp trên máy tính thông qua phần mềm Python.

Bước 1: Copy đoạn code dưới dán vào Python trên Laptop, lưu file và tiến hành Run (chú ý nhập đường link ảnh ta muốn lấy ngưỡng)

# Khai báo thư viện import numpy as np import cv2

# Tạo một hàm rỗng def nothing(x): pass

# Tạo khung cho ảnh cv2.namedWindow("image")

To create a trackbar for adjusting color settings in OpenCV, use the following code: `cv2.createTrackbar("low_H", 'image', 0, 179, nothing)` and `cv2.createTrackbar("high_H", "image", 179, 179, nothing)` for hue adjustments For saturation, implement `cv2.createTrackbar("low_S", "image", 0, 255, nothing)` and `cv2.createTrackbar("high_S", "image", 255, 255, nothing)` Similarly, for value adjustments, use `cv2.createTrackbar("low_V", "image", 0, 255, nothing)` and `cv2.createTrackbar("high_V", "image", 255, 255, nothing)` This setup allows for dynamic color manipulation in a continuous loop with `while (True):`.

To read an image from the library, use the command `img = cv2.imread("home/Desktop/anhxanh.jpg")` Retrieve the current threshold values with `ilow_H = cv2.getTrackbarPos("low_H", "image")`, `ihigh_H = cv2.getTrackbarPos("high_H", "image")`, `ilow_S = cv2.getTrackbarPos("low_S", "image")`, `ihigh_S = cv2.getTrackbarPos("high_S", "image")`, `ilow_V = cv2.getTrackbarPos("low_V", "image")`, and `ihigh_V = cv2.getTrackbarPos("high_V", "image")` Convert the image from RGB to HSV using `hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)` Create arrays for the HSV channels with `lower_hsv = np.array([ilow_H, ilow_S, ilow_V])` and `higher_hsv = np.array([ihigh_H, ihigh_S, ihigh_V])` Apply the `cv2.inRange` function to create a mask with `mask = cv2.inRange(hsv, lower_hsv, higher_hsv)` Finally, use the mask to isolate the basic color in the image with `img = cv2.bitwise_and(img, img, mask=mask)` and display the result using `cv2.imshow("image", img)`.

# Nhấn phím q để kết thúc if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.waitKey()

# Đóng tất cả các cửa sổ Window cv2.destroyAllWindows()

Hình 2 12 Code khi nhập vào Python và nhấn RUN ĐỂ CHẠY Python

Bước 2: Dùng chuột kéo thanh trên màn hình để xác định ngưỡng màu cần lấy ta được ngưỡng màu như bước 3

Để thoát khỏi chương trình, nhấn phím "q" Đối với màu sắc, ta có các giá trị tối thiểu và tối đa cho từng màu: màu đỏ có giá trị tối thiểu là [40,50,150] và tối đa là [100,100,250]; màu vàng có giá trị tối thiểu là [0,160,140] và tối đa là [50,240,220]; màu xanh dương có giá trị tối thiểu là [130,130,0] và tối đa là [200,200,50].

Giới thiệu linh kiện

Arduino Uno là một board mạch vi điều khiển do Arduino.cc phát triển, sử dụng vi điều khiển AVR Atmega328P Nền tảng điện tử mã nguồn mở này cho phép người dùng xây dựng các ứng dụng điện tử tương tác thông qua phần mềm và phần cứng hỗ trợ.

Trước khi Arduino ra đời, việc thực hiện các dự án điện tử nhỏ liên quan đến lập trình và biên dịch đòi hỏi sự hỗ trợ từ các thiết bị biên dịch khác như vi điều khiển PIC hoặc IC vi điều khiển họ 8051 Người dùng cần thiết kế chân nạp onboard hoặc đầu tư vào các thiết bị hỗ trợ nạp và biên dịch như mạch nạp 8051 và mạch nạp PIC.

Trong những năm qua, Arduino đã trở thành nền tảng quan trọng cho hàng ngàn dự án điện tử, từ những ứng dụng đơn giản trong đời sống hàng ngày đến các dự án khoa học phức tạp.

Trước khi Arduino ra đời, việc thực hiện các dự án điện tử nhỏ liên quan đến lập trình và biên dịch đòi hỏi sự hỗ trợ từ các thiết bị biên dịch khác Chẳng hạn, khi sử dụng vi điều khiển PIC hoặc IC vi điều khiển họ 8051, chúng ta cần thiết kế chân nạp onboard hoặc mua các thiết bị hỗ trợ như mạch nạp 8051 và mạch nạp PIC để thực hiện quá trình nạp và biên dịch.

Arduino hiện nay rất phổ biến tại Việt Nam, thu hút sự quan tâm của học sinh, sinh viên và người đi làm Nhiều dự án, từ nhỏ đến lớn, được thực hiện nhanh chóng nhờ vào việc chia sẻ mã nguồn mở trên các diễn đàn trong và ngoài nước Điều này hỗ trợ những ai đam mê nghiên cứu và chế tạo sản phẩm có ích cho xã hội Trong những năm qua, Arduino đã trở thành bộ não cho hàng ngàn dự án điện tử, từ những ứng dụng đơn giản trong cuộc sống đến những nghiên cứu khoa học phức tạp.

Thư viện mã nguồn mở ngày càng phong phú, hỗ trợ người mới tìm hiểu Arduino và các lập trình viên nhúng, đồng thời tạo điều kiện cho các chuyên gia tham khảo và phát triển thêm Thông tin cấu hình của Arduino Uno R3 cũng rất quan trọng trong quá trình sử dụng và phát triển ứng dụng.

Hiện nay trên thị trường có rất nhiều phiên bản Arduino như Arduino Uno R3, Arduino Uno R3 CH340, Arduino Mega2560, Arduino Nano, Arduino Pro Mino, Arduino Lenadro, Arduino Industrial

Arduino Uno R3 là một bo mạch vi điều khiển do Arduino.cc phát triển, thuộc nền tảng điện tử mã nguồn mở, chủ yếu dựa trên vi điều khiển AVR Atmega328P.

Arduino Uno R3 hiện tại được trang bị giao diện USB, 6 chân đầu vào analog và 14 cổng kỹ thuật số I/O, cho phép kết nối với các mạch điện tử và thiết bị bên ngoài Trong số 14 cổng I/O, có 6 chân đầu ra xung PWM, giúp các nhà thiết kế dễ dàng kiểm soát và điều khiển các thiết bị điện tử ngoại vi một cách trực quan.

Arduino Uno R3 kết nối trực tiếp với máy tính qua USB, cho phép giao tiếp với phần mềm lập trình IDE, tương thích với Windows, MAC và Linux, nhưng Windows là lựa chọn tối ưu hơn IDE sử dụng các ngôn ngữ lập trình như C và C++.

Ngoài USB, người dùng có thể dùng nguồn điện ngoài để cấp nguồn cho bo mạch

Bo mạch Arduino Uno tương tự như các loại bo mạch Arduino khác về chức năng và cách sử dụng, nhưng không được trang bị chip điều khiển FTDI USB to Serial.

Arduino Nano V3 và Arduino Uno là hai phiên bản bo mạch chính thức nhất, sử dụng vi điều khiển Atmega328 8bit AVR Atmel với bộ nhớ RAM 32KB.

Khi nhiệm vụ trở nên phức tạp, việc kết nối thẻ nhớ SD Micro vào Arduino giúp mở rộng khả năng lưu trữ thông tin.

Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)

Tần số hoạt động 16 MHz

Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC

Số chân Digital I/O 14 (6 chân hardware PWM)

Số chân Analog 6 (độ phân giải 10bit)

Dòng tối đa trên mỗi chân I/O 30 mA

Dòng ra tối đa (5V) 500 mA

Dòng ra tối đa (3.3V) 50 mA

Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader

Hình 2 13 Sơ đồ chân arduino

Arduino Uno đi kèm với đèn LED tích hợp, kết nối qua chân 13, cho phép điều khiển đèn LED với mức logic HIGH để bật và LOW để tắt.

Vin là điện áp đầu vào cho board mạch Arduino, khác với 5V từ cổng USB Pin này cung cấp điện áp toàn mạch qua jack nguồn, thường nằm trong khoảng 7-12VDC.

Chân 5V trên Arduino được sử dụng để cung cấp điện áp đầu ra, và bo mạch này có thể được cấp nguồn qua ba phương thức: kết nối USB, chân Vin hoặc giắc nguồn DC.

 USB: Hỗ trợ điện áp khoảng 5V trong khi Vin và Power Jack hỗ trợ dải điện áp trong khoảng từ 7V đến 20V

 GND: Chân mass chung cho toàn mạch Arduino

 Reset: Chân reset để thiết lập lại về ban đầu

TÍNH TOÁN THIẾT KẾ

Lưu đồ thuật toán

Hình 3 1 Lưu đồ thuật toán

Giải thích lưu đồ thuật toán

 Động cơ băng tải hoạt động và gán các tín hiệu đếm sản phẩm của từng màu và sản phẩm khác bằng giá trị ban đầu là 0

Khi cảm biến hồng ngoại phát hiện sản phẩm, chương trình sẽ được xử lý tiếp theo Nếu không phát hiện, hệ thống sẽ tiếp tục chờ cho đến khi cảm biến nhận diện được sản phẩm đi qua.

 Khi cảm biến phát hiện có vật, băng tải dừng lại, Raspberry Pi tiến hành chụp ảnh thông qua Camera Pi

 Chương trình bên kit Raspberry sẻ xử lý hình ảnh chụp được, nhận diện được màu sắc và truyền ngược lại cho kit

 Nếu là màu đỏ thì servo đỏ sẽ gạt sản phẩm màu đỏ vào máng trượt màu đỏ và đềm giá trị demd cộng lên 1

 Nếu là màu xanh thì servo xanh sẽ gạt sản phẩm màu xanh vào máng trượt màu xanh và đếm giá trị demx cộng lên 1

 Nếu là màu vàng thì servo vàng sẽ gạt sản phẩm màu vàng vào máng trượt màu vàng và đếm giá trị demv cộng lên 1

 Nếu sai thì sản phẩm còn lại sẽ được đi thằng ra máng trượt còn lại và đếm giá trị deml cộng lên 1

Giải thích lưu đồ xử lý ảnh

 Bắt đầu thì Raspbeery hoạt động và nhận tín hiệu từ Arduino để xử lý ảnh qua con camera pi để chuyển màu từ RGB sang HSV

 Nếu ảnh nằm trong khoảng từ min_màu_r tới max_mau_r thì sẽ chuyển tín hiệu về Arduino là màu đỏ

 Nếu ảnh nằm trong khoảng từ min_màu_b tới max_mau_b thì sẽ chuyển tín hiệu về Arduino là màu xanh

 Nếu ảnh nằm trong khoảng từ min_màu_y tới max_mau_y thì sẽ chuyển tín hiệu về Arduino là màu vàng

 Nếu ảnh không nằm trong khoảng từ min và max của ba màu thì sẽ chuyển tín hiệu về Arduino là lỗi.

Sơ đồ khối hệ thống

Chức năng các khối trong hệ thống:

Khối nguồn: Cung cấp nguồn điện cho toàn bộ hệ thống gồm có 2 phần là nguồn tổ ong và adapter

Khối cảm biến: Có chức năng gửi tín hiệu cho khối xử lý khi nhận được tín hiệu từ cảm biến hồng ngoại E18-D80NK

Khối xử lý trung tâm kết hợp giữa Arduino và Raspberry Pi, đảm nhận nhiệm vụ xử lý và nhận tín hiệu hình ảnh từ camera Sau khi tiếp nhận hình ảnh, khối xử lý sẽ tiến hành xử lý và so sánh với dữ liệu đã được cài đặt, từ đó đưa ra tín hiệu cho các khối khác.

Khối hiển thị nhận tín hiệu từ khối xử lý trung tâm để hiển thị thông tin đặc trưng của từng loại sản phẩm và cập nhật số lượng của từng loại sản phẩm.

Khối camera có nhiệm vụ chuyển đổi tín hiệu hình ảnh từ thực tế thành tín hiệu điện và truyền dữ liệu đến khối xử lý trung tâm Trong hệ thống này, camera Raspberry Pi được sử dụng để thu thập tín hiệu hình ảnh.

Khối động cơ: được điều khiển bởi khối xử lý, sử dụng động cơ cho băng tải và động cơ servo mg995.

Sơ đồ nối dây và các thiêt bị trong hệ thống

3.3.1 Khối nguồn Đề tài nhóm thục hiện sử dụng nhiều nguồn điện khác nhau để duy trì sự ổn định của hệ thống, vì nếu sự dụng một dây cung cấp điện cho toàn bộ hệ thống thì sẽ gây nhiễu làm mất đi tính ổn định của mô hình, nhóm sử dụng 2 nguồn điện cung cấp chính đó là nguồn điện cấp cho raspberry và nguồn cấp cho arduino

Nguồn cấp cho raspbrry và camera

Thông số kỹ thuật: Điện áp đầu vào: AC 100V-240V 50-60Hz Đầu cắm AC: chuẩn Hoa Kỳ Điện áp ra: DC 5V Cường độ dòng điện: 2A Hiệu quả hoạt động: 95%

Nguồn tổ ong cấp cho arduino

Nguồn tổ ong 12V 5A có thiết kế nguyên khối với nhiều lỗ nhỏ xung quanh, giúp tản nhiệt hiệu quả Sản phẩm này được ứng dụng phổ biến trong các hoạt động sinh hoạt và sản xuất, đặc biệt là trong công nghệ LED hiện đại, mang lại hiệu suất tối ưu cho các thiết bị.

Nguồn tổ ong 12V 5A là lựa chọn phổ biến cho nhiều thiết bị công nghiệp và dân dụng như tủ điện, đèn, camera giám sát, máy tính và loa đài Nó cung cấp nguồn một chiều ổn định, phù hợp với các thiết bị yêu cầu thông số tương ứng Đặc biệt, nguồn tổ ong 12V 5A thường được sử dụng trong các mạch ổn áp, giúp đảm bảo dòng điện đủ mạnh, tránh tình trạng sụt áp và ảnh hưởng đến hiệu suất của mạch.

Bộ nguồn 12V 5A có các chức năng nổi bật như chỉnh lưu, biến tần và nắn dòng, giúp ổn định dòng điện, điện áp và tần số dao động Ngoài vai trò quan trọng trong việc cung cấp điện, bộ nguồn tổ ong này còn góp phần tăng cường tuổi thọ cho các thiết bị điện.

Thông số của Nguồn tổ ong 12V 30A Điện áp đầu vào 110VAC hoặc 220VAC Điện áp đầu ra 9VDC~14VDC

Dòng điện đầu ra tối đa của sản phẩm là 30A, với tần số đầu vào từ 50-60Hz và nhiệt độ hoạt động trong khoảng 0 ℃ đến 40 ℃ Kích thước sản phẩm là 215 * 13 * 50 mm, bao gồm cổng vào N (dây nguội) và L (dây nóng), cùng với cổng tiếp chất chống dòng rò Cổng ra được thiết kế với 3 (+) và 3 (-).

3.3.2 Khối cảm biến Đề tài sử dụng một cảm biến duy nhất để phát hiện vật cản là cảm biến hòng ngoại E18-D80NK cảm biến được đặt bên cạnh camera, khi phát hiện vật cảm biến sẽ gửi tín hiệu để dừng băng tải và tiến hành chụp ảnh

Cảm biến được kết nối trực tiếp vào arduino gồm có 3 dây

 Chân tín hiệu (dây màu xanh) được nối với chân 8 trên Arduino

 Dây màu đen của cảm biến được nối vào GND trên arduino

 Dây vào đỏ được nối vào chần nguồn 5v trên arduino

Hình 3 5 Sơ đồ nối dây giửa cảm biến hồng ngoại và Arduino

3.3.3 Khối camera Được lắp đặt ở vị trí bên cạnh cảm biến hồng ngoại, có chức năng thu nhận và chụp ảnh và truyền dử liệu ảnh đến vi điều khiển xử lý Để có chất lượng hình ảnh tốt để xử lý ảnh dễ dàng ta dùng Camera cóđộ phân giải từ 8 Megapixels, nên chọn Camera Raspberry Pi V2.1 làm khối thu tín hiệu hình ảnh Vì khối có ảnh hưởng lớn đến chất lượng ảnh cùng với việc nhận dạng và phân loại sản phẩm, chính vì vậy nhóm chọn Camera P¡ V2.1 có độ phân giải tốt 8 Megapixels Megapixel (MP) là đơn vị đo độ phân giải của thiết bị quang

Camera P¡ có kích thước nhỏ gọn 25 x 23 x 9mm, lý tưởng cho thí nghiệm trong mô hình nhỏ Nó được kết nối trực tiếp với máy tính nhúng Raspberry thông qua cổng giao tiếp CSI với 15 chân Để cải thiện độ sáng và giảm ánh sáng nhiễu từ bên ngoài, nhóm đã thiết kế một buồng chụp với 4 bóng đèn LED công suất 1W, sử dụng điện áp 3V.

Hình 3 6 Sơ đồ nối dây giửa camera và raspberry

Bộ não của mô hình là khối xử lý với sự kết hợp giửa arduino và raspberry

Arduino Uno nhận tín hiệu từ cảm biến và gửi lệnh cho Raspberry Pi hoạt động Sau đó, Raspberry Pi tiếp nhận tín hiệu, tiến hành phân tích và xử lý, điều khiển hoạt động của các động cơ, đồng thời gửi dữ liệu đến khói hiển thị.

Raspberry Pi và Arduino Uno được lựa chọn để truyền nhận dữ liệu liên tục, với phương thức truyền Uart vì cả hai kit đều tích hợp sẵn chuẩn này Việc thiết lập trở nên dễ dàng và Uart cung cấp tốc độ truyền nhận nhanh và ổn định, phù hợp với yêu cầu của hệ thống.

 2 chân GND được nối với nhau

 Chân RX của Raspberry nối với chân TX của Arduino (chân màu vàng)

 Chân TX của Raspberry nối với chân RX của Arduino (chân màu xanh)

Hình 3 7 Sơ đồ nối dây giửa raspberry và Arduino

Trong khối động cơ của nhóm, chúng tôi sử dụng động cơ giảm tốc JGB37-52 để điều khiển băng tải, cùng với động cơ servo MG995 để cấp phôi và gạt sản phẩm Động cơ giảm tốc JGB37-52 được điều khiển thông qua mô-đun relay.

 Chân của modun relay 5V được nối với chân 13 của Arduino

 Chân GND của module relay 5V được nối với chân GND của Arduino

 Chân VCC module relay 5V được nối với chân 5V của Arduino

Hình 3 8 Sơ đồ nối dây giửa động cơ giảm tốc và arduino Động cơ Servo mg995

Động cơ servo có vai trò quan trọng trong việc gạt đẩy sản phẩm xuống, nhận tín hiệu trực tiếp từ Arduino Bốn động cơ hoạt động theo tín hiệu từ bốn chân khác nhau của Arduino, đảm bảo sự chính xác và hiệu quả trong quá trình vận hành.

 chân tín hiệu của servo mg995 được nối tương ứng với các chân 3,9,10,11 trên Arduino

 2 chân còn lại của servo mg995 được nối với chân GND và chân 5V của Arduino

Hình 3 9 Sơ đồ nối dây giửa động cơ servo và Arduino

Có chức năng hiển thị số lượng sản phẩm sau khi được phân loại trên màng hình led

Nhóm sử dụng màn hình LCD 16x2 để hiển thị kết quả, với các chuẩn giao tiếp tương thích với Arduino như I2C, 4bit và 8bit Chúng em chọn giao tiếp I2C do tính đơn giản của nó, chỉ cần kết nối 4 chân: VCC, GND, SDA và SCL.

 Chân VCC và Chân GND lần lượt được nối vào hai chân 5v và chân GND trên Arduino

 Chân SDA: của I2C trên LCD được nối vào chân A4 trên Arduino

 Chân SCL: của I2C trên LCD được nối vào chân A5 trên Arduino

Hình 3 10 Sơ đồ nối dây giữa lcd và Arduino

Sơ đồ nối dây tổng thể của hệ thống

Hình 3 11 Sơ đồ nối dây của mô hình

Hình 3 12 Sơ đồ nối dây raspberry với ardiuno

Hình 3 13 Sơ đồ nối dây arduino với các động cơ

Hình 3 14 Sơ đồ nối dây arduino với lcd, cảm biến

LẮP RÁP VÀ THI CÔNG HỆ THỐNG

Mô hình sản phẩm 3D trên creo

Creo 2 là phần mềm của hãng Prametric Technology Corp Đây là phần mềm thiết kế theo tham số, có nhiều tính năng mạnh trong lĩnh vực CAD/CAM/CNC Chỉ với Creo người dùng có thể thiết kế, tạo khuôn, lập trình gia công CNC và lập mô hình mô phỏng được tất cả các chi tiết hay vật thể

Người dùng có khả năng thiết kế đa dạng sản phẩm từ đơn giản đến phức tạp nhờ vào các công cụ như Extrude, Revolve, Sweep và các lệnh nâng cao như Blend, Warp, Section Sweep, Sweep Blend Bên cạnh đó, Creo 2 hỗ trợ thiết kế theo tham số, giúp tạo ra mô hình chi tiết máy tiêu chuẩn một cách nhanh chóng và hiệu quả.

Lắp ráp mô hình

Là bộ phận lớn nhất trong mô hình, nhưng có kết cấu đơn giản và dễ dàng lắp đặt, chúng em đã chọn lắp ráp phần này đầu tiên.

Băng tải được lắp trên bộ khung gổ chắc chắn và kết nối với động cơ JGB37-520- 107RPM

4.2.2 Lắp ráp và kết nối Arduino vs Raspberry

Hình 4 4 Kết nối arduino vs raspberry

Hình 4 5 Mô hình sản phẩm

Cài chương trình và lập trình

Sau khi hoàn tất lắp ráp tất cả linh kiện của hệ thống, bước tiếp theo là cung cấp nguồn điện và tiến hành cài đặt hệ điều hành cũng như lập trình cho hệ thống.

Cài hệ điều hành cho Raspberry Pi 3 model B+

Hiện nay có rất nhiều hệ điều hành hổ trợ cho Raspberry pi như: Raspbian, Ubuntu Mate, RiseOS, … Ở đây chúng em chọn Raspbian để cài cho

Raspberry pi vì nó là hệ điều hành cơ bản, phổ biến nhất và do chính Raspberry

Hình 4 6 Hệ điều hành Raspbian

Raspbian có kích thước khoảng 4 GB sau khi giải nén, do đó, cần thẻ nhớ từ 4 GB trở lên để cài đặt hệ điều hành cho Raspberry Pi Nhóm em đã sử dụng thẻ nhớ 16 GB để thực hiện cài đặt này.

Truy cập vào Raspberry Pi 3 model B+

Có nhiều phương pháp để truy cập Raspberry Pi, bao gồm việc kết nối trực tiếp chuột, màn hình và bàn phím, hoặc điều khiển qua mạng LAN bằng các phần mềm điều khiển Trong bài viết này, nhóm chúng tôi sử dụng phần mềm VNC Viewer để điều khiển Raspberry Pi.

Bước 1: Đầu tiên ta tiến hành kết nối dây LAN giữa Raspberry Pi và Laptop

Hình 4 8 Kết nối dây LAN giữa Raspberry Pi và Laptop

Bước 2: Mở phần mềm Putty trên Laptop để truy cập vào Raspberry Pi lấy địa chỉ

 Tại mục Host Name nhập “rapberrypi”  Open  Accept, để truy cập vào Raspberry Pi

Hình 4 9 Truy cập vào Raspberry Pi

 Tiếp tục ta tiến hành nhập câu lệnh “ifconfig”  Enter để lấy địa chỉ IP của Raspberry Pi

Hình 4 10 Lấy địa chỉ IP của Raspberry Pi

Bước 3: Mở phần mềm VNC viewer để truy cập vào Raspberry Pi thông qua tài khoảng đã cài mặt định: “pi” mật khẩu:”123456789”

Hình 4 11 Tên đăng nhập và mật khẩu truy cập vào Raspberry Pi

Sau khi truy cập vào Raspberry Pi, bạn cần cài đặt Python và Arduino trực tiếp trên màn hình laptop để tiến hành lập trình.

Hình 4 12 Cài Python và Arduino trên Raspberry Pi

Hướng dẫn sử dụng và thao tác

Có 2 cách để Rapberry Pi hoạt động: tự động và thủ công Ở đây nhóm thực hiện thao tác tự động vì ta chỉ cần cấp nguồn cho Rapberry Pi nó có thể tự hoạt động mà ta không cần bất kì một thao tác nào khác Để sử dụng Raspberry Pi tự động ta cần thực hiện các bước sau:

Bước 1: Ta truy cập vào Terminal của Rapberry Pi tiến hành gõ dòng lệnh:

“sudo nano /etc/rc.local” Enter

Bước 2: Nhập đường dẫn file cần chạy khi khởi động

 Tại mục Fi ta gõ cấu trúc lệnh: python “đường dẫn file cần chạy” &

 Nhấn tổ hợp phím Ctrl+X để lưu thay đổi

* Hướng dẫn sử dụng phần cứng

Sau khi cấp nguồn cho Raspberry Pi, hãy nhấn nút nguồn (nút màu đỏ) và chờ khoảng 1 phút để thiết bị khởi động hoàn tất Hệ thống sẽ tự động tiến hành phân loại sau khi khởi động.

Nếu trong thời gian đang phân loại ta muốn thiết lập lại giá trị ban đầu bằng cách ta tiến hành nhấn nhả nút Reset (nút màu xanh)

 Để sản phẩm xa tầm tay trẻ em

 Đặt sản phẩm tại nơi bằng phẳng, khô ráo, thoáng mát tránh tiếp xúc trực tiếp với ánh nắng

 Không để sản phẩm chịu tác động của ngoại lực như va chạm mạnh, rơi rớt

 Cấp đúng nguồn 220VAC và đảm bảo nguồn điện ổn định để hệ thống hoạt động ổn định

 Sản phẩm không hoạt động: Kiểm tra nguồn điện cấp đúng 220VAC, kiểm tra dây cắm,

Nếu sản phẩm bị vỡ, hư hỏng hoặc đã được đảm bảo nguồn điện nhưng vẫn không hoạt động, hãy tìm sự hỗ trợ từ kỹ thuật viên Tuyệt đối không tự ý tháo mở hoặc thay thế linh kiện bên trong hộp điều khiển.

TỔNG KẾT VÀ KẾT LUẬN

Tổng kết

Sau quá trình nghiên cứu và tham khảo tài liệu, dưới sự hướng dẫn của cô Nguyễn Thị Thanh Vi, nhóm đã thành công chế tạo mô hình “Ứng dụng xử lý ảnh trong hệ thống phân loại sản phẩm” bằng ngôn ngữ Python và thư viện OpenCV trên Kit Raspberry và Arduino Uno Mô hình hoạt động tương đối chính xác, đáp ứng yêu cầu đề tài Tuy nhiên, nhóm cũng gặp một số khó khăn trong quá trình thực hiện.

 Kiến thức về lập trình còn hạn hẹp

 Lần đầu tiếp xúc với Raspberry và Arduino nên chưa nắm rõ mọi thứ

 Việc cài đặt một số chương trình còn khó khăn

 Lần đầu làm một đồ án lớn nên việc phân chia công việc giữa các thành viên chưa tốt

Trong quá trình thực hiện đề tài, nhóm đã nắm vững các chức năng cơ bản của Raspberry Pi, bao gồm việc tạo file mới và tìm hiểu ngôn ngữ lập trình Python Nhóm cũng đã chạy thành công các chương trình Python trên thiết bị này Bên cạnh đó, nhóm tự cài đặt hệ điều hành cho Raspberry Pi và kết nối với Camera Pù để chụp ảnh.

Nhóm nghiên cứu đã thành công trong việc phân loại sản phẩm thành ba màu cơ bản: đỏ, xanh và vàng Các sản phẩm không thuộc một trong ba màu này sẽ được xếp vào danh mục sản phẩm khác Đồng thời, số lượng sản phẩm theo từng màu sắc cũng được đếm và hiển thị trên màn hình LCD.

Kết quả của quá trình nhóm đã đạt như:

 Hoàn thành được đồ án như mục tiêu đặt ra

 Làm quen với Raspberry, Arduino

 Được tiếp xúc, sử dụng với các linh kiện điện tử như cảm biến hồng ngoại, camera, động cơ servo…

 Tiếp xúc và sử dụng ngôn ngữ lập trình Python và thư viện OpenCV

Raspberry Pi 3 Model B+ là lựa chọn lý tưởng cho các dự án vừa và nhỏ nhờ kích thước gọn gàng, nhưng lại không phù hợp cho những hệ thống lớn do những hạn chế về hiệu suất.

 Arduino Uno R3 rất đa dùng nhiều công năng phù hợp với sinh viên làm đồ án dể lập trình dể kết nối, giá thành lại rẻ

Module Camera Pi có độ phân giải vừa phải nhưng nổi bật với giá thành phải chăng, khả năng kết nối linh hoạt và chất lượng ảnh phù hợp cho các ứng dụng xử lý ảnh.

Sau nhiều lần thử nghiệm, mô hình hệ thống đã được thiết kế và xây dựng hoạt động ổn định Cảm biến có khả năng đọc nhanh, với thời gian từ khi chụp ảnh đến khi đưa ra sai số trung bình nhỏ hơn 5%.

Kết luận

Tổng hợp kết quả đạt được và so sánh với yêu cầu của giảng viên và mục tiêu thiết kế, hệ thống hoàn thiện và chính xác hơn

Mô hình phần cứng hiệu quả, thiết bị nhỏ gọn và dễ lắp đặt, tiết kiệm chi phí, đồng thời nhận biết chính xác hầu hết các màu sắc của sản phẩm đầu ra, đảm bảo chất lượng sản phẩm cao.

Hệ thống còn những hạn chế sau:

 Quá trình xử lý còn tương đối chậm

Hệ thống chụp ảnh hiện tại không đủ ánh sáng để đảm bảo chất lượng hình ảnh tối ưu, dẫn đến việc chỉ có thể phân loại sản phẩm dựa trên màu sắc mà không phát hiện được các lỗi sản phẩm.

Phần tài liệu tham khảo

[1] PGS.TS Đỗ Năng Toàn, TS Phạm Việt Bình, “Giáo trình Xử Lý Ảnh”, Đại học Thái Nguyên, 2007

[2] Sách Mastering OpenCV 4 with Python

[3] Sơ lược về cảm biế hồng ngoại E18-D80NK, Datasheet

[4] Sơ lược về động cơ DC – Khái niệm ,phân loại và điều khiển tốc độ http://motor2hand.com/, 2017

[5] Ứng dụng và nguyên lí hoạt động của Servo, https://www.vincss.org/, 2018

[6] Động cơ servo MG996, Datasheet

[7] Cấu tạo, phân loại , ứng dụng băng tải, TÍNH TOÁN và THIẾT kế BĂNG tải (123docz.net)

[8] Sơ lược về Raspberry Pi3, https://dientuviet.com/gioi-thieu-ve-raspberry-pi-3/

[9] Tài liệu về Aduino r3, http://arduino.vn/bai-viet/42-arduino-uno-r3

[10] Opencv-Python , https://docs.opencv.org/, 2018

[11] Opencv xử lí màu chuyển hệ màu , https://viblo.asia/, 2019

[12] Opencv xử lí ảnh chuyển hệ màu , https://techblog.vn/

This article discusses the implementation of a Python script utilizing OpenCV and serial communication The script begins by importing necessary libraries, including OpenCV for video capture and NumPy for numerical operations It initializes a video capture object with a resolution of 960x600 pixels and establishes a serial connection to a device via the USB port, configuring parameters such as baud rate, parity, stop bits, and byte size for effective data transmission.

The code snippet captures the dimensions of a frame using `frame.shape`, determining its height and width It calculates the center coordinates (cx, cy) and draws a circle at that position The color of the pixel at the center is extracted and stored in `pixel_centerd` Various color ranges are defined for red, yellow, blue, and green using NumPy arrays The RGB values of the centered pixel are printed, and a conditional statement checks if the pixel color falls within the defined yellow range.

The code snippet initiates a process to transmit gold color data via Arduino, utilizing the command `ser.write(b"v\n")` for output It ensures the data is flushed with `ser.flush()` and includes a brief pause with `time.sleep(1)` Additionally, the OpenCV function `cv2.putText` is employed to overlay the text "MauVang" on the frame, positioned at coordinates adjusted by `(cx -35, cy -20)`, using a specified font and color The conditional statement checks if the RGB values fall within defined ranges for the color red.

(min_mau_r[2]

Ngày đăng: 23/12/2023, 22:00

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] PGS.TS Đỗ Năng Toàn, TS. Phạm Việt Bình, “Giáo trình Xử Lý Ảnh”, Đại học Thái Nguyên, 2007 Sách, tạp chí
Tiêu đề: Giáo trình Xử Lý Ảnh
[4] Sơ lược về động cơ DC – Khái niệm ,phân loại và điều khiển tốc độ. http://motor2hand.com/, 2017 Link
[5] Ứng dụng và nguyên lí hoạt động của Servo, https://www.vincss.org/, 2018 Link
[8] Sơ lược về Raspberry Pi3, https://dientuviet.com/gioi-thieu-ve-raspberry-pi-3/ Link
[9] Tài liệu về Aduino r3, http://arduino.vn/bai-viet/42-arduino-uno-r3 Link
[10] Opencv-Python , https://docs.opencv.org/, 2018 Link
[11] Opencv xử lí màu chuyển hệ màu , https://viblo.asia/, 2019 Link
[12] Opencv xử lí ảnh chuyển hệ màu , https://techblog.vn/ Link
[2] Sách Mastering OpenCV 4 with Python Khác
[3] Sơ lược về cảm biế hồng ngoại E18-D80NK, Datasheet Khác
[6] Động cơ servo MG996, Datasheet Khác
[7] Cấu tạo, phân loại , ứng dụng băng tải, TÍNH TOÁN và THIẾT kế BĂNG tải (123docz.net) Khác

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

TÀI LIỆU LIÊN QUAN