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

Đồ án tốt nghiệp Công nghệ kỹ thuật máy tính: Thiết kế và thi công hệ thống nhận diện hàng hóa ở các siêu thị bán lẻ trên Raspberry PI 4

100 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Thiết Kế Và Thi Công Hệ Thống Nhận Diện Hàng Hóa Ở Các Siêu Thị Bán Lẻ Trên Raspberry Pi 4
Tác giả Trần Hữu Đạt, Nguyễn Ngọc Anh Đức
Người hướng dẫn TS. Nguyễn Mạnh Hùng
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Máy Tính
Thể loại đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 100
Dung lượng 11,57 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU (15)
    • 1.1. ĐẶT VẤN ĐỀ (15)
    • 1.2. MỤC TIÊU (16)
    • 1.3. PHƯƠNG PHÁP NGHIÊN CỨU (17)
    • 1.4. GIỚI HẠN ĐỀ TÀI (17)
    • 1.5. BỐ CỤC ĐỒ ÁN (18)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (19)
    • 2.1. BÀI TOÁN PHÂN LOẠI CLASSIFICATION (19)
    • 2.2. MẠNG MOBILENETV2 (21)
      • 2.2.1. Giới thiệu về mạng Mobilenetv2 (21)
      • 2.2.2. Những cải tiến (21)
    • 2.3. CƠ CHẾ HOẠT ĐỘNG CỦA CẢM BIẾN CÂN NẶNG (23)
      • 2.3.1. Tổng quan (23)
      • 2.3.2. Nguyên lý hoạt động (24)
    • 2.4. NGÔN NGỮ LẬP TRÌNH PYTHON (26)
      • 2.4.1. Giới thiệu về ngôn ngữ lập trình Python (26)
      • 2.4.2. Khái quát về thư viện Opencv (26)
    • 2.5. LẬP TRÌNH GIAO DIỆN PYTHON VỚI PYQT5 VÀ QT (27)
      • 2.5.1. Qt Designer là gì? (27)
      • 2.5.2. PyQt5 là gì? (28)
  • CHƯƠNG 3: THIẾT KẾ HỆ THỐNG (30)
    • 3.1. YÊU CẦU CỦA HỆ THỐNG (30)
    • 3.2. TÍNH TOÁN VÀ XÂY DỰNG HỆ THỐNG (30)
      • 3.2.1. Yêu cầu chung của hệ thống (30)
      • 3.2.2. Sơ đồ khối và chức năng từng khối (31)
    • 3.3. THIẾT KẾ HỆ THỐNG PHẦN CỨNG (32)
      • 3.3.1. Khối điều khiển trung tâm (32)
      • 3.3.2. Khối đọc ảnh (35)
      • 3.3.3. Khối điều khiển và hiển thị (37)
      • 3.3.4. Khối nguồn (39)
      • 3.3.5. Khối lưu trữ (41)
      • 3.3.6. Khối đọc cân nặng (42)
    • 3.4. THIẾT KẾ GIAO DIỆN ỨNG DỤNG (49)
      • 3.4.1. Trang đăng nhập (49)
      • 3.4.2. Trang Camera (50)
      • 3.4.3. Trang Orders (51)
      • 3.4.4. Trang Account (54)
      • 3.4.5. Trang Logout (55)
  • CHƯƠNG 4: THI CÔNG HỆ THỐNG (57)
    • 4.1. GIỚI THIỆU TỔNG QUAN (57)
    • 4.2. YÊU CẦU THI CÔNG CỦA HỆ THỐNG (57)
    • 4.3. THI CÔNG HỆ THỐNG (57)
      • 4.3.1. Chuẩn bị linh kiện phần cứng (57)
      • 4.3.2. Lắp ráp phần cứng (58)
    • 4.4. LẬP TRÌNH HỆ THỐNG (59)
      • 4.4.1. Cài đặt Raspbian và remote máy tính cho Raspberry Pi 4 45 4.4.2. Lưu đồ giải thuật (59)
    • 4.5. HUẤN LUYỆN MÔ HÌNH NHẬN DIỆN BẰNG MODEL (77)
      • 4.5.1. Xây dựng tập dữ liệu (77)
  • CHƯƠNG 5: KẾT QUẢ THỰC HIỆN (80)
    • 5.1. GIAO DIỆN HỆ THỐNG (80)
    • 5.2. KẾT QUẢ THỰC HIỆN THỬ NGHIỆM HỆ THỐNG (88)
    • 5.3. ĐÁNH GIÁ HỆ THỐNG SO VỚI SẢN PHẨM TRÊN THỊ TRƯỜNG (91)
    • 5.4. PHÂN TÍCH KẾT QUẢ (92)
  • CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (94)
    • 6.1. KẾT LUẬN (94)
    • 6.2. HƯỚNG PHÁT TRIỂN (94)
  • TÀI LIỆU THAM KHẢO (96)
  • PHỤ LỤC (97)

Nội dung

Dự án này tạo ra một hệ thống nhận dạng các sản phẩm không thể gán mã vạch như là rau, củ, quả, thịt, cá,… trên thị trường bán lẻ bằng cách sử dụng hình ảnh được chụp bằng máy quay video

GIỚI THIỆU

ĐẶT VẤN ĐỀ

Thị trường bán lẻ Việt Nam đang trở thành một trong những thị trường phát triển nhanh nhất Đông Nam Á, với tổng doanh thu bán lẻ hàng hóa và dịch vụ tiêu dùng đạt khoảng 5,680 nghìn tỷ đồng (tương đương 246 tỷ USD) trong năm 2022, tăng 19,8% so với năm trước Dự báo từ Bộ Công Thương cho thấy doanh thu bán lẻ của Việt Nam sẽ tiếp tục tăng trưởng ổn định với tốc độ khoảng 10% mỗi năm trong những năm tới.

Dự báo doanh thu bán lẻ tại Việt Nam sẽ đạt 350 tỷ USD vào năm 2025, với nhiều tín hiệu tích cực trong năm 2023 cho thấy hoạt động bán lẻ sôi động trở lại, không chỉ từ doanh nghiệp trong nước mà còn từ các nhà đầu tư nước ngoài Central Retail, nhà bán lẻ Thái Lan, đã công bố kế hoạch đầu tư thêm 20.000 tỷ đồng vào thị trường bán lẻ Việt Nam trong 5 năm tới, nhằm tăng doanh số lên 65.000 tỷ đồng trong giai đoạn 2022 - 2026 và mở rộng điểm bán từ 40 lên 55 tỉnh, thành phố Tập đoàn Aeon cũng có kế hoạch xây dựng thêm đại siêu thị tại Hà Nội và phát triển 20 trung tâm thương mại tại Việt Nam đến năm 2025 Thị trường bán lẻ Việt Nam hiện nay được phân chia thành nhiều phân khúc, trong đó chợ truyền thống vẫn chiếm tỷ trọng lớn, nhưng siêu thị và cửa hàng tiện lợi đang có tốc độ tăng trưởng nhanh chóng.

Trong bối cảnh thị trường bán lẻ ngày càng phát triển và cạnh tranh khốc liệt, việc nâng cao hiệu quả quản lý hàng hóa và cải thiện trải nghiệm mua sắm của khách hàng là vô cùng quan trọng Các siêu thị và cửa hàng tạp hóa đang phải đối mặt với thách thức lớn từ hệ thống tự phục vụ phức tạp, có thể khiến khách hàng chuyển sang lựa chọn cửa hàng khác Do đó, việc tối ưu hóa quy trình mua sắm và nâng cao sự hài lòng của khách hàng trở thành ưu tiên hàng đầu.

2 khiến công ty tồn tại, do đó, sự hài lòng của họ là chìa khóa thành công của doanh nghiệp

Khách hàng hiện nay mong đợi sự nhanh chóng và tiện lợi trong mua sắm, đặc biệt là việc tiết kiệm thời gian và tránh những trải nghiệm phức tạp tại quầy thanh toán Do đó, cải thiện quy trình nhận diện trái cây và rau quả trong các hệ thống tự phục vụ là rất cần thiết Một hệ thống nhận diện hàng hóa hiệu quả không chỉ giảm thời gian xử lý mà còn nâng cao sự hài lòng và lòng trung thành của khách hàng Tại Việt Nam, hệ thống này vẫn chưa được phát triển và ứng dụng rộng rãi, trong khi ở nước ngoài đã có những nghiên cứu tương tự, như dự án “Automatic Retail Product Identification System for Cashierless Stores” của Shiting Zhong, nhằm thiết kế một hệ thống nhận diện sản phẩm bán lẻ từ đầu đến cuối, cung cấp phương thức thanh toán thông minh cho các cửa hàng không thu ngân mà không cần quét mã vạch hay xếp hàng dài.

