You are on page 1of 120

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA


KHOA ĐIỆN TỬ VIỄN THÔNG

ĐỒ ÁN TỐT NGHIỆP
NGÀNH: KỸ THUẬT ĐIỆN TỬ VIỄN THÔNG
CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ

ĐỀ TÀI:
THIẾT KẾ HỆ THỐNG IORT CHO CÁNH TAY
ROBOT CÓ XỬ LÝ ẢNH

Người hướng dẫn: TS. Nguyễn Duy Nhật Viễn


KS. Lê Hồng Nam

Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn 106190137


Trần Minh Hùng 106190108
Lớp: 19DTCLC3

Đà Nẵng, 07/2023
TÓM TẮT ĐỀ TÀI

Tên đề tài: “Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh”

STT Họ và tên sinh viên MSSV Lớp Ngành


1 Huỳnh Võ Thiện Tuấn 106190137
19DTCLC3 Kỹ thuật Điện tử Viễn thông
2 Trần Minh Hùng 106190108

Cùng với sự phát triển của nền khoa học và công nghệ đã tác động tích cực đến nền công
nghiệp hiện nay, việc nâng cao chất lượng của các loại sản phẩm cũng như nâng cao chất
lượng cuộc sống đang trở nên cần thiết hơn bao giờ hết. Thế nên, việc đưa các công cụ tự
hành vào đời sống và sản xuất đã trở thành xu thế hiện nay.

Đề tài của chúng tôi nói công nghệ IoRT cho việc điều khiển 1 cánh tay Robot. Cánh tay
này giúp cho việc vận chuyển các sản phẩm một cách nhanh chóng và chính xác hơn.
Cánh tay tự động hoạt động trong các dây chuyền lớn, sản xuất hàng loạt kết hợp một hệ
thống nhận dữ liệu và giám sát các thiết bị từ xa thông qua camera và cảm biến.

Đề tài: “Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh” gồm các chương:

Chương 1: Tổng quan về hệ thống IoRT

Trong chương này, ta sẽ tìm hiểu về các khái niệm cơ bản về hệ thống IoRT, kiến trúc hệ
thống, công nghệ và ứng dụng nó. Khái niệm cánh tay Robot cũng như ưu điểm và nhược
điểm của 1 hệ thống điều khiển cánh tay Robot và các phương pháp lập trình cho nó.

Chương 2: Phân tích hệ thống IoRT cho cánh tay robot

Chương này sẽ nói chi tiết về hệ thống IoRT cho cánh tay robot gồm những mà chúng
tôi sẽ làm và các thành phần sẽ xuất hiện trong hệ thống cũng như sự liên kết giữa các
thành phần đó.

Chương 3: Thiết kế phần cứng

Chương này tập trung chủ yếu vào việc thiết kế cũng như tính toán phần cứng cho hệ
thống.

Chương 4: Thiết kế phần mềm


i
Chương này ta sẽ được hiểu thêm về cách mà thông tin sẽ được truyền đi giữa các khối
của hệ thống như thế nào cũng như cách để tạo ra 1 trang web đơn giản.

Chương 5: Kết quả và đánh giá

Ta sẽ thấy được kết quả đạt được sau khi đồ án hoàn thành.

ii
ĐẠI HỌC ĐÀ NẴNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập – Tự do – Hạnh phúc

KHOA ĐIỆN TỬ VIỄN THÔNG

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP


STT Họ và tên sinh viên MSSV Lớp Ngành
1 Huỳnh Võ Thiện Tuấn 106190137
19DTCLC3 Kỹ thuật Điện tử Viễn thông
2 Trần Minh Hùng 106190108

1.Tên đề tài đồ án: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh.

2. Đề tài thuộc diện: ☐Có ký kết thỏa thuận sở hữu trí tuệ đối với kết quả thực hiện.

3. Các số liệu và dữ liệu ban đầu:

- Một cánh tay robot phân loại sản phẩm dựa theo màu sắc gồm tối đa 60 màu vào các ô
chứa sản phẩm. Trong hệ thống này sử dụng 4 màu.

- Khoảng cách gắp từ vị trí có sản phẩm đến vị trí ô chứa sản phẩm là 15- 20cm( sai số ±
2%).

- Gắp được sản phẩm có đường kính từ 2 – 4 cm và chiều cao từ 3,5 – 7 cm (sai số ± 2%).

- Sản phẩm là hình trụ có kích thước gồm chiều cao là 5 cm và đường kính 3 cm (sai số
±1%).

- Khối lượng để cánh tay có khả năng gắp được từ 10 – 150g (sai số ±5% ).

- Băng tải với chiều cao từ 8-10 cm và chiều rộng băng tải là 10 cm, chiều dài 60 cm.
Khối lượng tối đa là 3 kg (sai số ±5% ).

iii
4. Nội dung các phần thuyết minh và tính toán:

a. Phần chung:

1 Huỳnh Võ Thiện Tuấn - Tìm hiểu về công nghệ IoRT.


- Sơ đồ tổng thể, sơ đồ khối.

2 Trần Minh Hùng - Nghiên cứu, thiết kế và phát triển đề tài.


- Viết báo cáo, powerpoint và trình bày kết quả.

b. Phần riêng:

STT Họ và tên Nội dung


1 Huỳnh Võ Thiện Tuấn - Thiết kế mạch.
- Viết chương trình xử lý ảnh gồm lấy mẫu vật, chụp
ảnh vật và sử dụng thư viện OpenCV.
- Viết chương trình web điều khiển hệ thống.
2 Trần Minh Hùng - Tìm hiểu các công cụ phát trển như Arduino IDE,
ESP32.
- Lưu đồ thuật toán chương trình điều khiển.
- Viết chương trình điều khiển các góc của cánh tay
robot.

iv
5. Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ):

6. Họ tên người hướng dẫn: TS. Nguyễn Duy Nhật Viễn

KS. Lê Hồng Nam

7. Ngày giao nhiệm vụ đồ án: ....../......../2023

8. Ngày hoàn thành đồ án: ....../......../2023

Đà Nẵng, ngày…tháng…năm 2023

Trưởng Bộ môn …………………….. Người hướng dẫn

v
LỜI NÓI ĐẦU

Trong quá trình công nghiệp hóa và hiện đại hóa đất nước, tự động hóa đóng vai trò
ngày càng quan trọng. Với tốc độ phát triển hiện nay, chúng ta không chỉ cần lượng lao
động lớn mà còn yêu cầu trình độ chuyên môn cao, chất lượng tay nghề, kỹ thuật lao động
và thiết bị sản xuất. Khi khoa học kỹ thuật ngày càng tiến bộ, vấn đề tự động hóa trở nên
ngày càng được chú trọng.

Trong cuộc cách mạng công nghiệp 4.0, việc áp dụng tự động hóa và trí tuệ nhân tạo vào
sản xuất, kinh doanh trở thành một xu hướng không thể tránh để tạo ra năng suất lao động
cao hơn. Trên khắp thế giới, có nhiều nhà máy sử dụng hệ thống dây chuyền sản xuất tự
động hoàn toàn, sử dụng robot thay thế lao động con người để tạo ra sản phẩm chất lượng
cao với độ chính xác tuyệt vời. Nhờ vào robot, cuộc sống của chúng ta ngày càng tiện
nghi và an toàn hơn. Thực tế là robot đang dần thay thế con người trong những công việc
nguy hiểm như cứu nạn, cứu hộ và kiểm tra các môi trường độc hại, nơi ảnh hưởng đến
sức khỏe và tính mạng con người. Không chỉ thế, trong các gia đình, robot đã và đang
giúp chúng ta thực hiện những công việc hàng ngày và tốn nhiều thời gian như lau nhà và
hút bụi... điều này đồng nghĩa với việc chất lượng cuộc sống ngày càng được nâng cao.

Kết hợp với xu thế phát triển của thời đại cùng với kiến thức đã học, nhóm chúng tôi đã
chọn đề tài " Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh ". Trong quá trình
làm đồ án, chúng tôi đã được hướng dẫn tận tình từ thầy cùng với sự nỗ lực của cả hai
thành viên trong nhóm. Hiện tại, đồ án đã hoàn thành. Tuy nhiên, do kiến thức và kinh
nghiệm còn hạn chế, cũng như kỹ năng chưa hoàn thiện, nhóm chúng tôi vẫn còn nhiều
thiếu sót cần bổ sung và hoàn thiện. Chúng tôi kính mong được các thầy cô thông cảm và
góp ý để đề tài của chúng tôi hoàn thiện hơn và có thể được phát triển và áp dụng trong
tương lai gần.

vi
LỜI CẢM ƠN

Để có thể hoàn thành đề tài đồ án tốt nghiệp một cách hoàn chỉnh, bên cạnh sự nỗ lực cố
gắng của bản thân các thành viên trong nhóm còn có sự hướng dẫn nhiệt tình của KS. Lê
Hồng Nam và TS. Nguyễn Duy Nhật Viễn trong suốt thời gian học tập nghiên cứu và
thực hiện đồ án.

Lời đầu tiên nhóm tôi xin chân thành cảm ơn đến KS. Lê Hồng Nam và TS. Nguyễn
Duy Nhật Viễn đã giúp đỡ và tạo mọi điều kiện tốt nhất cho nhóm em hoàn thiện đồ án
này. Xin chân thành bày tỏ lòng biết ơn đến toàn thể quý thầy cô trong khoa Điện tử Viễn
thông đã tận tình truyền đạt những kiến thức quý báu cũng như tạo mọi điều kiện thuận
lợi nhất cho nhóm em trong suốt quá trình học tập, nghiên cứu và cho đến khi hoàn thành
đồ án.

Nhóm em cũng gửi lời đồng cảm ơn đến các bạn lớp 19DTCLC3 đã chia sẻ trao đổi kiến
thức cũng như kinh nghiệm quý báu trong thời gian thực hiện đề tài.

Cuối cùng nhóm tôi xin kính chúc quý Thầy, Cô và gia đình dồi dào sức khỏe, luôn
thành công trong sự nghiệp cao quý của mình.

Sinh viên thực hiện

Huỳnh Võ Thiện Tuấn

Trần Minh Hùng

vii
LỜI CAM ĐOAN

Kính gửi: Hội đồng bảo vệ đồ án tốt nghiệp khoa Điện tử - Viễn thông, trường Đại học
Bách khoa - Đại học Đà Nẵng.

Chúng tôi xin cam đoan đồ án trên là công trình nghiên cứu của riêng bản thân mình
dưới sự hướng dẫn của giảng viên KS.Lê Hồng Nam và TS. Nguyễn Duy Nhật Viễn.
Những nhận định được nêu ra trong đồ án cũng là kết quả từ sự nghiên cứu trực tiếp,
nghiêm túc, độc lập của bản thân tác giả dựa vào các cơ sở tìm kiếm, hiểu biết và nghiên
cứu tài liệu khoa học hay bản dịch khác đã được công bố. Đồ án vẫn sẽ giúp đảm bảo
được tính khách quan, trung thực và khoa học.

Nếu như sai chúng tôi xin chịu hoàn toàn trách nhiệm và chịu tất cả các kỷ luật của bộ
môn cũng như nhà trường đề ra.

Sinh viên thực hiện

Huỳnh Võ Thiện Tuấn

Trần Minh Hùng

viii
MỞ ĐẦU

Mục đích thực hiện đề tài: Thiết kế chế tạo một hệ thống phân loại sản phẩm tự động
trên băng tải động bằng cánh tay robot ứng dụng công nghệ xử lí ảnh. Với việc áp dụng
công nghệ xử lí ảnh, nó sẽ làm tăng năng suất và tránh những sai sót có thể xảy ra trong
quá trình sản xuất.

Mục tiêu đề tài: Củng cố lại những kiến thức đã học vào thực tế từ thiết kế mạch điện,
lập trình, nghiên cứu và đưa vào ứng dụng thực tế …. Qua đó hiểu rõ hơn về ngành học
cũng như những công việc trong tương lai, để từ đó bổ sung thêm kiếm và rút kinh
nghiệm sau này.

Phạm vi và đối tượng nghiên cứu:

Phạm vi: Hệ thống bao gồm những phần chính như: Hệ thống công nghệ IoRT kết hợp 1
cánh tay robot 4 bậc tự do, 1 hệ thống băng tải động, 1 camera xử lý ảnh, máy tính. Phạm
vi ở dạng mô hình nhỏ gọn, phù hợp với việc thực hành và nghiên cứu.

Đối tượng: Hệ thống công nghệ IoRT kết hợp Robot 4 bậc tự do, hệ thống băng tải,
camera xử lý ảnh, máy tính. Phương pháp nghiên cứu: Vận dụng các kiến thức đã học từ
các môn liên quan trong suốt quá trình học từ điện tử và lập trình để tiến hành làm mô
hình. Đồng thời nghiên cứu, học hỏi từ các nguồn khác nhau, (internet, sách, bài chia
sẻ….).

Nghiên cứu lý thuyết: Nghiên cứu kiến trúc ưu điểm và ứng dụng của hệ thống công
nghệ IoRT, đặc điểm động học và động lực học robot, bộ truyền cho băng tải, lập trình
cho robot và xử lý ảnh để nhận diện sản phẩm.

Nghiên cứu thiết kế: Tính toán và vẽ kết cấu robot, băng tải.

Chế tạo: Dựa vào kết quả tính toán và thiết kế sau đó tiến hành thi công chế tạo.

ix
MỤC LỤC
TÓM TẮT ĐỀ TÀI.............................................................................................................i
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP................................................................................iii
LỜI NÓI ĐẦU...................................................................................................................vi
LỜI CẢM ƠN...................................................................................................................vii
LỜI CAM ĐOAN............................................................................................................viii
MỞ ĐẦU............................................................................................................................ix
CHƯƠNG I: TỔNG QUAN VỀ HỆ THỐNG IORT......................................................1
1.1. Giới thiệu Công nghệ IoRT........................................................................................1
1.1.1. Kiến trúc IoRT............................................................................................................2
1.1.2. Các lĩnh vực ứng dụng đáng chú ý của IoRT.............................................................3
1.1.3. Ưu điểm của IoRT......................................................................................................5
1.1.4. Những thách thức chính.............................................................................................5
1.2. Cánh tay Robot công nghiệp......................................................................................6
1.3. Phân tích đề tài............................................................................................................6
1.4. Ưu điểm, nhược điểm của hệ thống...........................................................................6
1.5. Giải pháp......................................................................................................................7
1.6. Kết luận chương..........................................................................................................8
CHƯƠNG II: PHÂN TÍCH HỆ THỐNG IORT CHO CÁNH TAY ROBOT............9
2.1. Giới thiệu chương........................................................................................................9
2.2. Hệ thống IoRT cho cánh tay robot............................................................................9
2.3. Nhiệm vụ....................................................................................................................11
2.4. Sơ đồ khối của hệ thống............................................................................................12
2.5. Chi tiết các khối.........................................................................................................13
2.5.1. Khối điều khiển trung tâm........................................................................................13
2.5.2 Khối tín hiệu..............................................................................................................14
2.5.2.1. Tổng quan về cảm biến quang...............................................................................14
2.5.2.2. Camera...................................................................................................................17
2.5.3. Khối điều khiển robot...............................................................................................17
2.5.4. Khối điều khiển băng chuyền...................................................................................20

x
2.5.5. Khối máy tính (Webserver)......................................................................................20
2.6. Tổng quan về xử lý ảnh.............................................................................................20
2.6.1. Phương pháp thu nhận ảnh.......................................................................................22
2.6.2. Giới thiệu về thư viện OpenCV................................................................................22
2.7. Xử Lý Ảnh Cơ Bản Với OpenCV............................................................................29
2.8. Kết luận chương........................................................................................................34
CHƯƠNG III: THIẾT KẾ PHẦN CỨNG.....................................................................35
3.1. Giới thiệu chương......................................................................................................35
3.2. Tổng quan về cánh tay robot....................................................................................35
3.3. Sơ đồ mạch.................................................................................................................37
3.4. Sơ đồ mạch in.............................................................................................................38
3.5. Kết luận chương........................................................................................................41
CHƯƠNG IV: THIẾT KẾ PHẦN MỀM.......................................................................42
4.1. Giới thiệu chương......................................................................................................42
4.2. Lưu đồ thuật toán ở mạch điều khiển cánh tay......................................................42
4.2.1.Lưu đồ thuật toán con khối đọc cảm biến và điều khiển băng tải.............................43
4.2.2. Lưu đồ thuật toán con khối điều khiển cánh tay robot.............................................44
4.3. Lưu đồ thuật toán ở trên Webserver.......................................................................45
4.3.1.Lưu đồ thuật toán con chương trình xử lý ảnh..........................................................46
4.4. Phần mềm sử dụng....................................................................................................47
4.4.1. Phần mềm Arduino IDE...........................................................................................47
4.4.2. Phần mềm Pycharm..................................................................................................49
4.5. Các bước quá trình xử lý ảnh...................................................................................51
4.6. Truyền thông dữ liệu giữa ESP32 và máy tính.......................................................53
4.6.1. Giới thiệu truyền thông UART.................................................................................53
4.7. Giao thức truyền nhận giữa Python và Webserver................................................57
4.7.1. Giới thiệu truyền thông HTTP................................................................................57
4.8. Thiết kế Web..............................................................................................................58
4.9. Kết luận chương........................................................................................................59
CHƯƠNG V: KẾT QUẢ VÀ ĐÁNH GIÁ.....................................................................60
5.1. Giới thiệu chương......................................................................................................60
xi
5.2. Phần cứng...................................................................................................................60
5.2.1. Sơ đồ mạch...............................................................................................................60
5.2.2. PCB..........................................................................................................................61
5.2.3. Mạch in thực tế.........................................................................................................62
5.2.4. Hệ thống thực tế.......................................................................................................63
5.3. Đánh giá quá trình thực nghiệm..............................................................................64
5.4. Phần mềm...................................................................................................................66
5.5.Hướng phát triển của cánh tay robot có thể thực hiện...........................................66
5.6. Kết luận chương........................................................................................................67
TÀI LIỆU THAM KHẢO...............................................................................................68
PHỤ LỤC 1.......................................................................................................................70
PHỤ LỤC 2.......................................................................................................................83
PHỤ LỤC 3.......................................................................................................................92

