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

Báo cáo pbl4 – dự Án hệ thống thông minh cân thông minh

45 5 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

Định dạng
Số trang 45
Dung lượng 12,2 MB

Nội dung

Hệ thống có khả năng tự động nhận diện loại trái cây, tính toán giá tiền dựa trên trọng lượng và hiển thị thông tin cho nhân viên và khách hàng.. Các vấn đề cần giải quyết • Nhận diện đư

Trang 1

BÁO CÁO PBL4 – DỰ ÁN HỆ THỐNG THÔNG MINH

CÂN THÔNG MINHGiảng viên hướng dẫn: TS Bùi Thị Thanh Thanh

HỌ VÀ TÊN SINH VIÊN LỚP HỌC PHẦN ĐỒ ÁN

Trang 2

TÓM TẮT ĐỒ ÁN

Hiện nay, với sự phát triển của khoa học công nghệ, việc ứng dụng AI vào các lĩnh vực đời sống ngày càng phổ biến Nắm bắt xu hướng đó, nhóm chúng em đã nghiên cứu và phát triển hệ thống cân thông minh ứng dụng AI cho cửa hàng trái cây

Hệ thống có khả năng tự động nhận diện loại trái cây, tính toán giá tiền dựa trên trọng lượng và hiển thị thông tin cho nhân viên và khách hàng Qua đó, hệ thống giúp giải quyết các vấn đề sau:

• Giảm thiểu thời gian chờ đợi cho khách hàng: Nhân viên không cần phải tra cứu giá thủ công, giúp khách hàng thanh toán nhanh chóng và thuận tiện

• Nâng cao hiệu quả hoạt động của cửa hàng: Tăng tốc độ phục vụ khách hàng, giảm thiểu sai sót trong việc tính toán giá tiền

• Cải thiện trải nghiệm khách hàng: Hệ thống dễ sử dụng, mang lại trải nghiệm mua sắm hiện đại và chuyên nghiệp

Trang 3

BẢNG PHÂN CÔNG NHIỆM VỤ

Nguyễn Đức Chung - Training AI, thu thập dữ liệu, đánh giá

Đặng Nhật Minh - Thiết kế, lắp đặt và cài đặt code cho

phần vi điều khiển - Đã hoàn thànhTrần Lê Minh

- Triển khai Web Server Back - End - Đã hoàn thành

Nguyễn Gia Bảo - Triển khai Web Server Front - End và

giao diện trang web

- Đã hoàn thành

MỤC LỤC

Trang 4

1 Giới thiệu 7

1.1 Hiện trạng 7

1.2 Các vấn đề cần giải quyết 7

2 Giải pháp 8

2.1 Tổng quan hệ thống 8

2.2 Giải pháp phần cứng 9

2.2.1 Nguyên lý hoạt động của phần cứng 9

2.2.2 Linh kiện và các tham số kỹ thuật 11

2.3 Giải pháp truyền thông 15

2.3.1 Cấu hình địa chỉ IP tĩnh bằng ROUTER 15

2.3.2 API 15

2.3.3 UART 16

2.3.4 Websocket 16

2.4 Giải pháp phần mềm 18

2.4.1 Web Server 18

2.4.2 Web Client 22

2.4.3 Database 24

2.5 Giải pháp AI 26

3 Kết quả 36

3.1 Kết quả trên tập kiểm thử 36

3.2 Kết quả mô hình phần cứng 37

3.3 Giao diện Web Client 38

Hoàn thành các giao diện trang chủ, đăng nhập, quản lý, 38

3.3.1 Với vai trò là admin của hệ thống 39

3.3.2 Với vai trò là nhân viên cửa hàng 42

4 Kết luận và hướng phát triển 44

4.1 Kết luận 44

4.2 Hướng phát triển 45

5 Tài liệu tham khảo 45

DANH SÁCH HÌNH ẢNH

Trang 5

Hình 1 Tổng quan hệ thống 8

Hình 2 Cấu tạo của Loadcell 9