Nhóm chúng em đã quyết định thực hiện nghiên cứu đề tài “Thiết kế và thi công hệ thống nhận diện hàng hóa trong các siêu thị bán lẻ” với mục tiêu đưa ra giải pháp hiệu quả nhằm tăng tốc độ xử lý và giảm thiểu sai sót của con người trong các cửa hàng bán lẻ hiện nay.

MỤC TIÊU

Thiết kế thiết bị đo cân nặng hàng hóa sử dụng cảm biến Loadcell kết hợp với Arduino Nano để thu thập dữ liệu Dữ liệu này được gửi đến Raspberry Pi qua giao tiếp Serial, trong khi một camera được lắp đặt để nhận diện hình ảnh và thu thập thông tin về loại hàng hóa Dựa trên dữ liệu đầu vào, thiết bị sẽ phân loại hàng hóa theo mô hình đã được huấn luyện và hiển thị các thông tin cần thiết cho việc thanh toán trên giao diện ứng dụng trên màn hình LCD.

PHƯƠNG PHÁP NGHIÊN CỨU

Nhóm đồ án đã thực hiện việc nghiên cứu và phân tích các tài liệu, bài báo và nghiên cứu khoa học liên quan đến đề tài, bao gồm cả nguồn tư liệu trong nước và quốc tế.

Sau đó, đã tổng hợp các nội dung và lý thuyết đã tìm kiếm để xây dựng thành một hệ thống lý thuyết đầy đủ và chặt chẽ

Các phương pháp đã được phân tích và đánh giá kỹ lưỡng, từ đó lựa chọn phương pháp tối ưu cho đề tài Đồ án đã xây dựng mô hình hệ thống và tiến hành đánh giá các chức năng cùng hiệu suất của hệ thống.

Cuối cùng, nhóm đã thực hiện mô phỏng, phân tích cũng như đánh giá và kiểm tra kết quả mô phỏng của đề tài.

GIỚI HẠN ĐỀ TÀI

Hệ thống nhận diện hàng hóa đã được thiết kế và hoàn thiện ở mức độ mô phỏng, sau đó được kiểm tra để đảm bảo hoạt động ổn định và hiệu quả.

Do đó, các ràng buộc và thông số quan trọng của đề tài bao gồm:

- Hệ thống nhận diện được một số loại sản phẩm đơn giản chưa có tính phức tạp

- Sử dụng module đọc cân nặng loadcell giới hạn ở 40kg

- Dùng webcam để đọc ảnh từ đó phát hiện và nhận dạng sản phẩm

Hệ thống chấm công sử dụng các phương pháp và kỹ thuật như phân loại để nhận diện ảnh, tuy nhiên, sự sai sót trong việc nhận diện là khó tránh khỏi, đặc biệt đối với những sản phẩm có hình dạng tương tự nhau.

- Webcam với độ chính xác thấp trong điều kiện có ánh sáng cường độ quá cao hoặc thấp hoặc trong tình trạng bức xạ nhiệt lớn

- Webcam có thể nhận diện và phát hiện sản phẩm một cách chính xác ở khoảng cách vừa phải từ 0,2m đến 0.4m, không quá xa và không quá gần

- Khi mô hình cần thêm một sản phẩm mới thì gặp nhiều khó khăn.

BỐ CỤC ĐỒ ÁN

Báo cáo được tổ chức thành các phần chính sau đây:

Chương 1: Tổng quan: Nhóm sẽ trình bài về vấn đề được đề cập, giới thiệu lí do lựa chọn đề tài này, mục tiêu cụ thể của nghiên cứu, nội dung chi tiết của đề tài, giới hạn của nghiên cứu và bố cục tổ chức của bài viết

Chương 2: Cơ sở lý thuyết: Trong phần này, chúng ta sẽ trình bày các kiến thức lý thuyết cơ bản liên quan đến đề tài

Chương 3: Xây dựng và thiết kế hệ thống: Dựa trên yêu cầu của đề tài, nhóm đã tiến hành nghiên cứu và xác định các thành phần thích hợp cho hệ thống Sau đó, nhóm đã thực hiện việc thiết kế sơ đồ khối và phân tích chức năng của từng thành phần trong hệ thống

Chương 4: Thi công hệ thống: Phần này trình bày quá trình thiết kế phần cứng cho các thành phần của hệ thống, kiểm tra mạch và lắp ráp thành một mô hình hoàn chỉnh Lưu đồ giải thuật được cung cấp để giải thích cách hoạt động của hệ thống, đảm bảo tính tin cậy và hiệu quả

Chương 5: Kết quả thực hiện: Trình bày về kết quả của các chức năng trong hệ thống và kết quả điều khiển thông qua hình ảnh, video Đưa ra các kết quả thực hiện

Chương 6: Kết luận và hướng phát triển: Theo những kết quả thực nghiệm có được từ chương 5, thống kê và đưa ra kết luận tổng quan về đề tài, cũng như những gì mà nhóm đạt được và chưa đạt được của đề tài Từ đó đưa ra những hướng phát triển để cải tiến các chức năng của hệ thống.

CƠ SỞ LÝ THUYẾT

BÀI TOÁN PHÂN LOẠI CLASSIFICATION

Bài toán phân loại là quá trình xác định nhãn hoặc lớp cho một đối tượng dựa trên các đặc trưng của nó Mục tiêu chính là phát triển một mô hình có khả năng dự đoán chính xác nhãn của các đối tượng mới dựa trên dữ liệu huấn luyện.

Trong ví dụ về ba hộp đựng, mỗi hộp chứa các quả bóng màu khác nhau: hộp 1 có bóng đỏ, hộp 2 có bóng xanh lam và hộp 3 có bóng xanh lục Khi nhận một quả bóng mới, chúng ta cần phân loại nó vào hộp phù hợp dựa trên màu sắc Nếu quả bóng mới là màu đỏ, nó sẽ được đặt vào hộp chứa sẵn các quả bóng đỏ.

Hình 2.1: Ví dụ về classification

Phân loại dữ liệu được chia thành hai loại chính: phân loại nhị phân với hai lớp đầu ra (như phát hiện email thư rác: thư rác hoặc không thư rác) và phân loại đa lớp với nhiều hơn hai lớp đầu ra (như nhận dạng chữ viết tay: phân loại ảnh thành một trong 10 chữ số từ 0 đến 9).

Một số ví dụ điển hình của tác vụ phân loại bao gồm:

- Phát hiện gian lận: Phân loại các giao dịch tài chính là bình thường hay gian lận

- Chẩn đoán y tế: Sử dụng dữ liệu bệnh nhân để phân loại các trường hợp là bệnh hay không bệnh, hoặc phân loại loại bệnh cụ thể

- Nhận dạng chữ viết tay: Phân loại các bức ảnh của chữ viết tay thành các chữ số tương ứng

Phân loại văn bản là quá trình xác định chủ đề hoặc tâm trạng của đoạn văn, chẳng hạn như phân tích một bài đánh giá sản phẩm để nhận biết tính cảm xúc tích cực hay tiêu cực Việc này giúp người đọc hiểu rõ hơn về nội dung và cảm xúc mà tác giả muốn truyền tải.

Phân loại trong machine learning không chỉ giúp giải quyết các vấn đề cụ thể mà còn cung cấp cái nhìn sâu sắc về dữ liệu, từ đó hỗ trợ doanh nghiệp, tổ chức và cá nhân đưa ra quyết định chính xác và hiệu quả dựa trên dữ liệu.

Quy Trình Training và Testing Một Mô Hình Phân Loại:

Quy trình huấn luyện mô hình phân loại bắt đầu bằng việc cung cấp một tập dữ liệu đã gán nhãn, trong đó mỗi mẫu dữ liệu có các đặc trưng và nhãn lớp tương ứng Trong giai đoạn này, mô hình học cách liên kết các đặc trưng với nhãn lớp dựa trên các mẫu dữ liệu đã cho.

Sau khi hoàn thành quá trình huấn luyện, mô hình sẽ được kiểm tra trên một tập dữ liệu mới (testing set) mà nó chưa từng tiếp xúc để đánh giá khả năng tổng quát của nó Việc này nhằm xác định khả năng dự đoán chính xác nhãn lớp dựa trên các đặc trưng của dữ liệu mà không cần đến nhãn thực tế Đánh giá mô hình thường sử dụng các chỉ số như độ chính xác (accuracy), độ nhạy (recall), độ phân biệt (precision), và F1-score.

Quy trình training và testing là yếu tố quan trọng trong việc phát triển mô hình phân loại hiệu quả, giúp xác định mô hình tối ưu cho từng bài toán cụ thể và đảm bảo khả năng ứng dụng thực tiễn.

MẠNG MOBILENETV2