xii
MỤC LỤC HÌNH ẢNH
CHƯƠNG I
Hình 1.1 Hệ thống công nghệ IoRT.....................................................................................1
Hình 1.2 Kiến trúc IoRT.......................................................................................................2
Hình 1.3 Ứng dụng UAV trong bón phân, phun thuốc trên đồng ruộng..............................4
Hình 1.4 Cánh tay Robot trong công nghiệp........................................................................6
CHƯƠNG II
Hình 2.1 Sơ đồ khối............................................................................................................12
Hình 2.2 ESP32..................................................................................................................13
Hình 2.3 Cấu tạo tổng quát.................................................................................................16
Hình 2.4 Mạch nguyên lý cảm biến quang.........................................................................16
Hình 2.5 Webcam Logitech C270......................................................................................17
Hình 2.6 Servo MG996R....................................................................................................18
Hình 2.7 Thông số servo MG996R....................................................................................19
Hình 2.8 Xử lý ảnh.............................................................................................................21
Hình 2.9 Lọc nhiễu ảnh......................................................................................................23
Hình 2.10 Nhiễu độc lập với dữ liệu ảnh...........................................................................24
CHƯƠNG III
Hình 3.1 Tổng thể cánh tay robot.......................................................................................35
Hình 3.2 Hình ảnh cánh tay robot thực tế..........................................................................36
Hình 3.3 Sơ đồ mạch..........................................................................................................37
Hình 3.4 Sơ đồ mạch..........................................................................................................38
Hình 3.5 Nguồn tổ ong 5V-4A...........................................................................................39
Hình 3.6 Mạch relay...........................................................................................................40
CHƯƠNG IV
Hình 4.1 Lưu đồ thuật toán ở mạch điều khiển cánh tay....................................................42
Hình 4.2 Lưu đồ thuật toán con đọc cảm biến và điều khiển băng tải...............................43
Hình 4.3 Lưu đồ thuật toán con khối điều khiển cánh tay Robot.......................................44
Hình 4.4 Lưu đồ thuật toán ở trên Webserver....................................................................45
Hình 4.5 Lưu đồ thuật toán con chương trình xử lý ảnh....................................................46
Hình 4.6 Arduino IDE........................................................................................................47
Hình 4.7 Giao diện của Arduino IDE.................................................................................47
Hình 4.8 Các nút lệnh trong Arduino IDE.........................................................................48
Hình 4.9 Vùng thông báo trong Arduino IDE....................................................................48
Hình 4.10 Chọn cổng kết nối cho Arduino.........................................................................49
Hình 4.11 Giao diện phần mềm..........................................................................................50
Hình 4.12 Hình ảnh 4 sản phẩm.........................................................................................51
Hình 4.13 Giao thức UART...............................................................................................53
xiii
Hình 4.14 Kết nối HTTP....................................................................................................58
CHƯƠNG V
Hình 5.1 Sơ đồ mạch tổng thể............................................................................................60
Hình 5.2 PCB.....................................................................................................................61
Hình 5.3 Mạch in thực tế....................................................................................................62
Hình 5.4 Hệ thống mô hình thực tế....................................................................................63
Hình 5.5 Giao diện Web đơn giản......................................................................................66

xiv
MỤC LỤC BẢNG
Bảng 1.1 Datasheet C1815.................................................................................................40
Bảng 1.2 Sản phẩm màu xanh............................................................................................64
Bảng 1.3 Sản phẩm màu đỏ................................................................................................64
Bảng 1.4 Sản phẩm màu vàng............................................................................................65
Bảng 1.5 Sản phẩm màu tím...............................................................................................65

DANH MỤC KÝ TỰ

STT Kí hiệu Chú thích

1 IoRT Internet of Robotic Things


2 OpenCV Open Source Computer Vision Library
3 UAV Unmanned Aerial Vehicle
(Máy bay không người lái)
4 PWM Pulse Width Modulation
5 HTML Hyper Text Markup Language
6 UART Universal Asynchronous Receiver/Transmitter
7 HTTP Hyper Text Transfer Protocol
8 HSV (Hue, Saturation, Value)
9 RGB (Red, Green, Blue)
10 IOT Internet of Robotic Things

xv
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

CHƯƠNG I: TỔNG QUAN VỀ HỆ THỐNG IORT

1.1. Giới thiệu Công nghệ IoRT


Sự kết hợp mới giữa IoT và Robot với những ưu điểm đánh dấu bước phát triển.

Hình1.1 Hệ thống công nghệ IoRT


Khái niệm IoRT (Internet of Robotic Things) được lần đầu đưa ra vào năm 2014, trong
một báo cáo phân tích công nghệ của hãng nghiên cứu ABI Research [1], theo đó: “IoRT
là khái niệm trong đó các thiết bị thông minh có thể theo dõi các sự kiện, khai thác dữ liệu
cảm biến từ nhiều nguồn khác nhau, sử dụng trí thông minh tại chỗ hoặc phân tán để
quyết định hành động phù hợp nhất và sau đó tác động để điều khiển các đối tượng trong
thế giới vật lý, đôi lúc là trong khi đang di chuyển vật lý trong thế giới đó”.

Khái niệm nêu trên cho thấy một số đặc điểm cơ bản của một hệ thống IoRT: Khả năng
khai thác dữ liệu; Ra quyết định dựa trên dữ liệu; Khả năng tác động vào thế giới vật lý
[2].

1
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Robot thỏa mãn các đặc điểm trên có thể bao trùm nhiều loại hình như robot hình người,
các tay máy công nghiệp, các loại xe tự hành, các robot tương tác với người qua giọng
nói,…

1.1.1. Kiến trúc IoRT

Hình1.2 Kiến trúc IoRT


 Kiến trúc IoRT được phân thành 3 lớp: [2]
Lớp vật lý (physical): bao gồm các robot, cảm biến và các cơ cấu chấp hành.

- Robot là các đối tượng thông minh có thể chuyển động trong thế giới vật lý và tác
động vào thế giới vật lý. Robot có thể liên lạc và cộng tác với nhau tạo thành những hệ
đa robot để cùng thực hiện những tác vụ phức tạp.
- Cảm biến là những thiết bị theo dõi các thông số của môi trường và cảm nhận, theo
dõi các sự kiện diễn ra trong môi trường, chẳng hạn như sự hiện diện và các hoạt động
2
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

của robot, sự di chuyển của các đồ vật,… Trong một số trường hợp robot có thể kết
nối trực tiếp với các cảm biến. Nhưng thông thường việc kết nối đó được thực hiện
thông qua lớp mạng và điều khiển.
- Lớp vật lý còn bao gồm cả các thiết bị đơn giản như các công tắc bật tắt, núm điều
chỉnh và các cơ cấu chấp hành khác, có thể thực hiện các tác vụ đơn giản.

 Lớp mạng và điều khiển (Network & Control): bao gồm các thiết bị định tuyến, bộ
điều khiển, kho lưu trữ dữ liệu tại chỗ hay điện toán đám mây, các giao thức liên
lạc và điều khiển,…
 Lớp dịch vụ và ứng dụng (Service & Application): bao gồm các chương trình phần
mềm nhằm giám sát, xử lý và điều khiển các thông số môi trường và các đối tượng
của hệ thống IoRT (robot, cảm biến, các cơ cấu chấp hành) nhằm đạt được các mục
tiêu của hệ thống. Nhiều thuật toán, công nghệ hiện đại được áp dụng vào lớp này
để xử lý dữ liệu tập hợp từ các cảm biến như Trí tuệ nhân tạo (AI) để khai thác và
tối ưu hoạt động của các robot.

1.1.2. Các lĩnh vực ứng dụng đáng chú ý của IoRT

 IoRT tuy khá mới mẻ, nhưng đang được ứng dụng rộng rãi và tương đối mạnh mẽ
trên nhiều lĩnh vực như công nghiệp, nông nghiệp chính xác, logistics, y tế và
nhiều lĩnh vực đời sống khác.
 Công nghiệp là miền ứng dụng quan trọng của IoRT. Đáng chú ý là xu hướng
robot hoạt động cộng tác (cobot) cùng với con người trong các dây chuyền sản
xuất. Ở đó robot hỗ trợ công nhân thực hiện các công việc nặng nhọc, nguy hiểm,
lặp đi lặp lại với cường độ cao… còn con người bao quát môi trường và giám sát
và hướng dẫn hoạt động của robot. Một ví dụ điển hình là việc triển khai cobot
KUKA lắp ráp đèn xe trong nhà máy của Ford [3]. Robot hiệu chỉnh ở các vị trí
khó mà trước kia người công nhân phải cúi thấp dưới sàn để làm, còn người công
nhân hướng dẫn robot tới khu vực cần thực hiện thao tác. Tính phức tạp của các
giải pháp như vậy cũng thấp hơn so với việc phải tự động hóa hoàn toàn, cho phép
triển khai các ứng dụng linh động, nhanh chóng hơn.
 Logistics là lĩnh vực mà ứng dụng IoRT diễn ra sôi nổi. Với các ứng dụng phân
loại, xếp dỡ hàng hóa ở các nhà kho của Amazon, Alibaba, Ocado… Robot làm

3
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

việc suốt ngày đêm với tốc độ cao và hạn chế được các sai sót con người giúp
mang lại hiệu quả lớn về việc đáp ứng thời gian sắp xếp, phân loại hàng hóa, tối ưu
chi phí vận hành. Nhiều nhà phân phối cũng đã đưa vào khai thác các giải pháp
IoRT cho giao hàng tự động đến người dùng cuối, mang lại hiệu quả vượt trội về
tốc độ và khả năng tiếp cận những khu vực khó khăn, mang lại hình thức phân phối
an toàn trong bối cảnh dịch bệnh Covid.
 Nông nghiệp thông minh cũng rất hứa hẹn với IoRT. Robot có thể tham gia vào
nhiều công đoạn trong sản xuất nông nghiệp thông minh như các hệ thống thu
hoạch tự động, cắt cỏ, xén cành, gieo hạt, phun thuốc…; hoạt động trong vườn
ươm; dây chuyền phân loại và đóng gói hàng hóa nông sản… Các robot tham gia
hoạt động trên đồng ruộng được kết nối với dữ liệu từ các cảm biến về các thông
số môi trường, thời tiết và quy trình canh tác để quyết định các hoạt động như tưới
nước, bón phân… mang lại hiệu quả canh tác tốt nhất.

Hình1.3 Ứng dụng UAV trong bón phân, phun thuốc trên đồng ruộng.
 Robot cũng có thể thu thập hình ảnh sinh trưởng của cây trồng gửi về trung tâm dữ
liệu để phân tích. Các UAV có thể theo dõi diện tích canh tác lớn từ trên không,
cảnh báo dịch bệnh hay những bất thường trong sinh trưởng của cây cối, phun
thuốc hay bón phân trên diện tích rộng một cách nhanh chóng [2].
 Ngoài ra còn nhiều lĩnh vực ứng dụng quan trọng khác của IoRT như trong y tế
(các giải pháp sử dụng tay máy cho phẫu thuật từ xa, robot chăm sóc cho người cao
tuổi…), giao thông vận tải (xe tự lái), dịch vụ (robot lễ tân, hướng dẫn thông
tin…).

4
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

1.1.3. Ưu điểm của IoRT

 Robot cộng tác có thể giảm bớt nhiệm vụ


Cobots là robot cộng tác với con người trong các nhiệm vụ (được chia sẻ) của họ, mà
không thay thế chúng hoàn toàn. Do đó, các nhiệm vụ phức tạp đòi hỏi sự chăm sóc, hoặc
các nhiệm vụ mà robot chưa được thiết kế, có thể được xử lý bởi con người, trong khi các
nhiệm vụ tốn nhiều lao động và lặp đi lặp lại có thể được tự động hóa. Thiết lập này có
thể hữu ích nhất trong các cửa hàng nhỏ và kho lớn. [4]

 Thiết bị IoT tạo ra nhiều dữ liệu


Cảm biến, bộ truyền động và hành động robot tạo ra rất nhiều dữ liệu và với sự tích hợp
của các thuật toán Big Data và AI, chúng tôi có thể đi sâu hơn vào việc đưa ra quyết định
sáng suốt, dự đoán xu hướng, tiếp thị.
Nó cho phép đồng bộ hóa tối ưu. Khi máy móc có thể giao tiếp với nhau một cách liền
mạch, có thể có vô số khả năng để khám phá. Đồng bộ hóa có thể ngăn ngừa các khiếm
khuyết trong sản xuất hoặc thậm chí giúp đạt được độ chính xác cực cao. Thay vì chỉ một
hệ thống hoặc một phần duy nhất, một môi trường hoặc quy trình tốt hơn và có chánh
niệm hơn được tạo ra nói chung.

 IoT sẽ nâng tầm robot hiện đại


Các nhà nghiên cứu đang nghiên cứu không chỉ chuyển đổi lĩnh vực robot mà còn sử
dụng IoT trong các lĩnh vực khác. IoRT sẽ thúc đẩy chăm sóc sức khỏe, thiết bị gia dụng
và phương tiện chủ yếu thông qua các thiết bị thông minh và robot thông minh.
1.1.4. Những thách thức chính

- Vấn đề tính toán: Các khung kiến trúc hoàn toàn khác nhau và cần thiết có thể xử lý các
vấn đề phức tạp và một lượng lớn dữ liệu.
- Tối ưu hóa: Các chiến lược khác nhau phải được hình thành để tính toán hiệu quả như
tính toán cá nhân, tính toán cộng tác, tính toán cloud hoặc mô hình lai.

5
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

- Vấn đề bảo mật: Với kết nối mạng và robot tại nơi làm việc cho các nhiệm vụ quan
trọng, bảo mật trở nên quan trọng và các phương pháp phát triển phải được thực hiện cho
việc này. [4]

1.2. Cánh tay Robot công nghiệp

Cánh tay Robot công nghiệp là robot được sử dụng trong sản xuất công nghiệp. Cánh tay
Robot công nghiệp là loại tự động, có thể lập trình và có khả năng di chuyển trên hai hoặc
nhiều trục. [5]

Hình 1.4 Cánh tay Robot trong công nghiệp


Tại Việt Nam, thị trường cánh tay Robot công nghiệp được cho là sẽ phát triển mạnh
trong thời gian tới, cùng với việc các doanh nghiệp chú trọng vào cách mạng công nghiệp
4. Cánh tay Robot công nghiệp tăng trưởng nhiều nhất trong các ngành: Sản xuất ô tô,
trong sản xuất thực phẩm, trong vận chuyển hàng hóa...

Việt Nam hiện cũng được các chuyên gia đánh giá là thị trường tiềm năng của Robot
công nghiệp với nhiều các nhà máy sản xuất sử dụng Robot như: Vinfast, Thaco... [5]

1.3. Phân tích đề tài

Với ý tưởng thiết kế một hệ thống gồm cánh tay robot phân loại sản phẩm trên băng tải
động trong các nhà máy công nghiệp ứng dụng công nghệ xử lý ảnh. Các sản phẩm
chuyển động trên băng tải với màu sắc khác nhau, sau khi được một camera chụp hình,
qua quá trình xử lý tín hiệu trên máy tính sẽ gửi tính hiệu cho cánh tay robot sẽ thực hiện
công việc gắp và phân loại các sản phẩm vào các nơi khác nhau.