Hình 3 Arduino Uno R3 11

Hình 4 ESP32-CAM 11

Hình 5 Module Wi-Fi ESP8266 12

Hình 6 Cảm biến cân nặng loadcell 5kg 12

Hình 7 Module ADC 24bit HX711 12

Hình 8 LCD 1602 xanh lá 13

Hình 9 Mạch chuyển đổi giao tiếp I2C cho LCD 13

Hình 10 Khung cân 13

Hình 11 Router WiFi TOTOLINK A810R 14

Hình 12 Sơ đồ mô tả giao tiếp UART 16

Hình 13 Sơ đồ xử lý dữ liệu ở Web Server 18

Hình 14 .Màn hình hiển thị loại quả nhận diện được 22

Hình 15 Màn hình thông báo cân một lúc nhiều loại quả 23

Hình 16 Màn hình cân và nhận diện quả 23

Hình 17 Sơ đồ biểu thị quan hệ giữa các bảng 26

Hình 18 Hình ảnh thu thập dữ liệu 27

Hình 19 Biểu đồ số lượng ảnh đã thu thập được theo từng loại trái cây 28

Hình 20 Gắn nhãn trái cây 29

Hình 21 Các tham số đã hội tụ sau 251 epochs 34

Hình 22 Kết quả validating model 34

Hình 23 Giá trị các metrics 35

Hình 24 Confusion Matrix 36

Hình 25 Hình ảnh mô hình cân hoàn chỉnh 36

Hình 26 Giao diện trang chủ 37

Hình 27 Giao diện trang đăng nhập 37

Hình 28 Giao diện chức năng xem thông tin nhân viên 38

Hình 29 Giao diện chức năng xem lịch sử đơn hàng 38

Hình 30 Giao diện tạo hóa đơn 39

Hình 31 Giao diện danh sách các loại trái cây 39

Hình 32 Giao diện chức năng thêm trái cây 40

Hình 33 Giao diện chức năng chỉnh sửa thông tin trái cây 40

Hình 34 Giao diện chức năng chỉnh sửa thông tin cá nhân 41

Hình 35 Giao diện chức năng xem hóa đơn 41

Hình 36 Giao diện chức năng tạo hóa đơn mới 42

Hình 37 Giao diện chức năng xem trái cây 42

Hình 38 Giao diện chức năng thêm trái cây mới 43

Hình 39 Giao diện chức năng cập nhật thông tin cá nhân của nhân viên 43

DANH SÁCH BẢNG SỐ LIỆU

Trang 6

Bảng 1 Linh kiện và các tham số kỹ thuật 14

Bảng 2 Chi phí tổng cộng linh kiện 14

Bảng 3 Bảng fruits 24

Bảng 4 Bảng users 24

Bảng 5 Bảng bill 25

Bảng 6 Bảng bill_detail 25

Bảng 7 Nhãn trái cây 26

Bảng 8 Thống kê số lượng ảnh từng loại trái cây trước tiền xử lý 28

Bảng 9 Ý nghĩa các tham số[11]: 33

Trang 7

1 Giới thiệu

1.1 Hiện trạng

Hiện nay, việc bán hàng tại các cửa hàng siêu thị đang gặp phải một số khókhăn và thách thức Một trong những vấn đề lớn nhất là việc tính toán giá cả thủ côngkhi bán trái cây Nhân viên phải cân trái cây và tìm kiếm giá cả trên một tờ giấy hoặctrong cơ sở dữ liệu, điều này không chỉ tốn thời gian mà còn gây ra sự bất tiện chokhách hàng Việc này cũng làm tăng khả năng mắc lỗi trong quá trình tính toán, dẫnđến sự không chính xác trong việc lập hóa đơn

1.2 Các vấn đề cần giải quyết

• Nhận diện được trái cây với độ chính xác cao với một độ trễ hợp lý

• Hiển thị giá trị cân nặng lên giao diện người dùng

Trang 8

2 Giải pháp

2.1 Tổng quan hệ thống

Hình 1 Tổng quan hệ thống