2.2.1 Giới thiệu về mạng Mobilenetv2

Với sự gia tăng sử dụng thiết bị di động và Internet of Things (IoT), nhu cầu về các mô hình học sâu nhẹ và hiệu quả trở nên quan trọng Các mô hình CNN truyền thống như AlexNet, VGG, và ResNet có hiệu suất cao nhưng yêu cầu nhiều tài nguyên tính toán và bộ nhớ, không phù hợp cho thiết bị di động Để giải quyết vấn đề này, nhóm nghiên cứu tại Google đã phát triển MobileNetV1 vào năm 2017, sử dụng kỹ thuật depthwise separable convolutions để giảm số lượng tham số và phép tính, giúp mô hình nhẹ hơn và nhanh hơn mà vẫn duy trì hiệu suất nhận dạng tốt MobileNetV2, được giới thiệu vào năm 2018, là một cải tiến của MobileNetV1.

MobileNetV2 introduces a novel architecture that utilizes inverted residuals and linear bottlenecks, enhancing efficiency in mobile and edge devices Authored by Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, and Liang-Chieh Chen, this research was presented at the 2018 Conference on Computer Vision and Pattern Recognition (CVPR) The model improves upon its predecessor by enabling better performance with reduced computational costs, making it ideal for real-time applications.

MobileNetV2 introduces two key concepts: inverted residuals and linear bottleneck layers Inverted residuals reduce the number of parameters while enhancing computational efficiency Linear bottleneck layers ensure the retention of information, preventing the loss of important features.

MobileNet employs Depthwise Separable Convolutions to reduce computational load and the number of parameters while enabling distinct feature extraction across different channels Consequently, MobileNet v2 continues to utilize Depthwise Separable Convolutions and introduces additional enhancements.

- Inverted Residual Block (shortcut connections giữa các bottlenecks)

Hình dưới đây cho thấy sự cải tiến của mô hình Mobilenetv2 so với mô hình tiền nhiệm:

Sự khác biệt của hai mô hình như sau:

- MobileNet gồm sử dụng 1 loại blocks gồm 2 phần, Deepwise và Pointwise

- MobileNet v2 sử dụng 2 loại blocks, bao gồm: residual block với stride = 1 và block với stride = 2 phục vụ downsizing

Có 3 phần đối với mỗi block:

- Layer đầu là 1×1 convolution với ReLu6

- Layer thứ hai, như cũ, là depthwise convolution

- Layer thứ 3 tiếp tục là 1×1 convolution nhưng không có activation function Linear được sử dụng thay vì ReLu như bình thường

Hình 2.3: Residual Block cơ bản

Kết nối tắt trong MobileNetV2 được thiết kế để giảm số lượng kênh đầu vào và đầu ra của mỗi khối residual, dẫn đến việc chúng được gọi là các lớp bottleneck.

Residual block của MobileNetV2 khác biệt so với các kiến trúc residual truyền thống, vì trong kiến trúc này, số lượng kênh ở đầu vào và đầu ra của một block nhỏ hơn so với các lớp trung gian Do đó, nó được gọi là Inverted residual block.

Các layer trung gian trong một block có nhiệm vụ biến đổi phi tuyến và cần dày hơn để tạo ra nhiều phép biến đổi hơn Kết nối tắt giữa các block được thực hiện trên các bottleneck input và output, không phải trên các layer trung gian, do đó các layer này chỉ cần ghi nhận kết quả mà không cần thực hiện biến đổi phi tuyến Trong các layer của block inverted residual block, chúng ta sử dụng biến đổi tích chập tách biệt chiều sâu để giảm thiểu số lượng tham số của mô hình, giúp các model MobileNet có kích thước nhẹ hơn.

CƠ CHẾ HOẠT ĐỘNG CỦA CẢM BIẾN CÂN NẶNG

Loadcell, hay còn gọi là cảm biến tải trọng, là thiết bị thiết yếu trong hệ thống đo lường và kiểm tra lực Nó có chức năng chính là chuyển đổi lực tác động thành tín hiệu điện, giúp người dùng dễ dàng theo dõi và phân tích lực một cách chính xác.

Loadcell là thiết bị chuyển đổi tín hiệu điện tử, cung cấp dữ liệu về trọng lượng hoặc lực tác động Với sự tiến bộ không ngừng của công nghệ, Loadcell đã trở thành yếu tố thiết yếu trong quy trình kiểm tra chất lượng, đo lường độ chính xác và đảm bảo an toàn.

Loadcell đóng vai trò quan trọng trong nhiều ngành công nghiệp nhờ khả năng đo lường chính xác và đáng tin cậy Nó được sử dụng để kiểm tra trọng lượng hàng hóa trong logistics, xác định lực cắt trong kỹ thuật cơ khí, và đo lường lực tác động trong các ứng dụng y tế, cung cấp dữ liệu có độ chính xác cao cho việc ra quyết định và kiểm tra.

Cảm biến tải trọng hoạt động dựa trên nguyên tắc biến đổi điện trở khi chịu tác động của lực Khi lực tác động lên Loadcell, điện trở bên trong sẽ thay đổi do biến dạng Sự thay đổi này được đo lường và chuyển đổi thành tín hiệu số.

Hình 2.4: Nguyên lý hoạt động của loadcell

Load Cell hoạt động dựa trên nguyên lý biến dạng cơ học và ứng suất (strain gauge) Một Load Cell cơ bản bao gồm các thành phần chính như cảm biến, bộ chuyển đổi và hệ thống điện tử, giúp đo lường lực và trọng lượng một cách chính xác.

- Khung chịu lực (Body): Đây là phần chính của Load Cell, thường được làm từ kim loại như thép hoặc nhôm, chịu trách nhiệm chịu lực nén hoặc kéo

Cảm biến biến dạng, hay còn gọi là strain gauge, được gắn lên bề mặt của các khung chịu lực Chúng thường hoạt động như những điện trở, biến đổi theo mức độ biến dạng của vật liệu.

- Ứng suất và Biến dạng:

+ Khi có một lực tác động (kéo hoặc nén) lên Load Cell, lực này gây ra sự biến dạng (thay đổi hình dạng) nhỏ trên khung chịu lực

+ Các strain gauge gắn trên khung chịu lực này cũng bị biến dạng theo sự thay đổi của khung

Strain gauge là các điện trở có giá trị thay đổi khi bị biến dạng Khi khung chịu lực bị biến dạng, các strain gauge sẽ kéo dài hoặc nén lại, dẫn đến sự thay đổi điện trở của chúng.

+ Sự thay đổi này theo định luật Ohm làm thay đổi điện trở, điều này có thể được đo lường

Để đo chính xác sự thay đổi điện trở, strain gauge thường được kết nối trong mạch cầu Wheatstone, giúp tăng cường độ nhạy và độ chính xác trong việc đo lường.

Mạch cầu Wheatstone bao gồm bốn điện trở, có thể bao gồm cả strain gauge, được kết nối theo hình dạng của một cây cầu Khi xảy ra sự thay đổi điện trở, mạch sẽ mất cân bằng và tạo ra điện áp đầu ra.

+ Điện áp đầu ra từ mạch cầu Wheatstone rất nhỏ, thường ở mức millivolt (mV)

Do đó, cần có một bộ khuếch đại tín hiệu để tăng cường điện áp này để có thể đọc được chính xác hơn

+ Tín hiệu điện này sau đó có thể được chuyển đổi từ dạng analog sang digital (A/D converter) để xử lý và hiển thị trên các thiết bị đo lường

NGÔN NGỮ LẬP TRÌNH PYTHON

2.4.1 Giới thiệu về ngôn ngữ lập trình Python

Python, một ngôn ngữ lập trình phổ biến, đã trở thành công cụ quan trọng trong nhiều lĩnh vực như khoa học dữ liệu, trí tuệ nhân tạo và phát triển web Được sáng tạo bởi Guido van Rossum vào những năm 1990, Python hiện nay là một trong những ngôn ngữ lập trình được ưa chuộng nhất toàn cầu Với cú pháp đơn giản và dễ hiểu, ngôn ngữ này giúp lập trình trở nên dễ dàng hơn Python cung cấp nhiều thư viện mạnh mẽ, hỗ trợ phát triển ứng dụng nhanh chóng và hiệu quả Ngoài ra, nhờ tính dễ học và cộng đồng phát triển đông đảo, Python cũng được sử dụng rộng rãi trong giảng dạy lập trình, với nhiều tài liệu và hỗ trợ trực tuyến cho người học.

2.4.2 Khái quát về thư viện Opencv