6
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

1.4. Ưu điểm, nhược điểm của hệ thống

Ưu điểm:
- Năng suất làm việc: Robot công nghiệp có thể hoạt động 24/24 trong một ngày, 1 tuần
và thậm chí một tháng và cả năm. Nhờ đó, năng suất sản xuất tăng cao vượt trội.
- Độ an toàn cao: Robot công nghiệp có thể thay thế con người trong những môi trường
nguy hiểm, làm các công việc nặng nhọc và đòi hỏi tính chuẩn xác cao, ít sai số.
- Chất lượng sản phẩm tốt: Robot công nghiệp giúp giảm các sai sót và đảm bảo chất
lượng hàng hóa sẽ đồng đều hơn.
- Giảm chi phí vận hành: Robot công nghiệp giúp giảm thiểu nguồn nhân lực, chi phí vận
hành, giảm được các chi phí liên quan đến chi phí vận hành và nguồn lao động.
Nhược điểm:
- Vì được vận hành theo cơ chế tự động, hệ thống được điều khiển bằng máy tính nên
nguy cơ bị hack rất cao. Khi hệ thống bị tấn công sẽ bị đình trệ và gây ra những thiệt hại
nghiêm trọng.
- Khó vận hành, chi phí bảo dưỡng cao: Để vận hành hiệu quả robot công nghiệp, đòi hỏi
bạn phải trải qua một khóa học và có những hiểu biết nhất định về thiết bị hiện đại này.
Bên cạnh đó, robot công nghiệp khá tốn chi phí để bảo dưỡng hay bảo hành.
- Không có khả năng nâng hạ vật theo chiều dọc trục như chuyển động tịnh tiến.
- Chi phí đầu vào cao: Việc ứng dụng robot tự động đòi hỏi chi phí đầu tư ban đầu rất cao.
Ngoài ra, cũng cần có chi phí cho việc đào tạo nhân công vận hành các loại thiết bị, máy
móc hiện đại và phức tạp.

1.5. Giải pháp

Với những ứng dụng và ưu điểm trên của hệ thống công nghệ IoRT đã tìm hiểu. Chúng
tôi đã đưa ra đề tài với việc ứng dụng thực tiễn trong sản xuất phân loại sản phẩm nên
nhóm tôi đã chọn nghiên cứu mô hình: Một hệ thống robot thực hiện nhiệm vụ phân loại
sản phẩm, dùng xử lý ảnh, điều khiển từ xa qua Webserver. Chúng tôi đã chọn đề tài:”
Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh”.

Trong phạm vi đề tài với mô hình nhỏ gọn và có tải trọng nhẹ nên chúng tôi lựa chọn
cánh tay robot 4 bậc tự do. Robot bao gồm: khớp đầu tiên là khớp xoay giúp cánh tay

7
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

xoay sang hai bên, tiếp đó là 2 khớp xoay giúp cánh tay gập lên xuống để nâng hạ vật thể,
một khớp xoay tay kẹp dùng để gắp vật.

1.6. Kết luận chương

Cánh tay Robot từng bước xuất hiện trong mọi công việc của con người. Nhờ vào cấu
tạo đa dạng cùng với sự bền bỉ và linh hoạt mà cánh tay Robot có thể đảm nhận nhiều
công việc của con người, những công việc yêu cầu sức khỏe đồng thời những công việc
nguy hiểm.

Cùng với công nghệ 4.0 mà việc phát triển các cánh tay Robot này đang là một xu thế
nhằm thay thế hoàn toàn con người trong các hoạt động cũng như giúp đỡ cuộc sống hằng
ngày của con người, nâng cao chất lượng cuộc sống.

8
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

CHƯƠNG II: PHÂN TÍCH HỆ THỐNG IORT CHO CÁNH TAY ROBOT

2.1. Giới thiệu chương

Chương này giới thiệu về hệ thống IoRT điều khiển cánh tay robot, cùng với đó là các
linh kiện và thiết bị cần thiết để hoàn thành các khối có mặt trong hệ thống.

2.2. Hệ thống IoRT cho cánh tay robot

Công nghệ IoRT (Internet of Robotic Things) là một hệ thống kết nối giữa các robot
với nhau và với môi trường xung quanh thông qua internet. Nó cho phép các robot hoạt
động một cách độc lập và cùng nhau tương tác và hợp tác để thực hiện các nhiệm vụ
phức tạp. Công nghệ IoRT kết hợp giữa Internet of Things (IoT) và Robot để tạo ra một
mạng lưới robot thông minh.

Cánh tay robot là một phần quan trọng trong các hệ thống robot. Cánh tay robot
thường được thiết kế để thực hiện các nhiệm vụ như cầm và di chuyển các đối tượng,
thực hiện các thao tác chính xác và linh hoạt. Các cánh tay robot hiện đại thường được
trang bị cảm biến và khả năng điều khiển để thích ứng với môi trường và tương tác với
các đối tượng xung quanh.

Công nghệ IoRT có thể được áp dụng vào các hệ thống cánh tay robot để nâng cao
hiệu suất và khả năng tương tác. Việc kết nối các cánh tay robot với mạng lưới IoRT
giúp chúng có thể nhận thông tin từ các nguồn khác nhau, như cảm biến, hệ thống quản
lý, hoặc robot khác, và thích ứng với tình huống và điều kiện mới. Điều này cho phép
cánh tay robot hoạt động một cách linh hoạt và hiệu quả hơn, đồng thời tăng khả năng
tương tác và hợp tác với các robot khác để thực hiện các nhiệm vụ phức tạp.

Cánh tay robot thông minh kết hợp với công nghệ IoRT mang lại nhiều lợi ích trong
các lĩnh vực như công nghiệp, sản xuất, y tế và dịch vụ. Chúng có khả năng tăng năng
suất, giảm thiểu lỗi và tăng tính an toàn trong quá trình làm việc. Ngoài ra, sự tương tác

9
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

và hợp tác giữa các cánh tay robot thông minh cũng mở ra cơ hội cho ứng dụng mới và
sáng tạo trong việc giải quyết các vấn đề phức tạp.

Trong lĩnh vực sản xuất, công nghệ IoRT và cánh tay robot đóng vai trò quan trọng
trong việc tăng cường hiệu suất và linh hoạt của quy trình sản xuất. Sự kết hợp giữa
IoRT và cánh tay robot giúp tạo ra các hệ thống tự động hoá thông minh và hiệu quả.

Một ứng dụng phổ biến của công nghệ IoRT và cánh tay robot trong sản xuất là trong
quá trình lắp ráp và vận chuyển sản phẩm. Các cánh tay robot thông minh có thể được
lắp đặt trên các dây chuyền sản xuất và kết nối với mạng lưới IoRT. Chúng có khả năng
nhận dữ liệu từ các cảm biến để xác định vị trí và tình trạng của các bộ phận. Sau đó,
cánh tay robot có thể thực hiện các thao tác lắp ráp, kiểm tra chất lượng và đóng gói
sản phẩm tự động.

Qua việc kết nối với IoRT, các cánh tay robot trong quá trình sản xuất có thể trao đổi
thông tin với nhau và với hệ thống quản lý. Điều này cho phép tối ưu hoá quy trình sản
xuất, điều chỉnh lịch trình và tăng cường khả năng đáp ứng theo nhu cầu. Ngoài ra,
công nghệ IoRT còn giúp thu thập dữ liệu về hiệu suất sản xuất, từ đó phân tích và đưa
ra các cải tiến để tối ưu hoá quy trình và giảm thiểu lãng phí.

Công nghệ IoRT và cánh tay robot cũng đóng vai trò quan trọng trong việc đảm bảo
an toàn trong môi trường sản xuất. Các cảm biến và hệ thống giám sát trên cánh tay
robot giúp phát hiện các tình huống nguy hiểm và ngăn chặn sự cố xảy ra. Nếu cảm
biến phát hiện một vật cản hoặc sự tiềm ẩn nguy hiểm, cánh tay robot có thể tạm dừng
hoặc thay đổi hướng di chuyển để tránh va chạm và gây thương tổn.

Tóm lại, sự kết hợp giữa công nghệ IoRT và cánh tay robot mang lại nhiều lợi ích
trong lĩnh vực sản xuất. Chúng giúp tăng cường hiệu suất, linh hoạt và an toàn trong
quy trình sản xuất, đồng thời tạo ra cơ hội để áp dụng công nghệ tiên tiến và nâng cao
năng suất của doanh nghiệp.

10
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

2.3. Nhiệm vụ

Nhiệm vụ hệ thống:

Với hệ thống phân loại sản phẩm cần tốc độ xử lí nhanh, các sản phẩm nằm trên băng tải
động nên cánh tay robot đòi hỏi khả năng xử lí linh hoạt, đồng thời đạt độ chính xác cao
nên với yêu cầu đề bài, cánh tay robot cần số bậc tự do đủ lớn để có thể đáp ứng được
việc xử lí. Tuy nhiên số bậc tự do càng cao thì độ phức tạp trong quá trình thiết kế cũng
như chi phí đầu tư sẽ tăng lên. Trong phạm vi đề tài với mô hình nhỏ gọn và có tải trọng
nhẹ nên ta lựa chọn cánh tay robot 4 bậc tự do. Robot bao gồm: khớp đầu tiên là khớp
xoay giúp cánh tay xoay sang hai bên, tiếp đó là 3 khớp xoay giúp cánh tay gập lên xuống
để nâng hạ vật thể, một khớp xoay tay kẹp dùng để gắp vật.

Thiết kế và thi công một dây chuyền có thể phân loại sản phẩm ứng dụng xử lý ảnh dùng
thư viện OpenCV, viết trên ngôn ngữ python. Dây chuyền có thể phân loại các sản phẩm
dựa theo từng màu sắc.

Phát triển thêm về công nghệ xử lý ảnh nhằm giải quyết vấn đề về sản phẩm trong các
nhà máy sản xuất. Khai thác các tài liệu mới để hoàn thiện hơn mô hình.

Hệ thống bao gồm những phần chính như: 1 cánh tay robot 4 bậc tự do, 1 hệ thống băng
tải động, 1 camera xử lý ảnh, máy tính. Phạm vi ở dạng mô hình nhỏ gọn, phù hợp với
việc thực hành và nghiên cứu.

 Giới hạn:
- Sử dụng Camera để thu nhận ảnh và dùng ESP32 để xử lý điều khiển cánh tay
robot.

- Dây chuyền phân loại sản phẩm có thể dừng đột xuất.

- Dây chuyền chỉ dừng ở mức mô hình, kích thước nhỏ.

11
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

2.4. Sơ đồ khối của hệ thống

Hình 2.1 Sơ đồ khối

 Giải thích hoạt động chung:

12
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Khối máy tính gửi dữ liệu xuống điều khiển khối băng tải hoạt động, sản phẩm vào
khối băng tải đến khối tín hiệu cảm biến báo lên khối máy tính có sản phẩm nằm đó.
Sau đó nhận dữ liệu lên khối máy tính so sánh ảnh của sản phẩm. Nếu đúng hình ảnh
màu xanh thì báo sản phẩm màu xanh, hình ảnh màu đỏ báo sản phẩm màu đỏ, hình
ảnh màu vàng thì báo sản phẩm màu vàng, hình ảnh màu tím thì báo sản phẩm màu tím.
Đồng thời hiển thị số lượng sản phẩm ở khối máy tính. Rồi nhận dữ liệu từ máy tính
xuống khối điều khiển cánh tay robot gắp sản phẩm màu xanh bỏ vào hộp chứa sản
phẩm màu xanh, gắp sản phẩm màu đỏ bỏ vào hộp chứa sản phẩm màu đỏ, gắp sản
phẩm màu vàng bỏ vào hộp chứa sản phẩm màu vàng, gắp sản phẩm màu tím bỏ vào
hộp chứa sản phẩm màu tím. Nếu không đúng hình ảnh màu đang xét thì khối băng tải
tiếp tục chạy loại sản phẩm.

2.5. Chi tiết các khối

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

Khối này đảm nhận xử lý thông tin và điều khiển của toàn bộ hệ thống. Nhận thông tin
từ khối cảm biến đó gửi tín hiệu điều khiển tới khối điều khiển cánh tay robot và khối
điều khiển băng chuyền để các khối này vận hành. Sử dụng ESP32 để xử lý các thông tin
này.

Sau đây là giới thiệu cơ bản về ESP32.

Hình 2.2 ESP32

13
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

ESP32 là một series các vi điều khiển trên một vi mạch giá rẻ, năng lượng thấp có hỗ trợ
WiFi và dual-mode Bluetooth

Cấu hình:

 CPU: Xtensa Dual-Core LX6 microprocessor.


 Chạy hệ 32 bit
 Tốc độ xử lý 160MHZ up to 240 MHz
 Tốc độ xung nhịp đọc flash chip 40mhz --> 80mhz (tùy chỉnh khi lập trình)
 RAM: 520 KByte SRAM

Hỗ trợ 2 giao tiếp không dây:

 Wi-Fi: 802.11 b/g/n/e/i


 Bluetooth: v4.2 BR/EDR and BLE

Nguồn điện hoạt động:

 Nhiệt độ hoạt động -40 + 85C


 Điện áp hoạt động: 2.2-3.6V
 Số cổng GPIOs: 34

ESP32 là một hệ thống vi điều khiển trên chip (SoC) giá rẻ của Espressif Systems, nhà
phát triển của ESP8266 SoC. Nó là sự kế thừa của SoC ESP8266 và có cả hai biến thể lõi
đơn và lõi kép của bộ vi xử lý 32-bit Xtensa LX6 của Tensilica với Wi-Fi và Bluetooth
tích hợp.

Điểm tốt về ESP32, giống như ESP8266 là các thành phần RF tích hợp của nó như bộ
khuếch đại công suất, bộ khuếch đại nhận tiếng ồn thấp, công tắc ăng-ten, bộ lọc và Balun
RF. Điều này làm cho việc thiết kế phần cứng xung quanh ESP32 rất dễ dàng vì bạn cần
rất ít thành phần bên ngoài.

2.5.2 Khối tín hiệu

14
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Khối này đảm nhận nhiệm vụ kiểm tra xem có sự xuất hiện của sản phẩm hay không để
tiến hành điều khiển cánh tay Robot. Khối này sử dụng cảm biến quang để phát hiện sản
phẩm.

2.5.2.1. Tổng quan về cảm biến quang

Cảm biến vật cản hồng ngoại OMDHON E18-D80NK Adjustable IR Infrared Proximity
Sensor sử dụng ánh sáng hồng ngoại để xác định vật cản phía trước cảm biến, cảm biến
phát ra tia hồng ngoại với dải tần số chuyên biệt cho khả năng chống nhiễu tốt kể cả ở
điều khiện ánh sáng ngoài trời.

Có thể chỉnh khoảng cách phát hiện vật cản mong muốn thông qua biến trở trên cảm
biến, cảm biến có ngõ ra tín hiệu là cấu trúc cực thu hở Transistor NPN - Open Collector
nên sẽ cần phải có trở kéo (khoảng 1~10K) lên chân nguồn dương VCC để tạo thành tín
hiệu mức cao (High).

 Đặc điểm cảm biến quang:

- Cảm biến có khoảng cách điều chỉnh chính xác từ 3~80cm với thấu kính hồng ngoại
chất lượng tốt.

- Xác định khoảng cách đến vật cản bằng hồng ngoại cho phản hồi nhanh chóng, chính
xác và ít bị nhiễu do sử dụng mắt nhận và phát tia hồng ngoại theo tần số riêng biệt.

- Cảm biến có thể chỉnh khoảng cách hoạt động thông qua biến trở ở phần cuối thân cảm
biến. Ngõ ra cảm biến ở dạng cực thu hở nên cần thêm 1 trở kéo lên nguồn ở chân Tín
hiệu khi sử dụng.

 Thông số kỹ thuật:
- Nguồn cấp: 5VDC.
- Khoảng cách: 100 – 1000mm.
- Thời gian đáp ứng: nhỏ hơn 1ms.
- Ngõ ra: NPN, No và NC.
- Nhiệt độ làm việc: -25 đến 60 độ C.
- Vật liệu thân: nhựa ABS.
- Kích thước: 18 x 70mm
- Tần số hoạt động: 500Hz
15
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

- Có led hiển thị ngõ ra màu đỏ.


- Số dây tín hiệu: 3 dây (2 dây cấp nguồn và 1 tín hiệu)
- Dây màu nâu (+VCC): chân nguồn dương VCC cấp nguồn từ 5VDC.
- Dây màu xanh (GND): chân nguồn âm GND 0VDC
- Dây màu đen (tín hiệu): chân tín hiệu SIGNAL đầu ra cấu trúc cực thu hở
Transistor NPN - Open Collector.

 Cấu tạo và nguyên lý hoạt động:

- Cấu tạo tổng quát:

Hình 2.3 Cấu tạo tổng quát

- Mạch nguyên lý hoạt động:

16
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 2.4 Mạch nguyên lý cảm biến quang

- Tín hiệu ra có dòng rất nhỏ nên KHÔNG ĐƯỢC kích trực tiếp vào relay (rơ le) sẽ
gây CHÁY cảm biến, có thể tham khảo các Module relay đã được thiết kế bảo vệ.
- Chân tín hiệu đầu ra SIGNAL của cảm biến có cấu trúc cực thu hở Transistor NPN -
Open Collector nên khi phát hiện vật cản sẽ được kính hoạt và kéo xuống mức thấp (Low)
GND (0VDC), để tạo thành tín hiệu mức cao (High) ta nối điện trở kéo Rx (1~10k) lên
chân nguồn VCC để tạo thành tín hiệu mức cao mong muốn (như với Arduino là 5VDC).
2.5.2.2. Camera

Hình 2.5 Webcam Logitech C270

 Thông số sản phẩm

17
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Bộ cảm biến ảnh HD (1280 x 720 pixels). Chụp ảnh tĩnh 3 megapixels. Tốc độ hình bắt
hình lên đến 30 hình/giây.

Tích hợp 1 Micro ứng dụng công nghệ RightSound cho âm thanh rõ ràng và trong veo.

Ứng dụng công nghệ Righ Light - tự động điều chỉnh để lấy được ánh sáng tối ưu, và
cho ảnh tốt ngay cả trong điều kiện ánh sáng mập mờ.

Chân đế có thể gắn được trên màng hình CRT và LCD.

2.5.3. Khối điều khiển robot

Khối này sử dụng để điều khiển một loạt các servo cấu thành lên cánh tay Robot. Thông
qua các tín hiệu nhận được từ ESP32 sẽ điều khiển các servo này hoạt động theo một trình
tự được thiết lập.

Khái quát về servo:

 Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông thường
cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung
PWM) với góc quay nằm trong khoảng bất kì từ 0°-180°. Mỗi loại servo có kích
thước, khối lượng và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu dùng trên
máy bay mô mình), có loại thì sở hữu một momen lực vải chục Newton/m, hoặc có
loại thì khỏe và nhông sắc chắc chắn...
 Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra của
động cơ được nối với một mạch điều khiển. Nếu có bắt kỳ lý do nào ngăn cản
chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt
được vị trí mong muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt
được điểm chính xác. Các động cơ servo điều khiển bằng liên lạc vô tuyến được
gọi là động cơ servo RC (radio-controlled).
 Trong thực tế, bản thân động cơ servo không phải được điều khiển bằng vô tuyến,
nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi. Động cơ servo nhận tín
hiệu từ máy thu.

18
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Servo MG996R:

- Đây là servo được dùng để lắp cánh tay robot.

Hình 2.6 Servo MG996R

 MG996R về cơ bản là phiên bản nâng cấp của servo MG995 nổi tiếng và có tính
năng chống sốc được nâng cấp và PCB và IC được thiết kế lại hệ thống điều khiển
làm cho nó chính xác hơn nhiều so với người tiền nhiệm của nó. Bánh răng và
động cơ cũng đã được nâng cấp để cải thiện băng tần chết và căn giữa.
 Đơn vị đã hoàn thành với dây dài 30cm và đầu nối đầu cái loại 3 chân 'S' phù hợp
với hầu hết các máy thu, bao gồm Futaba, JR, GWS, Cirrus, Blue Bird, Blue
Arrow, Corona, Berg, Spektrum và Hitec. Servo tiêu chuẩn mô-men xoắn cao này
có thể quay khoảng 120 độ (60 theo mỗi hướng).
 Bạn có thể sử dụng bất kỳ mã servo, phần cứng hoặc thư viện nào để điều khiển
các servo này, vì vậy nó rất tốt cho những người mới bắt đầu muốn làm cho mọi
thứ di chuyển mà không cần xây dựng một bộ điều khiển động cơ với phản hồi và
hộp số, đặc biệt là vì nó sẽ phù hợp với những nơi nhỏ. MG996R Metal Gear
Servo cũng đi kèm với nhiều lựa chọn phần cứng để giúp bạn thiết lập nhanh
chóng và đẹp mắt.
 Thông số kỹ thuật của servo MG996R

19
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 2.7 Thông số servo MG996R

 Servo MG996R (nâng cấp MG995) có momen xoắn lớn


 Lực kéo ở 6V: 11kg
 Đây là bản nâng cấp từ servo MG995 về tốc độ, lực kéo và độ chính xác
 So với MG946R, MG996R nhanh hơn, nhưng hơi nhỏ hơn.
 Trọng lượng sản phẩm: 55g
 Kích thước sản phẩm: 40.7 * 19.7 * 42.9mm
 Lực kéo: 9.4kg / cm (4.8V), 11kg / cm (6V)
 Tốc độ xoay: 0.17 giây / 60 độ (4.8 v) 0.14 giây / 60 độ (6 v)
 Điện áp làm việc: 4.8-7.2V
 Nhiệt độ hoạt động: 0 ℃ -55 ℃
 Dòng điện không tải: ~0.15A
 Vật liệu bánh răng: Kim loại

2.5.4. Khối điều khiển băng chuyền

Khối này sử dụng băng chuyền để vận chuyển các sản phẩm. Băng chuyền được điều
khiển bằng mạch sử dụng để vận hành. Thông qua tín hiệu từ Website sẽ điều khiển băng
chuyền theo mong muốn.

2.5.5. Khối máy tính (Webserver)

20
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Khối này được sử dụng để điều khiển cánh tay robot, đồng thời nhận các thông tin được
gửi từ ESP32.

Trang Web được lập trình bằng ngôn ngữ HTML, đồng thời sử dụng Pycharm để lập
trình cho việc truyền dẫn thông tin.

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

Xử lý ảnh là quá trình xử lý số tín hiệu ở đây là tín hiệu hình ảnh. Hiện nay xử lý ảnh
đang phát triển rất mạnh mẽ, vì ứng dụng của nó rất rộng và hữu ích bao gồm ở rất nhiều
lĩnh vực: sản xuất, kinh tế, đời sống, y tế, quân sự… Chúng tôi có thể chia xử lý ảnh
thành bốn nhóm ứng với bốn lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng
ảnh, truy vấn ảnh và nén ảnh. Trong đề tài này sẽ tìm hiểu về lĩnh vực nhận dạng ảnh. Các
bước cơ bản của xử lý ảnh. [6]

Hình 2.8 Xử lý ảnh

Ảnh số là tập hợp các điểm ảnh (Pixel) có giá trị mức xám xác định dùng để mô tả ảnh
gần với ảnh thật, trong đề tài này chỉ xét đến ảnh 2 chiều, một ảnh sau khi được số hóa có
thể được mô tả như một ma trận điểm A[M, N] trong không gian hai chiều trong đó M và
N là số cột và số hàng của các điểm ảnh. Một điểm ảnh bất kì lúc này sẽ có tọa độ A(x, y)
với 0=<x<=M-1 và 0=<y<=N-1. Số điểm ảnh xác định độ phân giải của ảnh. Ảnh có độ
phân giải càng cao thì ảnh càng trở nên chân thực và sắc nét hơn. Giá trị của mỗi điểm
ảnh sẽ quyết định màu sắc của ảnh ta gọi là mức xám của điểm ảnh, giá trị này có thể là
21
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

một số (ảnh nhị phân, ảnh xám) hoặc một tập hợp các giá trị (ảnh màu). Xử lý ảnh là ta xử
lý các giá trị này trong ma trận ảnh để được một kết quả mong muốn. Số bit của một bức
ảnh chính là số các giá trị mức xám có thể có, ví dụ một ảnh 8bit sẽ có 28=256 giá trị mức
xám từ 0 đến 255 tương tự ảnh 16bit thì sẽ có 216 giá trị.
Tùy theo giá trị dùng để biểu diễn điểm ảnh mà ta có thể phân ra 3 loại ảnh chính thông
dụng:
+ Ảnh nhị phân: giá trị mỗi điểm ảnh là 0 hoặc 1, nghĩa là trắng hoặc đen. Chính vì
vậy mà còn gọi là ảnh đen trắng.
+ Ảnh xám: giá trị mỗi điểm ảnh nằm trong giải giá trị từ 0 đến 255, nghĩa là cần 8
bits hay 1 byte để biểu diễn mỗi điểm ảnh này.
+ Ảnh màu RGB: mỗi điểm ảnh có giá trị gồm 3 màu đỏ (Red) + xanh lục (Green)
+Ảnh xanh dương (Blue). Mỗi màu có giá trị từ 0 đến 255, nghĩa là mỗi điểm ảnh
cần 24bits hay 3bytes để biểu diễn. Ngoài hệ màu RGB còn có nhiều hệ màu khác phù
hợp với những mục đích khác nhau như hệ CMYK, hệ HSV…
2.6.1. Phương pháp thu nhận ảnh

Ảnh tự nhiên từ thế giới ngoài được thu nhận qua các thiết bị thu (như Camera, máy
chụp ảnh). Trước đây, ảnh được thu qua Camera là các ảnh tương tự. Giờ đây, với sự phát
triển của khoa học công nghệ ảnh được thu nhận từ cảm biến và chuyển trực tiếp thành
ảnh số nên không cần bước chuyển đổi từ tương tự sang số. Có nhiều thiết bị cho phép thu
ảnh ví dụ điện thoại di động, máy chụp hình, máy scan, webcam…Các thiết bị này đều
cho ra ảnh với những định dạng ảnh đã được quy định phù hợp cho máy tính như JPG,
PNG, JPEG… chính vì vậy việc đọc chúng trên máy tính là rất dễ dàng. Trong đề tài này
sử dụng camera loại webcam để thu nhận hình ảnh thực tế.

2.6.2. Giới thiệu về thư viện OpenCV

Thư viện OpenCV

OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở hàng đầu
cho xử lý về thị giác máy tính, machine learning, xử lý ảnh. OpenCV đươc viết bằng
C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan
đến thời gian thực. Opencv có các interface cho C/C++, Python Java vì vậy hỗ trợ được

22
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người
dùng và số lượng download vượt quá 6 triệu lần.
Opencv có rất nhiều ứng dụng:
- Nhận dạng ảnh.
- Xử lý hình ảnh.
- Phục hồi hình ảnh/video.
- Thực tế ảo.
OpenCV vẫn đang được đóng góp và phát triển liên tục, nó đặc biệt phù hợp cho
những ứng dụng xử lý hình ảnh đơn giản vì thư viện dễ sử dụng và nhiều hỗ trợ từ cộng
đồng. [7]

Điều chỉnh độ sáng và độ tương phản

Độ sáng của ảnh phụ thuộc vào giá trị của mỗi pixel tạo nên ảnh. Vì vậy để thay đổi độ
sáng ảnh ta thay đổi giá trị mức sáng các pixel. Với g và f là ảnh trước và sau khi biến đổi
ta có công thức điều chỉnh độ sáng như sau:
a, b: hằng số tự chọn.

23
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

g(x,y) = a*f(x,y)+b
f(x,y): mức sáng của pixel trong ảnh tại điểm có tọa độ (x,y).
g(x,y): mức sáng của pixel trong ảnh tại điểm có toạ độ (x,y) sau khi biến đổi.
Ngoài việc thay đổi bằng phần mềm ta có thể tăng độ sáng ảnh bằng phần cứng như lắp
thêm đèn rọi, dùng tấm nền màu sáng…
Lọc nhiễu ảnh

Hình 2.9 Lọc nhiễu ảnh


Một ảnh khi được chụp thường kèm theo các nhiễu, các nhiễu này có nhiều nguyên nhân
gây nên: ánh sáng không đủ, chất lượng thiết bị thu không tốt, ảnh hưởng do các yếu tố
môi trường xung quanh, do sai số lượng tử hóa hay sai số truyền … Một số loại nhiễu phổ
biến thường xuất hiện trong ảnh:

Nhiễu độc lập với dữ liệu ảnh:


Là một loại nhiễu cộng (additive noise): ảnh thu được f(i,j) là tổng của ảnh đúng
(true image) và nhiễu n(i,j): f(i,j) = s(i,j) + n(i,j)
Thông tin ảnh có tần số thấp, còn nhiễu ảnh hưởng đến tần số cao và ảnh hưởng này
có thể được giảm đi khi sử dụng bộ lọc thông thấp.

24
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 2.10 Nhiễu độc lập với dữ liệu ảnh