- Vi điều khiển là nền tảng vật lý cho hệ thống, bao gồm:

1 Cảm biến cân nặng (Loadcell) và mạch chuyển đổi ADC 24bit Loadcell HX711

2 AI Thinker ESP-32 Camera: Có nhiệm vụ chụp lại hình ảnh hiện thời và cung cấphình ảnh thông qua yêu cầu đến API của Camera WebServer

3 NodeMCU ESP8266: Có nhiệm vụ gửi giá trị cân nặng đọc được từ Arduino Unođến Python bằng websocket server

4 Arduino UNO R3: Có nhiệm vụ đọc giá trị cân nặng từ cảm biến cân nặng và cập nhật giá trị cân nặng mới nhất cho các yêu cầu tiếp theo đến NodeMCU ESP8266

Trang 9

Hiển thị giá trị cân nặng lên màn hình LCD.

5 LCD: Hiển thị giá trị cân nặng

- Web Server cung cấp các dịch vụ web cho hệ thống, bao gồm giao diện người dùng,API, Có nhiệm vụ giao tiếp với giao diện người dùng thông qua yêu cầu đến API

- Database lưu trữ dữ liệu về các loại quả và đơn hàng

- Web Client

I Thực hiện tạo hoá đơn Có hai yêu cầu:

1 Yêu cầu giá trị cân nặng hiện thời của cân đang được sử dụng

2 Yêu cầu loại trái cây đang được cân và giá của trái cây đó trong cơ sở dữ liệu

II Thực hiện các chức năng quản lý cửa hàng khác

2.2 Giải pháp phần cứng

2.2.1 Nguyên lý hoạt động của phần cứng

Loadcell là một loại cảm biến lực được sử dụng để chuyển đổi lực thành tín hiệu điện

Nó hoạt động dựa trên nguyên lý biến dạng điện trở Khi một lực tác dụng lênloadcell, nó sẽ làm biến dạng thân loadcell, dẫn đến thay đổi điện trở của các straingauge được dán trên thân loadcell

Cấu tạo của Loadcell:

Hình 2 Cấu tạo của Loadcell

Trang 10

 Thân loadcell: Thường được làm bằng kim loại có độ đàn hồi cao như thép,hợp kim nhôm.

 Strain gauge: Là các điện trở có kích thước nhỏ được dán trên thân loadcell

 Dây dẫn: Dùng để kết nối strain gauge với bộ khuếch đại

Nguyên lý hoạt động:

1 Khi có lực tác dụng lên loadcell, thân loadcell sẽ bị biến dạng

2 Biến dạng này sẽ làm thay đổi điện trở của strain gauge

3 Sự thay đổi điện trở của strain gauge sẽ được chuyển đổi thành tín hiệu điện

4 Tín hiệu điện này sẽ được khuếch đại và xử lý để hiển thị giá trị lực tác dụnglên loadcell

Nhược điểm của Loadcell:

 Giá thành tương đối cao

 Cần sử dụng bộ khuếch đại để xử lý tín hiệu điện

Trang 11

2.2.2 Linh kiện và các tham số kỹ thuật

Bảng 1 Linh kiện và các tham số kỹ thuật

Bộ nhớ Flash: 32 KBSRAM: 2 KB

EEPROM: 1 KB

Chân giao tiếp:

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

6 chân Analog Input

1 chân Serial (RX/TX)

1 chân I2C (SDA/SCL)

1 chân SPI (MOSI, MISO, SCK)

Camera ESP32

Hình 4 ESP32-CAM

[2]

Module: ESP32-S Kích thước: 40 x 27 x 4.5 mm Chipset: ESP32-D0WDQ6 CPU: Xtensa LX106 32-bit RISC Tốc độ xung nhịp: 80 MHz

Bộ nhớ: 4MB PSRAM WiFi: 802.11 b/g/n Bluetooth: 4.2 BLE Camera: OV2640

Độ phân giải: UXGA (1600x1200) Flash: 4MB SPI Flash