OpenCV là một thư viện mã nguồn mở nổi bật trong lĩnh vực xử lý ảnh và thị giác máy tính, được Intel ra mắt vào năm 1999 và hiện được duy trì bởi một cộng đồng toàn cầu Thư viện này cung cấp nhiều công cụ và thuật toán hữu ích, giúp đơn giản hóa quá trình phân tích và xử lý ảnh OpenCV được viết bằng C++ nhưng cũng hỗ trợ các ngôn ngữ khác như Python, Java và MATLAB thông qua các API Nó tương thích với nhiều hệ điều hành như Windows, Linux và macOS, và được ứng dụng rộng rãi trong các lĩnh vực như robot, xe tự lái, công nghiệp, y tế, an ninh và giải trí.

LẬP TRÌNH GIAO DIỆN PYTHON VỚI PYQT5 VÀ QT

PyQt là một module Python cung cấp các lớp và công cụ để phát triển ứng dụng GUI

Nó dựa trên framework Qt, một framework phát triển ứng dụng GUI mạnh mẽ được viết bằng C++

Qt Designer là công cụ lý tưởng để xây dựng giao diện người dùng đồ họa một cách nhanh chóng, sử dụng các widget từ khung Qt GUI Với giao diện kéo và thả đơn giản, người dùng có thể dễ dàng bố trí các thành phần như nút, trường văn bản, hộp tổ hợp và nhiều hơn nữa.

Hình 2.6: Giao diện mẫu của Py Designer

Qt Designer tạo ra các tệp ui, một định dạng XML đặc biệt dùng để lưu trữ các widget dưới dạng cây Các tệp này có thể được tải trong thời gian chạy hoặc chuyển đổi sang ngôn ngữ lập trình như C++ hoặc Python.

Qt là một framework ứng dụng đa nền tảng được phát triển bằng ngôn ngữ C++, cho phép xây dựng ứng dụng trên desktop, hệ thống nhúng và di động Nó hỗ trợ nhiều nền tảng như Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry và Sailfish.

PyQt là giao diện Python của Qt, kết hợp ngôn ngữ lập trình Python với thư viện Qt, cung cấp các thành phần giao diện điều khiển (widgets) và các yếu tố điều khiển đồ họa.

API PyQt cung cấp nhiều module với hàng loạt classes và functions, hỗ trợ thiết kế giao diện người dùng cho các phần mềm chức năng Nó tương thích với cả Python 2.x và 3.x.

Các class của PyQt5 được chia thành các module, bao gồm:

QtCore là một module quan trọng trong Qt, cung cấp các chức năng cốt lõi không liên quan đến giao diện người dùng (GUI) Nó hỗ trợ làm việc với thời gian, quản lý file và thư mục, xử lý các loại dữ liệu, streams, URLs, mime type, cũng như quản lý threads và processes.

- QtGui : bao gồm các class dùng cho việc lập trình giao diện (windowing system integration), event handling, 2D graphics, basic imaging, fonts và text

- QtWidgets : bao gồm các class cho widget, ví dụ : button, hộp thoại, … được sử dụng để tạo nên giao diện người dùng cơ bản nhất

- QtMultimedia : thư viện cho việc sử dụng âm thanh, hình ảnh, camera,…

- QtBluetooth : bao gồm các class giúp tìm kiếm và kết nối với các thiết bị có giao tiếp với phần mềm

- QtNetwork : bao gồm các class dùng cho việc lập trình mạng, hỗ trợ lập trình TCP/IP và UDP client , server hỗ trợ việc lập trình mạng

- QtPositioning : bao gồm các class giúp việc hỗ trợ xác định vị

- Enginio : module giúp các client truy cập các Cloud Services của Qt

- QtWebSockets : cung cấp các công cụ cho WebSocket protocol

- QtWebKit : cung cấp các class dùng cho làm việc với các trình duyệt Web , dựa trên thư viện WebKit2

- QtWebKitWidgets : các widget cho WebKit

- QtXml : các class dùng cho làm việc với XML file

- QtSvg : dùng cho hiển thị các thành phần của SVG file

- QtSql : cung cấp các class dùng cho việc làm việc với dữ liệu

- QtTest : cung cấp các công cụ cho phép test các đơn vị của ứng dụng với PyQt5.

THIẾT KẾ HỆ THỐNG

YÊU CẦU CỦA HỆ THỐNG

Để xây dựng hệ thống nhận dạng hàng hóa hiệu quả, cần đảm bảo thời gian chạy nhanh và độ chính xác ổn định nhằm tránh sự cố trong quá trình triển khai Việc tính toán và thiết kế là rất quan trọng, do đó, đề tài này cần được thực hiện kỹ lưỡng để tạo ra thiết bị đáp ứng đầy đủ các yêu cầu ban đầu.

TÍNH TOÁN VÀ XÂY DỰNG HỆ THỐNG

3.2.1 Yêu cầu chung của hệ thống Để đáp ứng nhu cầu thiết kế hệ thống nhận diện sản phẩm và lấy cân nặng, hệ thống cần thực hiện những nhu cầu sau:

+ Thực hiện lấy cân nặng chính xác từ các loại hàng hóa khi đặt lên bàn cân

+ Thực hiện việc nhận diện loại hàng hóa và hiển thị kết quả ra màn hình LCD 3 loại hàng có xác suất dự đoán cao nhất

+ Giao diện người dùng đơn giản để dễ dàng sử dụng hệ thống

+ Bảo vệ hệ thống bằng mật khẩu và quản trị viên có thể thay đổi mật khẩu

+ Có thể xem và chỉnh sửa giá thành của sản phẩm

+ Chức năng nhận diện sản phẩm kèm theo cân nặng được hiển thị lên màn hình

3.2.2 Sơ đồ khối và chức năng từng khối

Hình 3.1: Sơ đồ khối toàn hệ thống

Sơ đồ khối của toàn bộ hệ thống tương ứng với các chức năng sau:

Khối điều khiển trung tâm là phần quan trọng nhất trong hệ thống, chịu trách nhiệm nhận và xử lý tín hiệu từ các khối phần cứng khác Nó thực hiện các chương trình đã được lập trình sẵn và đưa ra tín hiệu điều khiển để điều chỉnh hoạt động của các thành phần trong hệ thống Vai trò của khối điều khiển trung tâm là thiết lập và duy trì sự tương tác hiệu quả giữa các thành phần trong hệ thống.

Khối đọc cân nặng là thành phần quan trọng trong hệ thống, có chức năng nhận dữ liệu từ cảm biến cân nặng loadcell Sau đó, khối này sẽ truyền thông tin về trọng lượng lên khối xử lý trung tâm thông qua Arduino và mạch HX711.

Khối đọc ảnh đóng vai trò quan trọng trong việc thu thập dữ liệu hình ảnh từ môi trường thực tế Nhiệm vụ chính của khối này là chuyển đổi tín hiệu hình ảnh thành dữ liệu số và truyền tải dữ liệu này đến khối xử lý trung tâm để tiếp tục quá trình xử lý.

- Khối lưu trữ: Là nơi trao đổi dữ liệu với khối điều khiển trung tâm và là nơi lưu trữ dữ liệu của hệ thống

Khối điều khiển và hiển thị có nhiệm vụ nhận các tác vụ từ người dùng, truyền tín hiệu đến bộ xử lý trung tâm và hiển thị thông tin do bộ xử lý trung tâm cung cấp.

Khối nguồn đóng vai trò quan trọng trong việc cung cấp điện áp và dòng điện cho các khối khác hoạt động Ngoài chức năng cung cấp nguồn điện, khối nguồn còn bảo vệ hệ thống khỏi các sự cố như ngắn mạch, quá tải, quá nhiệt và quá áp Đảm bảo hoạt động ổn định của khối nguồn là cần thiết để ngăn chặn những hậu quả nghiêm trọng cho toàn bộ hệ thống.

THIẾT KẾ HỆ THỐNG PHẦN CỨNG

3.3.1 Khối điều khiển trung tâm

Hệ thống yêu cầu một bộ điều khiển mạnh mẽ để xử lý tín hiệu từ các khối ngoại vi, điều khiển hiển thị, lưu trữ cơ sở dữ liệu và kết nối internet để truyền dữ liệu lên cloud server Ngoài ra, cần có khả năng xử lý hình ảnh để mở rộng tính năng và nâng cao khả năng nhận diện Do đó, vi điều khiển cần có bộ nhớ lớn và tốc độ xử lý cao để đáp ứng các chức năng của hệ thống.

Nhóm đã quyết định chọn máy tính nhúng Raspberry Pi 4, nhờ vào các tính năng nổi bật và khả năng đáp ứng tốt các yêu cầu của hệ thống.

- Khả năng tốc độ xử lý vượt trội

- Tích hợp thêm nhiều module mới như:Audio, USB, Ethernet, HDMI,…

- Có tích hợp wifi kết nối internet không dây và tích hợp thêm bluetooth 5.0