Nhiễu phụ thuộc vào dữ liệu:
Nhiễu xuất hiện khi có sự bức xạ đơn sắc nằm rải rác trên bề mặt ảnh, độ lởm chởm
trên bề mặt tùy thuộc vào bước sóng của điểm ảnh.
Do có sự giao thoa giữa các sóng ảnh nên làm xuất hiện những vết lốm đốm trên ảnh
Nhiễu Gauss:
Nhiễu này có được do bản chất rời rạc của bức xạ (hệ thống ghi ảnh bằng cách đếm
các photon (lượng tử ánh sáng).
Là nhiễu cộng và độc lập (independent, additive noise) – nhiễu n(i,j) có phân tán
Gauss (trung bình = zero) được mô tả bởi độ lệch chuẩn, hay phương sai.
Mỗi pixel trong ảnh nhiễu là tổng giá trị pixel đúng (true pixel) và pixel ngẫu nhiên
Nhiễu muối – tiêu (Salt & Pepper noise):
Là một loại nhiễu xung, sinh ra do xảy ra sai số trong quá trình truyền dữ liệu.
Những điểm ảnh có thể mang giá trị cực đại hoặc cực tiểu. Với ảnh xám nếu một
điểm ảnh có giá trị cực đại (tức cường độ sáng bằng 255) thì nó sẽ tạo ra một đốm trắng
trên ảnh, trông giống như hạt “muối”. Và ngược lại nếu một điểm ảnh có giá trị cực tiểu
(tức cường độ sáng bằng 0) thì sẽ tạo ra một đốm đen, giống như “tiêu”. Vậy nên còn gọi
là ảnh muối tiêu.
Để có thể xử lý một cách chính xác và hiệu quả, ảnh cần được lọc nhiễu. Nguyên tắc
chung của các phương pháp lọc ảnh số là cho ma trận ảnh nhân chập với một ma trận lọc
(Kernel) hay còn được gọi là các phép tính nhân chập trên ảnh. Ma trận lọc lọc (Kernel)
còn có thể được gọi là cửa số chập, cửa sổ lọc, mặt nạ...
25
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

G=M*I
I: Là ảnh gốc được sử dụng để lọc số ảnh.
G: Là ảnh ra sau khi thực hiện xong phép lọc số ảnh.
M: Là ma trận lọc (Mask, kernel).
Với mỗi phép lọc ta có những ma trận lọc (Kernel) khác nhau, không có một quy
định cụ thể nào cho việc xác định M. Tổng các phẩn tử trong ma trận M thường là 1.
Tpt > 1: Ảnh sau khi thực hiện xong phép lọc số ảnh (G) có độ sáng lớn hơn so với
ảnh ban đầu (F).
Tpt < 1: Ảnh sau khi thực hiện xong phép lọc số ảnh (G) có độ sáng nhỏ hơn so với
ảnh ban đầu (F).
Một số phương pháp lọc phù hợp để xử lý một loại nhiễu nhất định. Một số bộ lọc
thông dụng như lọc trung vị, lọc trung bình, lọc thông thấp, lọc thông cao…

Lọc trung vị
Lọc trung vị là một kĩ thuật lọc phi tuyến (non-linear), bộ lọc này được sử dụng rất phổ
biến trong xử lý ảnh, lọc trung vị còn được gọi là bộ lọc hạng. Ý tưởng chính của thuật
toán lọc trung vị là sử dụng một cửa sổ lọc (thường là ma trận 3x3) quét qua lần lượt từng
điểm ảnh của ảnh đầu vào input. Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh
tương ứng trong vùng 3x3 của ảnh gốc "lấp" vào ma trận lọc. Sau đó sắp xếp các điểm
ảnh trong cửa sổ này theo thứ tự (tăng dần hoặc giảm dần tùy ý). Cuối cùng, gán điểm ảnh
nằm chính giữa (trung vị) của dãy giá trị điểm ảnh đã được sắp xếp ở trên cho giá trị điểm
ảnh đang xét của ảnh đầu ra output.
Cho một dãy số 𝑋1, 𝑋2, 𝑋3, ..., 𝑋𝑛 được sắp xếp theo thứ tự tăng dần hoặc giảm
dần.
Khi đó 𝑋𝑡𝑣 được tính bởi công thức sau:
Nếu n lẻ:

Nếu n chẵn:

26
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Các bước thực hiên khi sử dụng bộ lọc trung vị:


Quét ma trận lọc lên các thành phần của ảnh gốc, điền các giá trị được quét vào ma
trận lọc.
Lấy các thành phần trong của sổ lọc để xử lý.
Sắp xếp theo thứ tự các thành phần trong cửa sổ lọc.
Lưu lại thành phần trung vị, gán cho ảnh output.
Ví dụ cho ảnh I kích thước 5x5 như sau:

Các giá trị sau khi sắp xếp từ thấp tới cao:

Kết quả 3 chính là giá trị trung vị cần tìm, lúc này ta gán giá trị 3 cho pixel tại vị trí
I(3,3) trong ảnh.
Vì phải sắp xếp lại mỗi khi ma trận lọc di chuyển đến một pixel nên bộ lọc này có
tốc độ không cao, hiệu quả giảm nếu ảnh có kích thước lớn. Tuy nhiên bộ lọc trung vị có

27
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

nhiều ưu điểm như giúp loại bỏ nhiễu nhưng vẫn đảm bảo độ phân giải, nó khá hiệu quả
đối với hai loại nhiễu: nhiễu đốm (speckle noise) và nhiễu muối tiêu (salt- pepper noise).
Lọc trung bình
Lọc trung bình là loại lọc tuyến tính, với phương pháp thay thế giá trị mỗi điểm ảnh
bằng trung bình trọng số của các điểm trong vùng lân cận. Giả sử rằng dùng một ma trận
lọc (3x3) quét qua từng điểm ảnh của ảnh đầu vào. Tại vị trí mỗi điểm ảnh lấy giá trị của
các điểm ảnh tương ứng trong vùng (3x3) của ảnh gốc đặt vào ma trận lọc. Giá trị điểm
ảnh của ảnh đầu ra là giá trị trung bình của tất cả các điểm trong ảnh trong ma trận lọc.
Các bước thực hiện lọc trung bình với ảnh đầu vào I và I(x,y) là điểm ảnh đang xét,
mộ ngưỡng α:
Bước 1: Quét ma trận lọc lên các thành phần của ảnh gốc, điền các giá trị được quét
vào ma trận lọc
Bước 2: Tính tổng các thành phần trong ma trận lọc, chia tổng này với số lượng các
phần tử của cửa sổ lọc ra một giá trị Itb = (x, y).
Bước 3: Hiệu chỉnh:
+Nếu I(x, y) - Itb(x, y) > α thì I(x,y) = Itb(x, y).
+Nếu I(x, y) - Itb(x, y) ≤ α thì I(x,y) = I(x,y).
Giá trị ngưỡng α có thể có hoặc không tùy vào mục đích sử dụng. Ví dụ I là một ma
trận kích thước 5x5:

Sử dụng ma trận lọc kích thước 3x3 xét tại I(3,3), không sử dụng ngưỡng:

28
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Vậy I(3,3) sau khi lọc sẽ có giá trị 3.


Sau khi sử dụng bộ lọc trung bình, chênh lệch độ sáng các điểm ảnh sẽ giảm xuống
nghĩa là sẽ không có sự đột biến về giá trị của các điểm ảnh lân cận nhau. Vì các nhiễu
ngẫu nhiên thường là các điểm có giá trị đột biến mạnh so với điểm xung quanh nên bộ
lọc trung bình sẽ giúp giảm các nhiễu này hiệu quả ví dụ như nhiễu muối tiêu. Tuy nhiên
bởi vì các cạnh hoặc đường biên trong ảnh cũng đặc trưng bởi quá trình biến đổi mạnh về
cường độ nên lọc trung bình có thể làm mờ các cạnh và đường biên.
Lọc Gauss
Bộ lọc Gauss là một bộ lọc rất hữu ích và thông dụng, được thực hiện bằng cách nhân
chập ảnh đầu vào với một ma trận lọc Gauss sau đó cộng chúng lại để tạo thành ảnh đầu
ra. Vì biến đổi Fourier của một Gaussian sẽ tạo ra một Gaussian khác cho nên nếu xét trên
miền tần số thì phương pháp này sẽ làm giảm các thành phần có tần số cao trong hình.
Hay nói cách khác đây là một bộ lọc tần số cao (low pass filter: chỉ giữ lại các thành phần
tần số thấp).
Ý tưởng của bộ lọc là dựa vào giá trị của mỗi điểm ảnh sẽ phụ thuộc nhiều với giá
trị các điểm ảnh ở gần hơn là các điểm ảnh ở xa. Trọng số của sự phụ thuộc được lấy theo
hàm Gauss (hàm này cũng được sử dụng trong quy luật phân phối chuẩn của xác xuất
thống kê).
Ứng dụng của bộ lọc Gaussian là làm mịn ảnh, nó khác với bộ lọc trung bình ở chổ:
thứ nhất, mức độ làm mịn được điều khiển bởi sự lựa chọn các tiêu chuẩn thông số độ
lệch, chứ không phải bởi giá trị tuyệt đối của kích thước hạt nhân, thứ hai, hàm Gaussian

29
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

có một thuộc tính khá đặc biệt, đó là biến đổi Fourier của nó là một hàm Gaussian, điều
đó rất thuận tiện cho việc phân tích miền tần số của bộ lọc.

2.7. Xử Lý Ảnh Cơ Bản Với OpenCV

Chắc hẳn các bạn thường hay nghe đến OpenCV để xử lý hình ảnh và được sử dụng rất
phổ biến. Trong bài viết hôm nay, mình sẽ chia sẻ cho các bạn các sử dụng OpenCV cho
người mới bắt đầu chưa có chút kinh nghiệm nào liên quan để xử lý ảnh nhé.
1. Cài đặt môi trường
Trong bài viết này mình sử dụng python 3 với thư viện opencv-python phiên bản
4.2.0.34.
Ở đây để đơn giản cho việc cài đặt thì chúng tôi sử dụng một thư viện có sẵn trên kho
quản lý gói của python là opencv-python. Đây là một thư viện không phải của tổ chức
OpenCV tuy nhiên nó có tính năng y hệt và được cập nhật thường xuyên theo sự thay đổi
của OpenCV. Hay nói cách khác đây là một đóng gói cho OpenCV trên kho thư viện của
python. Nếu bạn muốn sử dụng opencv phiên bản gốc thì lên trang sourceforge.net chọn
phiên bản rồi tải xuống. Tiếp theo là giải nén và cài đặt bằng tay theo hướng dẫn. Vì cách
cài đặt này để cái đặt cho nhiều ngôn ngữ khác nhau nên cách này không khuyến khích
cho người vừa bắt đầu sử dụng OpenCV [8].
Sử dụng đoạn lênh sau để cài đặt gói từ kho thư viện pip

Để kiểm tra cài đặt thành công hay không ta thực hiện đoạn lênh sau để kiểm tra
phiên bản của opencv-python. Tùy từng thời điểm thì phiên bản của gói sẽ khác nhau. Các
phiên bản mới là cập nhật cho opencv mới hơn.

2. Hiển thị hình ảnh

30
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Đầu tiên ta tạo một đối tượng chứa thông tin ảnh được tải lên từ file. Sau đó hiện thị
hình ảnh lên cửa sổ giao diện.
Ở đây digital-neon.jpg là file hình ảnh để test, hàm waitKey(0) là hàm chờ không cho
thoát cửa sổ lập tức mà phải người dùng nhấn phím bất kỳ để thoát.

3. Lấy kích thước của ảnh

Ở đây biến img là một đối tượng của Numpy array chứa giá trị màu của từng điểm ảnh
trên các không gian màu khác nhau. Lệnh img.shape để lấy ra kích thước của mảng này
với h, w, d lần lượt là chiều cao, chiều rộng, độ sâu của bước ảnh. Với ảnh có màu thì độ
sau thường là 3, ảnh đen trắng là 1.

4. Lấy giá trị màu ở một điểm ảnh


Đoạn lệnh sau lấy ra giá trị màu ở điểm ảnh tại vi trí 50, 50 với gốc tọa độ là điểm trên
cùng bên trái hình ảnh.
Giá trị các thành phần màu có giá trị từ 0 đên 255.

31
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

5. Cắt ảnh
Đoạn lệnh sau cắt ảnh có tọa độ điểm trên cùng bên trái là (50, 60) và tọa độ điểm dưới
cùng bên phải là (350, 360).

6. Thay đổi kích thước ảnh

32
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Để thay đổi kích thước của ảnh trong opencv thì chúng tôi sẽ dùng hàm resize. Hàm này
cần xác định rõ chiều cao, chiều rộng ảnh sau khi biến đổi. Tuy nhiên ảnh sau khi thay đổi
thường cùng tỷ lệ chiều cao, chiều rộng với ảnh gốc. Đoạn lệnh sau biến đối ảnh gốc có
chiều rộng 580 pixel sang ảnh có chiều rộng là 300 pixel.

7. Xoay ảnh
Để xoay được ảnh đầu tiên ta cần xác định gốc xoay và hướng xoay. Sau khi xác định
xong tiếp theo ta tính ma trận xoay bằng hàm getRotationMatrix2D trong opencv. Cuối
cùng ta nhân ma trận này với ma trận ảnh gốc ta được ảnh sau khi xoay.

Đoạn lệnh dưới đây xoay ảnh một góc 45 theo chiều ngược kim đồng hồ với gốc xoay là
điểm chính giữa hình ảnh.
8.Tìm đường biên của ảnh
Bộ lọc Canny là sự kết hợp của nhiều bước khác nhau để tìm và tối ưu đường biên, kết
quả là cho ra một đường biên khá mảnh và chính xác. Quá trình tìm biên sử dụng phương
pháp Canny có thể được thực hiện qua 4 bước sau: [9]
1. Loại bớt nhiễu trong ảnh
Người ta loại nhiễu trong ảnh, làm mờ ảnh đi bằng cách nhân chập ảnh với một bộ lọc
Gauss, chẳng hạn bộ lọc Gauss 5x5 với hệ số δ = 1.4:

2. Tính toán giá trị Gradien trong ảnh


Vì đường biên trong ảnh là nơi phân cách giữa các đối tượng khác nhau, nên tại đó
gradien của nó sẽ có biến đổi mạnh mẽ nhất. Để tính toán gradien trong ảnh, ta có thể sử

33
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

dụng bộ lọc Sobel, hoặc trực tiếp nhân chập ma trận ảnh với các mặt nạ theo hướng x và
y, chẳng hạn:

Sau đó tính độ lớn gradien trong ảnh:

Trong đó, Gx và Gy chính là đạo hàm theo hướng x, y của ảnh ta đang xét. Góc θ sẽ được
làm tròn theo các hướng thẳng đứng, nằm ngang và theo hướng chéo. nghĩa là nó sẽ được
làm tròn để nhận các giá trị trong 0, 45, 90 và 135 độ.
3. Loại bỏ các giá trị không phải cực đại
Bước này sẽ tìm ra những điểm ảnh có khả năng là biên ảnh nhất bằng cách loại đi những
giá trị không phải là cực đại trong bước tìm gradien ảnh ở trên. Ta thấy rằng, với giá trị
của góc θ ở trên thì biên của đối tượng có thể tuân theo bốn hướng, và ta có bốn khả năng
sau:
Nếu θ = 0 , khi đó điểm A sẽ được xem xét là một điêm trên biên độ nếu độ lớn gradien
tại A lớn hơn gradien của các điểm tại A3, A7.
Nếu θ = 45, khi đó điểm A được xem là một điểm trên biên độ nếu độ lớn gradien tại A
lớn hơn độ lớn gradien của các điểm tại A4, A8
Nếu θ = 90, khi đó điểm A sẽ được coi là một điểm nằm trên biên độ nếu độ lớn gradien
tại A lớn hơn độ lớn gradien của các điểm tại A1, A5.
Nếu θ = 135, khi đó điểm A được xem là một điểm nằm trên biên độ nếu độ lớn gradien
tại A lớn hơn độ lớn gradien của các điểm tại A2, A6

34
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4. Chọn ra biên của đối tượng trong ảnh


Sau bước trên, ta thu được tập hợp các điểm tương ứng trên đường biên khá mỏng. Vì
những điểm có giá trị gradien lớn bao giờ cũng có xác suất biên thật sự hơn những điểm
có gradien bé, do đó để xác định chính xác hơn nữa biên của các đối tượng, ta sử dụng các
ngưỡng. Theo đó, bộ lọc Canny sẽ sử dụng một ngưỡng trên (upper threshold) và một
ngưỡng dưới (lower threshold), nếu gradien tại một điểm trong ảnh có giá trị lớn hơn
ngưỡng trên thì ta xác nhận điểm đó là một điểm biên trong ảnh, nếu giá trị này bé hơn
ngưỡng dưới thì ta xác nhận điểm đó không phải là điểm biên. Trong trường hợp giá trị
gradien nằm giữa ngưỡng trên và ngưỡng dưới thì nó chỉ được tính là điểm trên biên khi
các điểm liên kế bên cạnh của nó có giá trị gradien lớn hơn ngưỡng trên.

2.8. Kết luận chương


Thông qua chương này ta hiểu được các thành phần chính của hệ thống cấu tạo và cách
hoạt động của các thiết bị và linh kiện. Từ đó hình dung ra được cách thức mà hệ thống
vận hành, tạo định hướng cho việc lập trình hệ thống sau này.

35
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

CHƯƠNG III: THIẾT KẾ PHẦN CỨNG

3.1. Giới thiệu chương

Chương này nói về tính toán và thiết kế các mạch của hệ thống. Xây dựng được sơ đồ
mạch, thông qua đó tính toán các số liệu cần thiết để mạch chạy một cách ổn định và đạt
hiệu quả cao nhất.

3.2. Tổng quan về cánh tay robot

Khung cánh tay máy bao gồm: chân đế được lắp trục quay cánh tay máy, trên trục quay
là cánh tay với 2 khớp quay. Cuối cánh tay máy là một mặt bích có thể xoay lắp cơ cấu
gắp, kẹp.
Khung cánh tay robot 4 bậc tự do kích thước:
 Chiều cao: 300mm Chiều dài tay: 230mm Độ rộng của đế: 250mm.
 Các khung chân đế, cánh tay đều được làm bằng nhôm dập hình và khoan lỗ sẵn.
 Tổng thể của cánh tay robot được miêu tả như hình dưới đây.

Hình 3.1 Tổng thể cánh tay robot

36
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 3.2 Hình ảnh cánh tay robot thực tế

37
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

3.3. Sơ đồ mạch

Hình 3.3 Sơ đồ mạch

38
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

3.4. Sơ đồ mạch in

Hình 3.4 Sơ đồ mạch

So sánh nguồn tiêu thụ của ESP32:

Chế độ hoạt động: Tất cả tính năng hoạt động. Dòng chip yêu cầu là 0,24A, đôi khi nếu
sử dụng cả Bluetooth và Wifi có thể lên tới 0,79A.

Dòng ra của tín hiệu của 4 servo: 0,12 x 4 = 0,48A

Dòng ra tín hiệu của cảm biến quang: 0,1A

Vậy ESP32 đủ điều kiện cung cấp hoạt động.

Tính toán chọn nguồn cung cấp cho toàn mạch:

Điều kiện nguồn cung cấp toàn mạch là 5V.

 Điện áp sử dụng là 5V, dòng ra của cánh tay robot (4 servo): 0,315x 4 = 1,26A
 Dòng ra của động cơ băng tải băng tải: 0,3A
39
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

 Điện áp sử dụng là 5V, dòng ra của cảm biến quang: 0,12A


 Điện áp hoạt động là 4,8-6V, dòng ra của vi điều khiển ESP32: 0,5A
 Tổng dòng tiêu thụ là: Itiêu thụ = 1,26 + 0,3 + 0,12 + 0,5 = 2,18A
 Công suất tiêu thụ là: Ptiêu thụ = U.I = 5 x 2,18 = 10,9 W

Vậy chọn nguồn tổ ong có U = 5V, I = 4A và công suất là 20W

Hình 3.5 Nguồn tổ ong 5V-4A.

Thông số :

 Điện áp đầu vào: 100 – 240VAC 50 / 60Hz


 Điện áp đầu ra: 5V 4A
 Công suất: 20W
 Điện áp điều chỉnh: ± 10%
 Hiệu suất ≥ 85%
 Kích thước: 85 x 58 x 33mm
 Trọng lượng: 100g

40
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Mạch Relay 5V

Hình 3.6 Mạch relay

 Tính toán chọn linh kiện


Dòng điện qua cuộn dây: 35mA

Bảng 1.1 Datasheet C1815

41
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Dòng điện qua cuộn dây: 35mA


Chọn C1815
- Điều kiện β : VCE > VN ( 6V > 5V)

Ice > 0,03A

=> Ib ≥ ICE / β min = 0,03 / 25 = 0,0012A

VR2 = Vc – Vopto – VBE = 5 – 0,2 – 0,8 = 4V

=> R2 = 4 / Iin = 4 / 0.003 = 1,333 kΩ

3.5. Kết luận chương

Thông qua chương này, ta thiết kế và tính toán được các mạch cần thiết để hệ thống hoạt
động. Từ phần cứng này, kết hợp với phần mềm sẽ được nhắc đến ở chương sau để hoàn
thành hệ thống.

42
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

CHƯƠNG IV: THIẾT KẾ PHẦN MỀM

4.1. Giới thiệu chương

Chương này ta tìm hiểu cách chương trình điều khiển hoạt động. Ta sẽ thấy được cách
nhận và gửi thông tin qua ESP32 và gửi lên Website như thế nào, từ đó thấy được cách
thức vận hành hệ thống lớn.

4.2. Lưu đồ thuật toán ở mạch điều khiển cánh tay

43
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 4.1 Lưu đồ thuật toán ở mạch điều khiển cánh tay

Giải thích lưu đồ:

Nhận dữ liệu trên Webserver xuống điều khiển băng tải chạy, từ cảm biến kiểm tra có
sản phẩm không. Nếu có sản phẩm thì băng tải dừng lại và gửi dữ liệu lên trên web xuống
kiểm tra xem sản phẩm thuộc màu nào. Cánh tay robot gắp sản phẩm màu xanh bỏ vào
hộp chứa sản phẩm màu xanh, robot gắp sản phẩm màu đỏ bỏ vào hộp chứa sản phẩm
màu đỏ, robot gắp sản phẩm màu vàng bỏ vào hộp chứa sản phẩm màu vàng, robot gắp

44
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

sản phẩm màu tím bỏ vào hộp chứa sản phẩm màu tím. Nếu không đúng màu băng tải tiếp
tục chạy loại sản phẩm.

4.2.1.Lưu đồ thuật toán con khối đọc cảm biến và điều khiển băng tải

Hình 4.2 Lưu đồ thuật toán con đọc cảm biến và điều khiển băng tải

45
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4.2.2. Lưu đồ thuật toán con khối điều khiển cánh tay robot

Hình 4.3 Lưu đồ thuật toán con khối điều khiển cánh tay Robot

46
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4.3. Lưu đồ thuật toán ở trên Webserver

Hình 4.4 Lưu đồ thuật toán ở trên Webserver

47
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Giải thích lưu đồ:

Gửi dữ liệu xuống điều khiển băng tải. Kiểm tra nhận dữ liệu từ mạch điều khiển cánh
tay robot xem có sản phẩm không. Sản phẩm đến cảm biến tiến hành xử lý ảnh. Đúng
màu xanh thì báo sản phẩm màu xanh, đúng màu đỏ thì báo sản phẩm màu đỏ, đúng
màu vàng thì báo sản phẩm màu vàng, đúng màu tím thì báo sản phẩm màu tím. Đồng
thời hiển thị số lượng và hình ảnh của sản phẩm.

4.3.1.Lưu đồ thuật toán con chương trình xử lý ảnh

Hình 4.5 Lưu đồ thuật toán con chương trình xử lý ảnh


48
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4.4. Phần mềm sử dụng

4.4.1. Phần mềm Arduino IDE

Arduino IDE là một phần mềm với một mã nguồn mở, được sử dụng chủ yếu để viết và
biên dịch mã vào module Arduino. Phần mềm giúp sử dụng các cảm biến, linh kiện một
cách linh hoạt phù hợp với mục đích sử dụng. Đây là một phần mềm Arduino chính
thống, giúp cho việc biên dịch mã trở nên dễ dàng, ngay cả một người bình thường không
có kiến thức kỹ thuật cũng có thể làm được.

Hình 4.6 Arduino IDE

Các tính năng của Arduino IDE:

Hình 4.7 Giao diện của Arduino IDE

49
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

 Vùng lệnh:

Bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help). Phía dưới là các icon cho
phép sử dụng nhanh các chức năng thường dùng của IDE được miêu tả như sau:

Hình 4.8 Các nút lệnh trong Arduino IDE

 Vùng thông báo:

Hình 4.9 Vùng thông báo trong Arduino IDE

Những thông báo từ IDE sẽ được hiển thị tại đây. Để ý rằng góc dưới cùng bên phải hiển
hị loại board Arduino và cổng COM được sử dụng. Luôn chú ý tới mục này bởi nếu chọn
sai loại board hoặc cổng COM sẽ không thể upload được code.

Khi lập trình cần chọn port (cổng kết nối khi gắn board vào) và board (tên board sử
dụng). Giả sử đang dùng mạch Arduino Atmega 2560 và khi gắn board vào máy tính bằng
cáp USB nó dược nhận là COM4 thì chỉnh như thế này là cỏ thể lập trình được.

50
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 4.10 Chọn cổng kết nối cho Arduino

4.4.2. Phần mềm Pycharm

Pycharm là một nền tảng kết kết hợp được JetBrains phát triển như một để phát triển các
ứng dụng cho lập trình trong Python. Một số ứng dụng lớn như Tweeter, Facebook,
Amazon và Pinterest sử dụng Pycharm để làm IDE Python của họ. Bài viết dưới đây sẽ
giới thiệu chi tiết cho bạn về Pycharm cũng như hướng dẫn cách cài đặt và sử dụng
Pycharm.
 Các tính năng của pycharm
Pycharm có thể chạy trên Windows, Linux, hoặc Mac OS. Ngoài ra, nó cũng chứa các
Mô đun và các gói giúp các lập trình viên phát triển phần mềm bằng Python trong thời
gian ngắn với ít công sức hơn. Hơn nữa, nó cũng có khả năng tùy chỉnh theo yêu cầu của
nhà phát triển.

51
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 4.11 Giao diện phần mềm

Khi cài đặt Pycharm, LTV có thể sử dụng một số tính năng sau:
 Trình chỉnh sửa mã thông minh:
- Giúp các lập trình viên viết mã chất lượng cao
- Bao gồm các lược đồ màu cho các từ khóa, lớp và hàm. Điều này giúp tăng khả
năng đọc và hiểu mã
- Xác định lỗi một cách dễ dàng
- Cung cấp tính năng tự động hoàn thiện và hướng dẫn hoàn thiện mã.
 Điều hướng mã
- Giúp các nhà phát triển trong việc chỉnh sửa và nâng cao mã với ít nỗ lực và thời
gian hơn.
- Với việc điều hướng mã, nhà phát triển có thể dễ dàng điều hướng một lớp,hàm
hoặc tệp.
- LTV có thể xác định vị trí của một phần tử, một ký hiệu hoặc một biến trong mã
nguồn trong thời gian ngắn khi sử dụng Pycharm.
- Bằng việc sử dụng chế độ thấu kính, nhà phát triển có thể kiểm tra và gỡ lỗi toàn
bộ mã nguồn.
 Tái cấu trúc
- Sử dụng Pycharm có lợi thế là thực hiện các thay đổi hiệu quả và nhanh chóng đối
với cả biến cục bộ và biến toàn cục.
- Tái cấu trúc trong Pycharm cho phép các nhà phát triển cải thiện cấu trúc bên trong
mà không thay đổi hiệu suất bên ngoài của mã.
- Nó cũng cho phép phân chia các lớp với các chức năng mở rộng hơn
52
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4.5. Các bước quá trình xử lý ảnh

Bước 1: Chọn hình ảnh các vật cần xét màu

Gồm 4 màu: Xanh, đỏ, vàng và tím

Hình 4.12 Hình ảnh 4 sản phẩm

Bước 2: Chuyển hình ảnh màu của vật từ RGB sang HSV

Chuyển từ RGB sang HSV là chuyển đổi ảnh RGB sang ảnh HSV, chúng tôi có thể sử
dụng nó để trích xuất một đối tượng có màu. Trong HSV, việc biểu diễn một màu dễ dàng
hơn so với không gian màu RGB.

Không gian màu HSB, còn gọi là không gian màu HSV, là một không gian màu dựa trên
ba số liệu: H: (Hue) Vùng màu. S: (Saturation) Độ bão hòa màu. B (hay V): (Bright hay
Value) độ sáng.

Không gian màu HSV được sử dụng khi chọn màu cho sơn hoặc mực vì HSV thể hiện rõ
hơn không gian màu RGB.

Quá trình trích xuất một đối tượng có hình ảnh theo các bước:

- Tải lên bức ảnh chứa đối tượng.

53
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

- Chuyển đổi từ BGR sang không gian màu HSV.

- Chọn ngưỡng hình ảnh HSV cho một dải màu xác định.

- Tách ra phần đối tượng màu xác định, sau đó có thể làm bất cứ điều gì trên hình ảnh đó.

Bước 3: Xác định ngưỡng của các màu cụ thể bằng cách thay đổi giá trị của ảnh sang
ngưỡng màu HSV

a. Màu xanh:

Có các giá trị ngưỡng màu:

lower = np.array([100, 157, 124]) # Mau Xanh Duong


upper = np.array([255, 255, 255])

b. Màu đỏ:

Có các giá trị ngưỡng màu:

lower = np.array([0, 136, 124]) # Mau Do


upper = np.array([16, 255, 255])

c. Màu vàng:

Có các giá trị ngưỡng màu:

lower = np.array([0, 124, 222]) # Mau Vang


upper = np.array([93, 255, 255])

d. Màu tím:

Có các giá trị ngưỡng màu:

lower = np.array([116, 109, 75]) # Mau Tim


upper = np.array([149, 255, 255])

54
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4.6. Truyền thông dữ liệu giữa ESP32 và máy tính

4.6.1. Giới thiệu truyền thông UART

UART là viết tắt của "Universal Asynchronous Receiver/Transmitter", là một giao thức
truyền thông không đồng bộ (Asynchronous) được sử dụng để truyền dữ liệu giữa các
thiết bị điện tử, chẳng hạn như vi điều khiển (microcontroller), cảm biến, module truyền
thông và các thiết bị khác. [10]

Giao thức UART là một giao thức đơn giản và phổ biến, bao gồm hai đường truyền dữ
liệu độc lập là TX (truyền) và RX (nhận). Dữ liệu được truyền và nhận qua các đường
truyền này dưới dạng các khung dữ liệu (data frame) có cấu trúc chuẩn, với một bit bắt
đầu (start bit), một số bit dữ liệu (data bits), một bit kiểm tra chẵn lẻ (parity bit) và một
hoặc nhiều bit dừng (stop bit).

Thông thường, tốc độ truyền của UART được đặt ở một số chuẩn, chẳng hạn như 9600,
19200, 38400, 57600, 115200 baud và các tốc độ khác. Tốc độ truyền này định nghĩa số
lượng bit được truyền qua mỗi giây. Các tốc độ truyền khác nhau thường được sử dụng
tùy thuộc vào ứng dụng và hệ thống sử dụng.

Hình 4.13 Giao thức UART

Cách thức hoạt động của UART

UART hoạt động theo cơ chế truyền và nhận thông tin dữ liệu dưới dạng các chuỗi bít
(bits) qua các đường truyền tương tự (UART chỉ được sử dụng trên kênh truyền tương
tự). Cụ thể, khi một thiết bị gửi một tin nhắn, nó sẽ chuyển đổi dữ liệu thành một chuỗi bít
và gửi qua đường truyền. Thiết bị nhận sẽ tiếp nhận các chuỗi bít đó, tách nó thành các ký
tự (nếu được gửi với ký tự), và sau đó xử lý thông tin được gửi.

55
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

UART sử dụng một tín hiệu đồng hồ chung giữa thiết bị gửi và thiết bị nhận để đồng bộ
hóa quá trình truyền và nhận dữ liệu. Khi các thiết bị không đồng bộ, ví dụ như khi
chuyển từ trạng thái gửi sang trạng thái nhận, UART sử dụng một tín hiệu đặc biệt gọi là
"start bit" để đồng bộ hóa quá trình. Sau khi nhận được "start bit", thiết bị nhận sẽ đọc các
bit tiếp theo và đảm bảo chúng tuân theo định dạng được xác định trước (bao gồm số bit
dữ liệu, bit stop và các tham số khác).

Khi truyền dữ liệu, thiết bị gửi sẽ đợi cho tín hiệu đồng hồ phát sinh, sau đó chuyển đổi
các bit dữ liệu thành các mức tín hiệu điện tương ứng trên đường truyền. Khi gửi xong
các bit, thiết bị gửi sẽ đặt tín hiệu trên đường truyền ở trạng thái cao (hoặc thấp, tuỳ thuộc
vào thiết kế), và thiết bị nhận sẽ đọc bit stop này để xác định kết thúc quá trình truyền.

Trong UART, tốc độ truyền dữ liệu được đo bằng baud rate, tức là số lần mỗi giây tín
hiệu được thay đổi trên đường truyền. Baud rate càng cao thì tốc độ truyền dữ liệu càng
nhanh, nhưng cũng đòi hỏi nhiều tài nguyên hệ thống hơn. [10]

Trong giao thức UART, có ba chế độ truyền dữ liệu khác nhau

1. Chế độ đồng bộ (Synchronous mode): Trong chế độ này, các thiết bị truyền và nhận
dữ liệu phải được đồng bộ hóa với nhau. Điều này đòi hỏi sự trao đổi thông tin trước đó
để các bên có thể điều chỉnh tốc độ truyền và đồng bộ hóa với nhau.

2. Chế độ không đồng bộ (Asynchronous mode): Đây là chế độ được sử dụng phổ biến
nhất trong giao thức UART. Trong chế độ này, mỗi khung dữ liệu được gửi với một
khoảng thời gian cố định giữa các bit, được gọi là bit đồng bộ hóa. Không cần trao đổi
trước đó giữa các thiết bị để điều chỉnh tốc độ truyền.

3. Chế độ đa chủ (Multi-drop mode): Trong chế độ này, nhiều thiết bị có thể chia sẻ
cùng một đường truyền và truyền thông với nhau. Mỗi thiết bị được định danh bằng một
địa chỉ duy nhất, và các thiết bị khác sẽ bỏ qua các khung dữ liệu được gửi đến địa chỉ
không phù hợp.

Mỗi chế độ truyền dữ liệu có ưu điểm và hạn chế riêng, và sẽ phù hợp hơn với các ứng
dụng khác nhau. Chế độ không đồng bộ được sử dụng rộng rãi trong các ứng dụng như
truyền thông dữ liệu với các thiết bị nhúng và cảm biến, trong khi chế độ đồng bộ được sử
dụng trong các ứng dụng truyền tải dữ liệu trên khoảng cách xa hơn và đòi hỏi độ chính

56
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

xác cao hơn. Chế độ đa chủ được sử dụng trong các ứng dụng liên lạc truyền thông giữa
nhiều thiết bị trên một mạng.

Khung dữ liệu

Trong giao thức UART, khung dữ liệu (data frame) là một chuỗi các bit dữ liệu được
truyền qua kết nối UART giữa bộ truyền và bộ nhận. Khung dữ liệu bao gồm các thành
phần sau:

1. Bit bắt đầu (start bit): Đây là một bit có giá trị logic 0 được gửi trước khi truyền
khung dữ liệu để báo hiệu bắt đầu của khung dữ liệu.

2. Bit dữ liệu: Các bit này chứa thông tin dữ liệu được truyền qua kết nối UART,

3. Bit chẵn lẻ (parity bit): Đây là một bit được sử dụng để kiểm tra lỗi dữ liệu. Bit này
có thể có giá trị logic 0 hoặc 1, tùy thuộc vào cách xác định lỗi được chọn.

4. Bit dừng (stop bit): Đây là một hoặc hai bit có giá trị logic 1 được gửi sau khi truyền
khung dữ liệu để đồng bộ hóa tín hiệu trên mạch giữa bộ truyền và bộ nhận.

Kích thước của khung dữ liệu UART phụ thuộc vào cài đặt UART cụ thể được sử dụng.
Các kích thước phổ biến bao gồm 7 bit dữ liệu và một bit chẵn lẻ hoặc lẻ, hoặc 8 bit dữ
liệu và không có bit chẵn lẻ hoặc lẻ. [10]

Những ưu điểm và nhược điểm của UART

Dưới đây là một số ưu điểm và nhược điểm của UART

 Ưu điểm của UART

Tính tương thích cao: UART được sử dụng rộng rãi trong vi mạch điện tử bởi vì nó có
tính tương thích cao với các giao thức truyền thông khác. Nó có thể hoạt động trên các tốc
độ truyền khác nhau và có thể được sử dụng để truyền dữ liệu giữa các thiết bị khác nhau.

Tiết kiệm chi phí: UART là một thành phần điện tử đơn giản và rẻ tiền. Nó có thể được
tích hợp vào nhiều loại vi mạch khác nhau và không đòi hỏi nhiều tài nguyên tính toán.