Giao tiếp: UART, SPI, I2C, GPIO Nguồn: 5V

Trang 12

CPU: Tensilica Xtensa LX106 32-bit

RISC

Tốc độ xung nhịp: 80 MHz

Bộ nhớ: 128 KB RAM, 4 MB Flash WiFi: 802.11 b/g/n

Giao tiếp: UART, SPI, I2C, GPIO Nguồn: 3.3V

Độ lặp lại: 0.02%

Trở kháng đầu vào: 1140Ω Trở kháng đầu ra: 1000Ω Nhiệt độ hoạt động: -20°C ~ 60°C Cấp bảo vệ: IP65

Kích thước: 75 x 25 x 25 mm Chất liệu: Hợp kim nhôm Dây dẫn: 4 dây

Màu dây:

Đỏ: VCCĐen: GNDXanh lá: Signal +Trắng: Signal -

Module ADC 24bit

Độ phân giải: 24 bit ADC

Độ phân giải điện áp: 40mV Kích thước: 38 x 21 x 10 mm Chức năng:

- Chuyển đổi tín hiệu analog từ loadcell sang tín hiệu digital

- Giao tiếp với vi điều khiển qua 2 dây(clock và data)

- Có thể cài đặt tốc độ lấy mẫu và độ phân giải

Trang 13

LCD 1602 xanh lá Hình 8 LCD 1602 xanh lá

[6]

Kiểu màn hình: LCD ký tự Kích thước màn hình: 16 ký tự x 2 dòng Kích thước điểm ảnh: 5 x 8 chấm

Kích thước mô-đun: 80 x 36 x 14 mm Điện áp hoạt động: 5V

Dòng điện hoạt động: < 20mA

Độ tương phản: 20:1 Góc nhìn: 60°

Nhiệt độ hoạt động: -20°C ~ 70°C Giao tiếp: 4 bit hoặc 8 bit song song

Bộ điều khiển: HD44780 Chức năng:

Hiển thị ký tựHiển thị ký tự đặc biệtXoay màn hình

Nhấp nháy con trỏTạo ký tự tùy chỉnh

Mạch chuyển đổi

giao tiếp I2C cho

LCD Hình 9 Mạch chuyển đổi giao

tiếp I2C cho LCD

26cm

Trang 14

Router WiFi

TOTOLINK

A810R

Hình 11 Router WiFi TOTOLINK A810R

Chuẩn Wi-Fi: Wi-Fi 5 (802.11ac) Tốc độ:

300Mbps (băng tần 2.4GHz)867Mbps (băng tần 5GHz)

Bảng 2 Chi phí tổng cộng linh kiện

Trang 15

10 Khung cân 1 40.000 40.000

2.3 Giải pháp truyền thông

2.3.1 Cấu hình địa chỉ IP tĩnh bằng ROUTER

Sau khi biết được địa chỉ MAC của hai module WiFi AI Thinker ESP32-CAM và NodeMCU ESP8266, sử dụng Router WiFi TOTOLINK A810R chúng em cấu hình địa chỉ IP tĩnh cho AI thinker ESP32-CAM và NodeMCU ESP8266 lần lượt các địa chỉ sau đây:

AI Thinker ESP32-CAM: 192.168.178.244

NodeMCU ESP8266: 192.168.178.245

2.3.2 API

Camera WebServer của AI Thinker ESP32-CAM cung cấp các API để điều

khiển trạng thái camera cũng như yêu cầu hình ảnh

Các API được sử dụng gồm có:

 /capture: Yêu cầu camera chụp hình và trả về hình ảnh chụp được.

 /control?var=framesize&val=13: Điều khiển độ phân giải của Camera Với val=13 là UXGA(1600x1200 pixels) cho hình ảnh có độ phân giải

Trang 16

Sau khi nhận được hình ảnh trả về từ Camera WebServer, lưu hình ảnh vào file image.jpg.

2.3.3 UART