- Giá phù hợp và nhỏ gọn

- Điện năng tiêu thụ thấp giúp tiết kiệm điện năng của hệ thống

3.3.1.2 Tổng quan về Raspberry Pi 4 Model B

Raspberry Pi là một bo mạch đơn, hoạt động như một máy tính nhúng mini, được phát triển bởi các kỹ sư Anh vào năm 2012 Ban đầu, nó được thiết kế dưới dạng thẻ card cắm cho hệ thống máy tính nhúng và phục vụ mục đích giảng dạy Được xây dựng bởi Raspberry Pi Foundation, sản phẩm này nhằm tạo ra một hệ thống đơn giản, linh hoạt, có thể áp dụng trong nhiều lĩnh vực khác nhau.

Mặc dù Raspberry Pi có tốc độ xử lý chậm hơn so với các laptop và máy tính hiện đại, nhưng nó vẫn được coi là một máy tính nhúng Linux hoàn chỉnh, mang lại nhiều ứng dụng và khả năng linh hoạt cho người dùng.

Raspberry Pi 4 Model B, phiên bản mới nhất của dòng sản phẩm này, mang đến tất cả các tính năng mà người dùng mong đợi với mức tiêu thụ năng lượng thấp Kể từ khi ra đời, Raspberry Pi đã trải qua nhiều cải tiến liên tục, tối ưu hóa hiệu suất và cung cấp nhiều lựa chọn hấp dẫn cho người dùng.

Hình 3.2: Raspberry Pi 4 model B thực tế

Raspberry Pi 4 hình 3.2 là bản được cập nhật mới nhất, được ra mắt vào tháng 6 năm

2019 Cấu hình của Raspberry Pi 4 được cải tiến đáng kể với việc kết hợp thêm các cổng giao tiếp được thể hiện như hình 3.3 như sau:

Chip SOC Broadcom BCM 2711 với tốc độ 1.5 GHz mang lại hiệu suất vượt trội, tương đương với các chip trong điện thoại thông minh phổ thông hiện nay và hỗ trợ hệ điều hành Linux Chip này còn tích hợp GPU Broadcom VideoCore VI 500MHz mạnh mẽ, cho phép phát video chuẩn full HD hoặc 4K một cách mượt mà.

Raspberry Pi 4 được trang bị 40 ngõ GPIO (General Purpose Input Output) giống như phiên bản Pi 3B, đồng thời tích hợp các IO hỗ trợ chuẩn truyền dữ liệu UART, I2C và SPI.

Bài viết mô tả thiết bị được trang bị hai cổng Micro HDMI và một cổng DSI, giúp kết nối dễ dàng với màn hình máy tính, tivi, hoặc màn hình LCD và OLED Ngoài ra, thiết bị còn hỗ trợ cổng âm thanh 3.5mm, cho phép người dùng kết nối với loa ngoài hoặc tai nghe, nâng cao trải nghiệm nghe nhìn.

- Tích hợp 2 đầu USB 3.0 và 2 đầu USB 2.0, đủ để kết nối các thiết bị ngoại vi cần thiết

Cung cấp chuẩn Ethernet kết nối Internet dễ dàng với tốc độ xử lý cao

Sử dụng thẻ nhớ SD để lưu trữ dữ liệu thay vì ổ cứng tích hợp là một giải pháp hiệu quả Toàn bộ hệ điều hành sẽ được lưu trữ trên thẻ nhớ, do đó kích thước của thẻ nhớ cần phải từ 4GB trở lên để đảm bảo đủ dung lượng.

Cổng CSI (Camera Serial Interface) trên Raspberry Pi cho phép kết nối với mô-đun camera độc lập, giúp thu nhận hình ảnh chất lượng cao lên đến 1080p.

Raspberry Pi 4 được nâng cấp với tính năng tích hợp wifi, cho phép kết nối mạng không dây và hỗ trợ Bluetooth 5.0 Người dùng có thể lựa chọn dung lượng RAM 2GB, 4GB hoặc 8GB, với chi phí tăng dần theo cấu hình RAM Dựa trên nhu cầu và ngân sách của hệ thống, nhóm thực hiện đã quyết định chọn dòng Raspberry Pi 4 với RAM 4GB.

Hình 3.3: Các cổng giao tiếp ngoại vi Raspberry Pi 4

Hình 3.4: Sơ đồ chân GPIO Raspberry Pi 3.3.2 Khối đọc ảnh

3.3.2.1 Yêu cầu và lựa chọn thiết bị

Để hệ thống nhận dạng khuôn mặt hoạt động hiệu quả, cần lựa chọn camera có độ phân giải cao và khả năng chụp ảnh màu Điều này giúp đảm bảo chất lượng hình ảnh không bị ảnh hưởng bởi các yếu tố môi trường Hơn nữa, khối xử lý ảnh cần cung cấp độ sáng ổn định để thu và xử lý hình ảnh một cách chính xác và đáng tin cậy.

Nhóm thực hiện đề tài đã quyết định chọn Webcam Rapoo XW180 do nó đáp ứng tốt các yêu cầu của hệ thống với nhiều ưu điểm nổi bật.

- Được trang bị độ nét cao với độ phân giải Full HD 1080P, cho chất lượng hình ảnh sắc nét, rõ ràng và độ chính xác màu sắc cao

- Hỗ trợ cổng kết nối USB 2.0, từ đó có thể dễ dàng kết nối với raspberry và dễ dàng trong việc lập trình

- Giá thành rẽ và kích thước nhỏ gọn

3.3.2.2 Tổng quan về Webcam Rapoo XW180

Webcam Rapoo XW180 với độ phân giải video 1080P Full HD cho chất lượng hình ảnh sắc nét và mượt mà ở tốc độ 30 khung hình/giây Cảm biến hình ảnh trang bị công nghệ Noise Reduction nâng cao chất lượng hình ảnh trong điều kiện ánh sáng yếu Sản phẩm còn có microphone với công nghệ giảm nhiễu thông minh, cải thiện âm thanh và giảm thiểu tiếng ồn Thiết kế nhỏ gọn và linh hoạt, webcam có khả năng xoay 360 độ, dễ dàng điều chỉnh góc quay khi kết nối với máy tính qua cổng USB.

- Độ phân giải có thể đạt được: 1080p/30fps

- Loại ống kính có tiêu cự không thay đổi

- Công nghệ thấu kính: đạt tiêu chuẩn

- Micrô được tích hợp: micro đơn âm

3.3.3 Khối điều khiển và hiển thị

3.3.3.1 Yêu cầu và lựa chọn thiết bị

Thiết bị yêu cầu phải hiển thị thông tin hệ thống một cách rõ ràng và dễ dàng, đồng thời có độ nhạy cao để hạn chế độ trễ Ngoài ra, nó cần phải dễ dàng giao tiếp và lập trình với Raspberry, sử dụng năng lượng thấp, có kích thước nhỏ gọn và giá thành hợp lý.

THIẾT KẾ GIAO DIỆN ỨNG DỤNG

Người quản trị cần có tài khoản và mật khẩu hợp lệ để truy cập vào hệ thống Nếu chưa có, họ có thể thực hiện việc đăng ký tài khoản một cách dễ dàng.

Để đăng nhập, người dùng cần nhập tên người dùng và mật khẩu như trong hình 3.16 Nếu thông tin nhập sai, sẽ có thông báo hiển thị Nếu không thực hiện đăng nhập, người dùng sẽ không thể sử dụng các nút trên thanh sidebar.

- Một QLabel để hiện thị logo đăng nhập

- Hai QLineEdit để nhập user name và password

- Hai QPushButton để thực hiện việc đăng nhập và đăng ký tài khoản

3.4.2 Trang đăng ký tài khoản

Hình 3.17: Trang tạo tài khoản

Yêu cầu có nơi để nhập user name, password và password again như hình 3.17, khi nhập hai password không trùng nhau sẽ xuất hiện thông báo

- Một QLabel để hiện thị tên trang “Create Account”

- Ba QLineEdit để nhập user name, password và password again

- Một QPushButton để xác nhận hoàn thành việc đăng ký

Sau khi đăng nhập thành công vào hệ thống, người dùng sẽ được chuyển đến trang camera, nơi có khả năng nhận diện các loại trái cây và tự động tạo hóa đơn dựa trên việc nhận diện và cân ký sản phẩm.

- Một QLabel để hiện thị camera trên ứng dụng

- Bốn QPushButton gồm các chức năng sau:

+ Hai QPushButton Start và Stop thực hiện việc mở camera và tắt camera

Nút QPushButton "Get Bill" hiển thị thống kê các sản phẩm đã mua, bao gồm thông tin về cân nặng, giá cả và tổng số tiền dựa trên cân nặng của sản phẩm.