57
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Độ tin cậy cao: UART được sử dụng phổ biến trong các ứng dụng điện tử bởi vì nó đơn
giản và có độ tin cậy cao. Nó thường được sử dụng trong các ứng dụng như đọc cảm biến,
điều khiển máy in, máy tính và các thiết bị điện tử khác.

Tính năng điều khiển lỗi: UART có thể xử lý các lỗi truyền thông như lỗi ngắt kết nối,
lỗi dữ liệu, lỗi đồng bộ và lỗi kiểm soát.

 Nhược điểm của UART:

Tốc độ truyền tải chậm: UART không thể truyền dữ liệu với tốc độ cao như các giao
thức truyền thông khác như SPI hoặc I2C.

Độ dài tối đa của đường truyền giới hạn: Độ dài tối đa của đường truyền UART là giới
hạn về khoảng cách truyền tải dữ liệu và không thể được sử dụng cho các khoảng cách
truyền dài.

Không hỗ trợ nhiều thiết bị: UART là giao thức truyền thông hai chiều và chỉ hỗ trợ kết
nối đến một thiết bị duy nhất một cách trực tiếp.

Không hỗ trợ phát hiện xung đột: UART không hỗ trợ phát hiện xung đột và không thể
phát hiện xung đột khi có nhiều thiết bị cố gắng truyền dữ liệu đến cùng một thời điểm.
[10]

Ứng dụng của giao tiếp UART

Giao tiếp UART được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau. Dưới đây là
một số ứng dụng phổ biến của giao tiếp UART:

1. Truyền thông giữa các vi điều khiển (MCUs): UART được sử dụng để truyền dữ liệu
giữa các vi điều khiến trong hệ thống nhúng, cho phép các vi điều khiển giao tiếp với
nhau hoặc với các module ngoại vi.

2. Giao tiếp giữa máy tính và các thiết bị ngoại vi: UART được sử dụng để kết nối máy
tính với các thiết bị ngoại vi như cảm biến, màn hình LCD, đầu đọc thẻ nhớ, module điều
khiển motor, và nhiều thiết bị khác.

3. Giao tiếp giữa các module trong hệ thống nhúng: UART được sử dụng để truyền dữ
liệu giữa các module trong hệ thống nhúng, cho phép chúng giao tiếp với nhau và thực
hiện các chức năng như đọc dữ liệu, điều khiển, hoặc truyền thông tin điều kiện làm việc.
58
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4. Giao tiếp với các thiết bị ngoại vi không có giao diện khác: UART được sử dụng để
giao tiếp với các thiết bị ngoại vi không có giao diện khác, chẳng hạn các module RF
(radio frequency), GPS (Global Positioning System), hoặc các thiết bị điều khiển từ xa.

5. Giao tiếp trong các ứng dụng loT (Internet of Things): UART được sử dụng trong
các ứng dụng loT để truyền dữ liệu giữa các thiết bị thông minh, máy chủ và nền tảng
đám mây, cho phép giao tiếp và kiểm soát các thiết bị từ xa.

6. Giao tiếp trong các ứng dụng viên thông: UART được sử dụng trong các ứng dụng
viên thông, chẳng hạn trong việc truyền dữ liệu giữa các thiết bị mạng, truyền dữ liệu qua
đường dây điện thoại hoặc cáp quang. [10]

4.7. Giao thức truyền nhận giữa Python và Webserver

4.7.1. Giới thiệu truyền thông HTTP

HTTP là từ viết tắt của Hyper Text Transfer Protocol nghĩa là Giao thức Truyền tải
Siêu Văn Bản được sử dụng trong www. HTTP là 1 giao thức cho phép tìm nạp tài
nguyên. Nó là nền tảng của bất kỳ sự trao đổi dữ liệu nào trên Website và cũng là giao
thức giữa client (thường là các trình duyệt hay bất kỳ loại thiết bị, chương trình nào) và
server (thường là các máy tính trên đám mây). [11]

HTTP hoạt động theo mô hình Client (máy khách) – Server (máy chủ). Việc truy cập
website được tiến hành dựa trên các giao tiếp giữa 2 đối tượng trên. Khi bạn truy cập một
trang web qua giao thức HTTP, trình duyệt sẽ thực hiện các phiên kết nối đến server của
trang web đó thông qua địa chỉ IP do hệ thống phân giải tên miền DNS cung cấp. Máy
chủ sau khi nhận lệnh, sẽ trả về lệnh tương ứng giúp hiển thị website, bao gồm các nội
dung như: văn bản, ảnh, video, âm thanh…

Trong quá trình kết nối và trao đổi thông tin, trình duyệt của bạn sẽ mặc nhiên thừa nhận
địa chỉ IP đó đến từ server của chính website mà bạn muốn truy cập mà không hề có biện
pháp xác thực nào. Các thông tin được gửi đi qua giao thức HTTP (bao gồm địa chỉ IP,
các thông tin mà bạn nhập vào website…) cũng không hề được mã hóa và bảo mật.

59
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Hình 4.14 Kết nối HTTP

4.8. Thiết kế Web

Sử dụng HTML để thiết kế giao diện của trang Webserver.

HTML là viết tắt của Hyper Text Markup Language (ngôn ngữ đánh dấu siêu văn bản).
HTML cho phép người dùng tạo và cấu trúc hóa các thành phần trên một trang web như
đoạn văn, tiêu đề, liên kết, trích dẫn, bảng biểu...

Các phần tử trong HTML là các khối của trang Website HTML, được đại diện bằng
những thẻ đánh dấu (tag).

Thẻ đánh dấu HTML chứa các nội dung như ‘paragraph’, ‘heading’, ‘table’...

Trình duyệt không hiển thị thẻ HTML nhưng dùng chúng để hiển thị nội dung của trang.

Việc chọn sử dụng HTML là vì:

 Có nhiều tài nguyên hỗ trợ với cộng đồng người dùng vô cùng lớn.
 Có thể hoạt động mượt mà trên hầu hết mọi trình duyệt hiện nay.
 Học HTML khá đơn giản.
 Các markup sử dụng trong HTML thường ngắn gọn, có độ đồng nhất cao.
 Sử dụng mã nguồn mở, hoàn toàn miễn phí.

60
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

4.9. Kết luận chương

Thông qua chương này ta biết được nguyên lý hoạt động của thuật toán, cách nhận thông
tin cũng như truyền thông tin qua ESP32 và Website. Từ đó có thể biết được cách thức
mà hệ thống sẽ vận hành khi gặp các trường hợp khác nhau. Kết quả thực tế sẽ được nhắc
đến trong chương sau.

61
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

CHƯƠNG V: KẾT QUẢ VÀ ĐÁNH GIÁ

5.1. Giới thiệu chương

Chương này cho ta thấy sản phẩm thực tế sau khi đã hoàn thành, đồng thời đánh giá hiệu
quả thực tế của nó so với dự định, bao gồm mạch và trang Website.

5.2. Phần cứng

5.2.1. Sơ đồ mạch

Hình 5.1 Sơ đồ mạch tổng thể

62
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

5.2.2. PCB

Hình 5.2 PCB

63
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

5.2.3. Mạch in thực tế

Hình 5.3 Mạch in thực tế


64
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

5.2.4. Hệ thống thực tế

 Kết quả hoạt động của mô hình:

Sau thời
gian tìm
hiểu, thiết
kế và
thi công
hệ đã
hoàn

Hình 5.4 Hệ thống mô hình thực tế


chỉnh và hoạt động tốt.

Đề tài đã thực hiện thành công các yêu cầu đặt ra với một hệ thống sản xuất thực tế:

- Khả năng gắp vật tốt của cánh tay robot.

- Khả năng phân loại sản phẩm ổn định và độ chính xác rất cao.

- Giao diện trực quan, đảm bảo đầy đủ các chức năng cơ bản của một hệ thống.

65
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

- Mô hình được thi công chắc chắn, đảm bảo các yêu cầu làm việc và giữ nguyên các
nguyên tắc, phân tích của phần thiết kế trước đó.

- Thiết lập đầy đủ các bản vẽ và tài liệu liên quan giúp việc đọc hiểu, thi công các thiết kế
dễ dàng, thuận tiện.

 Những hạn chế và hướng khắc phục

- Độ cứng vững của cánh tay Robot chưa cao. Momen quán tính của đế xoay còn lớn,
nhiều trường hợp bị lệch vị trí trở về ban đầu.

- Khi làm việc ở tốc độ cao, cánh tay vẫn còn nhiều sai sót, khả năng gắp vật chưa được
chính xác.

- Nhiều lần bị dừng hoạt động trong quá trình xử lí ảnh và gắp vật.

- Độ chính xác thả vật còn hạn chế khi trong nhiều trường hợp cánh tay xử lí lỗi.

- Hệ thống băng tải hoạt động chưa được tốt, hiện tượng băng tải bị lệch dẫn đến vật thể
bị thay đổi góc xoay, dẫn đến cánh tay robot xác định sai vị trí.

5.3. Đánh giá quá trình thực nghiệm

Quá trình thực hiện sản phẩm màu xanh:


STT Nhận diện màu Độ gắp chính xác Độ sai lệch gắp
của cánh tay sản phẩm
1 95% 98% 2%
2 98% 95% 5%
3 98% 95% 5%
4 98% 95% 5%
5 98% 95% 5%
Bảng 1.2 Sản phẩm màu xanh

Quá trình thực hiện sản phẩm màu đỏ:

STT Nhận diện màu Độ gắp chính xác Độ sai lệch gắp
của cánh tay sản phẩm
1 98% 98% 2%

66
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

2 98% 96% 4%
3 97% 95% 5%
4 97% 95% 5%
5 95% 95% 5%
Bảng 1.3 Sản phẩm màu đỏ

Quá trình thực hiện sản phẩm màu vàng:


STT Nhận diện màu Độ gắp chính xác Độ sai lệch gắp
của cánh tay sản phẩm
1 98% 95% 5%
2 98% 95% 5%
3 98% 94% 6%
4 96% 94% 6%
5 96% 96% 4%
Bảng 1.4 Sản phẩm màu vàng

Quá trình thực hiện sản phẩm màu tím:


STT Nhận diện màu Độ gắp chính xác Độ sai lệch gắp
của cánh tay sản phẩm
1 90% 97% 3%
2 93% 97% 3%
3 95% 96% 4%
4 95% 98% 2%
5 97% 98% 2%
Bảng 1.5 Sản phẩm màu tím

 Nhận xét:
Từ bảng số liệu trên có thể thấy việc nhận diện màu sắc, độ gắp chính xác của cánh tay
và độ sai lệch gắp sản phẩm của các màu tương đối tốt. Kết quả cho thấy sản phẩm màu
đỏ có hoạt động tốt nhất, lần lượt đến sản phẩm màu xanh, tím và vàng.
Hệ thống có thể xác định được nhiều màu sắc sản phẩm khác nhau, tuy nhiên trong
phạm vi bài báo này nhóm chỉ thực hiện bốn màu cơ bản là: Xanh, đỏ, vàng và tím.
 Nhận dạng màu sản phẩm với tốc độ xử lý nhanh và chính xác khi điều kiện ánh
67
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

sáng ổn định.
 Có thể sử dụng mô hình để phát triển cho sau này.
 Tính ứng dụng thực tế cao.

5.4. Phần mềm

Hình 5.5 Giao diện Web đơn giản

Kết quả:

- Tạo được trang Webserver đơn giản để điều khiển cánh tay robot.

- Gửi và nhận thông tin được nhưng vẫn còn độ trễ do tín hiệu mạng yếu, cần được khắc
phục.

5.5.Hướng phát triển của cánh tay robot có thể thực hiện

Giảm độ trễ và độ phản hồi của cánh tay robot làm nâng cao tốc độ cũng như độ chính
xác, làm cho việc vận hành đơn giản hơn cũng như giảm bớt các tình trạng hư hỏng cũng
như sự cố khi vận chuyển do sự rung lắc quá mạnh của cánh tay robot.
Thêm tính năng nhận diện hàng hóa để có thể vận chuyển và sắp xếp nhiều loại mặt
hàng cũng như phân biệt các mặt hàng không đạt đủ chất lượng.

68
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Đề tài: Thiết kế hệ thống IoRT cho cánh tay robot có xử lý ảnh

Mở rộng điều khiển cánh tay robot. Thêm các chức năng như khả năng vận hành theo
những yêu cầu cụ thể, làm đa dạng phương pháp vận chuyển, phù hợp với trường hợp.
Xây dựng thành 1 hệ thống IoRT hoàn chỉnh.
Một hệ thống đầy đủ đầu tiên xem hệ thống Iot trong nhà máy rồi tích hợp cánh tay
robot vào hệ thống.
Đồng thời bố trí trí thêm camera để ở nhiều khu vực trọng điểm để chương trình phần
mềm nhằm giám sát, xử lý và điều khiển các thông số môi trường và các đối tượng của hệ
thống IoRT (robot, cảm biến) nhằm đạt được các mục tiêu của hệ thống.
5.6. Kết luận chương

Đề tài mang tính ứng dụng cao, ứng dụng nhiều trong các hệ thống sản xuất tự động.

Có thể phát triển hơn khả năng xử lí ảnh về nhận diện vật thể với nhiều màu sắc, kích
thước, hình dạng. Ứng dụng trong lĩnh vực Nông nghiệp như phân loại trái cây. Trong
công nghiệp xử lí rác thải và các lĩnh vực nghiên cứu giáo dục trong các trường học.

Chúng tôi đã thấy được kết quả thực tế của sản phẩm, do thời gian làm làm đồ án có giới
hạn nên vẫn còn nhiều thiếu sót. Nếu đủ khả năng thì sẽ tiếp tục phát triển đồ án này trở
nên hoàn thiện và chất lượng hơn.

69
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
TÀI LIỆU THAM KHẢO

[1] A. Research, "“The Internet of Robotic Things”," 2014.

[2] H. X. Sơn, "Công nghệ IoRT và tiềm năng ứng dụng," Viện Công nghệ Thông
tin và Truyền thông CDIT, 24 /11/ 2021. [Online]. Available:
https://vnautomate.net/cong-nghe-iort-va-tiem-nang-ung-dung.html. [Accessed
6 /6/ 2023].

[3] KUKA, "Cộng tác con người – robot trong điều chỉnh đèn pha," [Online].
Available: https://www.kuka.com/vi-vn/ng%C3%A0nh-c%C3%B4ng-nghi
%E1%BB%87p/c%C6%A1-s%E1%BB%9F-d%E1%BB%AF-li%E1%BB
%87u-gi%E1%BA%A3i-ph%C3%A1p/2019/01/%C4%91i%E1%BB%81u-ch
%E1%BB%89nh-%C4%91%C3%A8n-pha-hrc. [Accessed 6/ 7/ 2023].

[4] C. t. T. T. đ. h. v. T. h. c. n. B. Khoa, "IoRT - Internet of Robotic Things là gì?


Khái niệm, thành phần, ưu điểm," [Online]. Available: https://bkaii.com.vn/tin-
tuc/848-iort-internet-of-robotic-things-la-gi-khai-niem-thanh-phan-uu-diem.
[Accessed 16/ 6/ 2023].

[5] "Robot công nghiệp là gì và có lợi ích như thế nào trong sản xuất," CÔNG TY
CỔ PHẦN GIẢI PHÁP TỰ ĐỘNG HÓA ETEK, 30/ 5/ 2023. [Online].
Available: https://tpa-fas.com.vn/Tin/robot-cong-nghiep-la-gi-va-co-loi-ich-
nhu-the-nao-trong-san-xuat. [Accessed 23/ 6/ 2023].

[6] "Xử lý dữ liệu ảnh: Một số kiến thức căn bản," 3 /6 /2022. [Online]. Available:
https://vinbigdata.com/kham-pha/xu-ly-du-lieu-anh-mot-so-kien-thuc-can-
ban.html. [Accessed 25 /6 /2023].

[7] "Tìm hiểu về OpenCV," 7/ 3/ 2017. [Online]. Available:


70
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
https://viblo.asia/p/tim-hieu-ve-opencv-Do754NrXZM6?
fbclid=IwAR1od6Khon2OhL0gCcfj1PokykDq5sqwMFfnLMNN9DORPK6Bv
C8bNWN6kqs. [Accessed 16/ 6/ 2023].

[8] Codelearn, "Xử Lý Ảnh Cơ Bản Với OpenCV Trong Python," 15/ 6/ 2020.
[Online]. Available: https://codelearn.io/sharing/xu-ly-anh-voi-opencv-phan-1.
[Accessed 2023 /6 /7].