UART (Universal Asynchronous Receiver/Transmitter) là một giao thức giao tiếpserial sử dụng hai chân dữ liệu: một chân truyền (TX) và một chân nhận (RX)

Giao tiếp UART được giữa Arduino và ESP8266

Hình 12 Sơ đồ mô tả giao tiếp UART

Sử dụng UART để cập nhật giá trị cân nặng mới nhất từ Arduino Uno R3 gửi đến NodeMCU ESP8266

Arduino UNO R3 code truyền:

NodeMCU ESP8266 code nhận:

weight = Serial readStringUntil('\n') ;

2.3.4 Websocket

WebSocket là một giao thức truyền thông mạng cho phép tạo kết nối song công giữamáy khách và máy chủ Giao thức này được xây dựng trên nền tảng TCP và có thểđược sử dụng trong các ứng dụng web để truyền dữ liệu thời gian thực giữa máykhách và máy chủ

Để có thể cập nhật được giá trị cân nặng theo thời gian thực, việc sử dụng

websocket đem lại tốc độ phản hồi nhanh chóng

Sau khi khởi tạo WebSocketsServer ở NodeMCU ESP8266 Từ python ta có thể gửiđến một yêu cầu cho NodeMCU ESP8266 bằng thư viện websocket bằng đoạn codesau

import websocket

Trang 17

weight = WebSocket recv()

NodeMCU ESP8266 phản hồi sau khi nhận được yêu cầu từ python như sau:

void onWebSocketsEvent(uint8_t client_num, WStype_t type,

uint8_t* payload, size_t length) {

      webSockets.sendTXT(client_num, weight);

      else if (command == CMD_SET_FRUIT_NAME)

Web Server đóng vai trò như một cầu nối giữa phần Hardware và AI Server của

hệ thống Nó sẽ làm nhiệm vụ nhận dữ liệu hình ảnh được thu thập từ phần cứng, gửi

dữ liệu hình ảnh đến AI Server và sau đó trả kết quả lại cho Hardware xử lý và đồngthời lưu dữ liệu thu thập được vào Database

Trang 18

Hình 13 Sơ đồ xử lý dữ liệu ở Web Server

Để xây dựng các API cho Web Server sẽ sử dụng Flask, restful API

Các API được xây dựng bao gồm:

- API tương tác với cơ sở dữ liệu(csdl) và web

Trang 19

➢ Parameters: ID của quả

➢ Function: Cập nhật dữ liệu quả có ID vào csdl

❖ http://host:port/viewFruit/<id>

➢ Method: GET

➢ Parameters: ID của quả

➢ Function: Xem thông tin quả theo ID

❖ http://host:port/searchFruit/<string>

➢ Method: GET

➢ Parameters: tên của quả

➢ Function: tìm kiếm thông tin của quả bằng tên

❖ http://host:port/viewBill/<id>

➢ Method: GET

➢ Parameters: ID của hoá đơn

Trang 20

➢ Function: xem thông tin chi tiết hoá đơn bằng ID

Trang 21

➢ Function: kích hoạt tài khoản

- API tương tác với phần vi điều khiển

Web Client cung cấp các chức năng quản lý cho cửa hàng và tạo đơn:

- Hiển thị loại quả nhận diện được:

Trang 22

Hình 14 .Màn hình hiển thị loại quả nhận diện được

- Thông báo cân một lúc nhiều loại quả:

Hình 15 Màn hình thông báo cân một lúc nhiều loại quả

- Tạo hóa đơn và tính tổng tiền:

Trang 23

Hình 16 Màn hình cân và nhận diện quả

Công nghệ được sử dụng để xây dựng Web Client cho hệ thống phân loại rác tựđộng bao gồm:

ID Mã của quả, tương ứng với nhãn mà quả được gán Int

Trang 24

trong mô hình học sâu Khoá chính.

 Thông tin người dùng

Bảng 4 Bảng users

password Mật khẩu tài khoản nhân viên Được băm bằng thuật

toán bcrypt trong gói bcrypt tải từ pip

Varchar(255)

username Tên người dùng của tài khoản nhân viên Varchar(255)

valid Trạng thái tài khoản của nhân viên (Valid/Invalid) Tinyint(1)

 Thông tin hoá đơn

Bảng 5 Bảng bill

Trang 25

0)

 Thông tin chi tiết hoá đơn