+ Một QPushButton Recognition thực hiện việc nhân diện các loại trái cây được đặt trên bàn cân của hệ thống

Hình 3.18: Trang Camera 3.4.3 Trang Orders

Trang Orders cung cấp thông tin chi tiết về sản phẩm, bao gồm ID, tên và giá, giúp người dùng dễ dàng tìm kiếm và chỉnh sửa giá của các sản phẩm trong kho.

- Một QTableWidget để dữ liệu của các sản phẩm được lưu trữ

Để thực hiện tìm kiếm sản phẩm, người dùng có thể nhập tên sản phẩm vào QLineEdit và nhấn nút QPushButton tìm kiếm.

- Bốn QPushButton gồm các chức năng sau:

+ Một QPushButton Show thực hiện chức năng hiển thị dữ liệu các sản phẩm

+ Một QPushButton Change Price cho phép người dùng thay đổi giá các sản phẩm dựa trên id Giao diện Change Price gồm có Một QLineEdit ID và Một

Người dùng có thể nhập ID sản phẩm và giá mới mong muốn vào QLineEdit, sau đó nhấn nút Ok để xác nhận thay đổi giá sản phẩm.

Hình 3.20: Form cập nhật giá (ID)

Hình 3.21: Form cập nhật giá (giá)

+ Một QPushButton INSERT và DELETE cho phép người dùng them và xóa dữ liệu lưu trữ (chỉ hiển thị chưa được ứng dụng)

Hình 3.22: Sau khi hoàn thành cập nhật giá 3.4.4 Trang Account

Trang Account hiện thị giao diện cho người dùng thực hiện việc thay đổi mật khẩu của mình

- Một QLabel để hiển thị trang “Change Password”

- Ba QLineEdit để nhập user name, old password và new password

- Một QPushButton Done để xác nhận hoàn thành việc thay đổi mật khẩu

Hình 3.23: Trang Account 3.4.5 Trang Logout

Trang Logout thực hiện việc đăng xuất tài khoản ra khỏi ứng dụng

- Một QLabel để hiển thị trang Logo trang Logout

- Một QPushButton để thực hiện việc đăng xuất

THI CÔNG HỆ THỐNG

GIỚI THIỆU TỔNG QUAN

Sau khi thực hiện các phép tính và lựa chọn các thành phần cần thiết, nhóm đã trình bày chi tiết quá trình triển khai hệ thống Quá trình thi công bao gồm nhiều bước phức tạp, từ lắp ráp vỏ hệ thống, đấu nối linh kiện và thiết bị, đến cài đặt phần mềm và kiểm tra hoạt động Tuy nhiên, hệ thống vẫn đang trong quá trình phát triển và chưa đạt được sự hoàn thiện tuyệt đối với độ chính xác 100% và mức độ thẩm mỹ như các sản phẩm thương mại hiện nay.

YÊU CẦU THI CÔNG CỦA HỆ THỐNG

Hệ thống được thiết kế và lập trình để đảm bảo các yêu cầu sau:

- Có giao diện người dùng đơn giản, dễ sử dụng để tương tác với người dùng

- Hoạt động liên tục trong một thời gian dài và độ tin cậy cao

- Có khả năng nhận diện sản phẩm và xử lý ảnh từ Webcam

- Có khả năng thực hiện các phương thức nhận diện và tính toán với độ chính xác cao

- Đảm bảo các chức năng khác của hệ thống hoạt động tốt

- Hệ thống có thể cập nhật và cải tiến chương trình.

THI CÔNG HỆ THỐNG

4.3.1 Chuẩn bị linh kiện phần cứng

Sau khi hoàn thành quá trình tính toán và thiết kế, chúng ta đã xây dựng một kế hoạch lắp ráp hệ thống chi tiết Để đảm bảo tính chính xác và hiệu quả, việc sử dụng linh kiện phù hợp là rất quan trọng Trước khi lắp ráp, cần chuẩn bị đầy đủ các linh kiện như bảng 4.1 và kiểm tra kỹ lưỡng để đảm bảo đáp ứng yêu cầu kỹ thuật Cuối cùng, chúng ta sẽ tiến hành lắp ráp hệ thống một cách cẩn thận, đảm bảo sản phẩm hoàn thiện.

Bảng 4.1: Linh kiện chuẩn bị lắp ráp hệ thống

STT Tên linh kiện Số lượng

2 Quạt tản nhiệt cho Pi 4 1

LẬP TRÌNH HỆ THỐNG

4.4.1 Cài đặt Raspbian và remote máy tính cho Raspberry Pi 4

Thiết lập hệ điều hành Raspbian

Bước 1: Tải phần mềm Raspbian Pi image

Để bắt đầu, truy cập vào trang web https://www.raspberrypi.com/software/ và tải phần mềm Raspbian Pi Imager về máy tính Sau khi hoàn tất quá trình tải, tiến hành cài đặt phần mềm với giao diện hiển thị như hình 4.3.

Hình 4.2: Phần mềm Raspbian Pi imager

Hình 4.3: Giao diện Raspbian Pi imager khi tải về Bước 2: Format lại thẻ SD

- Chúng ta tiến hành chọn chức năng và định dạng lại thẻ SD

- Ở mục Operating System -> chọn Choose OS -> Erase như hình 4.4

Hình 4.4: Các bước format thẻ SD

- Sau đó ở mục Storage -> chọn Choose Storage -> chọn thẻ SD muốn format hình 4.5

Hình 4.5: Các bước format thẻ SD

- Sau đó chọn Write để bắt đầu format cho thẻ hình 4.6

Hình 4.6: Các bước format thẻ SD

Bước 3: Cài đặt hệ điều hành Raspbian vào thẻ SD

- Ở phần Operating System -> chọn Choose.OS -> Raspberry.Pi OS(32 bit) như hình 4.7

Hình 4.7: Các bước cài đặt hệ điều hành vào thẻ SD

- Sau đó ở mục Storage -> chọn Choose Storage -> chọn thẻ SD muốn cài đặt hình 4.8

Hình 4.8: Các bước cài đặt hệ điều hành vào thẻ SD

- Sau đó chọn Write để bắt đầu cài đặt hệ điều hành vào thẻ SD hình 4.9

Hình 4.9: Các bước cài đặt hệ điều hành vào thẻ SD

Bước 1: Khi gắn thẻ nhớ vào, bạn sẽ thấy xuất hiện một ổ đĩa SD có tên là

"Boot" Truy cập vào ổ đĩa Boot và mở file cmdline.txt Thêm dòng chữ

"ip2.168.137.3" vào cuối file cmdline.txt và lưu lại Ở đây, địa chỉ IP

Địa chỉ IP "192.168.137.3" đại diện cho Raspberry Pi, và bạn có thể sử dụng địa chỉ khác nếu cần thiết Hãy làm theo các bước hướng dẫn trong hình 4.10 và 4.11 để thực hiện cài đặt.

Hình 4.11: Cập nhật địa chỉ IP của Raspberry vào file cmdline.text

Bước đầu tiên để khởi động kit Raspberry Pi 4 là gắn thẻ nhớ vào thiết bị Sau đó, kết nối dây mạng Ethernet giữa máy tính và kit Raspberry Pi Cuối cùng, cung cấp nguồn điện cho kit bằng cách kết nối nguồn điện vào thiết bị.

Để bắt đầu, bạn cần tải phần mềm Putty về máy tính Sau khi cài đặt thành công, hãy mở ứng dụng Putty và nhập địa chỉ của Raspberry.

Pi (như được chỉ dẫn trong hình 4.12) vào Putty để thiết lập kết nối

To access the command line interface of your Raspberry Pi, first enter its IP address and click "Open." Then, log in using the default username "pi" and the password "raspberry."

- Tiếp đến vào phần cấu hình của Raspberry Pi bằng lệnh: sudo raspi- config như hình

Hình 4.13: Cấu hình Raspberry Pi bằng lệnh sudo raspi-config

- Tiếp theo chọn Interface Options -> VNC -> Yes như hình 4.14 Để bật tính năng VNC của Raspberry Pi

Hình 4.14: Bật tính nâng VNC cho Raspberry Pi Bước 5: Sau khi bật song , chúng ta tiến hành tải và cài đặt VNC viewer

- Mở phần mềm VNC với giao diện như hình 4.15, nhập địa chỉ sau đó nhập username và password như bước 4

Cuối cùng, sau khi kết nối màn hình Raspberry với giao diện chính như hình 4.16, người dùng có thể bắt đầu lập trình bình thường cho hệ thống.

Hình 4.16: Giao diện của hệ điều hành Raspbian 4.4.2 Lưu đồ giải thuật

