Sự tận tâm và đóng góp của cô đã tạo điều kiện thuận lợi và giúp chúng em có những kiến thức thực tế, áp dụng được vào đồ án và dự án tiếp theo Trang 7 TÓM TẮT LUẬN VĂNDự án này tậ
Trang 1THÀNH PHỐ HỒ CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA
THIẾT KẾ MÔ HÌNH VÀ ĐIỀU KHIỂN HỆ THỐNG
MOBILE ROBOT LƯU KHO TỰ ĐỘNG
GVHD: TS TRẦN MẠNH SƠN SVTH: NGUYỄN HOÀNG PHI KHÔI
PHAN TRỌNG TẤN
S K L 0 1 1 2 2 4
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
ĐỒ ÁN TỐT NGHIỆP
THIẾT KẾ MÔ HÌNH VÀ ĐIỀU KHIỂN HỆ THỐNG
MOBILE ROBOT LƯU KHO TỰ ĐỘNG
SVTH: NGUYỄN HOÀNG PHI KHÔI
Trang 3CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
***
Tp Hồ Chí Minh, ngày - tháng - năm 2023
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên 2: Nguyễn Hoàng Phi Khôi MSSV: 19151145
Ngành: CNKT Điều Khiển và Tự Động Hóa Lớp: 19151CL2
Giáo viên hướng dẫn: TS Trần Mạnh Sơn ĐT: 0918802638
Ngày nhận đề tài: Ngày nộp đề tài:
1 Tên đề tài: THIẾT KẾ MÔ HÌNH VÀ ĐIỀU KHIỂN HỆ THỐNG
MOBILE ROBOT LƯU KHO TỰ ĐỘNG
2 Các số liệu, tài liệu ban đầu:
Về tài liệu: tìm hiểu và nghiên cứu các đề tài, các bài báo về mô hình Mobile Robot điều khiển đa hướng để xây dựng và phát triển hệ thống mô hình Tìm hiểu cách thiết kế hệ thống kho lưu trữ sử dụng mã QR định hướng (QR Code Nevigation) Tìm hiểu các cách thức giao tiếp MQTT broker/client và webserver
3 Nội dung thực hiện đề tài:
Thiết kế mô hình Mobile Robot sử dụng bánh xe đa hướng mecanum
Viết chương trình xử lý và đọc mã QR bằng ngôn ngữ python
Thiết lập giao thức kết nối MQTT giữa RaspberryPi, ESP và máy tính
Thiết kế trang web giám sát vị trí và điều khiển mô hình robot cùng với hệ thống kho lưu trữ tự động dựa trên ngôn ngữ lập trình HTML cùng với CSS và JavaScript
Trang 4CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
***
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên sinh viên 1: Phan Trọng Tấn MSSV: 19151170 Họ tên sinh viên 2: Nguyễn Hoàng Phi Khôi MSSV: 19151145 Ngành: CNKT Điều Khiển và Tự Động Hóa Lớp: 19151CL2 Họ và tên Giáo viên hướng dẫn: TS Trần Mạnh Sơn NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:…………(Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2023
Trang 5CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
***
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên sinh viên 1: Phan Trọng Tấn MSSV: 19151170 Họ tên sinh viên 2: Nguyễn Hoàng Phi Khôi MSSV: 19151145 Ngành: CNKT Điều Khiển và Tự Động Hóa Lớp: 19151CL2 Họ và tên Giáo viên phản biện:
NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
(Ký & ghi rõ họ tên)
Trang 6LỜI CẢM ƠN
Đồ án tốt nghiệp đóng vai trò không thể thiếu và là bước cuối cùng, tuyệt đối quan trọng trong hành trình học tập của từng sinh viên trước khi bước vào cánh cổng tốt nghiệp Trải qua 4 năm học tập tại trường, chúng em không thể không nhắc đến sự giúp đỡ và hướng dẫn tận tâm từ các thầy cô giảng dạy, người hướng dẫn và những người bạn đồng học Nhờ vào sự chia sẻ kiến thức, sự dìu dắt và sự giúp đỡ, chúng em mới có thể vượt qua những khó khăn, hoàn thành và trình bày thành công
đề tài luận án tốt nghiệp của mình
Những yếu tố trên không chỉ là nguồn động lực mạnh mẽ mà còn là những hành trang quan trọng, góp phần xây dựng nên sự tự tin và hiểu biết của chúng em, không chỉ trong quãng đường đã đi qua mà còn trong tương lai phía trước
Đầu tiên, chúng em xin chân thành gửi lời tri ân và biết ơn sâu sắc tới tất cả các quý thầy cô trong ngành CNKT Điều khiển và Tự Động Hóa tại Trường Đại học Kỹ Thuật Thành Phố Hồ Chí Minh Những kiến thức cơ bản mà chúng em đã học được từ quý thầy cô đã là nền tảng vững chắc, định hình đúng hướng cho chúng
em, từ đó chúng em có thể vươn xa và tiến bước trong con đường nghiên cứu và phát triển trong lĩnh vực này
Tiếp theo, chúng em muốn gửi lời tri ân chân thành đến thầy TS Trần Mạnh Sơn, người đã tận tâm giúp đỡ, tạo điều kiện thuận lợi và luôn theo sát chúng em trong suốt quá trình thực hiện và hoàn thành luận văn nói riêng, cũng như trong quá trình học tập chung Đóng vai trò là người hướng dẫn đáng tin cậy, thầy đã cung cấp cho chúng em những lời khuyên quý báu, chỉ dẫn chi tiết và định hình hướng đi chính xác, giúp chúng em vượt qua các khó khăn và phát triển tư duy nghiên cứu của mình
Tiếp đến, chúng em muốn bày tỏ lòng biết ơn sâu sắc đến cô Thạc sĩ Nguyễn Trần Minh Nguyệt Cô không chỉ là người dạy chúng em môn học mà còn là người
tư vấn, hướng dẫn và chia sẻ những kinh nghiệm quý giá về lộ trình học tập và nghiên cứu Sự tận tâm và đóng góp của cô đã tạo điều kiện thuận lợi và giúp chúng
em có những kiến thức thực tế, áp dụng được vào đồ án và dự án tiếp theo
Cuối cùng, chúng em xin cảm ơn đến tất cả những ai đã quan tâm, đóng góp
ý kiến và hỗ trợ chúng em trong quá trình nghiên cứu và thực hiện đồ án tốt nghiệp Nhận được những ý kiến đóng góp quý báu từ các thầy cô và sự quan tâm của mọi người đã giúp chúng em rút ra những bài học quý giá và nâng cao kiến thức thực tế của mình, để từ đó áp dụng vào các dự án và đề án trong tương lai
Trang 7TÓM TẮT LUẬN VĂN
Dự án này tập trung vào thiết kế một hệ thống mobile robot đa hướng trong một kho lưu trữ, sử dụng mã QR để định vị và đọc thông tin vị trí Hệ thống sử dụng giao thức MQTT để truyền/nhận dữ liệu thông qua MQTT broker Ngoài ra, cũng được thiết kế một giao diện web để giám sát và điều khiển hệ thống kho lưu trữ cũng như vị trí của mobile robot
Mobile robot được trang bị camera để phát hiện và đọc mã QR trên các vị trí trong kho Khi robot đọc mã QR, nó lưu trữ thông tin vị trí và sử dụng nó để xác định hướng di chuyển trong kho
Kho lưu trữ được chia thành các vị trí định danh sử dụng mã QR duy nhất cho mỗi vị trí Mã QR chứa thông tin về vị trí đó và robot có thể đọc mã QR để xác định vị trí hiện tại của nó trong kho
Giao tiếp giữa các thành phần trong hệ thống được thực hiện thông qua giao thức MQTT MQTT broker được sử dụng để truyền/nhận dữ liệu giữa mobile robot, kho lưu trữ và giao diện web MQTT broker đóng vai trò là trung gian để gửi và nhận các thông điệp giữa các thành phần
Giao diện web được thiết kế để cung cấp giám sát và điều khiển hệ thống
Nó hiển thị thông tin về vị trí hiện tại của mobile robot trong kho lưu trữ, các hoạt động di chuyển và các tác vụ được giao cho robot Người dùng có thể tương tác với giao diện web để gửi lệnh điều khiển robot và thực hiện các tác vụ quản lý kho lưu trữ
Tổng quan, dự án này kết hợp nhiều công nghệ và thành phần để thiết kế một
hệ thống mobile robot đa hướng với tích hợp mã QR, giao tiếp qua MQTT và giao diện web để quản lý và điều khiển kho lưu trữ và vị trí của robot
Trang 8MỤC LỤC
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii
LỜI CẢM ƠN iv
TÓM TẮT LUẬN VĂN v
MỤC LỤC vi
DANH MỤC CÁC CHỮ VIẾT TẮT ix
DANH MỤC CÁC BẢNG BIỂU x
DANH SÁCH HÌNH ẢNH xi
Chương 1 TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 LÝ DO CHỌN ĐỀ TÀI 2
1.3 MỤC TIÊU 3
1.4 NỘI DUNG NGHIÊN CỨU 3
1.5 GIỚI HẠN 4
Chương 2 CƠ SỞ LÝ THUYẾT 5
2.1 ĐỘNG HỌC ROBOT 4 BÁNH 5
2.1.1 Ma trận Jacobian 5
2.1.2 Động học robot 4 bánh mecanum đa hướng 7
2.2 CÁCH THỨC GIAO TIẾP UART 13
2.2.1 Giới thiệu về giao tiếp UART 14
2.2.2 Cách thức hoạt động giao tiếp UART 15
2.2.3 Các tính nằng của UART 17
2.2.4 Cách triển khai UART trong các ứng dụng nhúng 17
2.2.5 Các ứng dụng thực tế của UART 18
2.3 CÁCH THỨC GIAO TIẾP MQTT 18
Trang 92.3.3 Các tính năng của MQTT 20
2.3.4 Cách triển khai MQTT trong các ứng dụng IoT 20
2.3.5 Các ứng dụng thực tế của MQTT 21
2.4 HTTP GIAO THỨC TRUYỀN TẢI DỮ LIỆU GIỮA WEB SERVER VÀ TRÌNH DUYỆT WEB 21
2.4.1 Giới thiệu về HTTP 21
2.4.2 Cách HTTP hoạt động 22
2.4.3 Các tính năng của HTTP 22
2.4.4 Cách triển khai HTTP trong các ứng dụng thực tế 23
2.5 NGÔN NGỮ LẬP TRÌNH WEB 23
2.5.1 HTML 23
2.5.2 CSS 24
2.5.3 JavaScript 24
2.6 XỬ LÝ ẢNH 25
2.6.1 Tổng quan 25
2.6.2 Mã QR (Quick Response) 27
Chương 3 KHẢO SÁT LINH KIỆN 29
3.1 RASPBERRY PI 4B 29
3.2 CAMERA 8MP RASPBERRY PI V2 30
3.3 ARDUINO MEGA 31
3.4 ESP32 MODULE THU PHÁT WIFI BLUETOOTH 32
3.5 STEPSTICK DRV8825 MẠCH ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC 33
3.6 ĐỘNG CƠ SERVO MG996R GIẢM TỐC RC 180 ĐỘ 34
3.7 ĐỘNG CƠ BƯỚC NEMA17 34
3.8 BÁNH XE ĐA HƯỚNG MECANUM 35
3.9 PIN LITHIUM POLYMER (LIPO) 36
3.10PIN CELL 36
3.11CÁC LINH KIỆN KHÁC 37
Chương 4 THI CÔNG HỆ THỐNG 38
4.1 SƠ ĐỒ KHỐI 38
Trang 104.3 MÔ HÌNH THỰC NGHIỆM 40
4.3.1 Mô hình Mobile Robot 4 bánh đa hướng 40
4.3.2 Mô hình kho 41
4.4 LƯU ĐỒ GIẢI THUẬT 43
4.4.1 Chương trình di chuyển Mobile Robot 43
4.4.2 Chương trình xử lý của RaspberryPi 44
4.4.3 Chương trình ESP32 45
4.5 THIẾT KẾ HỆ THỐNG CHO MOBILE ROBOT 47
4.5.1 Kết nối giao tiếp UART 47
4.5.2 Kết nối hệ thống MQTT 47
4.5.3 Thiết kế giao diện người dùng 50
4.5.4 Đọc mã QR 51
Chương 5 THỰC NGHIỆM, PHÂN TÍCH, TỔNG HỢP 53
5.1 KẾT QUẢ THỰC HIỆN VÀ PHÂN TÍCH 53
5.1.1 Đọc mã QR 53
5.1.2 Tốc độ di chuyển của Robot 55
5.1.3 Thực nghiệm xuất/nhập hàng 56
5.2 TỔNG HỢP 64
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 65
6.1 KẾT LUẬN 65
6.2 HƯỚNG PHÁT TRIỂN 65
TÀI LIỆU THAM KHẢO 67
PHỤ LỤC 68
DỰ TRÙ KINH PHÍ 68
CHƯƠNG TRÌNH ĐIỀU KHIỂN 69
Trang 11DANH MỤC CÁC CHỮ VIẾT TẮT
ADC: Analog To Digital Converter
AJAX: Asynchronous JavaScript and XML
API: Application Programming Interface
BPS: Bit per second
CPU: Central Processing Unit
CSS: Cascading Style Sheets
HTML: Hyper Text Markup Language
HTTP: HyperText Transfer Protocol
Lipo: Lithium-Polymer
LWT: Last Will and Testament
MP: Megapixel
MQTT: Message Queueing Telemetry Transport
PCB: Printed circuit board
QoS: Quality of Service
QR: Quick response
RAM: Random Access Memory
SSL: Secure Sockets Layer
TLS: Transport Layer Security
UART: Universal Asynchronous Receiver-Transmitter
URL: Uniform Resource Locator
Trang 12DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1: Thông số robot 4 bánh: 12
Bảng 5.1: Khảo sát vân tốc robot 56
Trang 13DANH SÁCH HÌNH ẢNH
Hình 1.1: Một số hệ thống định vị robot tự động di chuyển 2
Hình 2.1: Mô hình động học Robot trực tiếp và đảo nghịch 5
Hình 2.2: Động học vi phân trực tiếp và gián tiếp 6
Hình 2.3: Thiết lập tiêu chuẩn của robot 4 bánh mecanum đa hướng 7
Hình 2.4: Sáu cơ chế di chuyển cơ bản của robot 4 bánh mecanum đa hướng 7
Hình 2.5: Sáu cơ chế di chuyển mở rộng của robot 4 bánh mecanum đa hướng 7
Hình 2.6: Hệ trục tọa độ cho xe 4 bánh mecanum đa hướng 8
Hình 2.7: Các thông số của bánh xe thứ i 9
Hình 2.8: Giao tiếp UART 14
Hình 2.9: Bus dữ liệu 15
Hình 2.10: Gói dữ liệu truyền-nhận 16
Hình 2.11: Bit bắt đầu 16
Hình 2.12: Khung dữ liệu 16
Hình 2.13: Bit chẵn lẻ 17
Hình 2.14: Quá trình hoạt động MQTT 19
Hình 2.15: Giao thức HTTP 22
Hình 2.16: Hệ thống xử lý ảnh 25
Hình 3.1: Raspberrry Pi 4B 29
Hình 3.2: Camera Raspberry Pi V2 30
Hình 3.3: Arduino Mega 2560 31
Hình 3.4: ESP32 Devkit V1 32
Hình 3.5: DRV8825 33
Hình 3.6: Động Cơ Servo MG996R 34
Hình 3.7: Step Motor Nema17 34
Hình 3.8 :Bánh xe đa hướng Mecanum 35
Hình 3.9: Pin Lipo 36
Hình 3.10: Pin Cell 36
Hình 4.1: Sơ đồ khối 38
Hình 4.2: Sơ đồ kết nối hệ thống Robot 39
Hình 4.3: Mô hình hệ thống nâng-hạ 40
Hình 4.4: Mô hình Mobile Robot 40
Trang 14Hình 4.6: Chương trình Arduino điều khiển Mobile Robot xuất-nhập hàng 43
Hình 4.7: Chương trình RaspberryPi 44
Hình 4.8: Chương trình ESP cho giao diện nhập hàng 45
Hình 4.9: Chương trình ESP cho giao diện xuất hàng 46
Hình 4.10: Giao diện web 51
Hình 5.1: Mã QR với khung hình 3840x2160 53
Hình 5.2: Mã QR với khung hình 3840x2160 với ảnh xám 54
Hình 5.3: Mã QR với khung hình 1290x960 54
Hình 5.4: Mã QR với khung hình 1290x960 với ảnh xám 55
Hình 5.5: Mã QR trên thùng hàng 56
Hình 5.6: Dữ liệu Robot khi nhập hàng vào vị trí C1 57
Hình 5.7: Giao diện web quan sát thông tin lưu trữ nhập hàng vị trí C1 57
Hình 5 8 Giao diện web quan sát vị trí di chuyển khi nhập hàng vị trí C1 58
Hình 5.9: Thùng hàng được robot đưa đến vị trí C1 58
Hình 5.10: Nhập hàng vào vị trí A4 59
Hình 5.11: Dữ liệu thông tin lưu trữ nhập hàng vị trí A4 ở web 59
Hình 5.12: Thùng hàng được robot đưa đến vị trí A4 60
Hình 5.13: Bảng điều khiển xuất hàng 61
Hình 5.14: Xuất hàng từ vị trí C2 61
Hình 5.15: Thùng hàng được Robot lấy ra từ vị trí C2 62
Hình 5.16: Xuất hàng từ vị trí A4 62
Hình 5.17: Thùng hàng được Robot lấy ra từ vị trí A4 63
Hình 5.18: Tính toán xuất hàng với chế độ tự động 63
Trang 15lý hàng hóa trong lưu kho
Trung Quốc cũng là một quốc gia tiên phong trong lĩnh vực mobile robot và lưu kho tự động Với nguồn nhân lực và tài nguyên lớn, Trung Quốc đã đẩy mạnh nghiên cứu và ứng dụng robot di động trong lưu kho và ngành công nghiệp Các công ty Trung Quốc như DJI và Geek+ đã đóng góp đáng kể vào việc phát triển các giải pháp robot di động thông minh và hiệu quả cho lưu trữ và vận chuyển hàng hóa
Ngoài ra, các quốc gia châu Âu như Đức, Pháp và Hà Lan cũng đang đẩy mạnh nghiên cứu và phát triển mobile robot và lưu kho tự động Các viện nghiên cứu và trường đại học tại châu Âu đã tiến hành nhiều dự án nghiên cứu và hợp tác với các công ty công nghệ để tạo ra các giải pháp tiên tiến và ứng dụng trong thực
tế
Bên cạnh sự phát triển của mobile robot và lưu kho tự động trên thế giới, Việt Nam cũng đang chứng kiến sự quan tâm và nỗ lực trong lĩnh vực này Các tổ chức nghiên cứu và đại học tại Việt Nam đã tiến hành nghiên cứu và phát triển các giải pháp mobile robot và hệ thống lưu kho tự động
Sự phát triển của mobile robot và lưu kho tự động không chỉ giới hạn trong ngành công nghiệp, mà còn liên quan đến nhiều lĩnh vực khác như logistics, y tế, nông nghiệp và sản xuất Các công nghệ mới như trí tuệ nhân tạo, học máy và Internet of Things cũng đóng vai trò quan trọng trong việc đẩy mạnh sự phát triển
và ứng dụng của mobile robot và lưu kho tự động
Với sự phát triển nhanh chóng của công nghệ và nhu cầu tăng cao trong quản
lý lưu kho, việc nghiên cứu và thiết kế mô hình và hệ thống điều khiển mobile robot lưu kho tự động là cần thiết và có ý nghĩa quan trọng đối với Việt Nam Sự tiến bộ trong lĩnh vực này giúp nâng cao năng suất và hiệu quả quản lý lưu trữ, đồng thời thúc đẩy sự phát triển bền vững của ngành công nghiệp và đóng góp vào sự phát
Trang 16Hình 1.1: Một số hệ thống định vị robot tự động di chuyển
Trong thời đại công nghiệp hiện đại, quản lý và vận hành lưu kho đóng vai trò quan trọng trong nhiều ngành công nghiệp khác nhau trên toàn cầu Từ lĩnh vực sản xuất, logistics, bán lẻ cho đến ngành dược phẩm và y tế, các doanh nghiệp đều đặt mục tiêu tối ưu hóa hoạt động lưu kho để đáp ứng nhu cầu ngày càng tăng của thị trường
Mobile robot là một thành phần quan trọng trong hệ thống lưu kho tự động Đây là các loại robot được thiết kế đặc biệt để thực hiện các tác vụ vận chuyển và xếp dỡ hàng hóa trong một môi trường lưu kho Mobile robot được trang bị các công nghệ và cảm biến để tự động di chuyển, tương tác với môi trường và thực hiện các nhiệm vụ được giao
Mobile robot thường có thiết kế nhỏ gọn và linh hoạt, giúp chúng dễ dàng di chuyển trong không gian hẹp và qua các con đường đã được đánh dấu trước Chúng
có thể điều hướng dựa trên các công nghệ dẫn đường như QR code navigation hoặc định vị bằng laser Các cảm biến như máy quét laser, camera và cảm biến tiếp xúc giúp mobile robot phát hiện và tránh va chạm với các vật cản trong quá trình di chuyển
Mobile robot thường được lập trình để thực hiện các tác vụ cụ thể như vận chuyển hàng hóa từ điểm A đến điểm B, xếp dỡ hàng lên kệ, hoặc tìm kiếm vị trí hàng hóa trong lưu kho Chúng có khả năng tương tác với hệ thống tự động khác như hệ thống quản lý kho và hệ thống thông tin, tạo ra sự tích hợp và tương tác trong quá trình vận hành
Đóng vai trò quan trọng trong việc tăng cường hiệu suất và hiệu quả của hệ thống lưu kho tự động Chúng giúp giảm thiểu thời gian và công sức cần thiết cho
Trang 17Với sự phát triển nhanh chóng của công nghệ và ứng dụng mobile robot, việc nghiên cứu và thiết kế mô hình cũng như điều khiển hệ thống mobile robot lưu kho tự động trở thành một xu hướng quan trọng trong việc tối ưu hóa quá trình quản lý
và vận hành lưu kho hiện nay
Từ những liên hệ này, có thể thấy rõ rằng việc nghiên cứu và phát triển các
mô hình và hệ thống điều khiển mobile robot lưu kho tự động là cần thiết và có ý nghĩa quan trọng Sự tiến bộ trong lĩnh vực này giúp cải thiện hiệu quả, giảm chi phí và tăng cường an toàn trong quá trình quản lý và vận hành lưu kho, đồng thời đáp ứng nhu cầu của ngành công nghiệp và xã hội
Do đó, nhóm nghiên cứu quyết định chọn đề tài “THIẾT KẾ MÔ HÌNH VÀ ĐIỀU KHIỂN HỆ THỐNG MOBILE ROBOT LƯU KHO TỰ ĐỘNG”
nhằm nghiên cứu kỹ hơn về robot di động, ứng dụng vào di chuyển khi điều khiển
từ xa
1.3 MỤC TIÊU
Thiết kế mô hình Mobile Robot đa hướng có tích hợp đọc mã QR
Thiết kế mô hình kho lưu trữ sử dụng mã QR để định hướng vị trí
Thiếp lập phương thức truyền/nhận dữ liệu qua MQTT broker
Thiết kế giao diện web để giám sát và điều khiển hệ thống kho lưu trữ cũng như vị trí của Mobile Robot
1.4 NỘI DUNG NGHIÊN CỨU
Chương 1: Tổng quan
Giới thiệu về đề tài và lý do chọn đề tài này
Mục tiêu và phạm vi nghiên cứu
Đặt vấn đề và giới thiệu cấu trúc của luận văn
Chương 2: Cơ sở lý thuyết
Các khái niệm cơ bản về robot di động và hệ thống lưu trữ tự động
Tìm hiểu về công nghệ tự động hóa và định vị vị trí trong robot di động
Giới thiệu về giao thức MQTT và cách áp dụng trong hệ thống giao tiếp của Mobile Robot
Chương 3: Khảo sát linh kiện
Nghiên cứu và phân tích các linh kiện cần thiết cho hệ thống Mobile Robot
và hệ thống kho lưu trữ
Lựa chọn và mua sắm linh kiện phù hợp cho hệ thống
Chương 4: Thi công hệ thống
Mô tả chi tiết về quy trình thiết kế và thi công mô hình Mobile Robot di chuyển linh hoạt đa hướng
Trang 18 Thiết lập giao tiếp truyền thông thông qua MQTT Broker
Thiết kế và phát triển giao diện web để quan sát và điều khiển hệ thống
Chương 5: Thực nghiệm, phân tích, tổng hợp
Mô tả quá trình thực hiện các thử nghiệm và phân tích kết quả thu được
Đánh giá hiệu suất, độ chính xác và tính linh hoạt của hệ thống
Tổng hợp kết quả và so sánh với mục tiêu đề ra ban đầu
Chương 6: Kết luận và hướng phát triển
Tóm tắt lại các kết quả chính đã đạt được trong luận văn
Đánh giá đóng góp và ứng dụng của đề tài
Đề xuất hướng phát triển và nghiên cứu tiếp theo trong lĩnh vực này
1.5 GIỚI HẠN
Chỉ sử dụng mã QR để định hướng di chuyển và hồi tiếp vị trí của Robot
Mô hình Mobile Robot chỉ có khả năng di chuyển trong môi trường bằng phẳng, không gồ ghề
Chỉ sử dụng ngôn ngữ python openCV để quét mã QR bằng RaspberryPi tích hợp camera phát hiện hình ảnh cũng như là một MQTT broker
Sử dụng ESP32 là một Client và tạo webserver cũng như giao diện điều khiển khiển trên web như hệ thống điều khiển để điều chỉnh hoạt động của mobile robot, bao gồm cả quá trình quét mã QR, định vị vị trí và di chuyển đến đích
Chưa sử dụng cơ sở dữ liệu để có thể lưu và truy xuất các giá trị
Có hạn chế về tốc độ di chuyển so với các phương pháp định vị tiên tiến khác như định vị bằng laser hoặc GPS
Trang 19Chương 2 CƠ SỞ LÝ THUYẾT
n
q q q
m
x x p x
Hình 2.1: Mô hình động học Robot trực tiếp và đảo nghịch
Bài toán xác định p khi biết q được gọi là bài toán xác định động học thuận
( ) ( ) ( )
( )n
f f f
Trang 20Để có được những chuyển động này, chúng ta phải điều chỉnh một cách thích hợp chuyển động của các biến khớp, được biểu thị bằng vận tốc qq q1, 2, ,q nT
Do đó chúng ta cần tìm quan hệ vi phân của q và p Đây được gọi là động học vi
phân trực tiếp và được thể hiện bởi:
Trong đó:
1 2
d d d
d n
q q
d d
m
x dx
Với thông số ( , )i j và J ij x i q jđược gọi là ma trận Jocobian của robot
Hình 2.2: Động học vi phân trực tiếp và gián tiếpVới tọa độ tổng quát q q1, 2, ,q n của robot, ma trận Jacobian biểu diễn mối quan hệ giữa độ dịch chuyển của các khớp với độ dịch chuyển vị trí của robot trong không gian làm việc Với qq q1, 2, ,q nT và px x1, 2, ,x mT là vận tốc cả các khớp và không gian làm việc
Khi đó chia d = dp J q cho , ta có:
Trang 212.1.2 Động học robot 4 bánh mecanum đa hướng
Hình 2.3: Thiết lập tiêu chuẩn của robot 4 bánh mecanum đa hướng
Hình 2.4: Sáu cơ chế di chuyển cơ bản của robot 4 bánh mecanum đa hướng
Hình 2.5: Sáu cơ chế di chuyển mở rộng của robot 4 bánh mecanum đa hướng
Trang 22Hình 2.6:Hệ trục tọa độ cho xe 4 bánh mecanum đa hướng.
Các thông số cấu hình và vận tốc của hệ thống được xác định như sau:
x, y, θ: vị trí của robot (x, y) và góc định hướng θ (Góc giữa X và 𝑋𝑅);
X G Y: khung tọa độ; x,y là tọa độ của điểm quy chiếu O trong cơ sở quán tính;
XR O YR: khung cơ sở của robot; hệ tọa độ Descartes gắn với chuyển động của trọng tâm thân xe;
Si Pi Ei: hệ tọa độ của bánh xe thứ i ở tâm bánh xe điểm 𝑃𝑖
O, Pi: cơ sở quán tính của Robot trong khung Robot và 𝑃𝑖 = {𝑋𝑃𝑖, 𝑌𝑃𝑖} tâm trục quay của bánh xe 𝑖 ;
OP i , là vectơ chỉ khoảng cách giữa tâm Robot và tâm bánh xe thứ 𝑖;
𝑙𝑖𝑥: một phần hai khoảng cách giữa bánh trước
𝑙𝑖𝑦: một phần hai khoảng cách giữa bánh trước và bánh sau
𝑙𝑖, khoảng cách giữa các bánh xe và chân đế (tâm robot O);
𝑟𝑖 , biểu thị bán kính của bánh xe i (Khoảng cách từ tâm bánh xe đến tâm con lăn)
Trang 23 𝛼𝑖: góc giữa O𝑃𝑖 và XR
𝛽𝑖, góc giữa Si và XR
𝛾𝑖 , góc giữa 𝑣𝑖𝑟 và 𝐸𝑖
𝜔𝑖 [rad/s], vận tốc góc của bánh xe;
𝑣𝑖𝜔 [𝑚/𝑠], 𝑖 = 0,1,2,3 ∈ 𝑅 , là vectơ vận tốc ứng với số vòng quay của bánh xe
𝑣𝑖𝑟 , vận tốc của con lăn trên bánh i;
[𝑤𝑠𝑖 𝑤𝐸𝑖 ωi ]T vận tốc gốc của điểm 𝑃𝑖 trong khung 𝑆𝑖 𝑃𝑖 𝐸𝑖;
[𝑣𝑆𝑖 𝑣𝐸𝑖 ωi]T vận tốc gốc của điểm 𝑃𝑖 trong hệ quy chiếu 𝑋𝑅𝑂𝑌𝑅;
𝑣x, 𝑣y [m/s] vận tốc thẳng của robot;
𝜔𝑧 [rad/s] vận tốc góc của robot;
Hình 2.7: Các thông số của bánh xe thứ i Theo hình nguyên lí hoạt động của bánh xe i, chúng ta có thể tính vận tốc của bánh xe i và vận tốc tiếp tuyến của con lăn tự do gắn với bánh xe chạm sàn:
i i
P
i i ir ir E
Trang 240 sincos
i
i
i w
Từ phương trình trên có thể suy ra được ma trận biến đổi từ tâm bánh xe thứ
i sang hệ tọa độ của robot
R R
X X
Y Y ix
iY
R
v v
l v
l T
Trang 25R
X
i Y
ir R
X i
Y ir
R
v
T v v
1
1
v v
Trang 26Thay thế thông số ở bảng vào phương trình (2.25), ta có:
l l r
Trang 27l l
2.2 CÁCH THỨC GIAO TIẾP UART
UART (Universal Asynchronous Receiver-Transmitter – Bộ truyền nhận dữ liệu nối tiếp bất đồng bộ) là một trong những giao thức truyền thông giữa thiết bị với thiết bị được sử dụng nhiều nhất Chúng ta có thể thấy giao tiếp UART được sử dụng nhiều trong các ứng dụng để giao tiếp với các module như: Wifi, Bluetooth, Xbee, module đầu đọc thẻ RFID với Raspberry Pi, Arduino hoặc vi điều khiển khác Đây cũng là chuẩn giao tiếp thông dụng và phổ biến trong công nghiệp từ trước đến nay
Giao thức truyền thông UART có thể hoạt động với nhiều loại giao thức nối tiếp khác nhau liên quan đến việc truyền và nhận dữ liệu nối tiếp Trong giao tiếp
Trang 28nối tiếp, dữ liệu được truyền từng bit bằng cách sử dụng một đường dây Trong giao tiếp hai chiều, chúng ta sử dụng hai dây để truyền dữ liệu nối tiếp thành công
2.2.1 Giới thiệu về giao tiếp UART
Giao thức truyền thông đóng một vai trò quan trọng trong việc tổ chức giao tiếp giữa các thiết bị Nó được thiết kế theo nhiều cách khác nhau dựa trên các yêu cầu của hệ thống và các giao thức này có một quy tắc cụ thể được thống nhất giữa các thiết bị để việc truyền dữ liệu được thực hiện thành công
Các hệ thống nhúng, vi điều khiển và máy tính hầu hết sử dụng UART như một dạng giao thức giao tiếp phần cứng giữa thiết bị và thiết bị Trong số các giao thức truyền thông hiện có, UART chỉ sử dụng hai dây cho bên truyền và bên nhận
Đây là một phương pháp giao thức truyền thông phần cứng được sử dụng rộng rãi, nhưng nó không phải lúc nào cũng được tối ưu hóa hoàn toàn Việc thực hiện đúng giao thức khung truyền thường bị bỏ qua khi sử dụng module UART bên trong bộ vi điều khiển
UART là một giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếp không đồng bộ với tốc độ có thể định cấu hình Không đồng bộ có nghĩa là không
có tín hiệu đồng hồ để đồng bộ hóa các bit đầu ra từ thiết bị truyền đi đến bên nhận
Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau UART truyền chuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp, truyền nó nối tiếp đến UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận
Hình 2.8: Giao tiếp UART
Hai đường dây mà mỗi thiết bị UART sử dụng để truyền dữ liệu đó là:
• Transmitter (Tx)
• Receiver (Rx)
UART truyền dữ liệu không đồng bộ, có nghĩa là không có tín hiệu đồng hồ
để đồng bộ hóa đầu ra của các bit từ UART truyền đến việc lấy mẫu các bit bởi UART nhận Thay vì tín hiệu đồng hồ, UART truyền thêm các bit bắt đầu và kết
Trang 29thức vào gói dữ liệu được chuyển Các bit này xác định điểm bắt đầu và điểm kết thúc của gói dữ liệu để UART nhận biết khi nào bắt đầu đọc các bit
Khi UART nhận phát hiện một bit bắt đầu, nó bắt đầu đọc các bit đến ở một tần số cụ thể được gọi là tốc độ truyền (baud rate) Tốc độ truyền là thước đo tốc độ truyền dữ liệu, được biểu thị bằng bit trên giây (bps – bit per second) Cả hai UART đều phải hoạt động ở cùng một tốc độ truyền Tốc độ truyền giữa UART truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi thời gian của các bit bị lệch quá
xa
2.2.2 Cách thức hoạt động giao tiếp UART
UART sẽ truyền dữ liệu nhận được từ một bus dữ liệu (Data Bus) Bus dữ liệu được sử dụng để gửi dữ liệu đến UART bởi một thiết bị khác như CPU, bộ nhớ hoặc vi điều khiển Dữ liệu được chuyển từ bus dữ liệu đến UART truyền ở dạng song song Sau khi UART truyền nhận dữ liệu song song từ bus dữ liệu, nó sẽ thêm một bit bắt đầu, một bit chẵn lẻ và một bit kết thức, tạo ra gói dữ liệu Tiếp theo, gói
dữ liệu được xuất ra nối tiếp từng bit tại chân Tx UART nhận đọc gói dữ liệu từng bit tại chân Rx của nó UART nhận sau đó chuyển đổi dữ liệu trở lại dạng song song và loại bỏ bit băt đầu, bit chẵn lẻ và bit kết thúc Cuối cùng, UART nhận chuyển gói dữ liệu song song với bus dữ liệu ở đầu nhận
Hình 2.9: Bus dữ liệu
Dữ liệu truyền qua UART được tập hợp thành gói (packet) Mỗi gói chứa 1 bit bắt đầu (bit start), 5 đến 9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ (parity bit) tùy chọn và 1 hoặc 2 bit kết thức (bit stop)
Trang 30Hình 2.10: Gói dữ liệu truyền-nhận
Hình 2.11: Bit bắt đầu
Khung dữ liệu
Khung dữ liệu chứa dữ liệu thực tế đang được truyền Nó có thể dài từ 5 bit đến 8 bit nếu sử dụng bit chẵn lẻ Nếu không sử dụng bit chẵn lẻ, khung dữ liệu có thể dài 9 bit Trong hầu hết các trường hợp, dữ liệu được truyền với bit có trọng số
bé nhất (LSB – Least Significant Bit) trước tiên
Hình 2.12: Khung dữ liệu
Bit chẵn lẻ
Tính chẵn lẻ mô tả tính chẵn hoặc lẻ của một số Bit chẵn lẻ là một cách để UART nhận cho biết liệu có bất kỳ dữ liệu nào đã thay đổi trong quá trình truyền hay không Bit có thể bị thay đổi bởi bức xạ điện từ, tốc độ truyền không khớp hoặc truyền dữ liệu đường dài
Sau khi UART nhận đọc khung dữ liệu, nó sẽ đếm số bit có giá trị là 1 và kiểm tra xem tổng số là số chẵn hay lẻ Nếu bit parity là 0, thì tổng số bit 1 trong khung dữ liệu phải luôn là một số chẵn Nếu bit parity là 1 thì số tổng bit 1 trong khung dữ liệu là một số lẻ
Trang 31Khi bit chẵn lẻ khớp với dữ liệu, UART biết rằng quá trình truyền không có lỗi Nhưng nếu bit chẵn lẻ là 0 và tổng là số lẻ, hoặc bit chẵn lẻ là 1 và tổng số là chẵn, thì UART biết rằng các bit trong khung dữ liệu đã thay đổi
Tốc độ truyền dữ liệu linh hoạt: UART cho phép tốc độ truyền dữ liệu được cấu hình linh hoạt, từ vài bit mỗi giây đến hàng trăm kilobit mỗi giây Điều này cho phép UART được sử dụng trong nhiều ứng dụng khác nhau, từ các hệ thống nhúng đơn giản đến các hệ thống máy tính phức tạp
Độ tin cậy cao: UART sử dụng các bit kiểm tra chẵn lẻ để đảm bảo tính chính xác của dữ liệu được truyền Nếu bit kiểm tra chẵn lẻ không khớp với dữ liệu nhận được, thiết bị nhận sẽ báo lỗi và yêu cầu thiết bị truyền gửi lại dữ liệu Điều này đảm bảo rằng dữ liệu được truyền qua UART là đáng tin cậy và chính xác
Sử dụng tài nguyên phần cứng và phần mềm ít: UART là một giao thức truyền thông đơn giản và không đòi hỏi nhiều tài nguyên phần cứng hoặc phần mềm Điều này làm cho UART trở thành một lựa chọn phổ biến cho các ứng dụng nhúng và các hệ thống có tài nguyên hạn chế
2.2.4 Cách triển khai UART trong các ứng dụng nhúng
Chọn một vi điều khiển hỗ trợ UART: Để triển khai UART trong các ứng
dụng nhúng, chúng ta cần chọn một vi điều khiển hỗ trợ UART Nhiều vi điều khiển phổ biến như Arduino, Raspberry Pi và STM32 đều hỗ trợ UART
Kết nối phần cứng: Để triển khai UART, cần kết nối các chân UART của vi
điều khiển với các thiết bị khác như cảm biến, màn hình hoặc các vi điều khiển khác Các chân UART thường được đánh dấu là TX (truyền) và RX (nhận)
Trang 32Cấu hình UART: Sau khi kết nối phần cứng, chúng ta cần cấu hình UART
trên vi điều khiển của mình Các thông số cấu hình bao gồm tốc độ truyền, độ dài khung và bit kiểm tra chẵn lẻ
Sử dụng thư viện UART: Để triển khai UART trong các ứng dụng nhúng,
chúng ta có thể sử dụng các thư viện UART có sẵn Các thư viện này cung cấp các hàm để truyền và nhận dữ liệu qua UART
Kiểm tra tính chính xác của dữ liệu: Để đảm bảo tính chính xác của dữ
liệu được truyền qua UART, cần sử dụng các bit kiểm tra chẵn lẻ Nếu bit kiểm tra chẵn lẻ không khớp với dữ liệu nhận được, thiết bị nhận sẽ báo lỗi và yêu cầu thiết
bị truyền gửi lại dữ liệu
2.2.5 Các ứng dụng thực tế của UART
Điều khiển robot: UART được sử dụng để điều khiển các robot trong các
ứng dụng nhúng Các thiết bị như cảm biến và động cơ được kết nối với vi điều khiển thông qua UART để điều khiển chuyển động của robot
Điều khiển đèn: UART cũng được sử dụng để điều khiển đèn trong các ứng
dụng nhúng Các đèn được kết nối với vi điều khiển thông qua UART để bật và tắt hoặc điều chỉnh độ sáng
Điều khiển các thiết bị gia đình thông minh: UART được sử dụng để điều
khiển các thiết bị gia đình thông minh như máy lạnh, máy giặt và tivi Các thiết bị này được kết nối với vi điều khiển thông qua UART để điều khiển chức năng của chúng
Truyền thông giữa các vi điều khiển: UART cũng được sử dụng để truyền
thông giữa các vi điều khiển trong các ứng dụng nhúng Các vi điều khiển được kết nối với nhau thông qua UART để truyền dữ liệu và điều khiển các chức năng của hệ thống
Điều khiển các thiết bị y tế: UART cũng được sử dụng để điều khiển các
thiết bị y tế như máy đo huyết áp và máy đo đường huyết Các thiết bị này được kết nối với vi điều khiển thông qua UART để đọc và hiển thị dữ liệu
2.3 CÁCH THỨC GIAO TIẾP MQTT
2.3.1 Giới thiệu về giao tiếp MQTT
MQTT (Message Queuing Telemetry Transport) là một giao thức truyền thông nhẹ được sử dụng trong các ứng dụng IoT để truyền tải dữ liệu giữa các thiết
bị MQTT được phát triển bởi IBM vào năm 1999 và sau đó được đưa vào mã nguồn mở
Trang 33MQTT sử dụng mô hình publish-subscribe để truyền tải dữ liệu Trong mô hình này, các thiết bị được chia thành hai vai trò: nhà sản xuất (publisher) và người tiêu dùng (subscriber)
2.3.2 Cách MQTT hoạt động
Hình 2.14: Quá trình hoạt động MQTT
Quá trình hoạt động của MQTT được chia thành 4 giai đoạn Đó là kết nối, xác thực, giao tiếp và kết thúc Các máy khách bắt đầu việc tạo kết nối TCP/IP tới broker Chúng làm bằng cách sử dụng cổng tiêu chuẩn hoặc cổng tùy chỉnh Cổng này được xác định bởi các nhà phát triển broker
Cách thức hoạt động của MQTT
Giao thức MQTT được phát hành với mục đích chính là cho các thiết bị IoT
sử dụng riêng Hạn chế được các tài nguyên sử dụng Bởi trong vài trường hợp, SSL/TLS không phải là một tùy chọn bắt buộc Lúc đó, việc xác thực được thực hiện dưới dạng tên người dùng và mật khẩu Ngoài ra, vẫn có một số broker mở được công bố trên internet Chúng sẽ chấp nhận các tài khoản máy khách ẩn danh Lúc này, tên người dùng và mật khẩu sẽ được bỏ trống
MQTT rất nhẹ bởi các thông điệp trong giao thức chỉ có một mã nhỏ Mỗi thông báo sẽ có tiêu đề cố định có giá trị khoảng 2 byte Một tiêu đề biến tùy chọn thì dung lượng sẽ giới hạn ở 256 megabyte Bên cạnh đó, MQTT cũng hỗ trợ các thông điệp nhị phân có kích thước lớn hơn khoảng 256 MB
Muốn kết thúc một phiên MQTT thì publisher hoặc subscriber cần gửi thông báo Thông báo sẽ là DISCONNECT đến broker và sau đó ngắt kết nối Điều này được gọi là graceful shutdown Sau đó, máy khách vẫn có thể kết nối lại dễ dàng
Trang 34bằng cách cung cấp ID máy khách Tiếp tục tại chính điểm nó đã dừng yêu cầu kết nối
2.3.3 Các tính năng của MQTT
MQTT hỗ trợ ba cấp độ QoS (chất lượng dịch vụ) xác định mức độ đáng tin cậy và các cam kết chuyển tin nhắn QoS 0 cung cấp mức độ đáng tin cậy thấp nhất, trong khi QoS 2 cung cấp mức độ đáng tin cậy cao nhất
MQTT hỗ trợ các tin nhắn được lưu giữ, đó là các tin nhắn được lưu trữ trên trung tâm và được gửi đến các người đăng ký mới khi họ kết nối Tính năng này hữu ích để gửi các cập nhật trạng thái hoặc thông tin khác mà nên có sẵn cho các người đăng ký mới
MQTT hỗ trợ các tin nhắn LWT (Last Will and Testament), đó là các tin nhắn được gửi bởi trung tâm đến các người đăng ký khi một khách hàng ngắt kết nối một cách bất ngờ Tính năng này hữu ích để phát hiện khi một thiết bị bị ngắt kết nối hoặc mất kết nối
MQTT hỗ trợ các phiên sạch, xác định liệu các đăng ký và tin nhắn của khách hàng có được lưu giữ bởi trung tâm khi khách hàng ngắt kết nối Nếu sử dụng phiên làm việc sạch, trung tâm sẽ loại bỏ tất cả các đăng ký và tin nhắn khi khách hàng ngắt kết nối
MQTT được thiết kế để sử dụng băng thông tối thiểu, làm cho nó lý tưởng để
sử dụng trong môi trường tiêu thụ ít năng lượng và băng thông thấp
MQTT hỗ trợ mã hóa và xác thực TLS (Transport Layer Security), làm cho
nó trở thành một giao thức an toàn để truyền tải dữ liệu nhạy cảm
2.3.4 Cách triển khai MQTT trong các ứng dụng IoT
Chọn một trung tâm MQTT: Bước đầu tiên là chọn một trung tâm MQTT,
đó là trung tâm quản lý luồng tin nhắn giữa các thiết bị Có nhiều trung tâm MQTT khác nhau, bao gồm cả các trung tâm mã nguồn mở và thương mại, vì vậy quan trọng là chọn một trung tâm phù hợp với nhu cầu cụ thể
Cài đặt trung tâm: Sau khi đã chọn một trung tâm MQTT, chúng ta sẽ cần
cài đặt và cấu hình nó cho trường hợp sử dụng cụ thể Điều này có thể liên quan đến cài đặt các tính năng bảo mật, chẳng hạn như mã hóa TLS và xác thực, và cấu hình các cấp độ QoS và các thiết lập khác
Kết nối các thiết bị với trung tâm: Sau khi trung tâm được cài đặt,chúng ta
có thể kết nối các thiết bị của mình với nó bằng thư viện khách MQTT Hầu hết các ngôn ngữ lập trình đều có thư viện khách MQTT có sẵn, vì vậy chúng ta có thể chọn thư viện phù hợp nhất với nhu cầu của mình
Trang 35Gửi và nhận dữ liệu: Với các thiết bị được kết nối với trung tâm, chúng ta
có thể bắt đầu gửi và nhận dữ liệu Người xuất bản gửi tin nhắn đến trung tâm, sau
đó trung tâm gửi chúng đến các người đăng ký dựa trên hệ thống chủ đề được sử dụng bởi MQTT
Xử lý tin nhắn: Chúng ta xử lý các tin nhắn được nhận bởi các thiết bị của
mình Điều này có thể liên quan đến phân tích cú pháp các tin nhắn và thực hiện các hành động phù hợp dựa trên nội dung của chúng
2.3.5 Các ứng dụng thực tế của MQTT
Nhà thông minh: MQTT có thể được sử dụng để kết nối các thiết bị nhà thông minh, chẳng hạn như máy điều hòa, đèn và hệ thống an ninh, với một trung tâm hoặc dịch vụ đám mây Điều này cho phép người dùng điều khiển các thiết bị của họ từ xa và nhận cập nhật trạng thái thời gian thực
Tự động hóa công nghiệp: MQTT có thể được sử dụng để kết nối các cảm biến và các thiết bị khác trong các môi trường công nghiệp, chẳng hạn như nhà máy
và kho Điều này cho phép giám sát thời gian thực của thiết bị và quy trình, cũng như bảo trì dự đoán và các phân tích tiên tiến khác
Chăm sóc sức khỏe: MQTT có thể được sử dụng để kết nối các thiết bị y tế, chẳng hạn như máy giám sát bệnh nhân và bơm tiêm, với một hệ thống giám sát trung tâm Điều này cho phép nhà cung cấp chăm sóc sức khỏe giám sát bệnh nhân
từ xa và phản ứng nhanh chóng với bất kỳ vấn đề nào phát sinh
Nông nghiệp: MQTT có thể được sử dụng để kết nối các cảm biến và các thiết bị khác trong các môi trường nông nghiệp, chẳng hạn như trang trại và nhà kính Điều này cho phép giám sát thời gian thực của điều kiện môi trường, chẳng hạn như nhiệt độ và độ ẩm, và có thể giúp tối ưu hóa sản lượng và giảm lãng phí
Giao thông vận tải: MQTT có thể được sử dụng để kết nối các phương tiện
và các hệ thống vận tải khác, chẳng hạn như tàu và xe buýt, với một hệ thống giám sát trung tâm Điều này cho phép theo dõi thời gian thực của các phương tiện và có thể giúp tối ưu hóa tuyến đường và giảm tắc nghẽn
2.4 HTTP GIAO THỨC TRUYỀN TẢI DỮ LIỆU GIỮA WEB SERVER VÀ TRÌNH DUYỆT WEB
2.4.1 Giới thiệu về HTTP
Trang 36Hình 2.15: Giao thức HTTP
HTTP (Hypertext Transfer Protocol) là giao thức phổ biến được sử dụng trong việc truyền tải dữ liệu giữa web server và trình duyệt web là Giao thức này xác định cách truyền tải và xử lý dữ liệu giữa máy chủ và máy khách
2.4.2 Cách HTTP hoạt động
Trình duyệt sẽ thiết lập một kết nối tới máy chủ của trang web thông qua cổng mặc định của HTTP, là cổng 80 (hoặc 443 nếu sử dụng HTTPS) Sau đó, trình duyệt sẽ gửi một yêu cầu HTTP đến máy chủ, yêu cầu cho máy chủ gửi lại nội dung của trang web
Máy chủ sẽ tiếp nhận yêu cầu và trả lời bằng một gói tin HTTP chứa nội dung của trang web được yêu cầu Trình duyệt sẽ sử dụng thông tin trong gói tin HTTP để hiển thị nội dung trang web cho người dùng
2.4.3 Các tính năng của HTTP
Các tính năng của HTTP giúp cho việc truyền tải dữ liệu trên mạng Internet trở nên linh hoạt và hiệu quả hơn
Phương thức truyền tải: HTTP hỗ trợ nhiều phương thức truyền tải dữ liệu
như GET, POST, PUT, DELETE, HEAD, OPTIONS, CONNECT và TRACE, cho phép các ứng dụng web cung cấp và truy xuất dữ liệu theo nhiều cách khác nhau
Header: HTTP cho phép sử dụng các trường header để truyền tải thông tin
về yêu cầu và phản hồi Các trường header này có thể chứa thông tin như kiểu dữ liệu, định dạng nội dung, hạn chế kích thước của tệp, v.v
Các kết nối đa phương tiện: HTTP hỗ trợ truyền tải các nội dung khác
nhau như văn bản, hình ảnh, âm thanh, video và các nội dung đa phương tiện khác
Trang 37Cache: HTTP cho phép sử dụng bộ nhớ đệm (cache) để lưu trữ dữ liệu với
mục đích tăng tốc độ truy xuất dữ liệu Các bộ nhớ đệm này có thể được lưu trữ cục
bộ trong trình duyệt hoặc trên máy chủ
Xác thực: HTTP cung cấp chức năng xác thực, cho phép các ứng dụng web
yêu cầu người dùng nhập tên đăng nhập và mật khẩu để xác minh danh tính của họ
Tính đa truy nhập: HTTP cho phép nhiều người dùng truy cập vào cùng
một máy chủ, và các yêu cầu từ các người dùng khác nhau sẽ được xử lý độc lập nhau
Quản lý phiên: HTTP hỗ trợ cơ chế quản lý phiên, cho phép các ứng dụng
web duy trì trạng thái của người dùng giữa các yêu cầu và phản hồi
2.4.4 Cách triển khai HTTP trong các ứng dụng thực tế
Chọn nền tảng: Trước khi triển khai HTTP, cần xác định nền tảng và công
cụ lập trình phù hợp với yêu cầu của ứng dụng
Cấu hình máy chủ: Cần cấu hình máy chủ để hỗ trợ HTTP, bao gồm việc
cài đặt phần mềm web server như Apache, Nginx, IIS, và xác định các tài nguyên cần truy cập thông qua HTTP
Xác định các phương thức truyền tải: Các ứng dụng công nghệ web
thường sử dụng các phương thức truyền tải khác nhau để tương tác với máy chủ thông qua HTTP Cần xác định các phương thức này và tối ưu hóa chúng để đảm bảo hiệu suất tốt của ứng dụng
Xây dựng API: Nếu ứng dụng cần cung cấp giao diện lập trình ứng dụng,
thì cần xác định các yêu cầu và phản hồi mà API sẽ hỗ trợ, kết hợp với các phương thức truyền tải HTTP như GET, POST, PUT, DELETE để xây dựng API
Xây dựng giao diện người dùng: Nếu ứng dụng có giao diện người dùng,
cần đảm bảo rằng các yêu cầu HTTP được xử lý một cách chính xác để hiển thị đầy
đủ nội dung trên trình duyệt của người dùng
Kiểm thử và tối ưu: Cần kiểm tra và tối ưu hóa ứng dụng để đảm bảo hoạt
động ổn định và cung cấp trải nghiệm tốt cho người dùng và chúng ta nên sử dụng các công cụ như Google Lighthouse để kiểm tra hiệu suất và tuân thủ các tiêu chuẩn của web
2.5 NGÔN NGỮ LẬP TRÌNH WEB
2.5.1 HTML
HTML (Hypertext Markup Language) là một ngôn ngữ đánh dấu được sử dụng để xây dựng các trang web và ứng dụng web Nó được sử dụng để mô tả cấu
Trang 38trúc và định dạng nội dung trên trang web, bao gồm văn bản, hình ảnh, đường liên kết, bảng, biểu đồ, video và nhiều phần tử khác
HTML cung cấp cho các nhà phát triển web một tập hợp các thẻ và thuộc tính đa dạng để xây dựng các trang web phức tạp Nó hỗ trợ việc tạo ra các liên kết, bảng, biểu đồ, biểu mẫu nhập liệu, video, âm thanh và nhiều phần tử tương tác khác
Để tạo một trang web hoàn chỉnh, HTML thường được kết hợp với CSS (Cascading Style Sheets) để định dạng và trình bày trang web, và JavaScript để cung cấp các tính năng tương tác và động cho trang web
2.5.2 CSS
CSS (Cascading Style Sheets) là một ngôn ngữ đánh dấu được sử dụng để định dạng và trình bày giao diện của các trang web và ứng dụng web CSS tách biệt phần trình bày và định dạng từ nội dung của trang, cho phép người phát triển web điều chỉnh màu sắc, kích thước, vị trí và các thuộc tính khác của các phần tử trên trang
CSS hoạt động bằng cách xác định các quy tắc (rules) áp dụng cho các phần
tử HTML Các quy tắc CSS bao gồm một bộ chọn (selector) và một tập hợp các thuộc tính (properties) và giá trị (values) Bằng cách áp dụng các quy tắc này, người phát triển có thể thay đổi màu sắc, font chữ, đường viền, độ rộng, chiều cao và nhiều thuộc tính khác của các phần tử trên trang
CSS cho phép kiểm soát đồng thời nhiều trang web Với CSS, bạn có thể tạo
ra một tệp CSS riêng biệt và liên kết nó với nhiều trang HTML khác nhau Điều này giúp tiết kiệm thời gian và công sức trong việc thay đổi giao diện của một trang web hoặc toàn bộ trangweb, vì chỉ cần sửa đổi tệp CSS một lần và tất cả các trang liên kết sẽ được cập nhật tự động
và phía máy chủ (server-side)
JavaScript cũng có thể giao tiếp với các dịch vụ web (API) và thực hiện các yêu cầu AJAX để tải nội dung từ máy chủ mà không cần tải lại toàn bộ trang AJAX
Trang 39nhận dữ liệu từ máy chủ mà không cần tải lại toàn bộ trang web Nó sử dụng JavaScript để gửi yêu cầu và nhận phản hồi từ máy chủ một cách bất đồng bộ, tức là trang web vẫn có thể tiếp tục hoạt động và tương tác với người dùng trong khi dữ liệu được tải về
2.6 XỬ LÝ ẢNH
2.6.1 Tổng quan
Xử lý ảnh là một lĩnh vực nghiên cứu liên quan đến phân tích và biến đổi các hình ảnh số bằng cách sử dụng các thuật toán và kỹ thuật khác nhau Nó bao gồm nhiều ứng dụng khác nhau như cải thiện ảnh, khôi phục ảnh, phân đoạn ảnh và nhận dạng
Sở đồ tổng quan về xử lý ảnh
Hệ thống xử lý ảnh số là một lĩnh vực rộng bao gồm kiến thức về phần cứng, phần mềm và cơ sở lý thuyết Quá trình xử lý ảnh số bao gồm các bước cơ bản như sau:
Hình 2.16: Hệ thống xử lý ảnh
Thu nhận ảnh
Trong hệ thống xử lý ảnh số, camera đóng vai trò quan trọng trong việc quan sát và thu nhận ảnh đầu vào Camera thường được coi là một hộp đen, trong đó các quá trình biến đổi được thực hiện để chuyển đổi ảnh thành dạng lưu trữ trong máy tính Các bước xử lý này bao gồm sự phát sáng, thấu kính, cảm biến, các phần tử quang điện và bộ số hóa, mỗi thành phần này hoạt động cùng nhau để tạo ra ảnh số cuối cùng
Trang 40Một điểm quan trọng trong việc nhận dạng ảnh là tính thời gian của camera Quá trình xử lý ảnh có vai trò như một bộ lấy mẫu trong hệ thống nhận dạng ảnh Ảnh số được thu nhận bằng một cảm biến ảnh có khả năng chuyển đổi thông tin về cường độ sáng và mức xám của ảnh thực thành tín hiệu điện áp dưới dạng analog Sau đó, tín hiệu này được số hóa để trở thành tín hiệu số
Cảm biến ảnh thường gồm hai thành phần chính Thành phần đầu tiên tạo ra tín hiệu điện ở đầu ra tỉ lệ với mức năng lượng mà nó nhận được Thành phần thứ hai là bộ số hóa, là phần tử chuyển đổi tín hiệu tương tự thành tín hiệu số Thành phần số hóa thực chất là bộ chuyển đổi ADC (Analog-to-Digital Converter), và chúng ta có thể có các tín hiệu với số bit khác nhau như 4 bit, 8 bit, 10 bit, 12 bit, và nhiều hơn nữa Số bit này tương ứng với số mức xám khác nhau trong ảnh, ví dụ: 4 bit cho 16 mức xám, 8 bit cho 256 mức xám, và cứ tiếp tục như vậy
Việc lựa chọn số bit phù hợp cho cảm biến ảnh phụ thuộc vào yêu cầu của ứng dụng cụ thể Số bit càng cao, độ chính xác của ảnh số càng lớn, nhưng đồng thời cũng tăng cường độ phức tạp và chi phí cho cảm biến ảnh
Tiền xử lý ảnh
Sau khi ảnh số được thu thập dưới dạng tín hiệu số, quá trình tiền xử lý ảnh
là bước quan trọng để cải thiện và nâng cao các tính chất của ảnh, từ đó giúp cho các quá trình xử lý ảnh sau này trở nên thuận tiện hơn
Các công đoạn cơ bản của tiền xử lý ảnh bao gồm:
Nâng cao độ tương phản: Quá trình này nhằm tăng độ tương phản của ảnh,
làm rõ các chi tiết và đặc trưng trong ảnh Các phương pháp nâng cao độ tương phản có thể bao gồm sử dụng các thuật toán biến đổi histogram, cân bằng histogram, hoặc áp dụng các bộ lọc tương phản
Lọc nhiễu: Bước này nhằm loại bỏ nhiễu trong ảnh, giúp làm sạch và cải
thiện chất lượng ảnh Có nhiều phương pháp lọc nhiễu khác nhau như lọc thông thấp, lọc thông cao, hoặc sử dụng các thuật toán lọc nhiễu như lọc Gaussian, lọc trung vị
Phân vùng ảnh
Sau khi tiền xử lý ảnh, bước tiếp theo là phân vùng ảnh Quá trình phân vùng ảnh nhằm tách ảnh đầu vào thành các đối tượng, vật thể riêng biệt Kết quả của quá trình phân vùng ảnh là một tập hợp các điểm ảnh có liên kết với nhau thành các đối tượng, được đánh số phân biệt, thuận tiện cho các quá trình xử lý cao hơn
Đầu ra của quá trình phân vùng ảnh là các pixel chưa được lọc, bao gồm liên kết của một vùng hoặc tất cả các điểm ảnh trong vùng đó Để tiếp tục xử lý, số liệu này cần được