BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CƠ KHÍ ----------
BÁO CÁO ĐỒ ÁN TỐT NGHIỆP
NGÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
ĐỀ TÀI:
NGHIÊN CỨU, TÍNH TOÁN CHẾ TẠO ROBOT DI ĐỘNG ĐIỀU KHIỂN BẰNG GIỌNG NÓI
Giáo viên hướng dẫn : ThS. Trần Quốc Bảo
Sinh viên thực hiện : Nguyễn Trần Thế - 2019606801
: Nguyễn Việt Thắng - 2019606711
: Nguyễn Minh Trường - 2019606048
Lớp : Cơ điện tử 4 – K14
Hà Nội – 2023
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀNỘI
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc
PHIẾU GIAO ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP
CHUYÊN NGÀNH CÔNG NGHỆ KỸ THUẬT CƠ ĐIỆN TỬ
Họ tên sinh viên: 1. Nguyễn Trần Thế Mã SV: 2019606801 Lớp: CĐT 4 Khóa:14
2. Nguyễn Việt Thắng Mã SV: 2019606711 Lớp: CĐT 4 Khóa:14
Khóa:14
3. Nguyễn Minh Trường Mã SV: 2019606048 Lớp: CĐT 4 Tên đề tài: Nghiên cứu tính toán chế tạo robot di động điều khiển bằng giọng
nói.
Mục tiêu đề tài:
- Nghiên cứu đặc điểm cấu tạo và nguyên lý làm việc của robot di động.
- Nghiên cứu về phương pháp và thuật toán điều khiển bằng giọng nói, cử
chỉ và bluetooth.
- Mô phỏng và mô hình hóa robot di động làm cơ sở cho việc thiết kế và
đánh giá hoạt động của robot di động.
- Thực hiện tốt các tiêu chí kỹ thuật bao gồm tính bền vững và ổn định cao,
dễ dàng thiết kế.
Kết quả dự kiến
- Quyển báo cáo về kết quả đề tài nghiên cứu tính toán chế tạo robot di
động điều khiển bằng giọng nói.
- Bản vẽ về thiết kế hệ thống cơ khí và lưu đồ thuật toán điều khiển bằng
giọng nói trong robot di động.
- Mô hình robot di động trên phần mềm.
- Mô hình thực tế robot di động điều khiển bằng giọng nói.
Thời gian thực hiện: từ 06/03/2023 đến 07/05/2023.
GIÁO VIÊN HƯỚNG DẪN KHOA CƠ KHÍ
ThS. Trần Quốc Bảo PGS.TS. Hoàng Tiến Dũng
NỘI DUNG THỰC HIỆN
1. Bố cục thuyết minh đề tài:
Nội dung nghiên cứu SV thực hiện
Chương 1: Giới thiệu chung về robot di động và công nghệ điều khiển giọng nói
1.1. Lịch sử nghiên cứu Nguyễn Trần Thế
1.2. Các vấn đề đặt ra Nguyễn Việt Thắng
1.3. Đối tượng nghiên cứu Nguyễn Minh Trường
1.4. Phương pháp thực hiện Nguyễn Trần Thế
1.5. Dự kiến kết quả đạt được Nguyễn Minh Trường
Chương 2: Cơ sở lý thuyết về robot di động và công nghệ điều khiển giọng nói
2.1. Lý thuyết điều khiển robot di động Nguyễn Việt Thắng
2.2. Lý thuyết về công nghệ điều khiển giọng nói Nguyễn Việt Thắng
2.3. Mô hình hệ thống cơ khí robot di động Nguyễn Minh Trường
2.4. Mô hình hệ thống điều khiển robot di động Nguyễn Minh Trường
2.5. Kết luận Chương 2 Nguyễn Trần Thế
Chương 3: Tính toán thiết kế robot di động điều khiển bằng giọng nói
Nguyễn Trần Thế 3.1. Thiết kế phần cứng robot di động điều khiển bằng giọng nói
3.2. Thiết kế hệ thống điều khiển robot di động bằng giọng nói Nguyễn Minh Trường Nguyễn Việt Thắng
Nguyễn Việt Thắng 3.3. Lưu đồ thuật toán điều khiển robot di động điều khiển bằng giọng nói
3.4. Kết luận Chương 3 Nguyễn Minh Trường
Chương 4: Chế tạo mô hình và đánh giá
Nguyễn Trần Thế 4.1. Chế tạo mô hình robot di động điều khiển bằng giọng nói
4.2. Đánh giá hoạt động của hệ thống Nguyễn Việt Thắng
Kết luận và định hướng phát triển
2. Bản vẽ:
TT Tên bản vẽ SV thực hiện Khổ giấy Số lượng
1 Bản vẽ hệ thống cơ khí A3 1 Nguyễn Việt Thắng
2 Bản vẽ hệ thống điều khiển A3 1 Nguyễn Minh Trường
3 Lưu đồ thuật toán điều khiển A3 1 Nguyễn Trần Thế
3. Mô hình/ sản phẩm
Nội dung công việc SV thực hiện
Chế tạo, lắp ráp hệ thống cơ khí
Nguyễn Trần Thế Nguyễn Việt Thắng Nguyễn Minh Trường
Lắp ráp mạch điều khiển
Nguyễn Trần Thế Nguyễn Việt Thắng Nguyễn Minh Trường
LỜI CẢM ƠN
Lời đầu tiên nhóm sinh viên thực hiện đề tài xin gửi lời cảm ơn chân
thành tới các thầy cô giáo trong trường Đại học Công nghiệp Hà Nội nói chung
và các thầy cô giáo trong khoa cơ khí nói riêng đã tận tình giảng dạy, truyền đạt
cho tôi những kiến thức, kinh nghiệm quý báu trong suốt thời gian qua.
Đặc biệt chúng tôi xin gửi lời cảm ơn sâu sắc đến thầy Trần Quốc Bảo đã
định hướng, hướng dẫn tận tình và tạo điều kiện tốt nhất cho chúng tôi trong
suốt quá trình chúng tôi thực hiện đề tài.
Sau cùng chúng tôi xin gửi lời cảm ơn đến các anh, chị, các bạn đã giúp
đỡ, chia sẻ kinh nghiệm, đóng góp ý kiến cho chúng tôi để hoàn thiện thành tốt
tài liệu.
Trong quá trình thực hiện các chủ đề tài liệu này sẽ không tránh khỏi sự
thiếu xót. Rất mong nhận được sự góp ý của quý thầy cô và các bạn để đề tài
được hoàn thiện hơn.
Nhóm thực hiện để xin chân thành cảm ơn!
Nhóm thực hiện đề tài
Nguyễn Trần Thế
Nguyễn Việt Thắng
Nguyễn Minh Trường
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ ROBOT DI ĐỘNG ............................. 1
1.1 Lịch sử nghiên cứu....................................................................................... 1
1.2 Các vấn đề đặt ra .......................................................................................... 2
1.3 Đối tượng nghiên cứu .................................................................................. 3
1.4 Phương pháp thực hiện ................................................................................ 3
1.5 Kết quả dự kiến ............................................................................................ 3
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ ROBOT DI ĐỘNG VÀ CÔNG NGHỆ
ĐIỀU KHIỂN GIỌNG NÓI .................................................................................. 5
2.1 Lý thuyết điều khiển robot di động.............................................................. 5
2.1.1 Khái niệm robot di động ........................................................................ 5
2.1.2 Các phương pháp điều khiển robot di động .......................................... 5
2.1.3 Lý thuyết điều khiển robot bằng cử chỉ. ............................................... 8
2.1.4 Giới thiệu về MIT App Iventor ........................................................... 10
2.1.5 Lý thuyết về công nghệ xử lý ảnh ....................................................... 15
2.1.6. Phát hiện đối tượng và thị giác máy tính ........................................... 18
2.2 Lý thuyết về công nghệ điều khiển giọng nói ........................................... 21
2.2.1 Khái niệm về công nghệ điều khiển giọng nói .................................... 21
2.2.2 Cách thức xây dựng công nghệ điều khiển giọng nói ......................... 21
2.2.3 Các loại hệ thống nhận dạng ............................................................... 23
2.2.4 Các cách nhận dạng giọng nói............................................................. 23
2.2.5 Cách thức triển khai công nghệ giọng nói .......................................... 24
2.2.6 Ứng dụng của công nghệ điều khiển giọng nói .................................. 24
2.2.7 Ưu nhược điểm của công nghệ điều khiển giọng nói ......................... 25
2.3. Mô hình hệ thống cơ khí robot di động .................................................... 26
2.3.1 Khung cơ khí ....................................................................................... 27
2.3.2 Bộ phận truyền động ........................................................................... 27
2.3.3 Bộ phận liên kết ................................................................................... 28
2.4 Mô hình hệ thống điều khiển ..................................................................... 29
2.4.1 Arduino Uno R3 .................................................................................. 29
2.4.2 Module ESP32 ..................................................................................... 31
2.4.3 Module ESP 8266 ................................................................................ 32
2.4.4 Module L298 ....................................................................................... 33
2.4.5 Cảm biến siêu âm HC-SR04 ............................................................... 36
2.4.6 Module cảm biến gia tốc góc MPU6050............................................. 37
2.4.7 Mạch sạc pin lithium 18650 2 cell nối tiếp 16A ................................. 39
2.4.8 Mạch sạc TP4056 ................................................................................ 40
2.4.9 Module ESP 32 – CAM ...................................................................... 41
2.4.10 Động cơ servo SG90 ......................................................................... 43
2.4.11 Động cơ DC giảm tốc vàng v1 .......................................................... 44
2.5 Kết luận chương 2 ...................................................................................... 44
CHƯƠNG 3: TÍNH TOÁN THIẾT KẾ ROBOT DI ĐỘNG ĐIỀU KHIỂN
BẰNG GIỌNG NÓI ............................................................................................ 45
3.1 Thiết kế phần cứng robot di động điều khiển bằng giọng nói ................... 45
3.1.1 Thiết kế sơ đồ khối hệ thống ............................................................... 45
3.1.2 Tính toán thiết kế mô hình .................................................................. 46
3.2 Thiết kế hệ thống điều khiển robot di động bằng giọng nói ...................... 52
3.2.1 Kết nối arduino và cảm biến HC-SR04............................................... 52
3.2.2 Kết nối module ESP32, L298 và động cơ DC .................................... 53
3.2.3 Kết nối ESP32-CAM và laptop ........................................................... 55
3.2.4 Kết nối ESP 8266, MPU6050 và mạch sạc ......................................... 56
3.2.5 Thiết kế mạch in .................................................................................. 57
3.3 Lưu đồ thuật toán điều khiển robot di động bằng giọng nói ..................... 59
3.4 Kết luận chương 3 ...................................................................................... 62
CHƯƠNG 4: CHẾ TẠO MÔ HÌNH VÀ ĐÁNH GIÁ ....................................... 63
4.1 Chế tạo mô hình robot di động điều khiển bằng giọng nói ....................... 63
4.1.1 Lắp ráp và kiểm tra .............................................................................. 63
4.1.2 Thiết kế ứng dụng điều khiển robot di động qua MIT Ap Inventor ... 66
4.2 Đánh giá hoạt động của hệ thống .............................................................. 69
4.2.1 Kết quả ................................................................................................ 69
4.2.2 Đánh giá hoạt động của hệ thống ........................................................ 73
KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN ............................................... 74
TÀI LIỆU THAM KHẢO ................................................................................... 75
DANH MỤC HÌNH ẢNH
Hình 2. 1: Phương pháp Dead-reckoning.............................................................. 6
Hình 2. 2: Hệ thống dẫn đường cột mốc chủ động ............................................... 7
Hình 2. 3: Định vị sử dụng bản đồ ........................................................................ 8
Hình 2. 4: Điều khiển robot thông qua wifi .......................................................... 8
Hình 2. 5: Điều khiển robot di động bằng cử chỉ .................................................. 9
Hình 2. 6: Giao diện quản lý project ................................................................... 10
Hình 2. 7: Giao diện thiết kế (Design) ................................................................ 10
Hình 2. 8: Giao diện lập trình (Blocks) ............................................................... 11
Hình 2. 9: Thiết kế giao diện ............................................................................... 11
Hình 2. 10: Khối lệnh (Code blocks) trong App inventor .................................. 12
Hình 2. 11: Lệnh tích hợp có sẵn ........................................................................ 13
Hình 2. 12: Screen ............................................................................................... 14
Hình 2. 13: Vùng làm việc .................................................................................. 14
Hình 2. 14: Các bước cơ bản trong xử lý ảnh ..................................................... 15
Hình 2. 15: Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối ..... 18
Hình 2. 16 : Hoạt động YOLO ............................................................................ 20
Hình 2. 17: Giao tiếp với bằng google assistant ................................................. 21
Hình 2. 18: Xử lý ngôn ngữ tự nhiên .................................................................. 23
Hình 2. 19: Trợ lý ảo ........................................................................................... 25
Hình 2. 20: Khung Robot .................................................................................... 27
Hình 2. 21:Bánh xe robot .................................................................................... 28
Hình 2. 22: Bộ phận liên kết ............................................................................... 28
Hình 2. 23: Sơ đồ chân Arduino Uno R3 ............................................................ 29
Hình 2. 24: Module ESP32 ................................................................................. 31
Hình 2. 25: Sơ đồ chân của bo 30 chân ESP32 DevKit. ..................................... 32
Hình 2. 26: Sơ đồ chân WeMos D1 Mini ........................................................... 33
Hình 2. 27: Modue L298 ..................................................................................... 34
Hình 2. 28: Sơ đồ chân L298 .............................................................................. 35
Hình 2. 29: Nguyên lý hoạt động theo chiều thuận ............................................ 35
Hình 2. 30: Nguyên lý hoạt động theo chiều nghịch .......................................... 35
Hình 2. 31: Cảm biến siêu âm HC-SR04 ............................................................ 36
Hình 2. 32: Góc nghiêng theo trục X,Y,Z ........................................................... 38
Hình 2. 33: Sơ đồ chân MPU6050 ...................................................................... 38
Hình 2. 34: Mạch sạc pin 18650 ......................................................................... 39
Hình 2. 35: Mạch sạc TP4056 ............................................................................. 40
Hình 2. 36: Sơ đồ dây mạch sạc TP4056 ............................................................ 41
Hình 2. 37: Module ESP32-CAM ....................................................................... 42
Hình 2. 38: Sơ đồ chân ESP32-CAM ................................................................. 42
Hình 2. 39: Servo SG90 ...................................................................................... 43
Hình 2. 40: Sơ đồ chân servo SG90 .................................................................... 43
Hình 3. 1 : Sơ đồ khối hệ thống .......................................................................... 45
Hình 3. 2: Cấu hình của robot với hai bánh chủ động ........................................ 46
Hình 3. 3: Phân tích lực tác dụng lên bánh xe .................................................... 50
Hình 3. 4: Động cơ giảm tốc V1 ......................................................................... 51
Hình 3. 5: Sơ đồ kết nối arduino với cảm biến HC-SR04 .................................. 52
Hình 3. 6: Sơ đồ kết nối module ESP32, L298 và động cơ DC ......................... 53
Hình 3. 7: Sơ đồ kết nối pin và mạch sạch .......................................................... 54
Hình 3. 8: Sơ đồ kết nối ESP32-CAM và laptop ................................................ 55
Hình 3. 9: Kết nối tay cầm .................................................................................. 56
Hình 3. 10: Bản vẽ nguyên lý của ESP32 [6] .................................................... 57
Hình 3. 11: Mạch in của ESP32 .......................................................................... 57
Hình 3. 12: Bản vẽ nguyên lý ESP8266 .............................................................. 58
Hình 3. 13: Mạch in của ESP 8266 ..................................................................... 58
Hình 3. 14: Lưu đồ thuật toán ứng dụng điều khiển ........................................... 59
Hình 3. 15: Lưu đồ thuật toán điều khiển robot .................................................. 60
Hình 3. 16: Lưu đồ thuật toán phát hiện vật ....................................................... 61
Hình 3. 17: Lưu đồ thuật toán xử lý ảnh ............................................................. 62
Hình 4. 1: Động cơ và bánh xe ............................................................................ 63
Hình 4. 2: Khung robot tầng 1 ............................................................................ 64
Hình 4. 3: Tầng 1 robot di động .......................................................................... 64
Hình 4. 4: Tầng 2 robot di động .......................................................................... 65
Hình 4. 5: Tầng 3 robot di động .......................................................................... 65
Hình 4. 6: Hình ảnh robot sau khi lắp rắp thành công ........................................ 66
Hình 4. 7: Tạo dự án mới .................................................................................... 66
Hình 4. 8: Dự án mới ........................................................................................... 66
Hình 4. 9: Kéo các khối vào khung đã có ........................................................... 67
Hình 4. 10: Kéo khối TextBox để nhập địa chỉ IP kết nối với camera. .............. 67
Hình 4. 11: Thiết lập các nút bấm sử dụng khối “ Button” ................................ 67
Hình 4. 12: Các khối chức năng .......................................................................... 68
Hình 4. 13: Giao diện điều khiển tay cầm và giọng nói trên ứng dụng .............. 68
Hình 4. 14: Kết quả điều khiển bằng giọng nói .................................................. 69
Hình 4. 15: Kết quả điều khiển robot bằng cử chỉ .............................................. 70
Hình 4. 16: Kết quả điều khiển bằng bluetooth .................................................. 71
Hình 4. 17: Kết quả xử lý hình ảnh phát hiện được ............................................ 72
Hình 4. 18: Robot phát hiện vật cản trong quá trình quét ................................... 73
DANH MỤC BẢNG BIỂU
Bảng 2. 1: Bảng thông số kỹ thuật Arduino R3 .................................................. 30
Bảng 2. 2: Bảng thông số kỹ thuật L298 ............................................................. 34
Bảng 2. 3: Bảng thông số kỹ thuật cảm biến siêu âm HC-SR04 ....................... 36
Bảng 2. 4: Bảng thông số kỹ thuật mạch sạc pin 18650 ..................................... 39
Bảng 2. 5: Bảng thông số kỹ thuật mạch sạc TP4056 ........................................ 40
Bảng 2. 6: Bảng thông số kỹ thuật động cơ giảm tốc V1 ................................... 44
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ ROBOT DI ĐỘNG
1.1 Lịch sử nghiên cứu
Mobile robot là loại máy tự động có khả năng di chuyển trong một số môi
trường nhất định. Mobile robot hiện đang được các nhà nghiên cứu chú trọng và
hầu như các trường đại học lớn đều có phòng thí nghiệm để tập trung nghiên cứu
loại robot này. Chúng cũng được sử dụng trong các ngành công nghiệp, quân sự
và sinh hoạt..., như trong sing hoạt có robot hút bụi, lau nhà hay cắt cỏ....
Hình dạng robot xuất hiện đầu tiên ở nước Hoa Kỳ, là loại tay máy chép
hình dung trong phòng thí nghiệm vật liệu phóng xạ. Vào những năm 50 của thế
kỷ trước, bên cạnh các loại tay máy chép hình cơ khí, các loại tay máy chép hình
thủy lực điện tử đã xuất hiện. Tuy nhiên, các tay máy thương mại đều có chung
nhược điểm là thiếu sự di động, các tay máy này hoạt động hạn chế quanh vị trí
của nó. Ngược lại, mobile robot là loại robot di động có thể di chuyển từ không
gian này đến không gian khác một cách độc lập hay được điều khiển từ xa, do
đó tạo không gian hoạt động lớn.
Năm 1969: Mowbot là con robot đầu tiên cắt cả bãi cỏ một cách tự động.
The Stanford Cart line follower là một con robot di động có thể di chuyển thông
qua nhận dạng đường kẻ trắng, sử dụng một camera để nhìn. Nó bao gồm một
“kênh truyền thanh” gắn với hệ thống máy tính lớn để tạo ra những tính toán.
Năm 1977: Bộ phim “Chiến tranh giữa các vì sao" phần I, A new Hope
mô tả R2D2, một con robot di động hoạt động độc lập và C3P0, một con robot
hình người. Họ đã khiến công chúng biết đến những con robot.
Năm 1980: Thị hiếu của người tiêu dùng về robot tăng, robot được bảy
bán và mua về để sử dụng trong nhà. Ví dụ RB5X vẫn tồn tại tới ngày nay và
một loạt mẫu robot HERO. Robot The Stanford Cart được phát triển mạnh, nó
đã có thể lái tàu biển vượt qua những trở ngại và tạo lên bản đồ những nơi nó đi
qua.
1
Năm 1990: Cha đẻ của nền robot công nghiệp Joseph Engelberger làm
việc với các đồng nghiệp và đã phát minh ra những con robot tự động trong
ngành y tế và được bán bởi Helpmate. Sở an ninh Mỹ gây quỹ cho dự án
MDARS-I dựa vào robot bảo vệ trong nhà Cybermotion.
Năm 1999: Sony giới thiệu Aibo, một con robot có khả năng đi lại, quan
sát và tác động qua lại tới môi trường. Robot điều khiển từ xa dùng cho quân sự
PackBot cũng được giới thiệu.
Năm 2001: Dự án Swaim-Bots, Swaim-Bots giống những bầy côn trùng
được khởi động. Chúng bao gồm một số lượng lớn các con robot đơn lẻ, có thể
tác động lẫn nhau và cùng nhau thực hiện những nhiệm vụ phức tạp.
Năm 2002: Roomaba, một con robot di động dung trong gia đình, thực
hiện công việc lau nhà xuất hiện. Tiếp tục phát triển hiện nay có rất nhiều loại
robot phục vụ cho con người dần xuất hiện ngày càng thân thiện hơn.
1.2 Các vấn đề đặt ra
Trong quá trình nghiên cứu, tính toán chế tạo robot di động điều khiển
bằng giọng nói cần giải quyết các vấn đề sau:
- Vấn đề cơ khí:
Phân tích tính toán thiết kế kết cấu khung cho robot sao cho robot
chuyển động êm không rung lắc đảm bảo độ chính xác cao khi di
chuyển.
Tính toán lựa chọn vật liệu, linh kiện phù hợp với đề tài.
Lựa chọn các cảm biến điều khiển robot bằng giọng nói, cử chỉ,
bluetooth.
- Vấn đề điều khiển:
Lập trình phầm mềm điều khiển robot bằng giọng nói, cử chỉ,
bluetooth.
2
Robot di động hoạt động chính xác khi được điều khiển qua phần
mềm đã lập.
- Với việc kết hợp giữa phần điều khiển và cơ khí sẽ có một robot di
động hoạt động ổn định.
1.3 Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài là chế tạo robot di động kết hợp viết một
ứng dụng trên nền tảng Android giao tiếp với người điều khiển bằng giọng nói
và cảm ứng thông qua phần mềm. Bên cạnh đó, robot di động còn có thể điều
khiển bằng cử chỉ theo bàn tay. Sử dụng các phần mềm thiết kế mạch in Altium,
phần mềm thiết kế mô hình 3D Solidworks và trình biên dịch Arduino IDE để
lập trình cho vi điều khiển. Sau đó lắp ráp các chi tiết cơ khí cùng các module
chức năng làm sao để chúng có thể hoạt động thống nhất, đồng bộ trên một mô
hình.
1.4 Phương pháp thực hiện
- Tìm kiếm, thu thập các tài liệu về robot di động trên sách, báo và các
trang mạng trên Internet.
- Nghiên cứu những thiết kế đã được các nhóm, các cá nhân phát triển
trong và ngoài nước.
- Tìm hiểu về công nghệ điều khiển bằng giọng nói và ứng dụng của công
nghệ này.
- Nghiên cứu phương pháp và thuật toán điều khiển bằng giọng nói, cử chỉ
và bluetooth ứng dụng vào để điều khiển robot di động.
- Nghiên cứu, lựa chọn và kiểm nghiệm các module, linh kiện phù hợp.
- Tính toán, thiết kế phần khung, vỏ robot, đảm bảo sự linh hoạt cho robot,
giảm khối lượng, đảm bảo tính thẩm mĩ và độ bền.
1.5 Kết quả dự kiến
- Bản vẽ chế tạo cơ khí và bản vẽ hệ thống điều khiển của robot di động.
3
- Mô hình robot di động điều khiển trên phần mềm kết nối qua bluetooth.
- Mô hình robot di động điều khiển bằng giọng nói và cử chỉ bàn tay.
- Bên cạnh đó, mô hình robot báo hiệu vật cản phía trước.
- Mô hình robot di động tích hợp camera theo dõi phía sau và nhận biết vật
cản bằng camera phía trước.
4
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ ROBOT DI ĐỘNG VÀ CÔNG
NGHỆ ĐIỀU KHIỂN GIỌNG NÓI
2.1 Lý thuyết điều khiển robot di động
2.1.1 Khái niệm robot di động
Robot là một loại thiết bị có thể thực hiện những công việc một cách tự
động bằng sự điều khiển của máy tính hoặc các vi mạch điện tử được lập trình.
Robot có một trong các đặc điểm sau đây: do con người sáng tạo ra, có khả năng
nhận biết môi trường xung quanh và tương tác với những vật thể trong môi
trường, có khả năng đưa ra các lựa chọn dựa trên môi trường và được điều khiển
một cách tự động theo những trình tự đã được lập trình trước, có thể điều khiển
được bằng các lệnh để có thể thay đổi tùy theo yêu cầu của người sử dụng, có
thể di chuyển quay hoặc tịnh tiến theo một hay nhiều chiều và khéo léo trong
vận động.
Robot di động là robot có khả năng tự di chuyển, di chuyển trong môi
trường của chúng, không cố định vào một vị trí thực. Robot di động có khả năng
điều hướng một môi trường không kiểm soát được mà không cần các thiết bị
hướng dẫn vật lý hoặc cơ điện. Ngoài ra, robot di động có thể dựa vào các thiết
bị hướng dẫn cho phép nó di chuyển tuyến đường định hướng được xác định
trước trong không gian tương đối được kiểm soát. Nó khác với robot công
nghiệp thường đặt gần cố định và hoạt động bằng các cánh tay.
2.1.2 Các phương pháp điều khiển robot di động
Một robot di động thông minh phải được điều khiển dẫn đường theo một
chiến lược có hiệu quả. Có nhiều nghiên cứu trên thế giới với các thuật giải và
phương pháp khác nhau cho dẫn đường robot trong các môi trường trong nhà và
ngoài trời. Ta sẽ điểm qua một vài phương pháp như sau:
- Phương pháp Dead-reckoning:
Dead-reckoning là phương pháp dẫn đường được sử dụng rộng rãi nhất
đối với robot di động. Phương pháp này cho độ chính xác trong thời gian ngắn,
5
giá thành thấp và tốc độ lấy mẫu rất cao. Tuy nhiên do nguyên tắc cơ bản của
phương pháp Dead-reckoning là tích luỹ thông tin về gia tốc chuyển động theo
thời gian do đó dẫn tới sự tích luỹ sai số. Sự tích luỹ sai số theo hướng sẽ dẫn
đến sai số vị trí lớn tăng tỉ lệ với khoảng cách chuyển động của robot. Tuy nhiên
hầu hết các nhà nghiên cứu đều đồng ý rằng Dead-reakoning là một phần quan
trọng trong hệ thống dẫn đường robot, các lệnh dẫn đường sẽ được đơn giản hoá
nếu độ chính xác của phương pháp Dead-reckoning được cải thiện. Phương pháp
dead-reakoning dựa trên phương trình đơn giản và thực hiện được một cách dễ
dàng, sử dụng dữ liệu từ bộ mã hoá số vòng quay bánh xe. Dead-reckoning dựa
trên nguyên tắc là chuyển đổi số vòng quay bánh xe thành độ dịch tuyến tính
tương ứng của robot. Nguyên tắc này chỉ đúng với giá trị giới hạn. Có một vài lý
do dẫn đến sự không chính xác trong việc chuyển từ số gia vòng quay bánh xe
sang chuyển động tuyến tính. Tất cả các nguồn sai số này được chia thành 2
nhóm: sai số hệ thống và sai số không hệ thống. Để giảm sai số Dead-reckoning
cần phải tăng độ chính xác động học cũng như kích thước tới hạn.
Hình 2. 1: Phương pháp Dead-reckoning
- Hệ thống dẫn đường cột mốc chủ động:
Hệ thống dẫn đường cột mốc chủ động là hệ thống dẫn đường được sử
dụng phổ biến nhất trên tàu biển và máy bay. Hệ thống này cung cấp thông tin vị
trí rất chính xác với quá trình xử lý tối thiểu. Hệ thống cho phép tốc độ lấy mẫu
6
và độ tin cậy cao nhưng đi kèm với nó là giá thành cao trong việc thiết lập và
duy trì. Cột mốc được đặt tại các vị trí chính xác sẽ cho phép xác định toạ độ
chính xác của vật thể. Có 2 phương pháp đo dùng trong hệ thống cột mốc chủ
động, đó là phép đo 3 cạnh tam giác và phép đo 3 góc tam giác. Phép đo 3 cạnh
tam giác. Phép đo 3 cạnh tam giác xác định vị trí vật thể dựa trên khoảng cách
đo được tới cột mốc biết trước. Trong hệ thống dẫn đường sử dụng phép đo này
thông thường có ít nhất là 3 trạm phát đặt tại các vị trí biết trước ngoài môi
trường và 1 trạm nhận đặt trên robot. Hoặc ngược lại có 1 trạm phát đặt trên rô
bốt và các trạm nhận đặt ngoài môi trường. Sử dụng thông tin về thời gian
truyền của chùm tia hệ thống sẽ tính toán khoảng cách giữa các trạm phát cố
định và trạm nhận đặt trên robot. GPS (Global Positionings Systems) - hệ thống
định vị toàn cầu hoặc hệ thống cột mốc sử dụng cảm biến siêu âm là các ví dụ
khi sử dụng phép đo 3 cạnh tam giác, phép đo 3 góc tam giác.
Hình 2. 2: Hệ thống dẫn đường cột mốc chủ động
- Định vị sử dụng bản đồ:
Robot sử dụng các cảm biến được trang bị để tạo ra một bản đồ cục bộ
môi trường xung quanh. Bản đồ này sau đó so sánh với bản đồ toàn cục lưu trữ
sẵn trong bộ nhớ. Nếu tương ứng, robot sẽ tính toán vị trí và góc hướng thực tế
của nó trong môi trường.
7
Hình 2. 3: Định vị sử dụng bản đồ
- Ngoài ra robot di động có thể điều khiển từ xa bằng tay được điều khiển
thông qua wifi, hồng ngoại hay bluetooth…
Hình 2. 4: Điều khiển robot thông qua wifi
2.1.3 Lý thuyết điều khiển robot bằng cử chỉ.
Nhiều chủ đề liên quan đến giao tiếp giữa con người và robot đã được
khám phá trong những năm gần đây và nhiều phương pháp nghiên cứu liên tục
được công bố. Nhiều giao diện thân thiện với người dùng đã được giới thiệu
bằng lời nói, tầm nhìn, cử chỉ,... Trong số các nghiên cứu sử dụng cử chỉ, Mitra
et al. đã thảo luận về phương pháp sử dụng nhiều loại cảm biến để thu tín hiệu
8
nhằm xác định mẫu cử chỉ. Một trong những mục tiêu của bài báo này là hiểu cử
chỉ tay sử dụng cảm biến IMU.
Hình 2. 5: Điều khiển robot di động bằng cử chỉ
Ngày nay, robot đang là lĩnh vực mới nổi trong lĩnh vực công nghệ. Robot
là một mô hình cơ điện, được vận hành bởi một chương trình máy tính. Nó có
thể là tự động hoặc bán tự động. Một robot tự động không có giao diện của con
người. Phần lớn các robot công nghiệp là tự động vì chúng yêu cầu tốc độ cao.
Tuy nhiên, một số lĩnh vực có yêu cầu về robot bán tự động hoặc do con người
điều khiển. Robot di động được sử dụng trong môi trường gia đình, môi trường
cần sự tỉ mỉ,... trong bối cảnh ngày nay. Ví dụ như robot trinh thám, robot vận
chuyển,... hiện đang làm việc xung quanh chúng ta và giúp chúng ta rất nhiều
trong các hoạt động thường ngày. Có một số phương pháp để tương tác với
những robot này, chẳng hạn như giọng nói, cử chỉ và cần điều khiển. Nó có
nhược điểm là không thích hợp để điều khiển từ xa liên tục. Trong những trường
hợp như vậy, cử chỉ điều khiển thích hợp hơn cho điều khiển của robot. Có một
số các phương pháp để thu thập cử chỉ của con người mà máy móc có thể diễn
giải được. Găng tay dữ liệu được sử dụng để ghi lại thông tin cử chỉ. Dữ liệu cử
chỉ cũng có thể được thu thập qua Bluetooth hoặc sóng hồng ngoại, công nghệ
xúc giác, quang học hoặc chuyển động. Gia tốc kế là thiết bị tốt nhất để kiểm
soát chuyển động nhỏ của bộ điều khiển cánh tay.
9
2.1.4 Giới thiệu về MIT App Iventor
Giới thiệu chung.
MIT App Inventor dành cho Android là một ứng dụng web nguồn mở ban
đầu được cung cấp bởi Google và hiện tại được duy trì bởi Viện Công nghệ
Massachusetts (MIT). Nền tảng cho phép nhà lập trình tạo ra các ứng dụng phần
mềm cho hệ điều hành Android. Bằng cách sử dụng giao diện đồ họa, nền tảng
cho phép người dùng kéo và thả các khối mã (blocks) để tạo ra các ứng dụng có
thể chạy trên thiết bị Android.
Các giao diện của MIT App Inventor:
- Giao diện quản lý project
Hình 2. 6: Giao diện quản lý project
- Giao diện thiết kế (Design)
Hình 2. 7: Giao diện thiết kế (Design)
10
- Giao diện lập trình (Blocks)
Hình 2. 8: Giao diện lập trình (Blocks)
Thiết kế giao diện
Hình 2. 9: Thiết kế giao diện
11
Ứng dụng có thể có nhiều cửa sổ giao diện, trong MIT AI2 gọi là
các Screen.
Palette: Chứa các thành phần có thể đặt lên trên Screen như:
Button, Label, Image, Listview, Video player, ….
Layout: Chứa các khung giao diện theo chiều dọc, chiều ngang, ...
Media: Bao gồm các đa phương tiện: camera, âm thanh, giọng nói,
dịch, video, …
Drawing and Animation: Chứa các đối tượng động, hình ảnh
động, ...
Maps: Chứa vị trí, đánh dấu, các đối tượng địa lý, ...
Charts: Bao gồm các khung biểu đồ cột, biểu đồ tròn, …
Sensors: Chứa các đối tượng liên quan đến cảm biến như các biểu
tượng như đồng hồ, độ dài, nhiệt độ, ánh sáng, tốc độ, ...
Social: Chứa các biểu tượng liên quan đến cách thức liên lạc, các
mạng xã hội liên kết, …
Connectivity: Chứa các biểu tượng như kết nối bluetooth, kết nối
qua web, ...
Hình 2. 10: Khối lệnh (Code blocks) trong App inventor
12
- Lệnh tích hợp có sẵn
Hình 2. 11: Lệnh tích hợp có sẵn
- Những nhóm lệnh tích hợp sẵn (Build-in) gồm những nhóm như sau:
Control: là nhóm lệnh liên quan đến các câu lệnh điều kiện, điều khiển,
vòng lặp, ...
Logic: là những nhóm giá trị liên quan đến logic như true, false, phủ
định, các phép so sánh, ...
Math: là nhóm lệnh, giá trị liên quan đến tính toán, con số, ...
Text: là nhóm lệnh những câu lệnh xử lý và làm việc với chuỗi, xâu ký
tự, ...
Lists: là nhóm lệnh làm việc với danh sách.
Colors: là nhóm lệnh làm việc với màu sắc.
Variables: là nhóm giúp bạn tạo, khai thác và xử lý các biến (toàn cục
hoặc địa phương).
Procedure: giúp bạn xây dựng chương trình con, thủ tục, ...
- Screen
13
Hình 2. 12: Screen
Screen hiển thị danh sách những đối tượng mà bạn đã kéo thả trên
màn hình hiện tại. Với mỗi đối tượng như vậy sẽ có những câu lệnh
nhất định để tương tác với nó.
Những bài viết về các đối tượng sẽ được trình bày ở các bài viết sau.
- Vùng làm việc
Hình 2. 13: Vùng làm việc
Vùng làm việc của blocks có thể chia thành 4 phần như sau:
+ 1: Vùng chứa những khối lệnh đề xuất từ một đối tượng mà bạn đã
chọn từ blocks, bạn có thể kéo thả những khối lệnh này vào vùng làm
việc thật sự để trở thành lệnh cho ứng dụng thực thi.
14
+ 2: Những khối lệnh đã được kéo ra từ những khối lệnh đề xuất. Ứng
dụng sẽ thực thi những khối lệnh này.
+ 3: Backpack: Giúp bạn sao chép và dán các khối lệnh đến màn hình
khác hoặc project khác.
+ 4: Thùng rác: Để xóa những khối lệnh, bạn chỉ cần kéo thả chúng vào
thùng rác này.
2.1.5 Lý thuyết về công nghệ xử lý ảnh
Xử lý ảnh [1] là một lĩnh vực mang tính khoa học và công nghệ. Nó là
một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ
phát triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc
biệt là máy tính chuyên dụng riêng cho nó.
Bước đầu tiên trong quá trình xử lý ả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
thu qua camera là các ảnh tương tự (loại camera ống kiểu CCIR). Gần đây, với
sự phát triển của công nghệ, ảnh màu hoặc đen trắng được lấy ra từ camera, sau
đó nó được chuyển trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo. Mặt
khác, ảnh cũng có thể tiếp nhận từ vệ tinh, có thể quét từ ảnh chụp bằng máy
quét ảnh. Hình dưới đây mô tả các bước cơ bản trong xử lý ảnh.
Hình 2. 14: Các bước cơ bản trong xử lý ảnh
15
Sơ đồ trên gồm các phần sau:
Phần thu nhận ảnh (Image Acquisition)
Ảnh có thể nhận qua camera màu hoặc đen trắng. Thưởng ảnh nhận qua
camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh
25 dòng), cũng có loại camera đã số hoá (như loại CCD – Change Coupled
Device) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh.
Camera thường dùng là loại quét dòng ; ảnh tạo ra có dạng hai chiều. Chất
lượng một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh
sáng, phong cảnh).
Tiền xử lý (Image Processing)
Sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên cần đưa vào bộ
tiền xử lý để nâng cao chất lượng. Chức năng chính của bộ tiền xử lý là lọc
nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn.
Phân đoạn (Segmentation) hay phân vùng ảnh
Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để
biểu diễn phân tích, nhận dạng ảnh. Ví dụ: để nhận dạng chữ (hoặc mã vạch)
trên phong bì thư cho mục đích phân loại bưu phẩm, cần chia các câu, chữ về
địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để
nhận dạng. Đây là phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây
lỗi, làm mất độ chính xác của ảnh. Kết quả nhận dạng ảnh phụ thuộc rất nhiều
vào công đoạn này.
Biểu diễn ảnh (Image Representation)
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân
đoạn) cộng với mã liên kết với các vùng lận cận. Việc biến đổi các số liệu này
thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính. Việc chọn
các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn
với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm
cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận
được. Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc
trưng của từng ký tự giúp phân biệt ký tự này với ký tự khác.
16
Nhận dạng và nội suy (Image Recognition and Interpretation)
Nhận dạng ảnh là quá trình xác định ảnh. Quá trình này thường thu được
bằng cách so sảnh với mẫu chuẩn đã được học (hoặc lưu) từ trước. Nội suy là
phán đoán theo ý nghĩa trên cơ sở nhận dạng. Ví dụ: một loạt chữ số và nét gạch
ngang trên phong bì thư có thể được nội suy thành mã điện thoại. Có nhiều cách
phân loại ảnh khác nhau về ảnh. Theo lý thuyết về nhận dạng, các mô hình toán
học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
- Nhận dạng theo tham số.
- Nhận dạng theo cấu trúc.
Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng
trong khoa học và công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký
điện tử), nhận dạng văn bản (Text), nhận dạng vân tay, nhận dạng mã vạch, nhận
dạng mặt người...
Cơ sở tri thức (Knowledge Base)
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ
sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phủ kéo theo
nhiễu. Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các
phương pháp toán học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt
chước quy trình tiếp nhận và xử lý ảnh theo cách của con người. Trong các bước
xử lý đó, nhiều khâu hiện nay đã xử lý theo các phương pháp trí tuệ con người.
Vì vậy, ở đây các cơ sở tri thức được phát huy.
Mô tả (biểu diễn ảnh)
Từ hình ảnh các bước cơ bản trong xử lý ảnh, ảnh sau khi số hoá sẽ được
lưu vào bộ nhớ, hoặc chuyển sang các khâu tiếp theo để phân tích. Nếu lưu trữ
ảnh trực tiếp từ các ảnh thô, đòi hỏi dung lượng bộ nhớ cực lớn và không hiệu
quả theo quan điểm ứng dụng và công nghệ. Thông thường, các ảnh thô đó được
đặc tả (biểu diễn) lại (hay đơn giản là mã hoá) theo các đặc điểm của ảnh được
gọi là các đặc trưng ảnh (Image Features) như: biến ảnh (Boundary), vùng ảnh
(Region). Một số phương pháp biểu diễn thường dùng:
- Biểu diễn bằng mã chạy (Run-Length Code)
17
- Biểu diễn bằng mã xích (Chaine-Code)
- Biểu diễn bằng mã tứ phân (Quad-Tree Code)
Tuy nhiên trong thực tế các quá trình sử dụng ảnh số không nhất thiết phải
qua hết các khâu đó tùy theo đặc điểm ứng dụng. Hình dưới đây cho sơ đồ phân
tích và xử lý ảnh và lưu đồ thông tin giữa các khối một cách khá đầy đủ. Ảnh
sau khi được số hóa được nén, lưu lại để truyền cho các hệ thống khác sử dụng
hoặc để xử lý tiếp theo. Mặt khác, ảnh sau khi số hóa có thể bỏ qua công đoạn
nâng cao chất lượng (khi ảnh đủ chất lượng theo một yêu cầu nào đó) để chuyển
tới khâu phân đoạn hoặc bỏ tiếp khâu phân đoạn chuyển trực tiếp tới khâu trích
chọn đặc trưng. Hình dưới đây cũng chia các nhánh song song như: nâng cao
chất lượng ảnh có hai nhánh phân biệt: nâng cao chất lượng ảnh (tăng độ sáng,
độ tương phản, lọc nhiễu) hoặc khôi phục ảnh (hồi phục lại ảnh thật khi ảnh
nhận được bị méo)...
Hình 2. 15: Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối
2.1.6. Phát hiện đối tượng và thị giác máy tính
Phát hiện đối tượng
Object Detection là một bài toán quan trọng trong lĩnh vực Computer
Vision, thuật toán Object Detection được chia thành 2 nhóm chính:
- Họ các mô hình RCNN ( Region-Based Convolutional Neural
Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.
18
- Họ các mô hình về YOLO (You Only Look Once) dùng để nhận dạng
đối tượng được thiết kế để nhận diện các vật thể real-time.
Ta có thể điểm qua R-CNN bao gồm : Fast R-CNN, Faster R-CNN. Thuật
toán tạo đề xuất khu vực trong R-CNN và R-CNN nhanh được tách ra khỏi
CNN. Thuật toán này không thể đào tạo được và đòi hỏi rất nhiều tính toán.
Trong phương pháp Faster R-CNN, một CNN bổ sung được sử dụng để tạo các
đề xuất khu vực thay vì thuật toán tìm kiếm chọn lọc. Đầu vào của CNN bổ
sung, được gọi là RPN (mạng đề xuất khu vực), là bản đồ tính năng cuối cùng
được trích xuất từ mô hình CNN và đầu ra là các đề xuất khu vực được tạo. Khi
tích hợp quy trình tạo đề xuất khu vực vào mô hình CNN chính, tốc độ và độ
chính xác trong việc phát hiện đã tăng lên.
Phương pháp YOLO (You Only Look Once) là một trong những phương
pháp phát hiện một giai đoạn, coi toàn bộ quá trình phát hiện là một bài toán hồi
quy đơn lẻ. Thay vì tạo các đề xuất vùng, hình ảnh đầu vào được chia thành một
số lưới và một số hộp giới hạn cụ thể được gán cho mỗi lưới. Với phương pháp
YOLO, 45 hình ảnh có thể được xử lý trong một giây, điều này có nghĩa là việc
phát hiện đối tượng bằng YOLO có thể được áp dụng cho hệ thống thời gian
thực.
Yolo là một mô hình mạng CNN cho việc phát hiện, nhận dạng, phân loại
đối tượng. Yolo được tạo ra từ việc kết hợp giữa các convolutional layers và
connected layers.Trong đó các convolutional layers sẽ trích xuất ra các feature
của ảnh, còn full-connected layers sẽ dự đoán ra xác suất đó và tọa độ của đối
tượng.
Hoạt động YOLO
Đầu vào của mô hình là một ảnh, mô hình sẽ nhận dạng ảnh đó có đối
tượng nào hay không, sau đó sẽ xác định tọa độ của đối tượng trong bức ảnh.
Ảnh đầu vào được chia thành thành S×S ô thường thì sẽ là 3 × 3, 7 × 7, 9 × 9...
việc chia ô này có ảnh hưởng tới việc mô hình phát hiện đối tượng.
19
Hình 2. 16 : Hoạt động YOLO
Với input là 1 ảnh, đầu ra mô hình là một ma trận 3 chiều có kích thước S
× S × (5 × N + M) với số lượng tham số mỗi ô là (5 × N + M) với N và M lần
lượt là số lượng box và class mà mỗi ô cần dự đoán. Ví dụ với hình ảnh trên chia
thành 7 × 7 ô, mỗi ô cần dự đoán 2 bounding box và 3 object : con chó, ô tô, xe
đạp thì output là 7 × 7 × 13, mỗi ô sẽ có 13 tham số, kết quả trả về ( 7 × 7 × 2 =
98 ) bounding box. Chúng ta sẽ cùng giải thích con số (5 × N + M) được tính
như thế nào. Dự đoán mỗi bounding box gồm 5 thành phần : (x, y, w, h,
prediction) với (x, y ) là tọa độ tâm của bounding box, (w, h) lần lượt là chiều
rộng và chiều cao của bounding box, prediction được định nghĩa Pr(Object)∗
IOU(pred,truth). Với hình ảnh trên như ta tính mỗi ô sẽ có 13 tham số, ta có thể
hiểu đơn giản như sau tham số thứ 1 sẽ chỉ ra ô đó có chứa đối tượng nào hay
không P(Object), tham số 2, 3, 4, 5 sẽ trả về x, y ,w, h của Box1. Tham số 6, 7,
8, 9, 10 tương tự sẽ Box2, tham số 11, 12, 13 lần lượt là xác suất ô đó có chứa
object1 (P(chó|object), object2(P(ô tô|object)), object3(P( xe đạp|object)). Lưu ý
rằng tâm của bounding box nằm ở ô nào thì ô đó sẽ chứa đối tượng, cho dù đối
tượng có thể ở các ô khác thì cũng sẽ trả về là 0. Vì vậy việc mà 1 ô chứa 2 hay
nhiều tâm của bouding box hay đối tượng thì sẽ không thể detect được, đó là
một hạn chế của mô hình YOLO, vậy ta cần phải tăng số lượng ô chia trong 1
20
ảnh lên đó là lí do vì sao mình nói việc chia ô có thể làm ảnh hưởng tới việc mô
hình phát hiện đối tượng.
2.2 Lý thuyết về công nghệ điều khiển giọng nói
2.2.1 Khái niệm về công nghệ điều khiển giọng nói
Điều khiển bằng giọng nói, còn được gọi là hỗ trợ giọng nói, là một
chương trình phần mềm hoặc thiết bị phần cứng có khả năng giải mã giọng nói
của con người, chuyển giọng nói thành tín hiệu điều khiển các thiết bị, cho phép
vận hành rảnh tay các thiết bị. Cốt lõi của công nghệ giọng nói là khả năng lấy
giọng nói của người dùng làm đầu vào hoặc lệnh để tạo ra đầu ra mong muốn
hoặc thực hiện một tác vụ.
Hình 2. 17: Giao tiếp với bằng google assistant
- Kết cấu của công nghệ giọng nói gồm 2 phần chính:
Phần mềm (bao gồm giao diện người dùng, hay còn gọi là “bộ mặt”
của ứng dụng, bao gồm giao diện người dùng, UI, UX; phụ trợ chạy
các dịch vụ chạy nền như AI).
Phần cứng (thiết bị thông minh: máy tính, điện thoại thông minh, loa
thông minh, các thiết bị IoT khác,...)
2.2.2 Cách thức xây dựng công nghệ điều khiển giọng nói
Thông thường một bộ máy giọng nói sẽ có hai phần:
- Phần thứ nhất gọi là Speech synthesizer (còn gọi là Text to Speech hay
TTS). Đây là một trình tổng hợp giọng nói và thiết bị hoặc ứng dụng xài để
21
tương tác với người dùng, ví dụ: đọc văn bản trên màn hình, thông báo về tiến
độ chạy một tác vụ nào đó.
- Phần thứ hai là một công nghệ nhận dạng cho phép phần mềm biết được
người dùng đang nói gì, từ đó chuyển thể thành lệnh để thiết bị thực thi hoặc
chuyển đổi thành các kí tự nhập liệu. Nói cách khác, đây là thứ thay thế cho bàn
phím của chúng ta.
- Một ứng dụng nhận dạng giọng nói lý tưởng sẽ bao gồm cả hai bộ phận
nói trên, nhưng một số phần mềm chỉ xài một cái rồi từ từ nâng cấp sau.
- Thoạt nhìn thì việc triển khai công nghệ nhận dạng giọng nói khá đơn
giản, nhưng thực chất thì không phải như thế:
Thứ nhất, các nhà phát triển phải xây dựng nên một công nghệ có
thể lắng nghe, phân tích và phiên dịch một cách chính xác giọng
nói của người dùng. Nếu không thì làm sao ứng dụng biết bạn đang
nói gì, còn nếu độ chính xác không cao thì cũng như không.
Thứ hai, vấn đề bản địa hóa (localization) cũng là một chuyện làm
đau đầu các lập trình viên. Mỗi quốc gia sẽ có ngôn ngữ của riêng
mình, vấn đề đó là làm thế nào để có thể hỗ trợ càng nhiều ngôn
ngữ càng tốt.
- Có một kĩ thuật được nhắc đến nhiều trong thời gian gần đây, đó là xử
lý ngôn ngữ tự nhiên (Natural Language Processing – NLP). Nó là tập hợp của
nhiều thuận toán phức tạp nhằm phân tích mệnh lệnh của người dùng nhưng
không bắt buộc họ phải nói theo một cấu trúc câu định sẵn. Nhiều năm trước khi
muốn điều khiển bằng giọng nói, bạn chỉ có thể nói những thứ như “Mở bản
đồ”, “Nhắn tin cho vợ”, “Báo thức lúc 5 giờ sáng”. Còn bây giờ thì nhờ có NLP,
chúng ta có thể nói các câu như “Siri, vui lòng nhắn tin cho vợ của tôi là tôi sẽ
về trễ nhé”, hay như “Hãy đánh thức tôi lúc 5 giờ sáng ngày mai”.
22
Hình 2. 18: Xử lý ngôn ngữ tự nhiên
2.2.3 Các loại hệ thống nhận dạng
- Hệ thống phụ thuộc vào loa: Yêu cầu đào tạo trước khi sử dụng và do
đó phụ thuộc vào loa để hoạt động. Người dùng có thể phải đọc một loạt các từ,
cụm từ và câu để giúp đào tạo hệ thống.
- Hệ thống loa độc lập: Không yêu cầu đào tạo trước khi sử dụng và đã có
khả năng hiểu hầu hết giọng nói của người dùng. Nhiều trợ lý giọng nói phổ
biến sử dụng hệ thống loa độc lập.
- Nhận dạng giọng nói rời rạc: Yêu cầu người dùng nói từng từ một hoặc
tạm dừng giữa mỗi từ, vì hệ thống chỉ có thể hiểu từng từ và nghĩa của chúng.
- Nhận dạng giọng nói liên tục: Cho phép người dùng nói với tốc độ bình
thường khi tương tác với hệ thống.
- Ngôn ngữ tự nhiên: Có thể hiểu lời nói của người dùng và ý nghĩa của
chúng, đồng thời có thể trả lời họ, cung cấp câu trả lời cho câu hỏi, hoàn thành
mệnh lệnh hoặc cung cấp thông tin được yêu cầu.
2.2.4 Các cách nhận dạng giọng nói
Mặc dù có nhiều cách để phân loại công nghệ nhận dạng giọng nói, nhưng
để đơn giản, chúng ta có thể chia thành hai loại hệ thống nhận dạng giọng nói:
Phụ thuộc vào người nói và không phụ thuộc vào người nói.
Đối với các hệ thống phụ thuộc vào người nói, người dùng phải cung cấp
bộ dữ liệu đào tạo (các đoạn giọng nói của họ) cho hệ thống để hệ thống đào tạo
23
(làm quen) trước khi hệ thống có thể bắt đầu nhận dạng giọng nói của người
dùng.
Với loại hệ thống không phụ thuộc vào người nói, người dùng không cần
cung cấp bộ dữ liệu đào tạo. Nhược điểm của hệ thống này là nó chỉ có thể nhận
dạng một lượng từ hạn chế (được hệ thống nạp trong khi sản xuất).
Do đó, công nghệ giọng nói được áp dụng trong các sản phẩm dành cho
người tiêu dùng hầu hết ở dạng hệ thống phụ thuộc vào người nói.
2.2.5 Cách thức triển khai công nghệ giọng nói
Có rất nhiều cách thức triển khai công nghệ giọng nói, nhưng được dùng
nhiều nhất thì có thể kể đến 2 loại sau:
- Điện toán đám mây: Trong trường hợp này, việc nhận dạng, xử lý ngôn
ngữ sẽ diễn ra trên máy chủ của các công ty cung cấp dịch vụ. Phương pháp đám
mây giúp việc nhận dạng được chính xác hơn, ứng dụng thì có dung lượng nhỏ,
nhưng bù lại thì thiết bị ở phía người dùng phải luôn kết nối với internet. Độ trễ
trong quá trình gửi giọng nói từ máy lên server rồi trả kết quả từ server về lại
máy cũng là những thứ đáng cân nhắc.
- Tích hợp thẳng vào ứng dụng: Với phương thức này, quá trình xử lý
giọng nói sẽ diễn ra trong nội bộ ứng dụng, không cần giao tiếp với bên ngoài,
chính vì thế tốc độ sẽ nhanh hơn. Người dùng cũng không bắt buộc phải kết nối
vào mạng thường trực. Tuy nhiên, giải pháp này gặp nhược điểm đó là khi có
cập nhật hoặc thay đổi gì đó về bộ máy nhận dạng, nhà sản xuất sẽ phải cập nhật
lại cả một app, trong khi với phương thức đám mây thì những thay đổi đó chỉ
cần làm ở phía server. Kích thước ứng dụng cũng sẽ tăng lên, có thể lên tới cả
vài trăm MB.
2.2.6 Ứng dụng của công nghệ điều khiển giọng nói
Như bạn có thể đoán được, tiềm năng của công nghệ giọng nói là rất lớn
với các ứng dụng trong nhiều lĩnh vực. Dưới đây là một vài ứng dụng tiêu biểu:
- Chăm sóc sức khỏe: ghi lại lịch sử y tế của bệnh nhân mà không cần phải
tương tác kỹ thuật số với EHR (hồ sơ sức khỏe điện tử).
24
- Trợ lý ảo (hoặc trợ lý giọng nói): có thể thực hiện hầu hết mọi tác vụ mà
một thiết bị thông minh có thể thực hiện chỉ bằng giọng nói. Một số trợ lý ảo sử
dụng công nghệ giọng nói nổi tiếng có thể kể đến như Google Assistant, Apple’s
Siri, Amazon’s Alexa,…
- Duyệt web mà không cần chạm vào bất kỳ phím nào.
- Phụ đề tự động: giọng nói từ clip âm thanh sẽ được chuyển từ lời nói
thành văn bản và được đồng bộ hóa tự động.
- Xe: Nhiều xe ô tô hiện nay có công nghệ kích hoạt bằng giọng nói được
tích hợp trực tiếp vào chính chiếc xe. Điều này bao gồm những thứ như loa xe
hơi thông minh và các điểm truy cập xe hơi được kết nối để cho phép lái xe rảnh
tay dễ dàng và an toàn hơn.
- Thiết bị gia dụng: Nhiều thiết bị, thiết bị và hệ thống hiện được kết nối
với internet và với nhau để giúp mọi người kiểm soát, bảo vệ và tận hưởng ngôi
nhà của họ dễ dàng hơn bao giờ hết. Nhiều thiết bị nhà thông minh khác nhau,
chẳng hạn như bộ điều nhiệt và hệ thống an ninh, cũng sử dụng kích hoạt bằng
giọng nói cho cùng mục đích đó.
Hình 2. 19: Trợ lý ảo
2.2.7 Ưu nhược điểm của công nghệ điều khiển giọng nói
Ưu điểm:
- Khả năng truy cập: Kích hoạt bằng giọng nói cho phép nhiều người truy
cập công nghệ kỹ thuật số, thiết bị được kết nối và internet dễ dàng hơn. Nó cải
thiện khả năng tiếp cận cho người khuyết tật, đặc biệt là đối với những người bị
suy giảm chức năng thị lực hoặc vận động.
25
- Kết nối: Kích hoạt bằng giọng nói có thể dễ dàng hoạt động với các công
nghệ và thiết bị được kết nối khác trong nhà bạn, chẳng hạn như thiết bị thông
minh và loa. Kết nối này làm cho việc hoàn thành các nhiệm vụ khác nhau trong
nhà của bạn trở nên đơn giản và nhanh chóng hơn nhiều.
- Thuận tiện: Sử dụng kích hoạt bằng giọng nói có thể thuận tiện hơn đáng
kể so với việc nhập nội dung nào đó trên bàn phím hoặc điện thoại thông minh
hoặc hoàn thành tác vụ theo cách thủ công. Trong số những người Mỹ sử dụng
trợ lý kỹ thuật số, 55% cho rằng khả năng sử dụng thiết bị của họ ở chế độ rảnh
tay là lý do chính khiến họ sử dụng tính năng kích hoạt bằng giọng nói. Khi sử
dụng công nghệ kích hoạt bằng giọng nói, bạn có thể sử dụng trí óc và đôi tay
của mình để làm việc khác.
- Cá nhân hóa: Công nghệ kích hoạt bằng giọng nói tạo ra trải nghiệm kỹ
thuật số được cá nhân hóa hơn cho người dùng. Điều này có thể bao gồm ghi
nhớ thông tin từ các tương tác trước đó, đưa ra lời nhắc hữu ích và phân biệt
giữa nhiều người dùng chỉ bằng giọng nói. Nói cách khác, bạn càng sử dụng
kích hoạt bằng giọng nói nhiều thì bạn càng sử dụng dễ dàng và tốt hơn.
Nhược điểm:
- Chi phí: Các thiết bị khác sử dụng tính năng kích hoạt bằng giọng nói,
bao gồm cả loa và thiết bị thông minh có thể sẽ có chi phí khá cao.
- Không chính xác: Mặc dù độ chính xác của công nghệ kích hoạt bằng
giọng nói đã tăng lên đáng kể trong vài năm qua, nhưng nó vẫn chưa
hoàn hảo. Ta có thể vẫn gặp phải một số lỗi như không nhận diện được
giọng nói,…
2.3. Mô hình hệ thống cơ khí robot di động
Mô hình hệ thống cơ khí robot di động bao gồm:
- Khung cơ khí
- Bộ phận truyền động
- Bộ phận liên kết
26
2.3.1 Khung cơ khí
Khung robot đóng vai trò vô cùng quan trọng trong việc làm tăng khả
năng hoạt động ổn định của robot. Khung, vỏ của robot giúp kết nối, cố định và
sắp xếp hợp lý các bộ phận của robot như bánh xe, các linh kiện, bảng mạch và
pin. Từ đó, giúp cho robot có được sự ổn định và vững chắc trong quá trình vận
hành. Ngoài ra, phần khung vỏ còn có tác dụng tăng tính cá nhân hóa và thẩm
mỹ cho robot.
Yêu cầu cơ bản nhất cho phần đế robot là độ cứng vững và độ đồng phẳng
“tương đối” trên địa hình di chuyển, tất nhiên không phải địa hình di chuyển nào
cũng giống nhau về nhiều yếu tố như độ phẳng, độ ma sát trên bánh xe. Hai mặt
phẳng để đặt pin và các linh kiện cũng như mạch in được làm bằng nhựa mica.
Hoạt động của robot di động chủ yếu ở những nới có điều kiện nhiệt độ,
độ ẩm, địa hình thích hợp nên chọn mica làm phần khung robot. Mica là một
loại nhựa PPC tổng hợp, do đặc tính bền, dẻo, dễ sử dụng của mica mà ta có thể
dùng dao cắt hay các máy cắt cnc (máy tự động có đầu cắt là hợp kim cứng)
hoặc các máy laser (đầu cắt sử dụng tia laser) để cắt mica theo thiết kế.
Hình 2. 20: Khung Robot
2.3.2 Bộ phận truyền động
Bộ phận truyền động: Robot di động được dẫn động bằng 4 bánh chủ
động. Các bánh chủ động được điều khiển bởi 4 động cơ giảm tốc. Để đạt được
tính linh hoạt trong di chuyển thì chúng em sử dụng bánh xe V1 với kích thước
màu sắc đã chọn trước. Bánh xe mô hình V1 được thiết kế để sử dụng với động
27
cơ giảm tốc V1. Bánh xe mô hình V1 là loại bánh được sử dụng nhiều nhất
trong các thiết kế robot hiện nay vì có giá thành phải chăng, chất lượng tốt.
Ưu điểm bánh xe V1:
- Kích thước nhỏ gọn.
- Bánh có chất lượng tốt.
- Chuyển hướng nhanh.
- Di chuyển rất êm.
- Phù hợp cho nhiều loại robot.
Nhược điểm bánh xe V1:
- Khó vượt qua các chướng ngại vật có kích thước lớn.
- Khả năng bám đường kém.
Hình 2. 21:Bánh xe robot
2.3.3 Bộ phận liên kết
Hình 2. 22: Bộ phận liên kết
28
- Để tạo nên một khung cơ khí chắc chắn, vững chắc trong di chuyển, sử
dụng trục đồng lục giác đực cái để liên kết, chống đỡ, kết nối ba tầng mica của
mô hình robot di động.
- Ưu điểm của trụ đồng lục giác:
Sản phẩm có chiều dài phù hợp, độ bền cao, giúp công việc tháo,
mở bu lông, ốc vít trở nên nhẹ nhàng, hiệu quả hơn.
Được làm từ thép không gỉ với độ cứng, độ chịu lực cao nên khi sử
dụng, chìa lục giác sẽ không bị cong, vênh hay biến dạng, hư hỏng
dù bị tác động một lực lớn.
Đầu lục giác được thiết kế nhiều góc cạnh, phù hợp với nhu cầu sử
dụng, giúp tiết kiệm thời gian hoàn thành công việc.
2.4 Mô hình hệ thống điều khiển
2.4.1 Arduino Uno R3
Arduino Uno R3 [2] được sử dụng vi điều khiển ATmega328, tương
thích với hầu hết các loại Arduino Shield trên thị trường, có thể gắn thêm các
module mở rộng để thực hiện thêm các chức năng như điều khiển motor, kết nối
wifi hay các chức năng khác.
Sử dụng ngôn ngữ lập trình C, C++ hoặc Arudino, một ngôn ngữ bắt
nguồn từ C, C++ trên phần mềm riêng cho lập trình Arduino IDE.
Hình 2. 23: Sơ đồ chân Arduino Uno R3
29
Ứng dụng của Arduino Uno R3
- Aruino Uno R3 được sử dụng phổ biến trong việc tự thiết kế ra các
mạch điện tử như điều khiển led, gửi dữ liệu lên lcd, điều khiển motor, ... hay
được gắn thêm các shield để kết nối nhiều module cảm biến khác để thực hiện
thêm nhiều chức năng mở rộng như gửi dữ liệu qua wifi.
Thông số kỹ thuật
Bảng 2. 1: Bảng thông số kỹ thuật Arduino R3
Vi điều khiển Atmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng usb )
Tần số hoạt động 16 MHz
Dòng tiêu thụ Khoảng 30mA
Điện áp vào khuyên dùng 7-12 VDC
Điện áp vào giới hạn 6-20 VDC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối da trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
32 KB (Atmega328) với 0.5KB dùng Bộ nhớ flash bởi bootloader
SRAM 2 KB (Atmega328)
EEPROM 1 KB( Atmega328)
30
2.4.2 Module ESP32
Khái niệm:
ESP32-WROOM-32 [3] là module Wi-Fi + Bluetooth® + Bluetooth LE
MCU chung, mạnh mẽ nhắm đến nhiều ứng dụng khác nhau, từ mạng cảm biến
năng lượng thấp đến các tác vụ đòi hỏi khắt khe nhất, chẳng hạn như mã hóa
giọng nói, truyền phát nhạc và MP3 giải mã. Module hỗ trợ các chuẩn giao tiếp
SPI, UART, I2C và I2S và có khả năng kết nối với nhiều ngoại vi như các cảm
biến, các bộ khuếch đại, thẻ nhớ (SD card),…
Hình 2. 24: Module ESP32
Ở chế độ sleep dòng điện hoạt động là 5 µA nên thích hợp cho các ứng
dụng dùng pin như các thiết bị điện tử đeo tay. Ngoài ra module còn hỗ trợ cập
nhật firmware từ xa (OTA) do đó người dùng vẫn có thể có những bản cập nhật
mới nhất của sản phẩm.
Cấu hình ESP32
- Kích thước: 18 mm x 20 mm x 3 mm.
- CPU
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.
31
- Hỗ trợ 2 giao tiếp không dây
Wi-Fi
Bluetooth
- Hỗ trợ tất cả các loại giao tiếp (UART / SPI / I2C / PWM / ADC / DAC).
- Cảm biến tích hợp trên chip ESP32.
1 cảm biến Hall (cảm biến từ trường).
1 cảm biến đo nhiệt độ.
Cảm biến chạm (điện dung) với 10 đầu vào khác nhau.
- Nguồn
Điện áp hoạt động: 2,2-3,6V.
Dòng tiêu thụ ổn định: 80mA
Sơ đồ chân của ESP32
Hình 2. 25: Sơ đồ chân của bo 30 chân ESP32 DevKit.
2.4.3 Module ESP 8266
Giới thiệu chung
ESP8266 [4] hay gọi đầy đủ là ESP8266EX là một vi mạch Wi-Fi giá rẻ,
có hỗ trợ bộ giao thức TCP/IP và có thể tích hợp vào thành phần của vi điều
khiển, được sản xuất bởi hãng Espressif Systems ở Thượng Hải, Trung Quốc.
32
- Sơ đồ chân WeMos D1 Mini
Hình 2. 26: Sơ đồ chân WeMos D1 Mini
- Vi điều khiển: ESP8266EX
- Điện áp hoạt động: 3.3V
- Số chân I/O: 11
- Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
- Bộ nhớ Flash: 4MB
- Giao tiếp: Cable Micro USB
- Nguồn áp: 5V được cung cấp qua cổng Micro USB
- Wifi: 2.4 GHz
- Kích thước: 34.2mmx25.6mm
Thông số kĩ thuật
2.4.4 Module L298
Khái niệm:
Module L298 là một mạch điều khiển động cơ một chiều DC cùng lúc.
L298 là IC điều khiển cầu kép toàn kỳ có dải điện áp hoạt động rộng, xử lý
dòng tải có mức tối đa 3A. Bao gồm điện áp bão hòa thấp và bảo vệ quá
nhiệt. Có cấu tạo từ hai mạch cầu H transistor.
33
Hình 2. 27: Modue L298
Thông số kỹ thuật
Bảng 2. 2: Bảng thông số kỹ thuật L298
Điện áp ở đầu vào 5 – 30 V
Điện áp tín hiệu điều khiển 5 – 7V
Điện áp logic Low: từ -0,3V đến 1,5V
High: 2,3V đến Vss
Dòng điện tối đa cho từng động cơ 2A
Dòng yêu cầu của tín hiệu điều khiển 0 – 36 mA
Công suất 1 cầu tương đương 25W
Kích thước 43x43x27mm
34
Hình 2. 28: Sơ đồ chân L298
Nguyên lý hoạt động
Để điều khiển mạch cầu H, ta thay đổi điện áp điều khiển các công tắc S1,
S2, S3, S4. Bằng cách thay đổi điện áp điều khiển các công tắc S1, S2, S3, S4 ta
có thể điều khiển chiều quay và moment quay của motor.
Hình 2. 29: Nguyên lý hoạt động theo chiều thuận
Hình 2. 30: Nguyên lý hoạt động theo chiều nghịch
35
2.4.5 Cảm biến siêu âm HC-SR04
Hình 2. 31: Cảm biến siêu âm HC-SR04
Cảm biến siêu âm HC-SR04 là một dạng cảm biến module. Cảm biến này
thường chỉ là một bản mạch, hoạt động theo nguyên lý thu phát sóng siêu âm bởi
2 chiếc loa cao tần.
Cảm biến siêu âm HC-SR04 thường được kết hợp với các bộ arduino,
PIC, AVR,… để chạy một số ứng dụng như : phát hiện vật cản trên xe robot, đo
khoảng cách vật,…
Chính vì là một cảm biến siêu âm dạng module, cho nên hầu như ứng
dụng hay độ chính xác của cảm biến đều phụ thuộc vào phần code mà người sử
dụng lập trình và nạp vào bản mạch điều khiển.
Thông số kỹ thuật cảm biến siêu âm HC-SR04
Bảng 2. 3: Bảng thông số kỹ thuật cảm biến siêu âm HC-SR04
Điện áp làm việc 5VDC
Dòng điện 15mA
Tần số 40 KHZ
Khoảng cách phát hiện 2cm – 400cm
Tín hiệu đầu ra Xung mức cao 5V, mức thấp 0V
36
Góc cảm biến Không quá 15 độ
Độ chính xác cao Lên đến 3mm
Ứng dụng cảm biến siêu âm HC-SR04
- Với các module cảm biến siêu âm HC-SR04 được ứng dụng nhiều nhất
trong các bài toán đo khoảng cách vật từ xa.
- Một số ứng dụng khác cũng hay dùng module cảm biến siêu âm HC-
SR04 mà chúng ta thường thấy như:
Dùng đo mức chất lỏng trong chai, hộp sữa, …
Dùng phát hiện vật cản trên đường đi của robot.
2.4.6 Module cảm biến gia tốc góc MPU6050
Giới thiệu về MPU6050
MPU6050 là thiết bị theo dõi chuyển động 6 trục dựa trên MEMS. Nó có
một con quay hồi chuyển trên chip và cảm biến gia tốc cùng với cảm biến nhiệt
độ. Mô-đun này có kích thước rất nhỏ, yêu cầu tiêu thụ điện năng thấp, độ chính
xác cao, độ lặp lại cao, khả năng chịu sốc cao, có khả năng lập trình hiệu suất
dành riêng cho ứng dụng và mức giá tiêu dùng thấp. MPU6050 có thể dễ dàng
giao tiếp với các cảm biến khác như từ kế và vi điều khiển…
Hoạt động của con quay hồi chuyển:
Tính năng gia tốc kế (Acceleromete). Gia tốc kế 3 trục: MPU6050 bao
gồm gia tốc kế 3 trục với công nghệ vi điện cơ (MEMs). Nó được sử dụng để
phát hiện góc nghiêng hoặc độ nghiêng dọc theo các trục X, Y và Z như hình
bên dưới.
37
Hình 2. 32: Góc nghiêng theo trục X,Y,Z
- Gia tốc kế ba trục đầu ra kỹ thuật số với phạm vi tỷ lệ đầy đủ có thể lập
trình là ±2g, ±4g, ±8g và ±16g (Lực g là gia tốc tương đối của vật so với
khi rơi tự do g=9,81m/s^2).
- ADC 16 bit tích hợp cho phép lấy mẫu đồng thời các máy đo gia tốc trong
khi không yêu cầu bên ngoài bộ ghép kênh.
- Dòng hoạt động bình thường của máy đo gia tốc: 500µA.
- Dòng điện ở chế độ gia tốc kế công suất thấp: 10µA ở 1,25Hz, 20µA ở
5Hz, 60µA ở 20Hz, 110µA ở 40Hz.
Chân giao tiếp
Hình 2. 33: Sơ đồ chân MPU6050
38
Thông số kĩ thuật
- Nguồn: 3VDC đến 5VDC.
- Giao tiếp: I2C.
- Giá trị Gyroscopes trong khoảng: +/- 250 500 1000 2000 degree/sec.
- Giá trị Acceleration trong khoảng: +/- 2g, +/- 4g, +/- 8g, +/- 16g.
2.4.7 Mạch sạc pin lithium 18650 2 cell nối tiếp 16A
Giới thiệu chung
Mạch sạc pin lithium 18650 2 cell nối tiếp 16A có dòng xả tối đa lên lến
16A, được sử dụng để sạc 2 cell pin Lithium hoặc 18650 có điện áp trung bình
3.7~4.2VDC mắc nối tiếp, mạch có chức năng ngắt khi đầy, bảo vệ chập nguồn,
quá áp và pin dưới áp quy định.
Hình 2. 34: Mạch sạc pin 18650
Mạch sạc pin lithium 18650 2 cell nối tiếp 16A có thiết kế, chất lượng gia
công và linh kiện rất tốt, phù hợp trong các thiết kế cần có mạch quản lý pin,
sạc.
Thông số kĩ thuật:
Bảng 2. 4: Bảng thông số kỹ thuật mạch sạc pin 18650
Điện áp sạc 8.4V - 9V
Dòng xả liên tục tối đa của mạch 5A
Dòng sạc vào tối đa 1A
39
Điện áp ngắt khi sạc đầy mỗi cell 4.25 – 4.35VDC (sai số 0.05)
Điện áp ngắt khi yếu pin mỗi cell 2.3 – 3.0VDC (sai số 0.05)
Kích thước 41mm x 8 mm x 2,2mm (L x W x
H)
2.4.8 Mạch sạc TP4056
Khái niệm:
TP4056 là bộ sạc tuyến tính dòng điện không đổi, điện áp không đổi hoàn
chỉnh dành cho pin lithium-ion đơn cell, phù hợp lý tưởng cho các ứng dụng di
động như robot, mạch cảm biến không dây,... Mạch có chức năng ngắt tải bảo vệ
pin khi điện áp xuống quá thấp để tránh làm hư hỏng pin (chai pin), mạch được
sử dụng để sạc cho các loại pin Lithium có điện áp 3,7~4,2VDC (Pin Lipo, ...),
mạch có kích thước nhỏ gọn với cổng Micro USB kết nối tiện dụng, đèn báo
đang sạc và sạc đầy hiển thị trạng thái pin.
Hình 2. 35: Mạch sạc TP4056
Thông số kỹ thuật
Bảng 2. 5: Bảng thông số kỹ thuật mạch sạc TP4056
Nguồn đầu vào - 4.5~8VDC: Chân nguồn vào + / -
- 5VDC qua cổng Micro USB
Nguồn sạc đầy 4.2VDC
40
Dòng sạc 1A có thể biến đổi theo trạng thái pin.
Phương thức sạc Sạc tuyến tính 1%
Độ chính xác khi sạc 1,5%
Đèn trạng thái sạc - Đèn đỏ: đang sạc, chưa đầy
- Đèn xanh lá: Đã sạc đầy.
Ngưỡng sạc nhỏ giọt 2.9V
Kích thước 17x22x5mm
Sơ đồ nối dây
Hình 2. 36: Sơ đồ dây mạch sạc TP4056
2.4.9 Module ESP 32 – CAM
Giới thiệu chung
ESP32-CAM là một module hoàn chỉnh với một bộ vi điều khiển tích
hợp, có thể làm cho nó hoạt động độc lập. Ngoài kết nối WiFi + Bluetooth,
module này còn có một máy quay video tích hợp và một khe cắm thẻ nhớ
microSD để lưu trữ.
ESP-32CAM có thể được sử dụng rộng rãi trong các ứng dụng IoT khác
nhau, thích hợp cho thiết bị thông minh gia đình, điều khiển không dây công
nghiệp, giám sát không dây kiểm soát, nhận dạng không dây QR, tín hiệu hệ
thống định vị không dây…Nó là một giải pháp lý tưởng cho các ứng dụng IoT.
41
Mạch thu phát Wifi BLE ESP32 này là mạch chính hãng AI – Thinker có chất
lượng độ ổn định và độ bền rất cao, sử dụng camera OV2640 chất lượng cao
hình ảnh sắc nét, không nhiễu sọc, không xảy ra tình trạng treo khi hoạt động do
sử dụng ic cấp nguồn chất lượng cao.
Mạch thu phát wifi BLE ESP32-CAM Ai-Thinker này có thể sử dụng
Arduino IDE để biên dịch và viết code, được hỗ trợ mạnh mẽ từ cộng đồng.
Hình 2. 37: Module ESP32-CAM
Sơ đồ chân:
Hình 2. 38: Sơ đồ chân ESP32-CAM
Thông số kĩ thuật:
- IC chính: ESP32-S (AI-Thinker).
- Module Wi-Fi BT SoC 802.11.
- CPU 32-bit có công suất thấp, cũng có thể phục vụ bộ xử lý ứng dụng.
42
- Tốc độ xử lý lên đến 160MHz.
- Tích hợp 520 KB SRAM, 4MPSRAM bên ngoài.
- Dải tần số: 1421 ~ 2484 Mhz.
- Bluetooth: 4.2 BR/EDR BLE.
- Hỗ trợ máy ảnh OV2640 và OV7670, đèn flash tích hợp.
2.4.10 Động cơ servo SG90
Giới thiệu chung
Công dụng chính của động cơ servo là đạt được góc quay chính xác trong
khoảng từ 900 – 1800. Việc điều khiển này có thể ứng dụng để lái robot, di
chuyển các tay máy lên xuống, quay một cảm biến để quét khắp phòng.
Hình 2. 39: Servo SG90
Hình 2. 40: Sơ đồ chân servo SG90
Thông số kỹ thuật
- Khối lượng: 9g.
- Kích thước: 22.2x11.8.32 mm.
- Momen xoắn: 1.8kg/cm.
- Tốc độ hoạt động: 60 độ trong 0,1 giây.
43
- Điện áp hoạt động: 4,8V(~5V).
- Nhiệt độ hoạt động: 0 ºC – 55 ºC.
- Kết nối dây màu đỏ với 5V, dây màu nâu với mass, dây màu cam với
chân phát xung của vi điều khiển. Ở chân xung cấp một xung từ 1ms-2ms
theo để điều khiển góc quay theo ý muốn.
2.4.11 Động cơ DC giảm tốc vàng v1
Giới thiệu chung
Động cơ DC (viết tắt của Direct Current Motors) là động cơ điện một
chiều (dòng điện có hưởng xác định) chuyển đổi năng lượng điện thành năng
lượng cơ học. Động cơ DC lấy điện năng từ dòng điện trực tiếp và chuyển đổi
năng lượng này thành vòng quay cơ học.
Thông số kĩ thuật
Bảng 2. 6: Bảng thông số kỹ thuật động cơ giảm tốc V1
Điện áp hoạt động 3 – 9VDC
Tỉ số truyền 1:48
Dòng điện tiêu thụ 110mA – 140mA
Tốc độ quay 125 vòng/ 1 phút tại 3VDC
208 vòng/ 1 phút tại 5VDC
Mômen xoắn 800gfcm
2.5 Kết luận chương 2
Chương 2 đã trình bày được tổng quan về robot di động và các công nghệ
sử dụng trong mô hình. Bên cạnh đó cũng làm nổi bật về công nghệ điều khiển
giọng nói. Ngoài ra, xác định được mô hình hệ thống cơ khí và các linh kiện cần
cho hệ thống điều khiển.
44
CHƯƠNG 3: TÍNH TOÁN THIẾT KẾ ROBOT DI ĐỘNG ĐIỀU KHIỂN
BẰNG GIỌNG NÓI
3.1 Thiết kế phần cứng robot di động điều khiển bằng giọng nói
3.1.1 Thiết kế sơ đồ khối hệ thống
Sơ đồ khối hệ thống
Hình 3. 1 : Sơ đồ khối hệ thống
Hệ thống gồm bộ điều khiển trung tâm là điện thoại Androi cài đặt app
điều khiển và cảm biến gia tốc góc MPU6050. Khối xử xý vi điều khiển là
ESP32, thu tín hiệu điều khiển từ khối điều khiển, xử lý và đưa ra câu lệnh điều
khiển cho động cơ hoạt động. Khối thu tín hiệu hình ảnh là camera, truyền hình
ảnh về màn hình phần mềm điều khiển và máy tính. Khối cảm biến xác định
khoảng cách đối với vật mà camera thu được.
Chức năng của từng khối
- Khối điều khiển: Có chức năng phát các tín hiệu lệnh điều khiển trên App
hoặc trên MPU6050 thông qua Bluetooth kết nối với ESP32. Sau đó ESP32
thu và xử lý tín hiệu điều khiển và điều khiển động cơ theo lệnh điều khiển.
- Khối xử lý: ESP32 có chức năng nhận tín hiệu điều khiển từ khối điều
khiển và điều khiển động cơ theo lệnh.
45
- Khối động cơ: gồm các động cơ DC và servo được điều khiển bởi khối xử
lý.
- Khối camera: Thu hình ảnh và truyền hình ảnh về đồng thời ứng dụng điều
khiển và máy tính để hiển thị tầm nhìn.
- Máy tính: Có chức năng nhận hình ảnh từ camera, từ đó phân tích nhận
dạng vật trong tầm nhìn.
- Khối nguồn: Cung cấp nguồn cho hệ thống hoạt động.
- Khối bảo vệ: Mạch sạc bảo vệ khối nguồn, tự ngắt nguồn sạc khi pin đầy.
- Khối cảm biến: Phát hiện và đo khoảng cách đến vật đang xuất hiện trong
tầm nhìn.
- Khối hiện thị: LCD hiển thị khoảng cách và cảnh báo khi cảm biến quét
được vật cản.
3.1.2 Tính toán thiết kế mô hình
Do đề tài sử dụng 4 bánh chủ động và 4 động cơ độc lập mà hai bánh trái
được mắc nối tiếp với nhau, hai bánh phải mắc nối tiếp với nhau nên cấu hình
của robot sẽ quy về cấu hình một khung xe với hai bánh xe và 2 động cơ như
hình 3.2.[5]
Hình 3. 2: Cấu hình của robot với hai bánh chủ động
46
Robot di động với hai bánh chủ động bao gồm hai động cơ độc lập gắn
với hai bánh xe có đường kính là 2r (Hình 3.2). Điểm Q là trọng tâm của robot
được đặt tại điểm giữa trục của hai bánh xe, khoảng cách từ mỗi bánh xe đến Q
có độ dài là a (m). Ta quy ước Φ là góc hợp bởi hệ qui chiếu được gắn trên robot
{X’,Y’} với hệ qui chiếu toàn cục {X,Y} và và tương ứng là tốc độ quay
của bánh phải và bánh trái của robot di động.
Phương trình động học thuận robot visai:
Với:
: Vận tốc dài bánh trái
: Vận tốc dài bánh phải
2a: Chiều rộng thân xe
Xây dựng hệ tọa độ suy rộng trong không gian truyền động và không gian
nhiệm vụ của robot:
(3.1)
Với:
: là góc quay bên phải
: là góc quay bên trái
Vi phân các biểu thức p và q:
(3.2)
Vận tốc dài của các bánh truyền động:
(3.3)
47
Vận tốc dài của thân xe:
(3.4)
Vận tốc dài của thân xe trong không gian nhiệm vụ:
Chiếu lên Ox:
(3.5)
Chiếu lên Oy:
(3.6)
Ta có:
(3.7)
Ta có phương trình động học thuận:
(3.8)
Phương trình động học nghịch robot visai:
Do (m>n) 3>2, ta có phương trình động học nghịch:
(3.9)
48
Phương trình động lực học visai
Vì ma trận I tensor quán tính robot là hằng số, mô hình động lực học
Newton-Euler
(*)
Trong đó:
F là tổng lực tác động lên robot, N là tổng momen đối với trọng tâm tác
dụng lên robot, I là tensor quán tính của robot. Ta có rằng trọng tâm trùng với
điểm giữa của 2 bánh dẫn động.
Tổng lực tác động:
(3.10)
(3.11)
Từ (*) (3.12)
Momen tác động:
(3.13)
Từ (*) (3.14)
Mô hình động lực học robot:
(3.15)
Tính toán lựa chọn công suất động cơ
Địa hình làm việc của robot là địa hình phẳng, giả thiết bỏ qua sự biến
dạng của bánh xe, bỏ qua lực cản của không khí trong quá trình robot di chuyển.
Các thông số của robot:
49
- Khối lượng robot ước tính: m=1,2 (kg)
- Chọn bánh xe có đường kính 2r= 68(mm)
- Tốc độ tối đa là: 0.5(m/s)
Phân tích lực tác dụng lên bánh xe chủ động gồm 4 lực tác đụng như sau:
Hình 3. 3: Phân tích lực tác dụng lên bánh xe
Với:
: là lực kéo sinh ra do momen của động cơ.
: là lực ma sát nghỉ giữa bánh xe và bề mặt sàn.
: là phản lực của mặt sàn.
: là momen xoắn của động cơ.
: là một phần tư trọng lượng của robot di động, .
: là một phần tư khối lượng của robot di động.
Chọn phương án chuyển động của robot là chuyển động thẳng. Hai
bánh dẫn động di chuyển cùng tốc độ về phía trước với vận tốc 𝑣 = 0,5 (m/s).
Tốc độ quay của bánh xe là:
Phương trình cân bằng lực:
50
- Khi robot chuyển động đều
Vận tốc không đổi là =0,5(m/s), nên gia tốc . Khi đó:
Lực kéo sinh ra do momen của động cơ là:
Với hệ số ma sát lăn = 0,015 khi di chuyển trên sàn gạch.
Công suất cần thiết để xe di chuyển ổn định với vận tốc 0,5 (m/s) là:
- Khi robot tăng tốc
Robot tăng tốc với gia tốc =0,5(m/s2). Lực kéo sinh ra do momen của
động cơ là:
Với hệ số ma sát tĩnh là
Momen xoắn cần thiết để robot tăng tốc là:
Công suất cần thiết để tăng tốc lên 0,5(m/s) là:
Từ kết quả (3.16) và (3.17) suy ra công suất động cơ cần thiết là 1,77 (W)
và tốc độ vòng yêu cầu là 140,43 (rpm). Chọn động cơ giảm tốc V1, sử dụng
điện áp 9V có công suất nhỏ 1,8 (W), tốc độ không tải là 208 rpm tại 5VDC.
Hình 3. 4: Động cơ giảm tốc V1
51
3.2 Thiết kế hệ thống điều khiển robot di động bằng giọng nói
3.2.1 Kết nối arduino và cảm biến HC-SR04
Hình 3. 5: Sơ đồ kết nối arduino với cảm biến HC-SR04
Đề tài sử dụng cảm biến siêu âm HC-SR04 để phát hiện, đo khoảng cách
và cảnh báo khi có vật cản. Cảm biến truyền tín hiệu về Arduino để xử lý và
hiển thị trên LCD 16x2. Giải thích sơ đồ nối dây:
- Chân Echo và Trig của cảm biến siêu âm lần lượt nối với chân 11 và 12
của Arduino.
- Chân VCC và GND của cảm biến siêu âm lần lượt nối với chân 5V và
GND của Arduino.
- Chân điều khiển của Servo nối với chân 10 của Arduino.
- Chân VCC và GND của Servo lần lượt nối với chân 3V3 và GND của
Arduino.
- Chân tín hiệu và GND của Buzzer lần lượt nối với chân 13 và GND của
Arduino.
- Chân SDA và SCL của I2C trên LCD được nối lần lượt vào chân A4 và
A5 trên Arduino Uno.
52
- Chân VCC và GND của LCD lần lượt nối với chân VIN và GND trên
Arduino Uno.
Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn từ chân Trig. Sau đó, cảm
biến sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại được sóng phản
xạ ở pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát
từ cảm biển và quay trở lại.
Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương
đương với 29,412 microSeconds/cm (106/ (340*100)). Khi đã tính được thời
gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.
Tín hiệu HC-SR04 thu được sẽ gửi về cho arduino sau đó hiển thị trên
màn hình LCD.
Cảm biến HC-SR04 được gắn lên servo để tăng phạm vi quét của cảm
biến giúp phát hiện vật cản trong phạm vi lớn hơn.
3.2.2 Kết nối module ESP32, L298 và động cơ DC
Hình 3. 6: Sơ đồ kết nối module ESP32, L298 và động cơ DC
53
Đề tài sử dụng module ESP32 tiếp nhận và xử lý tín hiệu điều khiển từ
App hoặc module ESP8266 rồi băm xung PWM điều khiển động cơ hoạt động
theo lệnh điều khiển. Sơ đồ nối dây:
- Chân IN1, IN2, IN3, IN4,GND của L298 lần lượt nối với các chân TX2,
D18, D19, D21, GND của module ESP32.
- Động cơ DC1 và DC2 mắc song song, 2 chân (+) và (-) mắc vào OUT 1
và OUT2 của L298.
- Động cơ DC3 và DC4 mắc song song, 2 chân (+) và (-) mắc vào OUT 4
và OUT3 của L298.
- Chân kết nối 1 của công tắc gạt được nối với chân D4 của ESP32 và 1 đầu
của điện trở. Đầu còn lại của điện trở nối với chân 3V3 của module
ESP32.
- Chân nguồn của công tắc gạt được nối với chân GND của module
ESP32.
- Pin và mạch sạc được nối như hình :
Hình 3. 7: Sơ đồ kết nối pin và mạch sạch
- Chân P+ và P- của mạch sạc lần lượt được nối nói chân dương và âm của
jack cái.
- Chân (+) của jack cái nối với chân 12v của L298 và chân (-) của jack cái
nối với chân GND của L298.
54
3.2.3 Kết nối ESP32-CAM và laptop
Hình 3. 8: Sơ đồ kết nối ESP32-CAM và laptop
Dữ liệu hình ảnh mà ESP32-CAM nhận được sẽ được truyền đến máy
tính. Lúc này máy tính sẽ xử lý dữ liệu và hiển thị tên các đồ vật được ESP32-
CAM phát hiện. Sơ đồ kết nối:
- Chân OUR của ESP32-CAM được nối với chân TX của mạch nạp.
- Chân OUT của ESP32-CAM được nối với chân RX của mạch nạp.
- Chân 5V và GND của ESP32-CAM lần lượt được nối với chân 5V và
GND của mạch nạp.
- Máy tính kết nối với ESP32-CAM để nạp code và xử lý dữ liệu thu được
thông qua dây kết nối cắm vào đầu micro USB của module kết nối.
55
3.2.4 Kết nối ESP 8266, MPU6050 và mạch sạc
Hình 3. 9: Kết nối tay cầm
Đồ án sử dụng cảm biến gia tốc góc MPU6050 để đo giá trị góc nghiêng
khi người sử dụng dùng tay cầm để điều khiển. MPU6050 đo được giá trị góc,
truyền về ESP8266 để tính toán và xử lý dữ liệu. Dữ liệu góc sau khi được xử lý
xong được truyền về esp32 thông qua giao tiếp Serial. Esp32 tiếp nhận lệnh điều
khiển và điều khiển động cơ thực hiện. Sơ đồ nối dây:
- Chân SCL, SDA, VCC, GND của MPU6050 lần lượt nối với chân D1,
D2, VIN, GND của ESP8266.
- Cực âm và dương của Pin được nối với chân B- và B+ của mạch sạc
TP4056.
- Chân OUT+ của mạch sạc nối với chân VCC của ESP8266 thông qua 1
công tắc gạt để đóng mở nguồn điện.
- Chân OUT- của mạch sạc nối với chân GND của ESP8266.
56
3.2.5 Thiết kế mạch in
Để phần đi dây được gọn gàng thì nhóm thiết kế các mạch in sau:
Hình 3. 10: Bản vẽ nguyên lý của ESP32 [6]
Hình 3. 11: Mạch in của ESP32
57
Hình 3. 12: Bản vẽ nguyên lý ESP8266
Hình 3. 13: Mạch in của ESP 8266
58
3.3 Lưu đồ thuật toán điều khiển robot di động bằng giọng nói
Lưu đồ thuật toán ứng dụng điều khiển:
Hình 3. 14: Lưu đồ thuật toán ứng dụng điều khiển
59
Lưu đồ thuật toán điều khiển robot:
Hình 3. 15: Lưu đồ thuật toán điều khiển robot
60
Lưu đồ thuật toán phát hiện vật:
Hình 3. 16: Lưu đồ thuật toán phát hiện vật
61
Lưu đồ thuật toán xử lý ảnh:
Hình 3. 17: Lưu đồ thuật toán xử lý ảnh
3.4 Kết luận chương 3
Chương 3 đã giải quyết được bài toán tính toán động cơ và bài toán động
học cho robot di động. Bên cạnh đó, chúng em đã thiết kế được sơ đồ đấu nối
của hệ thống điều khiển robot di động.
62
CHƯƠNG 4: CHẾ TẠO MÔ HÌNH VÀ ĐÁNH GIÁ
4.1 Chế tạo mô hình robot di động điều khiển bằng giọng nói
4.1.1 Lắp ráp và kiểm tra
Phần bánh xe
Lắp động cơ giảm tốc V1 và bánh xe thông qua trục động cơ.
Hình 4. 1: Động cơ và bánh xe
Phần khung xe
- Khung xe chia làm 3 tầng:
Tầng thứ nhất dùng để gắn kết nối động cơ, đồng thời chứa các
module L298, ESP32, pin và mạch sạc.
Tầng thứ 2 dùng để gắn mạch arduino R3, cảm biến HCSR04 và servo
SG90.
Tầng thứ 3 dùng để gắn màn hình LCD, buzzer và ESP32-CAM.
Chúng được xếp chồng lên nhau tạo thành một bộ khung hoàn chỉnh.
63
Hình 4. 2: Khung robot tầng 1
Phần module điều khiển.
- Lắp module ESP32 vào khung xe.
- Lắp nguồn pin.
- Lắp module điều khiển động cơ L298.
- Module điều khiển động cơ L298 được kết nối với ESP32 và nguồn pin.
Hình 4. 3: Tầng 1 robot di động
64
- Lắp pin dự phòng
- Lắp mạch Arduino Uno R3
Mạch Arduino Uno R3 được kết nối với pin dự phòng
- Cảm biến HC-SR04 được gắn trên servo SG90 và cùng kết nối với mạch
arduino R3
Hình 4. 4: Tầng 2 robot di động
- Lắp màn hình LCD.
Màn hình LCD được kết nối với mạch arduino R3.
- Lắp module ESP32-CAM.
Hình 4. 5: Tầng 3 robot di động
65
Hình ảnh thực tế sau khi lắp thành công robot.
Hình 4. 6: Hình ảnh robot sau khi lắp rắp thành công
4.1.2 Thiết kế ứng dụng điều khiển robot di động qua MIT Ap Inventor
Để có một ứng dụng điều khiển robot di động trước tiên ta hãy tìm kiếm
trang web : Mit App Inventor trên Google.[7]
Hình 4. 7: Tạo dự án mới
- Tạo một dự án mới bằng cách nhấn vào “ Start new project ”.
Hình 4. 8: Dự án mới
66
- Định dạng cấu trúc màn hình theo từng vị trí là khung dọc, khung
ngang,… màn hình đang có khung định dạng theo hàng ngang là
“HorizontalArrangement” có chiều cao được định dạng là tự động và
chiều rộng là đầy màn hình.
Hình 4. 9: Kéo các khối vào khung đã có
- Kéo khối “ Image” vào khung đã có và đặt chiều cao đầy khung hình và
chiều rộng 50 pixels.
- Kéo khối “Label” để viết chữ “ ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI”.
- Phần kết nối bluetooth, kéo khối ListPicker.
- Phần phông màu thì chọn “BackgroundColor” để thay đổi.
Hình 4. 10: Kéo khối TextBox để nhập địa chỉ IP kết nối với camera.
Hình 4. 11: Thiết lập các nút bấm sử dụng khối “ Button”
67
- Các nút bấm “ Điều khiển giọng nói”, “ Giới thiệu mô hình” , “ Thành
viên”, “ Camera” , “ tiến” , “lùi” , “ phải” , “trái” sử dụng khối “ Button” .
- Để có được màn hình có bố cục hợp lý, dễ nhận biết, chúng ta sử dụng các
tác vụ như thay đổi độ dài, độ rộng,thay đổi tên, màu chữ , phông chữ ,..
Hình 4. 12: Các khối chức năng
- Để kết nối bluetooth sử dụng khối “BluetoothCilent1”.
- Để nhận được giọng nói sử dụng khối “SpeechRecognizer1”.
- Để truy cập liên kết thoát ra ứng dụng khác sử dụng khối
“ActivityStarter1”.
- Để kết nối với camera qua interner sử dụng khối “Web1”.
Giao diện sau hoàn thiện ứng dụng
Hình 4. 13: Giao diện điều khiển tay cầm và giọng nói trên ứng dụng
68
4.2 Đánh giá hoạt động của hệ thống
4.2.1 Kết quả
Kết quả nhóm đạt được:
Hình 4. 14: Kết quả điều khiển bằng giọng nói
- Robot di động nhận diện được những lệnh di chuyển : “ đi thẳng” , “đi
lùi”, “rẽ trái” , “rẽ phải” , “quay đầu” , “quay tròn”, “dừng lại”.
- Robot sử dụng nhận dạng giọng nói rời rạc: Yêu cầu người dùng nói từng
từ một hoặc tạm dừng giữa mỗi câu.
69
Hình 4. 15: Kết quả điều khiển robot bằng cử chỉ
- Mô hình robot điều khiển bằng cử chỉ hoạt động ổn định.
- Khi nghiêng theo hướng X- robot rẽ trái , nếu giữ nguyên tư thế tay cầm
thì robot sẽ xoay vòng tròn ngược chiều kim đồng hồ.
- Khi nghiên hướng X+ robot rẽ phải, nếu giữ nguyên tư thế tay cầm thì
robot xoay vòng tròn theo chiều kim đồng hồ.
- Để robot đi thẳng, ta hướng tay cầm xuống hướng Y- .
- Để robot đi lùi, ta hướng tay cầm lên hướng Y+.
- Khi muốn tăng tốc, ta càng nghiên góc nghiêng lớn thì tốc độ càng tăng.
- Để robot dừng lại, ta để tay cầm ở vị trí ban đầu.
70
Hình 4. 16: Kết quả điều khiển bằng bluetooth
- Robot di chuyển theo lệnh điều khiển : đi thẳng, đi lùi, rẽ trái, rẽ phải,
xoay tròn. Để robot dừng lại thực hiện nhả nút bấm.
- Robot có camera hỗ trợ quan sát phía sau giúp tăng tầm nhìn không gian
của người điều khiển.
71
Hình 4. 17: Kết quả xử lý hình ảnh phát hiện được
Tệp thư viện thêm vào lập trình chứa tên của hơn 90 đối tượng mà mô
hình YOLOv3 được đào tạo để phát hiện. Đây là một số hình ảnh mà mô hình
thu thập và xử lý hình ảnh được như chai nước, cái cốc, cái ghế ,...
72
Hình 4. 18: Robot phát hiện vật cản trong quá trình quét
Robot có thể phát hiện vật cản trong phạm vi 20cm và báo hiệu bằng còi.
Phần mềm mô phỏng độ chính xác của cảm biến là processing. Phần màu đỏ
trên cửa sổ màn hình là vị trí vật cản. Vị trí vật cản sẽ được xác định và hiển thị
khoảng cách, góc độ,nằm trong vùng nhận diện.
4.2.2 Đánh giá hoạt động của hệ thống
- Việc sử dụng nhiều phương pháp mang đến sự di chuyển linh hoạt trong
quá trình vận hành của thiết bị.
- Người sử dụng có thể điều khiển robot di chuyển đến vị trí mong muốn
một cách nhanh chóng.
- Mô hình kết hợp camera trước và sau sẽ giúp người điều khiển có góc
nhìn rộng về không gian mà robot di chuyển đến.
- Về phần điều khiển robot di động bằng giọng nói có nhược điểm sẽ không
nhận dạng được giọng nói khi có nhiều tạp âm.
- Mô hình robot đã hoàn thiện và hoạt động tốt nhưng trong quá trình điều
khiển còn một tác nhân như kết nối mạng, tốc độ internet, ... ảnh hưởng
đến việc truyền tải chất lượng hình ảnh.
73
KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN
Kết luận
- Mô hình robot di động hoàn thiện điều khiển trên phần mềm đã thiết kế.
- Mô hình robot di động hoàn thiện điều khiển di chuyển bằng giọng nói.
- Mô hình robot di động hoàn thiện điều khiển di chuyển bằng cử chỉ.
- Mô hình được thiết kế và tính toán đúng với yêu cầu đề tài đặt ra.
- Hiểu rõ và nắm được phương pháp điều khiển cho mô hình robot di động.
Hướng phát triển
- Có thể thay đổi các khối động cơ và khung xe để xe hoạt động tốt hơn và
ổn định hơn.
- Có thể dùng thêm bộ encoder để xe hoạt động ổn định.
- Có thể tích hợp thêm nhiều cảm biến khác trên xe để đáp ứng nhiều mục
đích sử dụng khác nhau.
- Có thể tận dụng camera để xử lý ảnh điều khiển bằng các phương pháp
khác nhau.
74
TÀI LIỆU THAM KHẢO
[1] Giáo trình xử lý ảnh (2014)
https://www.slideshare.net/elLeonNo1/gio-trnh-x-l-nh
[2] Datasheet ARDUINO (2023)
https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf
[3] Datasheet ESP32 (2023)
https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en
[4] NodeMCU ESP8266 (2020)
https://components101.com/development-boards/nodemcu-esp8266-pinout-
features-and-datasheet
[5] Introduction to Mobile Robot Control (2014, Elsevier)
https://books.google.com.vn/books?id=gmYALDVqlLUC&lpg=PP1&ots=55H
Lhk6geq&dq=Introduction%20to%20Mobile%20Robot%20Control%20(2014%
2C%20Elsevier)&lr&hl=vi&pg=PP1#v=onepage&q&f=false
[6] Vẽ mạch in trên Altium(2020)
https://khuenguyencreator.com/hoc-altium-tu-a-toi-z-cho-sinh-vien/
[7] Hướng dẫn sử dụng App Inventor 2 (2023)
https://duoclienthong.edu.vn/huong-dan-su-dung-app-inventor-2/
75
PHỤ LỤC
Bảng ký hiệu các tham số
Ký hiệu Ý nghĩa Đơn vị
{X,Y} Hệ quy chiếu toàn cục
{X’,Y’} Hệ quy chiếu được gắn trên robot
Tốc độ quay của bánh phải rpm
Tốc độ quay của bánh trái rpm
Φ Góc hợp bởi {X,Y} và {X’,Y’}
a Khoảng cách từ mỗi bánh xe đến Q m
Q Trọng tâm của robot
Vận tốc dài bánh trái m/s
Vận tốc dài bánh phải m/s
2a Chiều rộng thân xe m
Góc quay bên phải Rad/s
Góc quay bên trái Rad/s
Vận tốc dài của thân xe m/s VQ
F Tổng lực tác động lên robot N
N Tổng momen đối với trọng tâm tác dụng lên N.m
robot
I Tensor quán tính của robot
Lực kéo sinh ra do momen của động cơ N
Lực ma sát nghỉ giữa bánh xe và bề mặt sàn N
Phản lực của mặt sàn N
Momen xoắn của động cơ N
Một phần tư trọng lượng của robot di động, N
.
r Bán kính bánh xe m
m Khối lượng robot kg
Một phần tư khối lượng của robot di động kg
n Tốc độ quay của bánh xe rpm
Lực kéo sinh ra do momen của động cơ N
Lực ma sát N
Hệ số ma sát lăn
LẬP TRÌNH TRÊN ARDUINO IDE:
LẬP TRÌNH ĐIỀU KHIỂN ESP32 TRÊN MOBILE ROBOT, TIẾP NHẬN TÍN HIỆU TỪ ESP8266 TỪ TAY CẦM + KẾT NỐI BLUTOOTH VÀ GIỌNG NÓI
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
#include
#include
#include
#include
Ticker blinker;
#define LED_esp 2
#define SW 4
#define IN1 17
#define IN2 18
#define IN3 19
#define IN4 21
typedef struct message
{
int a;
int b;
};
struct message mess;
void blinkLed() {
digitalWrite(LED_esp,0);
blinker.detach();
}
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len)
{
digitalWrite(LED_esp,1);
blinker.attach(0.1, blinkLed);
memcpy(&mess, incomingData, sizeof(mess));
mess.a = map(mess.a-5, -95, 95, -255,255);
if (mess.a>255) mess.a=255;
if (mess.a<-255) mess.a=-255;
mess.b = map(mess.b, -95, 95, -255,255);
if (mess.b>255) mess.b=255;
if (mess.b<-255) mess.b=-255;
}
void setup() {
pinMode(IN1,OUTPUT); digitalWrite(IN1, 0);
pinMode(IN2,OUTPUT); digitalWrite(IN2, 0);
pinMode(IN3,OUTPUT); digitalWrite(IN3, 0);
pinMode(IN4,OUTPUT); digitalWrite(IN4, 0);
pinMode(LED_esp,OUTPUT); digitalWrite(LED_esp, 0);
pinMode(12,OUTPUT); digitalWrite(12, 0);
pinMode(SW,INPUT);
Serial.begin(9600); delay(500);
WiFi.mode(WIFI_STA);
Serial.println(WiFi.macAddress());
if (esp_now_init() != ESP_OK) {
Serial.println("Error initializing ESP-NOW");
return;
}
esp_now_register_recv_cb(OnDataRecv);
ledcAttachPin(IN1, 1); ledcSetup(1, 1000, 8);
ledcAttachPin(IN2, 2); ledcSetup(2, 1000, 8);
ledcAttachPin(IN3, 3); ledcSetup(3, 1000, 8);
ledcAttachPin(IN4, 4); ledcSetup(4, 1000, 8);
ledcWrite(1, 0); ledcWrite(2, 0);
ledcWrite(3, 0); ledcWrite(4, 0);
SerialBT.begin("ESP32 xe 4 banh");
}
void loop() {
dung();
while (digitalRead(SW)==1)
{
if (mess.b>70)
{
ledcWrite(2, mess.b);
ledcWrite(3, mess.b);
if (mess.a>70)
{
ledcWrite(1, mess.a);
ledcWrite(4, 0);
}
else if (mess.a<-70)
{
ledcWrite(4, mess.a*(-1));
ledcWrite(1, 0);
}
else
{
ledcWrite(1, 0);
ledcWrite(4, 0);
}
}
else if (mess.b<-70)
{
ledcWrite(1, mess.b*(-1));
ledcWrite(4, mess.b*(-1));
if (mess.a>70)
{
ledcWrite(2, mess.a);
ledcWrite(3, 0);
}
else if (mess.a<-70)
{
ledcWrite(3, mess.a*(-1));
ledcWrite(2, 0);
}
else
{
ledcWrite(2, 0);
ledcWrite(3, 0);
}
}
else
{
if (mess.a>70)
{
ledcWrite(1, mess.a); ledcWrite(2, 0);
ledcWrite(3, mess.a); ledcWrite(4, 0);
}
else if (mess.a<-70)
{
ledcWrite(2, mess.a*(-1)); ledcWrite(1, 0);
ledcWrite(4, mess.a*(-1)); ledcWrite(3, 0);
}
else
{
ledcWrite(1, 0); ledcWrite(2, 0);
ledcWrite(3, 0); ledcWrite(4, 0);
}
}
}
dung();
while (digitalRead(SW)==0)
{
if (SerialBT.available())
{
char c = SerialBT.read();
if (c=='A') tien();
else if (c=='B') lui();
else if (c=='C') trai();
else if (c=='D') phai();
else if (c=='E') dung();
else if (c=='G') tien();
else if (c=='H') {trai(); delay(500); dung();}
else if (c=='I') {phai(); delay(500); dung();}
else if (c=='J') lui();
else if (c=='K') dung();
else if (c=='Q') {phai(); delay(1000); dung();}
else if (c=='R') phai();
}
delay(10);
}
}
void lui()
{
ledcWrite(1, 200); ledcWrite(2, 0);
ledcWrite(4, 200); ledcWrite(3, 0);
}
void tien()
{
ledcWrite(2, 200); ledcWrite(1, 0);
ledcWrite(3, 200); ledcWrite(4, 0);
}
void phai()
{
ledcWrite(1, 200); ledcWrite(2, 0);
ledcWrite(3, 200); ledcWrite(4, 0);
}
void trai()
{
ledcWrite(2, 200); ledcWrite(1, 0);
ledcWrite(4, 200); ledcWrite(3, 0);
}
void dung()
{
ledcWrite(1, 0); ledcWrite(2, 0);
ledcWrite(3, 0); ledcWrite(4, 0);
}
LẬP TRÌNH TRÊN ARDUINO IDE:
ĐIỀU KHIỂN CỬ CHỈ SỬ DỤNG ESP8266 TRUYỀN DỮ LIỆU ĐÃ XỬ LÝ TỪ MPU6050 VỀ ESP32 Ở MOBILE ROBOT
#include
#include
#include
Adafruit_MPU6050 mpu;
#include
#include
#include
#define LED 2
uint8_t node[6] = {0xA4,0xE5,0x7C,0xF6,0xB0,0xC0};
typedef struct message {
int a;
int b;
};
struct message mess;
void init_ESPnow() {
WiFi.mode(WIFI_STA);
if (esp_now_init() != 0) {
Serial.println("Problem during ESP-NOW init");
return;
}
esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
esp_now_add_peer(node, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);
}
void setup() {
pinMode(LED, OUTPUT); digitalWrite(LED, 1);
Serial.begin(9600); delay(500);
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
digitalWrite(LED, 0); delay(1000);
digitalWrite(LED, 1); delay(1000);
}
}
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
init_ESPnow();
mess.a = 0;
mess.b = 0;
}
void loop() {
digitalWrite(LED, 0);
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
mess.a = (int)(a.acceleration.x * 10);
mess.b = (int)(a.acceleration.y * 10);
esp_now_send(node, (uint8_t *) &mess, sizeof(mess));
delay(25);
digitalWrite(LED, 1);
delay(50);
}
LẬP TRÌNH KHỞI TẠO HÌNH ẢNH QUA IP TRÊN ARDUINO IDE
#include
#include
#include
const char* WIFI_SSID = "Redmi Note 11";
const char* WIFI_PASS = "23456781";
WebServer server(80);
static auto loRes = esp32cam::Resolution::find(320, 240);
static auto hiRes = esp32cam::Resolution::find(800, 600);
static auto hiRes = esp32cam::Resolution::find(640, 480);
void
serveJpg()g
{
auto frame = esp32cam::capture();
if (frame == nullptr) {
Serial.println("CAPTURE FAIL");
server.send(503, "", "");
return;
}
Serial.printf("CAPTURE OK %dx%d %db\n", frame->getWidth(), frame- >getHeight(),
static_cast
server.setContentLength(frame->size());
server.send(200, "image/jpeg");
WiFiClient client = server.client();
frame->writeTo(client);
}
void
handleJpgLo()
{
if (!esp32cam::Camera.changeResolution(loRes)) {
Serial.println("SET-LO-RES FAIL");
}
serveJpg();
}
void
handleJpgHi()
{
if (!esp32cam::Camera.changeResolution(hiRes)) {
Serial.println("SET-HI-RES FAIL");
}
serveJpg();
}
void
setup()
{
Serial.begin(115200);
Serial.println();
{
using namespace esp32cam;
Config cfg;
cfg.setPins(pins::AiThinker);
cfg.setResolution(hiRes);
cfg.setBufferCount(2);
cfg.setJpeg(80);
bool ok = Camera.begin(cfg);
Serial.println(ok ? "CAMARA OK" : "CAMARA FAIL");
}
WiFi.persistent(false);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/cam-lo.jpg");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/cam-hi.jpg");
server.on("/cam-lo.jpg",handleJpgLo);
server.on("/cam-hi.jpg", handleJpgHi);
server.begin();
}
void loop()
{
server.handleClient();
}
import cv2 #opencv
import urllib.request
import numpy as np
url = 'http://192.168.80.21/cam-hi.jpg'
#url = 'http://192.168.80.21/'
winName = 'ESP32 CAMERA' cv2.namedWindow(winName,cv2.WINDOW_AUTOSIZE) # phần trăm kích thước ban đầu
classNames = []
classFile = 'coco.names'
with open(classFile,'rt') as f:
classNames = f.read().rstrip('\n').split('\n')
configPath = 'ssd_mobilenet_v3_large_coco_2020_01_14.pbtxt' #sử dụng thuật toán phát hiện nổi tiwsng ssmobilenetv3
weightsPath = 'frozen_inference_graph.pb'
net = cv2.dnn_DetectionModel(weightsPath,configPath)
net.setInputSize(320,320)# cài kích thước vào
#net.setInputSize(480,480)
net.setInputScale(1.0/127.5)# cài đặt tỉ lệ vào
net.setInputMean((127.5, 127.5, 127.5))
net.setInputSwapRB(True_
while(1):
imgResponse = urllib.request.urlopen (url) # mở địa chỉ
imgNp = np.array(bytearray(imgResponse.read()),dtype=np.uint8)
img = cv2.imdecode (imgNp,-1)
img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
#img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
classIds, confs, bbox = net.detect(img,confThreshold=0.5)
LẬP TRÌNH XỬ LÝ ẢNH PHÁT HIỆN ĐỐI TƯỢNG TRÊN VISUAL STUDIO CODE
print(classIds,bbox)
if len(classIds) != 0:
for
classId,
confidence,box
in
zip(classIds.flatten(),confs.flatten(),bbox):
cv2.rectangle(img,box,color=(0,255,0),thickness = 3)
cv2.putText(img, classNames[classId-1], (box[0]+10,box[1]+30), cv2.FONT_HERSHEY_COMPLEX, 1, (0,255,0),2)
cv2.imshow(winName,img)
tecla = cv2.waitKey(5) & 0xFF
if tecla == 27:
break
cv2.destroyAllWindows()
Lưu đồ thuật toán ứng dụng điều khiển:
Lưu đồ thuật toán điều khiển robot:
Start
Start
S
Power ON
Khởi tạo giao diện
Đ
S
2
Switch==0
Điều khiển bằng cử
S
Bật Bluetooth
Đ
1
2
Đ
Điều khiển qua App
S
Tìm thiết bị Bluetooth
S
S
Khởi tạo địa chỉ MAC
Kết nối bluetoth với app điều khiển
1
Đ
Đ
S
Đ
Kết nối với Robot
Các nút button điều khiển không cho phép nhấn
Đ
Robot và tay cầm điều khiển kết nối thông qua MAC
Robot và App kết nối
Chuyển sang giao diện điều khiển & các button điều khiển cho phép nhấn
Robot hoạt động Khởi tạo UART PWM và định dạng biến
Robot hoạt động Khởi tạo UART PWM và định dạng biến
S
Đ
Nhấn button chế độ điều khiển tay cầm
Chuyển sang giao diện điều khiển bằng giọng nói
S
S
Esp32 nhận giá trị góc
S
Nhận ký tự từ app qua giao tiếp UART
Có Button được nhấn
S
Đ
Button Voice đươc nhấn
Đ
Đ
Xử lý tín hiệu góc, đưa ra lệnh điều khiển động cơ
Tiến hành so sánh và đưa ra lệnh thực hiện chức năng tương ứng với ký tự nhận được đã được định danh ở khai báo
Ứng dụng sẽ gửi đi các ký tự (A, B,C, D,...) được gán cho các lệnh điều khiển tương ứng (tiến, lùi, trái, phải,..) với các button được nhấn đến ESP32 để tiến hành lệnh tương ứng.
DC1
DC2
DC3
DC4
Dùng những lệnh điều khiển được thiết lập (đi thẳng/, rẽ trái/phải,..) nói vào cửa sổ Google Asistant hiện lên ở app. Ứng dụng sẽ gửi đi các ký tự (G, H, I, J,...) được gán cho các lệnh điều khiển tương ứng đến ESP32 để tiến hành lệnh tương ứng.
DC1
DC2
DC3
DC4
End
End
End
Lưu đồ thuật toán phát hiện vật:
Lưu đồ thuật toán xử lý ảnh:
Start
Start
S
ESP32-Cam hiển thị
HC-SR04 OK Servo OK Loa OK
Đ
S
Cam phát hiện vật cản
S
Cảm biến phát hiện vật cản
Đ
Đ
Phân tích xử lý hình ảnh thu được
Đo khoảng cách đến vật cản
S
S
Nhận biết vật
Khoảng cách an toàn
Gửi tín hiệu "Nguy hiểm" cho Arduino, hiển thị lên LCD, loa và servo
Đ
Đ
Gửi tín hiệu "An toàn" cho Arduino và hiển thị lên LCD
Gửi dữ liệu về cho máy tính
End
End
A
B
C
D
E
F
G
H
J
K
+
-
18650Li-on
Khoi dieu khien chuyen dong robot
0
0
Khoi ESP32-CAM
18650Li-on
-
+
R1
30
3.3V
VIN
1
29
GND1
GND
-
2
B
+ B
28
1
1
D15
D13
3
27
MACHSAC
D2
D12
M B
SW2
4
26
D4
D14
5
-
P
+ P
25
SW-SPDT-MOM
RX2
D27
6
24
TX2
D26
5V
3V3
X R
X T
7
2
2
23
D5
D25
GND
IO16
8
I
POWER JACK DC
L298
+
4
9
22
E S P 3 2 - D E V K T
D18
D33
IO12
IO0
9
21
VS
VCC
D19
D32
IO13
GND
X T
10
X R
2
OUT1
C C V
D N G
20
D21
D35
IO15
VCC
11
3
OUT2
A
-
19
RX
D34
+
IO14
UOR
TX
12
-
13
5 7 10 12 6 11
Micro
B
3
3
OUT3
IN1 IN2 IN3 IN4 ENA ENB
18
C + 3
TX
VN
-
IO2
UOT
RX
-
13
14
OUT4
3
1 15
17
SENSA SENSB
D22
VP
GND
IO4
GND
14
ESP32-CAM
16
D23
EN
I
+
8
15
L298
4
4
H C T W S R E W O P
5
5
Khoi tay dieu khien bang cu chi
Khoi do khoang cach va canh bao an toan
LCD1 LM016L
TestPin www.TheEngineeringProjects.com
ESP8266 WEMOSmini
6
6
VCC GND
/
U P M G T
r e g g i r T
o h c E
I
d n G
V 5 +
D D V
0 D
7 D
S S V
E E V
W R
1 D
2 D
3 D
4 D
6 D
S R
E
5 D
SIM2
1 2 3 4 5 6 7 8
J1 POWER JACK DC
VCC GND SCL SDA XDA XCL AD0 INT
2
7
1
3
5
8
9
4
6
1 1
0 1
3 1
2 1
4 1
RST A0 D0 D5 D6 D7 D8 3V3
TX RX D1 D2 D3 D4 GND 5V
GND VCC
5V
GND
BUZ1
GND
+
7
7
g i r T
AREF
-
o h c E
VCC
GND
5V
A
BUZZER
+
SW1
RESET
B
C + 3
14 15
I
-
Trig Echo
SCL SDA
U2 SCL SDA
-
5V
A R D U N O
3
13
INT
13 12 ~11 ~10 ~9 8
GND
5V
I
6 3
1
8
8
P O W E R
GND
U1 OUT+ OUT-
VIN+
5V
I
GND
I
2
1 2 3
4 5 6 7 9 10 11 12
VIN-
A0 A1 A2
P0 P1 P2 P3 P4 P5 P6 P7
P 8 2 3 A G E M T A
L E M T A
D G T A L
5 4
(
BAT+ BAT-
PCF8574
S M U L I N O
A N A L O G
I
SAC-3V7-1A
P W M ~ )
N
+88.8
SDA
GND
Pin
7 ~6 ~5 4 ~3 2 TX > 1 RX < 0
A0 A1 A2 A3 A4 A5
FILE NAME:
Ban ve dien dieu khien
SCL
www.arduino.cc blogembarcado.blogspot.com
9
9
SIMULINO UNO SMD
DATE: 07/05/2023 PAGE: of 1
1
DESIGN TITLE: MobileRobot Nguyen Tran The
BY:
TIME: 1:36:35 CH
K
A
B
C
D
E
F
G
H
J
1
0 0 2
194
4
13
5
3
6
12
7
VẬT LIỆU
TÊN CHI TIẾT
SỐ LƯỢNG
STT
6
MICA
VỎ XE
1
ARDUINO UNO R3
1
2
MÀN HÌNH LCD
1
3
NHỰA NHỰA THỦY TINH
ESP32 CAM
1
NHỰA
4
10
2 5
BUZZER
1
NHỰA
5
HC- SR04
1
NHỰA
6
7 6 1
SERVO SG90
1
NHỰA
7
ĐỘNG CƠ DC GIẢM TỐC
4
NHỰA
8
MODULE ESP32
1
NHỰA
9
4 5
CHẮN BÙN
2
MICA
10
1
BÁNH XE
4
NHỰA
9
TRỤ ĐỒNG
8
ĐỒNG
11 12
KE GÓC CHỮ L
1
SẮT
13
Người vẽ
Nguyễn Minh Trường
MÔ HÌNH ROBOT DI ĐỘNG ĐIỀU KHIỂN BẰNG GIỌNG NÓI
Người kiểm tra
ThS.Trần Quốc Bảo
11
139
Tỉ lệ
8
2
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
1:1
12,0
66,1
20,9
9,0 3,2
3 , 3
0 , 2 1
5 , 3 5
35,1
0 , 9
7,0
16,0
6,4 10,0
0 , 9
6 , 3 1
Người vẽ
Nguyễn Minh Trường
ARDUINO UNO R3
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
0 , 8 6
25,0
51,4
Người vẽ
Nguyễn Minh Trường
9,8
BÁNH XE
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
11,9
4 , 9
5 , 6
11,9
Người vẽ
Nguyễn Minh Trường
BUZZER
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
60,0
3 , 0
0 , 0 6
0 , 0 9
37,6
3
35,0
9 , 1
0 , 1
Người vẽ
Nguyễn Minh Trường
CẠNH BÊN
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
MICA
1:1
3 , 0 0
0 , 5 3
3 , 4 6
1 3 5 °
104,5
200,0
120,0
40,0
Người vẽ
Nguyễn Minh Trường
CHẮN BÙN
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
MICA
1:1
20,0
R
7,0
15,0
5,0
12,0
15,0
38,0
Người vẽ
Nguyễn Minh Trường
ĐỘNG CƠ DC GIẢM TỐC
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
15
38
5 1
80 95
3
0 8 1
2
0
69
3
125
1
Người vẽ
Nguyễn Minh Trường
ĐẾ TẦNG 1
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
MICA
1:1
3
,
0
0 , 1 2 1
165,0
0 , 1
Người vẽ
Nguyễn Minh Trường
ĐẾ TẦNG 2
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
MICA
1:1
101,0
74,5
0 0 , 0 9
2 , 9 7
3,0
89,1
0 0 , 1
Người vẽ
Nguyễn Minh Trường
ĐẾ TẦNG 3
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
MICA
1:1
2,0 2,0
9 , 1
3 , 1
5 , 1
4 , 2
6 , 5
1,8
26,5
5 , 0 5
1 , 8 3
3,0
Người vẽ
Nguyễn Minh Trường
ESP32
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
8,5
4 , 5
2 , 3
7 , 7 1
0 , 9
4 , 2
1,5
7 , 2
0 , 6
0 , 5 2
7 , 4
19,2
38,0
Người vẽ
Nguyễn Minh Trường
ESP32 CAM
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
1,4
R
3 , 1 2
1
6,3
3,1
12,30
15,3
8,0
3 , 4
0 , 7
4 , 1
0 , 1
45,7
Người vẽ
Nguyễn Minh Trường
HC - SR04
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
24,6
4,0
6 , 4 2
0 , 5 2
10,0
25,0
0 , 0 3
Người vẽ
Nguyễn Minh Trường
KE GÓC CHỮ L
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
SẮT
1:1
4,9
3,4
3 , 7
6 , 5
2 , 1
0 , 0 1
1 , 6
2 , 0 4
2 , 2
0 , 7
6 , 4 1
3,0
24,0
0 , 9 1
9 , 7
39,4
Người vẽ
Nguyễn Minh Trường
L298
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
1,6
7,9
R
2 , 8
9 , 4 3
7 , 2 1
2 , 2 2
3,2
3,2
61,9
68,3
79,4
7 , 8
Người vẽ
Nguyễn Minh Trường
MÀN HÌNH LCD
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
NHỰA + THỦY TINH
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
1:1
11,5
4,0
,
9 4
4 , 2
2 , 2 3
8 , 8 1
22,4
32,2
Người vẽ
Nguyễn Minh Trường
SERVO
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
NHỰA
1:1
9,0
25,0
0 , 2 5
0
3 , 0
92,0
120,0
0 , 1
Người vẽ
Nguyễn Minh Trường
TẤM CHẮN TRƯỚC XE
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
MICA
1:1
50,0
5,1
3 , 0
2
,
8
5,5
Người vẽ
Nguyễn Minh Trường
TRỤ ĐỒNG
Người kiểm tra
ThS. Trần Quốc Bảo
Tỉ lệ
ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGHÀNH CÔNG NGHỆ KĨ THUẬT CƠ ĐIỆN TỬ
ĐỒNG
1:1