Sau khi hoàn tất việc kết nối các phần cứng như màn hình, Webcam, SD, Arduino Nano, HX711, Model LCD I2C và các thiết bị ngoại vi khác vào vi điều khiển, chúng ta sẽ tiến hành cung cấp nguồn cho hệ thống Hình minh họa sẽ thể hiện lưu đồ hoạt động của hệ thống.

- Khởi tạo các port điều khiển UART, I2C

- Khởi tạo màn hình và webcam

- Arduino Nano chạy chương trình giao tiếp với HX711 và loadcell đọc và hiển giá trị loadcell lên lcd

Hệ thống sẽ tự động tải giao diện chính lên màn hình Sau đó, mô hình sẽ tiến hành chương trình kiểm tra người dùng Mô hình hiện đã sẵn sàng để hoạt động.

4.4.2.2 Chương trình kiểm tra người dùng

Hình 4.18: Lưu đồ kiểm tra người dùng

Hình 4.18 minh họa lưu đồ chương trình kiểm tra người dùng với các tác vụ:

Để truy cập vào hệ thống, người dùng cần nhập đúng tên đăng nhập và mật khẩu Nếu không, chỉ có trang đăng nhập được hiển thị, không thể sử dụng các chức năng khác của hệ thống.

Khi người dùng nhập username và password, hệ thống sẽ đối chiếu thông tin này với dữ liệu lưu trữ trên cloud server Nếu thông tin chính xác, người dùng sẽ được chuyển đến trang camera; nếu không, trang đăng nhập sẽ được hiển thị lại.

4.4.2.3 Chương trình thay đổi mật khẩu

Hình 4.19: Lưu đồ thay đổi mật khẩu

Hình 4.19 minh họa lưu đồ chương trình thay đổi mật khẩu với các tác vụ:

- Người dùng tiến hành nhập username, old password và new password trên ứng dụng

- Sau khi người dùng nhập xong sẽ tiến hành so sánh username, old password với dữ liệu lưu trữ trong cloud server

- Nếu đúng sẽ tiến hành lưu new password vào cloud server thay cho old password Nếu sai sẽ hiển thị thống báo và yêu cầu nhập lại

4.4.2.4 Chương trình đăng ký tài khoản

Hình 4.20: Lưu đồ đăng ký tài khoản

Hình 4.20 minh họa lưu đồ chương trình đăng ký tài khoản với các tác vụ:

- Người dùng tiến hành nhập username, password và password again trên ứng dụng

- Sau khi người dùng nhập xong sẽ tiến hành so sánh password, password again xem có going nhau không

- Nếu giống sẽ tiến hành lưu username và password vào cloud server

- Nếu sai sẽ hiển thị thống báo và yêu cầu nhập lại

Hình 4.21: Lưu đồ nhận diện

Hình 4.21 minh họa lưu đồ chương trình nhận diện với các tác vụ:

- Đầu tiên chương trình sẽ tiến hành tải trọng số model đã được huấn luyện trước đó

- Sau đó tiến hành đọc frame Ảnh từ Webcam để dự đoán đối tượng thông qua ảnh được đọc

- Sau khi dự đoán được đối tượng sẽ hiển thị ra 3 đối tượng có khả năng cao nhất

4.4.2.6 Chương trình chọn sản phẩm đã dự đoán

Hình 4.22: Lưu đồ chọn sản phẩm đã dự đoán

Hình 4.22 minh họa lưu đồ chọn sản phẩm đã dự đoán với các tác vụ:

- Đầu tiên người dùng sẽ chọn một trong ba đối tượng có khả năng cao nhất cao nhất được hiển thị

- Khi chọn những đối tượng đó, sẽ gửi kèm id và tên dự đoán của đối tượng, sau đó tiến hành lấy cân nặng do Arduino gửi lên

- Sau đó tiến hành lấy price từ cloud server dựa trên id để tiến hành tính total_price weight * price

- Cuối cùng lưu lại các thông số cần thiết như tên dự đoán (prediction), weight, price, total_price vào bảng bill lưu trong cloud server

Hình 4.23: Lưu đồ tạo bill

Hình 4.23 minh họa lưu đồ chương trình tạo bill với các tác vụ:

- Đầu tiên tiến hành lấy data từ bảng bill được lưu trong cloud server

- Tiếp theo, tính tổng giá của tất cả sản phẩm đã được lưu thông qua bảng bill bằng total_price_all bằng total_price từng sản phẩm cộng lại

- Sau đó tiến hành xuất bill gồm: tên sản phẩm, khối lượng, giá, tổng giá, tổng giá tất cả các sản phẩm

- Cuối cùng sẽ xóa dữ liệu của bảng bill để chuẩn bị cho hóa đơn tiếp theo

4.4.2.8 Chương trình Arduino với HX711 và loadcell

Hình 4.24: Lưu đồ Arduino với HX711 và loadcell

Hình 4.24 minh họa lưu đồ Arduino với HX711 và loadcell với các tác vụ:

- Đầu tiên đọc giá trị loadcell và hiển thị trên LCD

- Sau đó gửi dữ liệu qua Raspberry PI

4.4.2.9 Chương trình thay đổi giá

Hình 4.25: Lưu đồ thay đổi giá

Hình 4.25 minh họa lưu đồ Chương trình thay đổi giá với các tác vụ:

- Đầu tiên người dùng nhập ID và Price của sản phẩm muốn đổi

- Nếu nhập đúng ID thì tiến hành thay đổi price và lưu vào cloud serversa - Sau đó hiển thị lại bảng data sản phẩm

4.4.2.10 Chương trình gửi dữ liệu cloud server

Hình 4.26: Lưu đồ gửi dữ liệu cloud server

Hình 4.26 minh họa lưu đồ Chương trình thay đổi giá với các tác vụ:

- Đầu tiên tiến hành kết nối với database “dulieu.db”

- Tiếp theo kiểm tra các bảng dữ liệu đã được tạo chưa, nếu chưa thì tiến tạo các bảng dữ liệu cần thiết, còn rồi thì không làm gì

- Sau đó mở dulieu.db để cho có thể giao tiếp với database thông qua các hàm chương trình khác

- Ngắt kết nối với database khi chương trình hệ thống đóng.

HUẤN LUYỆN MÔ HÌNH NHẬN DIỆN BẰNG MODEL

4.5.1 Xây dựng tập dữ liệu Đối với đề tại nhận diện thì dữ liệu đâu vào là thứ quan trọng nhất không thể thiếu, nếu không có dữ liệu thì cũng sẽ chẳng thể xây dựng được mô hình nào cả vậy nên trước khi đi vào xây dựng mô hình thì việc đầu tiên phải làm là xây dựng được tập dữ liệu đủ lớn và phù hợp để mô hình mang lại hiệu quả cao nhất Trong dự án nhóm đã chọn ra 7 loại sản phẩm bao gồm 'Táo', 'Chuối', 'Thanh long', 'Ổi', 'Xoài', 'Cam', 'Thơm' Quá trình thực hiện theo 3 giai đoạn như hình dưới đây

Hình 4.27: Quá trình huấn luyện mô hình

Nhóm đã tiến hành thu thập dữ liệu bằng cách sưu tầm hình ảnh cho các loại sản phẩm đã đề cập trước đó, với tổng số hình ảnh lên tới hơn 500 cho mỗi loại sản phẩm tương ứng, như minh họa trong hình dưới đây.

Để đạt được kết quả tốt cho mô hình, nhóm nghiên cứu đã chia ảnh thành 80% cho tập huấn luyện và 20% cho tập kiểm tra, như được minh họa trong hình dưới đây.

Để tối ưu hóa tốc độ và tài nguyên máy, nhóm đã sử dụng GPU của Google Colab cho quá trình huấn luyện Mặc dù đoạn mã huấn luyện mô hình MobilenetV2 trên Google Colab khá dài, nhóm sẽ không trình bày chi tiết ở đây mà chỉ tập trung vào kết quả sau khi hoàn tất huấn luyện, như được thể hiện trong hình dưới đây.

Hình 4.30: Kết quả huấn luyện mô hình

Nhóm đã thực hiện 50 lần huấn luyện và đạt được độ chính xác 0.9465 cùng với độ mất mát thấp 0.1611, cho thấy kết quả khả quan và có thể áp dụng vào mô hình thực tế.

Sau khi hoàn thành quá trình huấn luyện mô hình, bước tiếp theo là lưu trữ mô hình để áp dụng vào các sản phẩm thực tế.

Chúng ta sẽ lựa chọn các mô hình có độ chính xác cao nhất từ những mô hình đã được lưu trong quá trình huấn luyện để tải về và áp dụng trong dự án tiếp theo.

KẾT QUẢ THỰC HIỆN

GIAO DIỆN HỆ THỐNG