Bảng 6 Bảng bill_detail

liệu Detail_id Mã chi tiết hoá đơn Khoá chính Auto increment int

Bill_id Mã hoá đơn Khoá ngoại tham chiếu đến bảng bill int

Fruit_id Mã trái cây Khoá ngoại tham chiếu đến bảng fruit int

Trang 26

Hình 17 Sơ đồ biểu thị quan hệ giữa các bảng

2.5 Giải pháp AI

a Thu thập dữ liệu

Dữ liệu được phân thành 8 loại trái cây có nhãn như sau:

Trang 27

Dữ liệu được thu thập từ các nguồn sau:

Tự thu thập bằng hình ảnh thực tế từ AI Thinker ESP32-CAM

Số lượng ảnh ở mỗi lớp cụ thể được thống kê ở bảng sau

Hình 18 Hình ảnh thu thập dữ liệu

Trang 28

Bảng 8 Thống kê số lượng ảnh từng loại trái cây trước tiền xử lý

Trang 29

b Xử lý dữ liệu

Gán nhãn: Xử dụng công cụ CVAT để thực hiện gắn nhãn cho các loại trái cây.

Hình 20 Gắn nhãn trái cây

Phân chia dữ liệu: Phân chia dữ liệu ngẫu nhiên theo tỷ lệ 8:1:1 tương ứng với train set,

validation set, test set

1 Backbone:

Backbone là phần cốt lõi của YOLOv8, chịu trách nhiệm trích xuất đặc điểm từ ảnhđầu vào

Trang 30

YOLOv8 sử dụng backbone dựa trên mạng EfficientNet, được tối ưu hóa cho hiệusuất và tốc độ.

Backbone bao gồm các layer CNN như convolutional layer, pooling layer, vàactivation layer

Backbone EfficientNet bao gồm các block MBConv, được thiết kế để tối ưu hóa hiệusuất và tốc độ

Mỗi block MBConv bao gồm các layer:

 Inverted Bottleneck: Giúp giảm số lượng phép tính cần thiết mà vẫn giữ được

độ chính xác

 Depthwise Separable Convolution: Giúp tăng tốc độ tính toán

 Squeeze-and-Excitation: Giúp tăng cường khả năng biểu diễn của mạng

2 Neck:

Neck là phần kết nối backbone với phần head của mô hình

Neck có vai trò kết hợp các đặc điểm từ các layer khác nhau của backbone để tạo ramột biểu diễn đặc điểm thống nhất cho phần head

YOLOv8 sử dụng neck dựa trên kiến trúc FPN (Feature Pyramid Network), giúp tăngcường khả năng phát hiện đối tượng ở nhiều kích thước khác nhau

Neck FPN bao gồm các layer:

 Lateral connections: Kết hợp các đặc điểm từ các layer khác nhau củabackbone

 Top-down pathway: Truyền ngược các đặc điểm từ các layer cao củabackbone xuống các layer thấp

 Bottom-up pathway: Truyền ngược các đặc điểm từ các layer thấp củabackbone lên các layer cao

 Feature fusion: Kết hợp các đặc điểm từ các layer khác nhau để tạo ra một biểudiễn đặc điểm thống nhất

Head YOLOv8 bao gồm các layer:

 Anchor boxes: Các ô được sử dụng để dự đoán vị trí và kích thước của đốitượng

 Class predictions: Dự đoán lớp của đối tượng

 Bounding box predictions: Dự đoán vị trí và kích thước của đối tượng

4 Các layer khác:

YOLOv8 còn có thể bao gồm các layer khác như:

 Layer pre-processing: Chuẩn hóa ảnh đầu vào trước khi đưa vào backbone

Ngày đăng: 30/11/2024, 15:16

w