[9] Codelearn, "Tìm Biên Ảnh Dễ Dàng Với Bộ Lọc Canny," 7 /8 /2020.
[Online]. Available: https://codelearn.io/sharing/tim-bien-anh-de-dang-voi-bo-
loc-canny. [Accessed 15/ 6/ 2023].

[10] Đ. t. số, "Giao tiếp URAT là gì? Cách thức hoạt động, ưu nhược điểm và các
ứng dụng," 3/ 6/ 2023. [Online]. Available: https://dientuso.net/giao-tiep-uart.
[Accessed 25/ 6/ 2023].

[11 TopDEV, "HTTP là gì? Các khía cạnh cơ bản của HTTP," [Online].
Available: https://topdev.vn/blog/http-la-gi/?fbclid=IwAR2rVJzjWkAG-
D8otv8SifFAYf5TUEseiLPJaCP5nHrXFPNdM-Tnv5YLmfM. [Accessed 15/
6/ 2023].

[12 "Nhận dạng thẻ số sử dụng thư viện OpenCV," 12 /10 /2018. [Online].
Available: https://viblo.asia/p/nhan-dang-the-so-su-dung-thu-vien-opencv-
1VgZvozmlAw?
fbclid=IwAR02lyNE0Dgm9Y2Ob379QqRjagbsiDRRnsdc6HVqvjn7c3BUs1sI
NIi5Lw4. [Accessed 15/ 6/ 2023].

71
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
PHỤ LỤC 1
Chương trình phần mềm Arduino IDE:

#include <Servo.h>

Servo myservo1;

Servo myservo2;

Servo myservo3;

Servo myservo4;

Servo myservo5;

const int CB =25;

const int RL =19;

void setup ()

myservo1.attach(26);

myservo2.attach(27);

myservo3.attach(32);

myservo4.attach(33);

Serial.begin(9600); // Mở giao tiếp Serial ở baudrate 9600

// vi tri ban dau

myservo1.write(90);

myservo2.write(150);

myservo3.write(0);

myservo4.write(50);

72
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
pinMode(CB,INPUT);

pinMode(RL,OUTPUT);

int Run = 1;

int Vat1=0;

int Vat2=0;

int Vat3=0;

int Vat4=0;

int XL=0;

char k;

unsigned long myTime;

int CV=0;

void loop ()

if(digitalRead(CB)==HIGH)

CV=CV+1;

delay(10);

else

CV = 0;

73
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
if(XL==0 && millis() - myTime > 100)

myTime = millis();

Serial.print("z");

if(Run == 1)

digitalWrite(RL,HIGH);

else

digitalWrite(RL,LOW);

if(Vat1==1 && CV==5)

digitalWrite(RL,LOW);

delay(1000);

VT1();

digitalWrite(RL,HIGH);

Vat1=0;

XL=0;

k=0;

74
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
else if(Vat2==1 && CV==5)

digitalWrite(RL,LOW);

delay(1000);

VT2();

digitalWrite(RL,HIGH);

Vat2=0;

XL=0;

k=0;

else if(Vat3==1 && CV==5)

digitalWrite(RL,LOW);

delay(1000);

VT3();

digitalWrite(RL,HIGH);

Vat3=0;

XL=0;

k=0;

else if(Vat4==1 && CV==5)

75
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
{

digitalWrite(RL,LOW);

delay(1000);

VT4();

digitalWrite(RL,HIGH);

Vat4=0;

XL=0;

k=0;

if(Serial.available()>0)

k = Serial.read();

if(k=='a')

Vat1=1;

k=0;

XL=1;

else if(k=='b')

Vat2=1;

k=0;

76
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
XL=1;

else if(k=='e')

Vat3=1;

k=0;

XL=1;

else if(k=='f')

Vat4=1;

k=0;

XL=1;

else if(k=='c')

Run=1;

else if(k=='d')

Run = 0;

void VT1()

77
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
{

// ///////VTVat chuan bi kep vat

myservo1.write(110);

delay(500);

myservo2.write(80);

myservo3.write(70);

myservo4.write(50);

delay(2000);

// /////////////Kep

Kep(20);// kep vat o goc 20

delay(1000); // sau khi kep xong dung lai 1s để thực hiện phần tiếp theo

// servo 2,3 lui ve sau va kem theo viec tha vat

// vi tri tha

myservo2.write(150);

myservo3.write(0);

delay(1000);

myservo1.write(180);

myservo4.write(90);

delay(1000);

myservo2.write(120);

78
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
delay(1000);

// /////////////Kep

myservo4.write(50); // mo cang kep

delay(1000);

// di ve home

myservo1.write(90);

myservo2.write(150);

myservo3.write(0);

myservo4.write(50);

void VT2()

// ///////VTVat

myservo1.write(110);

delay(500);

myservo2.write(80);

myservo3.write(70);

myservo4.write(50);

delay(2000);

// /////////////Kep

79
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Kep(20);

delay(1000);

// VTri tha

myservo2.write(150);

myservo3.write(10);

delay(1000);

myservo1.write(150);

myservo4.write(90);

delay(1000);

myservo2.write(110);

//VTTha

// myservo1.write(140);

// myservo2.write(110);

// myservo3.write(10);

// myservo4.write(90);

delay(2000);

// ///////////// thả vật

myservo4.write(50);

delay(1000);

// Về vị trí ban đầu

myservo1.write(90);

80
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
myservo2.write(150);

myservo3.write(0);

myservo4.write(50);

void VT3()

// ///////VTVat

myservo1.write(110);

delay(500);

myservo2.write(80);

myservo3.write(70);

myservo4.write(50);

delay(2000);

// /////////////Kep

Kep(20);

delay(1000);

myservo2.write(150);

myservo3.write(10);

delay(1000);

myservo1.write(30);

myservo4.write(90);

81
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
delay(1000);

myservo2.write(110);

delay(2000);

// /////////////Kep

myservo4.write(50);

delay(1000);

myservo1.write(90);

myservo2.write(150);

myservo3.write(0);

myservo4.write(50);

void VT4()

// ///////VTVat

myservo1.write(110);

delay(500);

myservo2.write(80);

myservo3.write(70);

myservo4.write(50);

delay(2000);

// /////////////Kep

82
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
Kep(20);

delay(1000);

//VTTha

myservo2.write(150);

myservo3.write(0);

delay(1000);

myservo1.write(0);

myservo4.write(90);

delay(1000);

myservo2.write(120);

delay(1000);

// /////////////Kep

myservo4.write(50);

delay(1000);

myservo1.write(90);

myservo2.write(150);

myservo3.write(0);

myservo4.write(50);

83
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
void Kep(int a)

for(int i=0;i<a;i++)

myservo4.write(90);

delay(10);

84
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
PHỤ LỤC 2
Chương trình phần mềm Pycharm:

import time

from flask import Flask, render_template, Response, jsonify

import cv2

import numpy as np

import serial

app = Flask(__name__,template_folder='venv/templates')

camera = None

s1 = 0

s2 = 0

s3 = 0

s4 = 0

loai = 0

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (17, 17))

@app.route('/')

def index():

global m

return render_template('index.html', SP1=s1, SP2=s2,SP3=s3, SP4=s4)

@app.route('/get_sp1', methods=['GET'])
85
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
def get_sp1():

global s1

return jsonify(s1)

@app.route('/get_sp2', methods=['GET'])

def get_sp2():

global s2

return jsonify(s2)

@app.route('/get_sp3', methods=['GET'])

def get_sp3():

global s3

return jsonify(s3)

@app.route('/get_sp4', methods=['GET'])

def get_sp4():

global s4

return jsonify(s4)

def generate_frames():

global camera

while True:

86
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
success, frame = camera.read()

if not success:

break

else:

imgcrop = frame[:, 100:530]

imghsv = cv2.cvtColor(imgcrop, cv2.COLOR_BGR2HSV)

lower = np.array([100, 157, 124]) # Mau Xanh Duong

upper = np.array([255, 255, 255])

mask = cv2.inRange(imghsv, lower, upper)

opening = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL,


cv2.CHAIN_APPROX_SIMPLE)

loai = 0

for contour in contours:

x, y, w, h = cv2.boundingRect(contour)

if(w>110 and h>110):

loai=1

cv2.putText(

img=frame,

text="MauXanh",

org=(100, 100),

fontFace=cv2.FONT_HERSHEY_DUPLEX,

87
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
fontScale=2,

color=(255, 0, 0),

thickness=1

ESP32 = serial.Serial(port='COM3', baudrate=9600, timeout=.1)

if (ESP32.read() == b'z'):

ESP32.write(b'a')

global s1

s1= s1 + 1

time.sleep(1)

ESP32.close()

if loai == 0 :

loai = 2

if loai == 2:

imghsv = cv2.cvtColor(imgcrop, cv2.COLOR_BGR2HSV)

lower = np.array([0, 136, 124]) # Mau Do

upper = np.array([16, 255, 255])

mask = cv2.inRange(imghsv, lower, upper)

opening = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL,


cv2.CHAIN_APPROX_SIMPLE)

for contour in contours:

88
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
x, y, w, h = cv2.boundingRect(contour)

print(w, h)

if (w > 110 and h > 60):

print(loai)

loai=0

cv2.putText(

img=frame,

text="MauDo",

org=(100, 100),

fontFace=cv2.FONT_HERSHEY_DUPLEX,

fontScale=2,

color=(0, 0, 255),

thickness=1

ESP32 = serial.Serial(port='COM3', baudrate=9600, timeout=.1)

if (ESP32.read() == b'z'):

ESP32.write(b'b')

global s2

s2 = s2 + 1

time.sleep(1)

ESP32.close()

if loai==2:

loai = 3

89
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
if loai == 3:

imghsv = cv2.cvtColor(imgcrop, cv2.COLOR_BGR2HSV)

lower = np.array([0, 124, 222]) # Mau Vang

upper = np.array([93, 255, 255])

mask = cv2.inRange(imghsv, lower, upper)

opening = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL,


cv2.CHAIN_APPROX_SIMPLE)

for contour in contours:

x, y, w, h = cv2.boundingRect(contour)

print(w, h)

if (w > 110 and h > 110):

print(loai)

loai=0

cv2.putText(

img=frame,

text="MauVang",

org=(100, 100),

fontFace=cv2.FONT_HERSHEY_DUPLEX,

fontScale=2,

color=(0, 215, 255),

thickness=1

90
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
ESP32 = serial.Serial(port='COM3', baudrate=9600, timeout=.1)

if (ESP32.read() == b'z'):

ESP32.write(b'e')

global s3

s3 = s3 + 1

time.sleep(1)

ESP32.close()

if loai == 3:

loai = 4

if loai == 4:

imghsv = cv2.cvtColor(imgcrop, cv2.COLOR_BGR2HSV)

lower = np.array([116, 109, 75]) # Mau Tim

upper = np.array([149, 255, 255])

mask = cv2.inRange(imghsv, lower, upper)

opening = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

contours, hierarchy = cv2.findContours(opening, cv2.RETR_EXTERNAL,


cv2.CHAIN_APPROX_SIMPLE)

for contour in contours:

x, y, w, h = cv2.boundingRect(contour)

print(w, h)

if (w > 110 and h > 110):

loai = 0

cv2.putText(

91
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
img=frame,

text="MauTim",

org=(100, 100),

fontFace=cv2.FONT_HERSHEY_DUPLEX,

fontScale=2,

color=(128, 0, 128),

thickness=1

ESP32 = serial.Serial(port='COM3', baudrate=9600, timeout=.1)

if (ESP32.read() == b'z'):

ESP32.write(b'f')

global s4

s4 = s4 + 1

time.sleep(1)

ESP32.close()

ret, buffer = cv2.imencode('.jpg', frame)

frame = buffer.tobytes()

yield (b'--frame\r\n'

b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')

@app.route('/video')

def video():

92
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
return Response(generate_frames(), mimetype='multipart/x-mixed-replace;
boundary=frame')

@app.route('/result', methods=['POST', 'GET'])

def result():

ESP32 = serial.Serial(port='COM3', baudrate=9600, timeout=.1)

ESP32.write(b'c')

time.sleep(1)

ESP32.close()

print(1)

return render_template('index.html')

@app.route('/result1', methods=['POST', 'GET'])

def result1():

ESP32 = serial.Serial(port='COM3', baudrate=9600, timeout=.1)

ESP32.write(b'd')

time.sleep(1)

ESP32.close()

print(0)

return render_template('index.html')

if __name__ == "__main__":

camera = cv2.VideoCapture(0)

93
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
app.run(debug=True)

PHỤ LỤC 3
Chương trình hiển thị Webserver:

<!DOCTYPE html>

<html>

<head>

<title>Website giám sát mô hình</title>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<script>

$(document).ready(function() {

// Hàm để cập nhật giá trị SP1

function updateSP1() {

$.ajax({

url: "{{ url_for('get_sp1') }}",

type: "GET",

success: function(data) {

$('#sp1-value').text(data);

94
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
});

// Hàm để cập nhật giá trị SP2

function updateSP2() {

$.ajax({

url: "{{ url_for('get_sp2') }}",

type: "GET",

success: function(data) {

$('#sp2-value').text(data);

});

function updateSP3() {

$.ajax({

url: "{{ url_for('get_sp3') }}",

type: "GET",

success: function(data) {

$('#sp3-value').text(data);

});

function updateSP4() {

95
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
$.ajax({

url: "{{ url_for('get_sp4') }}",

type: "GET",

success: function(data) {

$('#sp4-value').text(data);

});

// Cập nhật giá trị SP1 và SP2 mỗi giây

setInterval(function() {

updateSP1();

updateSP2();

updateSP3();

updateSP4();

}, 1000);

});

</script>

<style>

.h1 {

position: absolute;

top: 0px;

left: 450px;

96
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
.h2 {

position: absolute;

top: 50px;

left: 650px;

.h3 {

font-weight: bold;

font-size: 40px;

position: absolute;

top: 200px;

left: 1150px;

.circle1 {

position: absolute;

top: 350px;

left: 1150px;

width: 100px;

height: 100px;

border-radius: 50%;

background-color: green;

display: flex;

justify-content: center;

align-items: center;

97
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
color: #fff;

font-size: 24px;

font-weight: bold;

.circle2 {

position: absolute;

top: 350px;

left: 1400px;

width: 100px;

height: 100px;

border-radius: 50%;

background-color: red;

display: flex;

justify-content: center;

align-items: center;

color: #fff;

font-size: 24px;

font-weight: bold;

.h6 {

font-weight: bold;

font-size: 24px;

position: absolute;

98
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
top: 480px;

left: 1150px;

.h7 {

font-weight: bold;

font-size: 24px;

position: absolute;

top: 580px;

left: 1150px;

.h8 {

font-weight: bold;

font-size: 24px;

position: absolute;

top: 800px;

left: 400px;

.cam {

position: absolute;

top: 100px;

left: 100px;

.SP1 {

99
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
font-weight: bold;

font-size: 24px;

position: absolute;

top: 510px;

left: 1150px;

.SP2 {

font-weight: bold;

font-size: 24px;

position: absolute;

top:560px;

left: 1150px;

.SP3 {

font-weight: bold;

font-size: 24px;

position: absolute;

top: 610px;

left: 1150px;

.SP4 {

font-weight: bold;

font-size: 24px;

100
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
position: absolute;

top:660px;

left: 1150px;

</style>

</head>

<body>

<h1 class="h1">TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐẠI HỌC ĐÀ NẴNG</h1>

<h2 class="h2">KHOA ĐIỆN TỬ VIỄN THÔNG</h2>

<div>

<img class="cam" src="{{ url_for('video') }}" width="50%" />

</div>

<h3 class="h3">Trạng thái hoạt động</h3>

<h8 class="h8">Camera Hiển Thị Quá Trình Gắp Sản Phẩm</h8>

<form action="/result" method="POST">

<input class="circle1" type="Submit" name="my-submit-btn" value="Start">

</form>

<form action="/result1" method="POST">

<input class="circle2" type="Submit" name="my-submit-btn" value="Stop">

</form>

<h3 style="color: blue;" class="SP1">Số Lượng Sản phẩm 1: <span id="sp1-value">{{


SP1 }}</span> Vật</h3>

101
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam
<h3 style="color: blue;" class="SP2">Số Lượng Sản phẩm 2: <span id="sp2-value">{{
SP2 }}</span> Vật</h3>

<h3 style="color: blue;" class="SP3">Số Lượng Sản phẩm 3: <span id="sp3-value">{{


SP3 }}</span> Vật</h3>

<h3 style="color: blue;" class="SP4">Số Lượng Sản phẩm 4: <span id="sp4-value">{{


SP4 }}</span> Vật</h3>

</body>

</html>

102
Sinh viên thực hiện: Huỳnh Võ Thiện Tuấn Người hướng dẫn: TS. Nguyễn Duy Nhật
Viễn
Trần Minh Hùng KS. Lê Hồng Nam

You might also like