Hệ thống nhận diện sản phẩm hoàn chỉnh bao gồm webcam, màn hình giao tiếp chính, module HX711, LCD 16x20, Arduino Nano, module xử lý cân nặng loadcell, và bộ xử lý trung tâm Raspberry Pi 4 Tất cả các thành phần này được kết nối với nhau qua khung, vỏ và dây kết nối, tạo nên một sản phẩm dễ dàng sử dụng cho người dùng.

Người dùng tương tác với hệ thống qua giao diện màn hình cảm ứng điện dung Khi khởi chạy chương trình, màn hình sẽ hiển thị giao diện chính cho người dùng.

Hình 5.2: Giao diện đăng nhập

Sau khi mở ứng dụng, người dùng sẽ thấy giao diện đăng nhập ở phía trên, nơi cho phép họ nhập tài khoản và mật khẩu để truy cập vào tính năng nhận diện của ứng dụng.

Hình 5.3: Giao diện thanh toán

Sau khi đăng nhập, người dùng sẽ thấy màn hình hiển thị các chức năng chính của sản phẩm, bao gồm nhận diện và thanh toán Để bắt đầu, người dùng chỉ cần nhấn nút "Start" để kích hoạt camera nhận diện sản phẩm.

Hình 5.4: Khi mở camera nhận diện

Người dùng cần đặt sản phẩm lên bàn cân để tiến hành đo trọng lượng và nhận diện sản phẩm một cách chính xác.

Hình 5.5: Đặt sản phẩm lên bàn cân

Tiếp đến người dùng sẽ nhấn phím recognition để tiến hành nhận diện sản phẩm đang được đặt lên bàn cân như hình dưới đây

Hình 5.6: Nhận diện sản phẩm

Tiếp đến ta nhấn vào sản phẩm tương ứng chính xác với sản phẩm đã nhận diện được ở trên màn hình như hình dưới đây

Hình 5.7: Chọn sản phẩm đã nhận diện đúng

Khi người dùng nhấn vào sản phẩm, một thông báo sẽ xuất hiện hiển thị sản phẩm đã được chọn cùng với giá thành Người dùng cần nhấn "OK" để xác nhận lựa chọn sản phẩm.

Người dùng chỉ cần nhấn "Get bill" để xem hóa đơn, bao gồm tên sản phẩm, khối lượng, giá trên 1kg và tổng giá thành Nếu mua nhiều loại sản phẩm, hóa đơn sẽ tự động cập nhật để phản ánh đầy đủ thông tin.

Hình 5.8: In hóa đơn của đơn hàng

Để sửa đổi giá sản phẩm trong tập dữ liệu, người dùng cần nhấn phím Orders để hiển thị toàn bộ sản phẩm Tiếp theo, chọn phím Change price để mở màn hình thay đổi sản phẩm Sau đó, nhập ID và giá mới của sản phẩm muốn thay đổi, và cuối cùng nhấn Ok để xác nhận thay đổi giá.

Hình 5.9: Thay đổi giá thành của sản phẩm

Chức năng thêm và xóa sản phẩm trong tập dữ liệu chỉ mang tính chất tượng trưng, vì hệ thống cần được huấn luyện lại để thực hiện các thao tác này.

Chức năng thay đổi mật khẩu người dùng cho phép người dùng cập nhật mật khẩu khi cần thiết Để thực hiện, người dùng chỉ cần nhấn vào phần "Tài khoản" và nhập mật khẩu cũ cùng mật khẩu mới Sau khi ấn "Hoàn tất", mật khẩu sẽ được cập nhật ngay lập tức.

Hình 5.10: Thay đổi mật khẩu

Cuối cùng, sau khi hoàn tất sử dụng, người dùng nên nhấn vào chức năng Logout ở phần Home như hình dưới đây để thoát ra, nhằm bảo vệ tài khoản khỏi sự xâm nhập.

KẾT QUẢ THỰC HIỆN THỬ NGHIỆM HỆ THỐNG

Để đánh giá hiệu quả hoạt động của hệ thống một cách khách quan, nhóm đã thực hiện thử nghiệm thực tế trên các sản phẩm trong bộ dữ liệu ban đầu Các sản phẩm được thử nghiệm bao gồm: táo, chuối, thanh long, ổi, xoài, cam và thơm.

Mỗi loại sản phẩm được nhóm thực hiện nhận diện 10 lần từ các góc độ và số lượng khác nhau Dưới đây là ví dụ về việc nhận diện sản phẩm với độ chính xác 100%, mức độ gần đúng và trường hợp không nhận diện được.

Hình 5.12: Nhận diện chính xác 100%

Có thể thấy rằng hình trên khi nhận diện chuối, mức độ chính xác của chuối nằm ở top đầu, ở đây nhóm coi như nhận diện chính xác hoàn toàn

Hình 5.13: Nhận diện mức gần đúng

Hình ảnh cho thấy rằng khi nhận diện táo, độ chính xác đạt top hai, tuy nhóm đánh giá là nhận diện chính xác nhưng vẫn chưa hoàn toàn.

Hình 5.14: Nhận diện sai hoàn toàn

Có thể thấy rằng khi nhận diện xoài, quả xoài không nằm trong top nhưng loại quả được nhận diện ở đây nhóm coi như kết quả nhận diện sai

Nhận diện đúng 100% có nghĩa là kết quả nhận diện trùng khớp với loại trái cây và nằm ở vị trí top 1 Nhận diện gần đúng xảy ra khi kết quả không nằm ở top 1 mà ở top 2 hoặc top 3 Không nhận diện đúng là khi kết quả không chính xác ở cả ba trường hợp top 1, top 2 và top 3 Dưới đây là bảng thống kê mức độ nhận diện chính xác sau 10 lần thử nghiệm trên mỗi sản phẩm.

Bảng 5.1: Bảng kết quả thử nghiệm nhận diện sản phẩm

Loại trái cây Nhận diện đúng

ĐÁNH GIÁ HỆ THỐNG SO VỚI SẢN PHẨM TRÊN THỊ TRƯỜNG

Nhóm đã tiến hành thử nghiệm để đánh giá tốc độ thanh toán giữa sản phẩm truyền thống và sản phẩm của nhóm tại cửa hàng Bách Hóa Xanh Chúng tôi đã đo thời gian thanh toán cho hai loại sản phẩm là táo và chuối Thời gian được tính từ lúc đặt sản phẩm lên bàn cân cho đến khi sản phẩm cuối cùng được tính xong và giá tiền được xuất ra Kết quả thử nghiệm cho thấy sự khác biệt trong tốc độ thanh toán giữa hai loại sản phẩm.

Hình 5.15: Kết quả thu được ở bách hóa xanh

(link video đi kèm: https://youtube.com/shorts/wrvdbAC6NSI?feature=share)

Hình 5.16: Kết quả thu được trên sản phẩm của nhóm

(link video đi kèm: https://youtu.be/1DMbnNi9RUk)

Tốc độ xử lý của máy bán lẻ tại Bách Hóa Xanh đạt khoảng 18 giây, trong khi sản phẩm của nhóm có tốc độ khoảng 17 giây Mặc dù đây chỉ là những số liệu đo lường khách quan và chưa được thử nghiệm một cách chính xác tuyệt đối, nhưng rõ ràng sản phẩm của nhóm không hề thua kém so với các máy khác về mặt thời gian.

Sản phẩm của nhóm gặp một số hạn chế, bao gồm bộ xử lý trung tâm chưa đủ mạnh, dẫn đến tốc độ xử lý chậm Bên cạnh đó, màn hình ứng dụng thanh toán quá nhỏ và thiếu phản hồi nhanh, khiến cho khả năng thích ứng với thị trường còn hạn chế.

Sản phẩm của nhóm thao tác hoàn toàn bằng cảm ứng, giảm thiểu việc nhập liệu Khi khắc phục các bất lợi, nhóm có thể đảm bảo tốc độ xử lý không thua kém các sản phẩm khác trên thị trường, thậm chí còn vượt trội hơn.

PHÂN TÍCH KẾT QUẢ

Hệ thống đã hoàn thành các chức năng theo yêu cầu ban đầu và đã được kiểm tra, xác minh để đảm bảo tính ổn định lâu dài Nó hoạt động liên tục và đáng tin cậy trong môi trường làm việc.

Dựa vào kết quả khi thực nghiệm cho thấy rằng:

- Khi hoạt động hệ thống cho tỷ lệ nhận diện sản phẩm chính xác hoặc gần chính xác lên tới 95%

- Một số trường hợp nhận diện sai có lẽ do bộ dữ liệu không ổn định và môi trường ánh sáng không tốt

- Về mặt tốc độ xử lý để thanh toán không hệ kém cạnh so với các sản phẩm trên thị trường

Ngày đăng: 18/11/2024, 16:27

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

TÀI LIỆU LIÊN QUAN