Thiết kế và thi công thiết bị nhận dạng chuyển động của đầu có tích hợp cảm biến gia tốc

Page 1

BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ NHẬN DẠNG CHUYỂN ĐỘNG CỦA ĐẦU CÓ TÍCH HỢP CẢM BIẾN GIA TỐC CHO VIỆC ĐIỀU KHIỂN XE LĂN GVHD: ThS. TRẦN ĐĂNG KHOA SVTH1: HUỲNH NGỌC PHIÊN (15141235) SVTH2: PHẠM NGỌC QUỐC (15141260) TP. Hồ Chí Minh, ngày 20 tháng 12 năm 2019 https://doan.edu.vn/

BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ NHẬN DẠNG CHUYỂN ĐỘNG CỦA ĐẦU TÍCH HỢP CẢM BIẾN GIA TỐC CHO VIỆC ĐIỀU KHIỂN XE LĂN GVHD: ThS. TRẦN ĐĂNG KHOA SVTH1: HUỲNH NGỌC PHIÊN (15141235) SVTH2: PHẠM NGỌC QUỐC (15141260) TP. Hồ Chí Minh, ngày 20 tháng 12 năm 2019 https://doan.edu.vn/

ii TP. HCM, ngày 20 tháng 12 năm 2019 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Huỳnh Ngọc Phiên MSSV: 15141235 Phạm Ngọc Quốc MSSV: 15141260 Chuyên ngành: KT thuật Điện tử truyền thông Mã ngành: 141 Hệ đào tạo: Đại học chính quy Mã hệ: 1 Khóa: 2015 Lớp: 159410A I. TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ NHẬN DẠNG CHUYỂN ĐỘNG CỦA ĐẦU TÍCH HỢP CẢM BIẾN GIA TỐC CHO VIỆC ĐIỀU KHIỂN XE LĂN II. NHIỆM VỤ: 1. Các số liệu ban đầu: Kích thước mô hình: Bộ điều khiển động cơ DC (chiều dài 16cm, chiều rộng 8cm, chiều cao 6cm), thiết bị nhận diện cử động đầu (tai nghe chụp tai SONY). - Thiết bị nhận diện cử động đầu bằng cảm biến gia tốc và con quay thiết kế trên tai nghe chụp tai SONY. - Bộ điều khiển động cơ DC 24VDC bằng cầu H nhận lệnh điều khiển từ thiết bị nhận diện cử động đầu bằng bluetooth. Sử dụng 2 cảm biến hồng ngoại để phát hiện vật cản. - Arduino Nano được sử dùng làm bộ xử lý trung tâm cho cả bộ điều khiển động cơ và thiết bị nhận dạng chuyển động của đầu. 2. Nội dung thực hiện: - Tìm hiểu nguyên lí hoạt động của cảm biến gia tốc, các cảm biến khác như khoảng cách, các chuẩn truyền như I2C, UART. TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH KHOA ĐIỆN ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP TỰ DO HẠNH PHÚC o0o https://doan.edu.vn/

https://doan.edu.vn/

iii Phân tích các tín hiệu từ cảm biến gia tốc để biết được các dữ liệu khi người dùng muốn đi sang trái, phải, tới, lui. Phân tích tín hiệu từ các cảm biến khác để nhận biết các trường hợp nguy hiểm cho người dùng trên xe lăn. Từ các dữ liệu đã phân tích được từ cảm biến gia tốc tiến hành kết hợp với vi điều khiển trung tâm để lập trình điều khiển các hướng di chuyển của xe lăn. - Từ các dữ liệu thu được từ các cảm biến khác như lực, khoảng cách, v.v để thiết kế hệ thống cảnh báo và bảo đảm an toàn cho người sử dụng. Kết hợp tất cả các phần là xe lăn, cảm biến, vi điều khiển và lập trình cho hệ thống. - Kết hợp điều khiển xe lăn bằng đầu và điều khiển xe lăn bằng ứng dụng di động thông qua wifi. - Tiến hành chạy thử nghiệm, chỉnh sửa và hoàn thiện thêm tính năng cho xe lăn. - Tiến hành nhận xét, đánh giá chung toàn hệ thống Tiến hành viết báo cáo đề án - Báo cáo đề tài tốt nghiệp III. NGÀY GIAO NHIỆM VỤ: 02/09/2019 IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 25/12/2019 V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS. Trần Đăng Khoa CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP Y SINH

Nộp đề cương chi tiết đề tài tốt nghiệp 3 (16/09/201922/09/2019)

Tiến hành lấy dữ liệu từ cảm biến gia tốc và con quay dựa trên các cử động của đầu (quay trái, quay phải, gật trước, gật sau)

Tìm hiểu về cảm biến con quay (gyroscope)

Tìm hiểu về Arduino Nano Tìm hiểu về kết nối không dây qua Bluetooth 5 (30/09/201906/10/2019)

Tiến hành mua đầy đủ linh kiện Xây dựng mô hình để thực hiện nghiên cứu 6 (07/10/201913/10/2019)

Tiến hành lập trình cho Arduino Nano dựa trên các trường hợp của dữ liệu thu được 7 (14/10/201920/10/2019)

Tiến hành thiết kế phần cứng cho thiết bị nhận diện dạng chuyển động của dầu trên tai nghe chuụp tai - Tiến hành thí nghiệm thực tế bằng đầu, kết quả hiển thị trên serial port của Arduino và 4 LED đơn trượng trưng cho 4 hướng trái, phải, tiến, lùi. 8 Thiết kế bộ điều khiển động cơ DC

https://doan.edu.vn/

Tìm hiểu về cảm biến gia tốc (accelerometer)

iv TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o TP. HCM, ngày 20 tháng 12 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Huỳnh Ngọc Phiên Lớp: 159410A MSSV: 15141235 Họ tên sinh viên 2: Phạm Ngọc Quốc Lớp: 159410A MSSV: 15141260 Tên đề tài: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ NHẬN DẠNG CHUYỂN ĐỘNG CỦA ĐẦU TÍCH HỢP CẢM BIẾN GIA TỐC CHO VIỆC ĐIỀU KHIỂN XE LĂN Tuần/ngày Nội dung Xác nhận GVHD 1 (02/09/201908/09/2019) Liên hệ với GVHD nhận đề tài tốt nghiệp 2 (09/09/201915/09/2019)

Tìm hiểu cách kết hợp gia tốc và con quay để tính góc quay 4 (23/09/201929/09/2019)

Tiến hành phân chia trường hợp từ dữ liệu thu được

Báo cáo trước hội đồng GVHD (Ký và ghi rõ họ tên)

Lắp ráp, kết hợp xe lăn điện với bộ điều khiển động cơ DC và thiết bị nhận dạng chuyển động của đầu Tiến hành chạy thử nghiệm trên mô hình thực tế 10 (04/11/201910/11/2019)

https://doan.edu.vn/

Tiến hành thiết kế điều khiển xe lăn bằng ứng dụng di động thông qua wifi Kết hợp điều khiển bằng ứng dụng di động và cử động của đầu trên cùng 1 thiết bị - Tiến hành chạy thử nghiệm xe lăn điện điều khiển bằng ứng dụng di động và sửa lỗi Viết luận văn 13 (15/11/201901/12/2019)

Chạy thực tế trên xe để nhận biết được sự khác biệt lúc lấy dữ liệu không có chạy thực tế và lúc chạy thực tếTiến hành sửa lỗi code dựa trên 4 động tác (gật tới, gật lùi, quay trái, quay phải)

Nghiên cứu thiết kế thêm cảm biển phát hiện vật cản 11 (11/11/201917/11/2019)

Chạy thử nghiệm toàn bộ xe lăn điện Viết luận văn 14 (02/12/201908/12/2019) Hoàn chỉnh, cân chỉnh toàn bộ xe lăn điện (phần ứng và phần mềm) Viết hoàn chỉnh luận văn 15 (09/12/201915/12/2019) - Hoàn chỉnh luận văn Nộp luận văn Phản biện 16 (16/12/201922/12/2019)

v (21/10/201927/10/2019)

Chạy thử nghiệm cảm biến phát hiện vật cản Sửa lỗi phần cứng và phần lập trình 12 (18/11/201924/11/2019)

Kết nối thiết bị nhận dạng chuyển động của đầu và bộ điều khiển động cơ DC bằng module bluetooth HC 05 9 (28/10/201903/11/2019)

Chạy thực tế và tiếp tụ hoàn thiện phần lập trình cho nhận biết dạng chuyển động của đầu (gật tới, gật lùi, quay trái, quay phải)

vi LỜI CAM ĐOAN Đề tài này là do tôi tự thực hiện dựa vào một số tài liệu và không sao chép từ tài liệu hay công trình đã có trước đó và hiện tại. Người thực hiện đề tài Sinh viên 1 Sinh viên 2 Huỳnh Ngọc Phiên Phạm Ngọc Quốc https://doan.edu.vn/

vii LỜI CẢM ƠN Em xin gửi lời cảm ơn sâu sắc đến thầy Trần Đăng Khoa Giảng viên bộ môn Điện tử công nghiệp y sinh, cùng các thầy cô khác trong bộ môn đã tạo điều kiện về kiến thức cũng như cơ sở vật chất trong quá trình chúng em thực hiện đề tài. Em cũng gửi lời cảm ơn đến các bạn cùng thực hiện đề tài khác tại phòng lab y sinh đã chia sẻ trao đổi những kinh nghiệm kiến thức để nhóm có thể hoàn thiện đề tài. Cảm ơn gia đình đã luôn bên cạnh nhóm trong quá trình thực hiện đề tài. Xin chân thành cảm ơn! Người thực hiện đề tài Sinh viên 1 Sinh viên 2 Huỳnh Ngọc Phiên Phạm Ngọc Quốc

https://doan.edu.vn/

viii MỤC LỤC TRANG BÌA……………………………………………………………………………i NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP...............................................................................ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iv LỜI CAM ĐOAN...........................................................................................................vi LỜI CẢM ƠN................................................................................................................vii MỤC LỤC viii LIỆT KÊ HÌNH...............................................................................................................x LIỆT KÊ BẢNG.......................................................................................................... xiii TÓM TẮT xiv Chương 1. TỔNG QUAN................................................................................................1 1.1. ĐẶT VẤN ĐỀ:..................................................................................................1 1.2. MỤC TIÊU:.......................................................................................................2 1.3. NỘI DUNG NGHIÊN CỨU:.............................................................................2 1.4. GIỚI HẠN: 3 1.5. BỐ CỤC:............................................................................................................3 Chương 2. CƠ SỞ LÍ THUYẾT......................................................................................4 2.1. Chuyển động của đầu trong không gian: 4 2.1.1. Phương hướng trong không gian:................................................................4 2.1.2. Chuyển động của đầu trong không gian 3 chiều: 5 2.2. Gới thiệu phần cứng:..........................................................................................6 2.2.1. Cảm biến gia tốc: ........................................................................................6 2.2.2. Arduino Nano: 10 2.2.3. Module thu phát Wifi ESP8266 Node MCU:...........................................13 2.2.4. Mạch thu phát Bluetooth HC 05:..............................................................15 2.2.5. Mạch Điều Khiển Động Cơ DC BTS7960 43A (1 Động Cơ): 17 2.2.6. Động cơ Servo SG90: ...............................................................................19 2.2.7. Cảm biến hồng ngoại Analog SHARP - GP2Y0A02YK0F .....................20 2.2.8. Pin Sạc Lipo 2000mAh 3.7V (LP803860): 21 2.2.9. TP4056 Mạch Sạc Pin MiniUSB 1A:.......................................................23 2.2.10. Mạch Giảm Áp DC LM2596 3A:.............................................................25 2.2.11. Chuẩn giáo tiếp I2C: 26 https://doan.edu.vn/

ix Chương 3. TÍNH TOÁN VÀ THIẾT KẾ 28 3.1. GIỚI THIỆU:...................................................................................................28 3.2. TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG:....................................................28 3.2.1. Thiết kế sơ đồ khối hệ thống: 28 3.2.2. Tính toán và thiết kế mạch:.......................................................................30 3.2.3. Thiết kế sơ đồ nguyên lí toàn hệ thống:....................................................39 Chương 4. THI CÔNG HỆ THỐNG 41 4.1. GIỚI THIỆU:...................................................................................................41 4.2. THI CÔNG HỆ THỐNG:................................................................................41 4.2.1. Thiết kế phần cứng cho hệ thống: 41 4.2.2. Lắp ráp và kiểm tra:......................................................................................43 4.4. LẬP TRÌNH HỆ THỐNG: ..............................................................................49 4.4.1. Lưu đồ giải thuật: 49 4.4.2. Phần mềm lập trình cho vi điều khiển:.........................................................53 4.4.2. Phần mềm điện thoại: 57 4.5. LẬP TRÌNH MÔ PHỎNG: .............................................................................60 4.5.1. Lưu đồ lập trình mô phỏng:..........................................................................60 4.6. VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG: 61 4.6.1. Viết tài liệu hướng dẫn sử dụng: ..................................................................61 4.6.1. Quy trình thao tác:........................................................................................61 Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 63 5.1. KẾT QUẢ:.......................................................................................................63 5.2. NHẬN XÉT_ĐÁNH GIÁ: 71 Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ..................................................73 6.1. KẾT LUẬN:.....................................................................................................73 6.1.1. Đạt được: 73 6.1.2. Chưa đạt được:..........................................................................................73 6.1. HƯỚNG PHÁT TRIỂN:..................................................................................73 TÀI LIỆU THAM KHẢO PHỤ LỤC.......................................................................................................................... https://doan.edu.vn/

x LIỆT KÊ HÌNH Trang Hình 2.1. Góc quay của vector trên không gian 2 chiều.................................................4 Hình 2.2. Góc Euler miêu tả phương hướng trong không gian. 4 Hình 2.3. Biểu diễn roll, pitch và yaw trong không gian................................................5 Hình 2.4. Biểu diễn chuyển động của đầu bằng Roll, Pitch và Yaw..............................5 Hình 2.5. Robot tự cân bằng ứng dụng cảm biến gia tốc 5 Hình 2.6. Mô hình cảm biến gia tốc cơ bản....................................................................7 Hình 2.7. Con quay hồi chuyển ......................................................................................7 Hình 2.8. Hình ảnh thực tế của MPU6050 8 Hình 2.9. Sơ đồ nguyên lý của cảm biến GY 521 sử dụng chip MPU6050...................9 Hình 2.10. Hình ảnh thực tế của Arduino Nano V3.0..................................................11 Hình 2.11. Mạch nguyên lí của module Arduino Nano V3.0.......................................13 Hình 2.12. Input/Output Pins của Arduino Nano.........................................................13 Hình 2.13. Hình ảnh thực tế của NodeMCU ESP8266 15 Hình 2.14. Sơ đồ nguyên lí PINOUT NodeMCU ESP8266.........................................16 Hình 2.15. PINOUT của NodeMCU ............................................................................17 Hình 2.16. Hình ảnh thực tế của HC 05 18 Hình 2.17. Pinout của HC 05........................................................................................19 Hình 2.18. Hình ảnh thực tế của mạch điều khiển động cơ DC BTS7960 20 Hình 2.19. Sơ đồ chân của BTS7960............................................................................21 Hình 2.20. Hình ảnh động cơ ServoSG90....................................................................22 Hình 2.21. Cảm biến hồng ngoại Sharp 23 Hình 2.22. Sơ đồ chân của cảm bến khoảng cách SHARP ..........................................24 Hình 2.23. Hình ảnh thực tế của Pin sạc Lipo 2000mAh LP803860 ...........................25 Hình 2.24. Hình ảnh thực tế của mạch sạc TP4056 26 Hình 2.25. Sơ đồ nguyên lí của TP4066.......................................................................28 Hình 2.26. Hình ảnh thực tế của mạch giảm áp LM2596.............................................30 Hình 2.27. Sơ đồ nguyên lý của LM2596 30 Hình 2.28. Mô hình hoạt động của I2C ........................................................................31 Hình 3.1. Sơ đồ khối toàn bộ hệ thống.........................................................................33 Hình 3.2. Sơ đồ kết nối MPU6050 với Arduino Nano 35 https://doan.edu.vn/

xi Hình 3.3. Sơ đồ kết nối module HC 05 với Arduino Nano để phát Bluetooth. 37 Hình 3.4. Sơ đồ kết nối cài đặt HC 05..........................................................................37 Hình 3.5. Sơ đồ kết nối module sạc Pin và Pin LIPO...................................................38 Hình 3.6. Sơ đồ nguyên lí nhận dạng chuyển động của đầu. 39 Hình 3.7. Sơ đồ nguyên lí của khối nhận dữ liệu Bluetooth.........................................40 Hình 3.8. Sơ đồ nguyên lí kết nối 2 cảm biến khoảng cách với Arduino Nano...........41 Hình 3.9. Mô hình kết hợp cảm biến khoảng cách và động cơ Servo để quét 41 Hình 3.10. Sơ đồ nguyên lí kết nối 2 động cơ servo với Arduino Nano......................42 Hình 3.11. Sơ đồ nguyên lí khối điều khiển động cơ DC.............................................42 Hình 3.12. Sơ đồ nguyên lí bộ điều khiển động cơ của xe lăn 43 Hình 3.13. Sơ đồ nguyên lí toàn mạch..........................................................................46 Hình 4.1. Sơ đồ vị trí linh kiện trên tai nghe chụp tai ..................................................46 Hình 4.2. Sắp xếp linh kiện trong bộ điều khiển động cơ DC xe lăn 49 Hình 4.4. Hình ảnh Arduino Nano trên bộ điều khiển..................................................50 Hình 4.5. Hình ảnh BTS7960 trên bộ điều khiển động cơ 50 Hình 4.6. Hình ảnh HC 05 trên bộ điều khiển..............................................................51 Hình 4.7. Khối bảm biến và điều hướng cảm biến.......................................................52 Hình 4.8. Hình ảnh bên hông của bộ điều khiển có input là USB. 52 Hình 4.9. Hình ảnh bên hông trái của bộ điều khiển có công tắc cấp nguồn cho các linh kiện trong bộ điều khiển tránh sự cố xảy ra ..........................................................53 Hình 4.10. Hình ảnh Pin LIPO và mạch such TP4056 của nó một bên tai nghe. 53 Hình 4.11. Hình ảnh của board Arduino Nano bên một phần của tai nghe..................54 Hình 4.12. Hình ảnh của module HC05 một bên của tai nghe 54 Hình 4.13. Hình ảnh NodeMCU bên trong tai nghe.....................................................55 Hình 4.13. Hình ảnh cảm biến MPU6050 được gắn trên tai nghe. ..............................55 Hình 4.14. Hình ảnh tai nghe sau khi đã hang thiện 56 Hình 4.15. Lưu đồ thuật toán chung cho toàn bộ hệ thống ..........................................57 Hình 4.16. Chương trình con điều khiển xe bằng đầu..................................................58 Hình 4.17. Lưu đồ chương trình con điều khiển bằng ứng dụng. 59 Hình 4.18. Logo phần mềm ARDUINO IDE...............................................................60 Hình 4.19. Cách tải phần mềm .....................................................................................61 Hình 4.20. Giao diện Arduino IDE 61 https://doan.edu.vn/

xii Hình 4.21. Ứng dụng BLYNK 63 Hình 4.22. Các bước tạo 1 project trong BLYNK........................................................63 Hình 4.23. Cách thêm nút nhấn điều khiển. .................................................................64 Hình 4.24. Cách lấy Token 64 Hình 4.25. Giao diện ứng dụng trên di động................................................................65 Hình 4.26. Lưu đồ thuật toán mô phỏng cảm biến.......................................................66 Hình 4.27. Mô phỏng chuyển động của cảm biến bằng Roll Pitch Yaw 66 Hình 4.28. Lưu đồ các sử dụng xe lăn điều khiển........................................................70 Hình 5.1. Hình ảnh tai nghe nhận dạng chuyển động của đầu .....................................70 Hình 5.2. Module điều khiển động cơ DC của xe lăn 70 Hình 5.3. Hình ảnh mặt sau của xe lăn.........................................................................71 Hình 5.4. Hình ảnh mặt trước của xe lăn......................................................................71 Hình 5.5.Tín hiệu Roll và Pitch cảu ACCEL trước khi qua bộ lọc Complementary. 72 Hình 5.6.Tín hiệu Roll và Pitch cảu GYRO trước khi qua bộ lọc Complementary....73 Hình 5.7.Roll và Pitch sau khi qua bộ lọc Complementary. 73 Hình 5.8.Dữ liệu cảm biến khi gật đầu về trước..........................................................74 Hình 5.9.Dữ liệu cảm biến khi ngửa đàu ra sau...........................................................74 Hình 5.10.Dữ liệu cảm biến khi quay đầu sang trái 75 Hình 5.11.Dữ liệu cảm biến khi quay đầu sang phải...................................................75 Hình 5.12.Khi ngủ gật sẽ có thông báo trên điện thoại di động và qua email.............76 Hình 5.13.Khi phát hiện vật cản xe tự động dừng lại 76 https://doan.edu.vn/

xiii LIỆT KÊ BẢNG Trang Bảng 2.1. Các lệnh thông dụng HC 05.........................................................................19 Bảng 2.2. Thông số RPROG và IBAT của TP4056 .....................................................28 Bảng 3.1. Thống kê dòng tải của thiết bị nhận dạng 40 Bảng 3.2. Thống kê dòng tải của bộ điều khiển động cơ xe lăn...................................44 Bảng 4.1. Danh sách các linh kiện................................................................................47 Bảng 4.2. Thanh ghi reset và khởi tạo cảm biến 61 Bảng 4.3. Thanh ghi lưu giá trị của ACCEL ................................................................62 Bảng 4.4. Giá trị giới hạn của cảm biến ACCEL .........................................................62 Bảng 4.5. Giá trị giới hạn của cảm biến GYRO 62 Bảng 5.1. Thống kê kết quả điều khiển.........................................................................72 https://doan.edu.vn/

xiv TÓM TẮT Chúng ta đang sống trong thời đại mà các thiết bị, dụng cụ đã và đang được nghiên cứu, phát triển cho phép chúng hoạt động một cách tự động và thông minh hơn. Sự ra đời của xe lăn là bước ngoặc lớn đối với người khuyết tật, từ xe lăn chạy bằng sức người cho đến những chiếc xe lăn điện hiện đại hỗ trợ cho người dùng. Xe lăn điện ngày càng trở nên quan trọng như là một công nghệ hỗ trợ, thiết bị phục hồi sức khỏe và số lượng người tăng lên đáng kể Hiện nay có nhiều loại xe lăn điện điều khiển như: xe lăn điện điều khiển bằng joystick, xe lăn điện điều khiển bằng giọng nói, xe lăn điện điều khiển qua ứng dụng di động. Trong đề tài này nhóm nghiên cứu, thiết kế và thi công bộ điều khiển xe lăn điện điều khiển bằng các cử động của đầu để hướng đến những người khuyết tật, bệnh nhân không có khả năng sử dụng tay để điều khiển. Đề tài “Nghiên cứu, thiết kế và thi công bộ điều khiển xe lăn điện bằng các cử động của đầu” đã hoàn thành được phần điều khiển xe lăn điện bằng các cử động của đầu như quay trái, quay phải, gật về phía trước, gật về phía sau dựa trên cảm biến gia tốc (accelerometer) kết hợp với cảm biến con quay hồi chuyển (gyroscope). Ngoài phần điều khiển bằng đầu, xe lăn còn có thêm chức năng điều khiển được qua ứng dụng di động mã nguồn mở Blynk, có thể tự động thông báo cho người thân khi có sự cố như ngủ gật xảy ra, tự động dừng lại khi phát hiện vật cản phía trước và phía sau.

https://doan.edu.vn/

CHƯƠNG 1: TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 1 Chương 1. TỔNG QUAN 1.1. ĐẶT VẤN ĐỀ: Công nghệ ngày càng phát triển, nhất là trong thời kì của nên công nghiệp 4.0 thì mọi thứ đều được thực hiện một cách tự động, thông minh, nhanh chóng và tiện lợi cho người sử dụng. Theo số liệu thống kê năm 2019 thì có tới 7% dân số Việt Nam tương đương với 6.2 triệu người khuyết tật, trong số đó số người khuyết tật vận động chiếm đến 35% (Theo Zing.vn). Đi vào vấn đề liên quan đến sự di chuyển của các người khuyết tật, các bệnh nhân đang trong quá trình hồi phục chức năng cũng được đáp ứng rất chu đáo như sự xuất hiện của xe lăn điện, góp phần tiết kiệm được sức lực của người thân và cũng như bản thân người ngồi xe lăn. Hiện nay trên thị trường có phổ biến các loại xe lăn điều khiển bằng trục (joystick), ứng dụng di động…. Vấn đề đang tồn tại ở đây là những xe lăn điện hiện nay hầu hết đều chưa hướng đến những người tàn tật không có khả năng sử dụng tay để điều khiển. Một số phương pháp điều khiển xe lăn điện hiện nay như: Bộ điều khiển thường là một bên tay vịn của xe lăn có gắn thêm một số các nút điều khiển hướng cho phép người dùng có thể dùng tay để tinh chỉnh và điều khiển ở nhiều chế độ khác nhau. Trong một số trường hợp bộ điều khiển có thể được gắn ở phía sau để người phụ tá hỗ trợ thay vì người ngồi xe lăn. Xe lăn hỗ trợ bộ điều khiển này có thể được thiết kế để có thể sử dụng ở trong nhà mà ngoài trời [1]. Chúng ta có thể nhận thấy rằng trong cuộc sống hàng ngày cử chỉ là một trong những hành vi giao tiếp mà con người có thể dễ dàng sử dụng một cách dễ dàng, ví dụ như là cử chỉ của cánh tay, bàn tay, ngón tay đều được sử dụng. Điều khiển xe lăn bằng các cử chỉ của tay ứng dụng những hành động này vào trong việc điều khiển và áp dụng công nghệ xử lý ảnh để xử lý các cử chỉ của tay [2]. Vấn đề ở trên một là chưa hướng đến người khuyết tật cả tay chân và nếu có thì cũng đang nằm quá trình nghiên cứu hoàn thiện. Nhằm giải quyết vấn đề đó nhóm thực hiện đề tài “THIẾT KẾ VÀ THI CÔNG THIẾT BỊ NHẬN DẠNG CHUYỂN ĐỘNG CỦA ĐẦU TÍCH HỢP CẢM BIẾN GIA TỐC CHO VIỆC ĐIỀU KHIỂN XE LĂN”. Mục tiêu hướng tới những người tàn tật, bệnh nhân không có khả năng điều khiển tay, xe lăn điện bây giờ có thể điều khiển được bằng những động tác của đầu người sử dụng, ngoài ra còn tích hợp thêm các tính năng khác để thuận tiện cho người sử dụng như điều khiển qua ứng dụng, cảnh báo nguye nghiểm… https://doan.edu.vn/

ng cảnh báo nguy hiểm, kết hợp điều khiển xe lăn bằng ứng dụng di động Blynk. • NỘI DUNG 6: Kết hợp tất cả các phần nhận dạng tín hiệu, điều khiển, hệ thống an toàn vào trên cùng một xe lăn. Tiến hành chạy thử nghiệm và hiệu chỉnh. • NỘI DUNG 7: Đánh giá kết quả thực hiện • NỘI DUNG 8: Viết báo cáo • NỘI DUNG 9: Bảo vệ đề tài https://doan.edu.vn/

• NỘI DUNG 5: Tích hợp thêm cảm biến khoảng cách nhận diện vật cản, ứng dụ

CHƯƠNG 1: TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 2 1.2. MỤC TIÊU: Thiết kế và thì công xe lăn điều khiển bằng cử động của đầu dựa trên cảm biến gia tốc kết hợp với con quay hổi chuyển MPU6050, sử dụng vi điều khiển trung tâm là module Arduino Nano kết hợp với module ESP8266 NodeMCU để điều khiển. Nghiên cứu thiết kế phần nhận dạng tín hiệu của đầu (gật tới, gật sau, quay sang trái, quay sang phải) bằng cảm biến kết hợp với Arduino Nano. Truyền dạng cử động của đầu dến bộ điều khiển động cơ để tiến hành điều khiển bằng Bluetooth. Thiết kế phần điều khiển xe lăn qua ứng dụng di động mã nguồn mở Blynk kết hợp với cảnh báo nếu gặp tình huống nghi hiển như ngủ gật, tự động phát hiện vật cản và dừng lại dựa trên cảm biến hông ngoại Sharp. 1.3. NỘI DUNG NGHIÊN CỨU: • NỘI DUNG 1: Nghiên cứu, tìm hiểu về cảm biến gia tốc, con quay hồi chuyển (MPU6050), Arduino Nano, cảm biến hồng ngoài SHARP, NodeMCU, BLYNK.

• NỘI DUNG 2: Thu thập dữ liệu chuyển động (gật tới, gật sau, quay trái, quay phải) của đầu dựa trên cảm biến gia tốc (accelerometer) và con quay hồi chuyển (gyroscope) được tích hợp trên MPU6050.

• NỘI DUNG 3: Thiết kế giải thuật, lập trình cho Arduino Nano dựa trên các dữ liệu đã thu được từ cảm biến để điều hướng xe lăn.

• NỘI DUNG 4: Thiết kế bộ điều khiển động cơ DC để nhận tín hiệu từ thiết bị nhận dạng chuyển động của đầu bằng Bluetooth để điều khiển xe lăn đã có sẵn 2 động cơ DC.

• Chương 5: Kết Quả, Nhận Xét và Đánh Giá Đưa ra kết quả đạt được sau một thời gian nghiên cứu, một số hình ảnh của bộ điều khiển xe lăn. Đưa ra những nhận xét, đánh giá toàn bộ hệ thống điều khiển xe lăn bằng đầu. • Chương 6: Kết Luận và Hướng Phát Triển Trình bày những kết luận về hệ thống những phần làm rồi và chưa làm, kết luận hiệu quá của bộ điều khiển xe lăn trong thực tế, đồng thời nếu ra hướng phát triển cho hệ thống. https://doan.edu.vn/

CHƯƠNG 1: TỔNG QUAN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 3 1.4. GIỚI HẠN: • Kích thước của thiết bị nhận dạng tín hiệu chuyển động của đầu: Được thiết kế, tích hợp trên tai nghe chụp tai thông thường, có thể căn chỉnh để vừa đầu • Kích thước bộ điều khiển động cơ DC: chiều cao 7cm, chiều dài 16cm, chiều rộng 8cm. • Cảm biến phát hiện vật cản (SHARP GP2Y0A02YK0F) có giới hạn 30cm 150cm. • Xe lăn di chuyển 4 hướng: tới, lui, trái, phải. • Xe lăn phục vụ người dùng trong môi trường nền bằng phẳng không phải cầu thang và ghềnh dốc quá cao 1.5. BỐ CỤC: • Chương 1: Tổng Quan Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nôi dung nghiên cứu, các giới hạn thông số và bố cục trình bày của đề tài • Chương 2: Cơ sở Lý Thuyết Giới thiệu các linh kiện, thiết bị sử dụng thiết kế hệ thống. Giới thiệu khái quát về các thông số của cảm biến, ứng dụng được sử dụng trong đề tài.

• Chương 3: Thiết Kế và Tính Toán Tính toán để lựa chọn các linh kiện phù hợp với hệ thống. Thiết kế sơ đồ khối và giải thích sơ đồ khối, sơ đồ nguyên lí của hệ thống điều khiển. • Chương 4: Thi Công Hệ Thống Phần này tiến hành quá trình thiết kế phần cứng cho các phần của hệ thông như thiếtbị nhậndạngchuyểnđộng,bộ điềukhiển độngcơDC. Viết chươngtrìnhđiềukhiển cho Arduino, kết hợp ứng dụng di động vào để điều khiển xe lăn.

https://doan.edu.vn/

Trong khôn gian 3 chiều: Vị trí và phương hướng trong không gian của một vật thể rắn được xác định như một vị trí và phương hướng của một khung tham chiếu trong một khung tham chiếu khác cố định với vật thể, tịnh tiến và quay. Ít nhất 3 giá trị độc lập là cần thiết để miêu tả phưoớng của khung hình cố định. Mặc dù một vật thể rắn có thể di chuyển tự do được gọi là 6 bậc của tự do [3]. Hình 2.2. Góc Euler miêu tả phương hướng trong không gian.

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 4 Chương 2. CƠ SỞ LÍ THUYẾT 2.1. Chuyển động của đầu trong không gian: 2.1.1. Phương hướng trong không gian: Trong hình học thì phương hướng, góc độ và dáng điệu của một vật (ví dụ một mặt phẳng, một vật thể rắn…) dùng để miêu tả không gian chứa vật đó. Trong đó thì phương hướng được đặt ra dựa trên hệ trục tọa độ.

Trong không gian 2 chiều: Trong không gian này thì phương hướng củ bất kỳ vật nào (vật rắn, mặt phẳng, vector…) được đo bởi một giá trị duy nhất là góc quay được tạo ra khi vật đó quay. Hình 2.1. Góc quay của vector trên không gian 2 chiều

Hình 2.4. Biểu diễn chuyển động của đầu bằng Roll, Pitch và Yaw. https://doan.edu.vn/

Góc quay xung quanh trục Y gọi là Yaw. Góc quay xung quanh trục Z gọi là Roll.

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 5

2.1.2. Chuyển động của đầu trong không gian 3 chiều: Trong giới hạn của đề tài ta chỉ tìm hiểu về 3 góc được gọi là momen đảo lại, dọc xuống, nghiêng hay còn được gọi lần lượt là roll, pitch, yaw. Hình 2.3. Biểu diễn Roll, Pitch và Yaw trong không gian Góc quay xung quanh trục*gọi là Pitch.

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 6 2.2. Gới thiệu phần cứng: Thiết bị đầu vào: cảm biến gia tốc (acceloremeter) kết hợp cảm biến con quay hồi chuyển (gyroscope), cảm biến hồng ngoại, công tắc… Thiết bị đầu ra: led đơn, module điều khiển động cơ DC, động cơ DC… Thiết bị điều khiển trung tâm: Arduino Nano V3.0 Atmega328P, NodeMCU ESP8266. Các chuẩn truyền dữ liệu: UART, SPI, I2C, Bluetooth, WiFi… Thiết bị giao diện điều khiển: Điện thoại thông minh. 2.2.1. Cảm biến gia tốc: a. Đặt vấn đề: Để kháo sát trang thái chuyển động của một vật thì chúng ta cần biết các thông số như là: vị trí, vận tốc, gia tốc. Trên thực tế người ta thường hay sử dụng cảm biến gia tốc để khảo sát chuyển động của một vật. Để cho một hệ thống có thể hiểu được các chuyển động để áp dụng trong các thuật toán tự động hóa người ta sẽ sử dụng cảm biến giá tốc để đọc dữ liệu và thiết kế [4] Hình 2.5. Robot tự cân bằng ứng dụng cảm biến gia tốc b. Nguyên lý hoạt động: Gia tốc kế (accelerometer): https://doan.edu.vn/

Con quay hồi chuyển Hình(gyroscope):2.7.

Con quay hồi chuyển Con quay hồi chuyển là một thiết bị dùng để đo đạc hoặc duy trì phương hướng, dựa trên các nguyên tắc bảo toàn mô men động lượng... Phương hướng thay đổi nhiều hay ít tùy thuộc vào mô men xoắn bên ngoài. Tương tự như với cảm biến gia tốc, chúng ta cũng có thể tính được chuyển động của vật dựa trên cảm biến con quay hồi chuyển. c. Ứng dụng: - Ứng dụng trong kỹ thuật để tính toán gia tốc của các phương tiện, đo dao động của ô tô, xe máy, các hệ thống tự động hóa, máy bay tự cân bằng. - Ứng dụng trong sinh học để nghiên cứu hoạt động của động vật

https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 7 Hình 2.6. Mô hình cảm biến gia tốc cơ bản Vật thể m có thể di chuyển bên trong mô hình cảm biến gia tốc, khi di chuyển toàn bộ mô hình cảm biến thì vật thế m cũng sẽ di chuyển theo bên trong khoang chứa khiến lò xo dãn ra. Nhờ vào đó mà có thể tính được gia tốc. Nếu sử dụng 3 mô hình cảm biến gia tốc như trên vào hệ trục tọa độ X, Y, Z chúng ta có thể tính được chuyển động của vật trong không gian.

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 8 Ứng dụng trong y học trong các thiết bị theo dõi hoạt động của con người Ứng dụng trong các thiết bị cá nhân như điện thoại thông minh d. Khảo sát các loại cảm biến gia tốc phổ biến trên thị trường: Cảm biến GY 9250 9DOF (MPU9250): Giao tiếp: I2C - Cảm biến gia tốc 3 trục. Phạm vi: +/- 2G, +/- 4G, +/- 8G, +/- 16G Con quay hồi chuyển 3 trục Phạm vi: +/ 250, +/ 500, +/ 1000, +/ 2000dps - Cảm biến từ 3 trục. Phạm vi: ± 4800 TT Cảm biến GY 9255 (MPU 9255): - Giao tiếp: I2C - Cảm biến gia tốc 3 trục. Phạm vi: +/ 2G, +/ 4G, +/ 8G, +/ 16G Con quay hồi chuyển 3 trục Phạm vi: +/ 250, +/ 500, +/ 1000, +/ 2000dps - Cảm biến từ 3 trục Phạm vi: ± 4800 TT Cảm biến GY-61 (ADXL335): - Sử dụng Chip: ADXL335 Ngõ ra Analog X, Y, Z - Mã góc độ đầu ra trực tiếp e. Tìm hiểu về cảm biến MPU6050 GY 521: Trong giới hạn của đề tài, cảm biến MPU6050 phù hợp về mặt thông số, giá cả lẫn khả năng ứng dụng rộng rãi. Hình 2.8. Hình ảnh thực tế của MPU6050 Giới thiệu chung: MPU6050 GY 521 là cảm biến của hãng InvenSense, là một trong những giải pháp cảm biến chuyển động đầu tiên trên thế giới. Cảm biến có 6DOF (3 trục cảm biến gia tốc và 3 trục cảm biến con quay hồi chuyển). https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 9 MPU6050 có 3 bộ chuyển đổi ADC (analog to digital) 16 bit để số óa đầu ra của cảm biến gia tốc và 16 bit để số hóa cảm biến con quay hồi chuyển. - Thông số: Điện áp sử dụng: 3~5VDC Điện áp giao tiếp: 3~5VDC - Chuẩn 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 - Dòng hoạt động: 500uA Dòng ở chế độ công suất thấp: 10uA ở 1.25Hz, 20uA ở 5Hz, 60uA ở 20Hz, 110uA ở 40Hz. - Ngắt do người sử dụng lập trình Sơ đồ của GY 521 MPU6050: Hình 2.9. Sơ đồ nguyên lý của cảm biến GY 521 sử dụng chip MPU6050 VCC = Nguồn cung cấp 5VDC - GND = GND SCL = Clock (SCL / SCK) cho I2C và SPI - SDA = Data (SDA / SDI) cho I2C và SPI - XDA = I2C bus (SDA) cho kết nối cảm biến ngoài XCL = I2C bus (SCL) cho kết nối cảm biến ngoài https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 10 ADO = Lựa chọn địa chỉ cho I2C INT = Chân ngắt 2.2.2. Arduino Nano: Hiện nay trong các dự án tự động ứng dụng rất nhiều loại vi điều khiển, module khác nhau. Sau đây là một số vi điều khiển được ứng dụng nhiều trong việc học tập cũng như những dự án nhỏ: Vi điều khiển PIC: Hiện nay có rất nhiều dòng PIC và cũng có rất nhiều khác biệt về phần cứng, nhưng tất cả các dòng PIC đều có một vài nét sau: - 8/16 bit timer Các chuẩn giao tiếp USART, AUSART, EUSARTs - Bộ chuyển đồi ADC… Bo điều khiển Arduino Uno: Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328. Bộ xử lý có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ độ ẩm…hay những ứng dụng khác như hệ thống nông nghiệp tự động, nhà thông minh. Các thông số cơ bản của Arduino Uno: - Chip điều khiển chính: ATmega328P - Chip nạp và giao tiếp UART: ATmega16U2 Nguồn nuôi mạch: 5VDC từ cổng USB - SRAM: 2 KB (ATmega328P) EEPROM: 1 KB (ATmega328P) Trong giới hạn của đề tài, hướng đến thiết kế nhỏ gone, thẩm mỹ, đảm bảo giá thành mà vẫn đáp ứng được những tính toán, vận hành của dự án. Qua khảo sát các vi điều khiển trên thị trường thì Arduino Nano V3.0 là một trong những lựa chọn thích hợp cho dự án. a. Tổng quan về Atmega328P (Arduino Nano 3.x): Hình 2.10. Hình ảnh thực tế của Arduino Nano V3.0 https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 11 Arduino có kích thước nhỏ gọn (1.85cm*4.3cm), nhẹ (7g), hoàn thiện và thân thiện với người dùng. Arduino làm việc với giắc cắm Mini B USB thay cho cổng USB bình thường. Được lập trình bằng Arduino IDE như những dòng Arduino khác hiện hành b. Thông số kỹ thuật: - Chip xử lí: ATmega328 Kiến trúc: AVR Điện áp hoạt động: 5 V - Bộ nhớ: 32KB với 2KB dành cho bootloader SRAM: 2 KB - Clock: 16 MHz - Analog IN Pins: 8 EEPROM: 1 KB - Dòng I/O: 40 mA (I/O Pins) - Điện áp ngõ vào: 7 12 V - Số I/O digital: 22 - PWM: 6 c. Hoạt độ Hìnhng:2.11. Mạch nguyên lí của module Arduino Nano V3.0 https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 12

Hình 2.12. Input/Output Pins của Arduino Nano Arduino có thể hoạt động với điện áp cấp trực tiếp từ kết nối của Mini B USB, 6V 20V từ nguồn cung cấp bên ngoài (pin 30) hoặc 5V từ nguồn cung cấp (pin 27). Nguồn sẽ được tự động lựa chọn đến nguồn cao nhất khi ta cấp nhiều nguồn. Chip xử lí Atmega328 có bộ nhớ là 32KB (cùng với 2KB được dùng cho bootloader, 2KB cho SRAM và 1KB cho EPPROM) Mỗi một kênh số trong 14 chân digital trên Arduino Nano có thể được sử dụng như một ngõ vào hoặc ngõ ra. Các ngõ ra này hoạt động với điện áp 5V. Mỗi PIN có thể cung cấp dòng tôi đa là 40mA và có một điện trở pull up 20 50 kOhms. Một số PIN có những chức năng đặc biệt như: - Serial: 0 (RX) và 1 (TX). Được sử dụng cho receive (RX) và transmit (TX) dữ liệu ExternalTTL.Interrupts: 2 và 3. - PWM: cung cấp cho người dùng 8 bit PWM (3, 5, 6, 9, 10, 11). Sử dụng với SPI:analogWrite()10(SS),11(MOSI), 12 (MISO), 13 (SCK). - LED: Arduino13.Nano có 8 kênh Analog input, mỗi một kênh có thể cung cấp 10 bits. - I2C: A4 (SDA) và A5 (SCL). Hỗ trợ cho kết nối I2C (TWI) sử dụng thư viện Wire. - Reset: Sử dụng cho reset lại Arduino Nano - Arduino Nano được lập trình trên Arduino IDE bằng ngôn ngữ C. [5]

https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 13 2.2.3. Module thu phát Wifi ESP8266 Node MCU: Trông thời đại IOT (Internet of Things) thì mọi dự án hướng tới đều có liên quan đến kết nối internet/wifi. Do đó trên thị trường xuất hiện rất nhiều loại module thu phát wifi hỗ trợ điều khiển lập trình cho các dự án tự động hóa như: Module ESP8266: Có chức năng thu phát wifi kết nối với vi điều khiển qua Tx và Rx. Có giá thành khá rẻ Hỗ trợ chuẩn 802.11 b/g/n. Wi Fi 2.4 GHz, hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK, WPA_WPA2_PSK. Module thu phát wifi ESP8285 ESP M2: tần số chính hỗ trợ 80MHz, 160MHz và RTOS. Kết nối và truyền dữ liệu gói trong vòng 2ms. Giao diện: HSPI, UART, I2C, I2S, IR Từ xa Control, PWM, GPIO. Tần số chính hỗ trợ 80MHz, 160MHz và RTOS. - Được xây dựng trong TCP/IP giao thức. o Xây dựng một kênh bit với độ chính xác cao ADC Trong phạm vi và mục đích của đề tài và qua khảo sát các chủng loại hiện hành trên thị trường. Module thu phát Wifi ESP8266 Node MCU phù hợp với mục đích của đề tài. a. Tổng quan về Module thu phát Wifi ESP8266 Node MCU: Hình 2.13. Hình ảnh thực tế của NodeMCU ESP8266 ESP8266 là một mạch vi điều khiển có thể giúp chúng ta điều khiển các thiết bị điện tử. Thêm vào đó nó được tích hợp wi fi 2.4GHz có thể dùng cho lập trình. Được dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên quan đến IoT [6]. https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 14 b. Thông số kỹ thuật: WiFi: 2.4 GHz: chuẩn 802.11 b/g/n - Điện áp hoạt động: 3.3V Điện áp ngõ vào: 5VDC qua công kết nối USB Số chân I/O: 11 - Số chân Analog Input: 1 Bộ nhớ Flash: 4MB Giao tiếp: Cable Micro USB - Hỗ trợ bảo mật: WPA/WPA2 Tích hợp giao thức: TCP/IP - Lập trình trên các ngôn ngữ: C/C++… c. Nguyên lí và PINOUT: Hình 2.14. Sơ đồ nguyên lí PINOUT NodeMCU ESP8266 Hình 2.15. PINOUT của NodeMCU https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 15 2.2.4. Mạch thu phát Bluetooth HC 05: Trên thị trườn có nhiều loại mạch thu phát Bluetooth như: Mạch thu phát Bluetooth HC-06: Đảm bào nhiệm vụ nhận tín hiệu từ mạch phát, đảm nhận chức năng Slave Điện áp hoạt động: 3.3 ~ 5VDC. - Điện áp giao tiếp: TTL tương thích 3.3VDC và 5VDC Baudrate UART có thể chọn được: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 - Dải tần sóng hoạt động: Bluetooth 2.4GHz PAM8403 thế hệ mới hỗ trợ kết hợp mạch Bluetooth 4.0: - Điện áp cung cấp: DC3.4V DC5V - Công suất đầu ra: 3.0W*2 5V, GND: nguồn vào - L, N, GND: tín hiệu vào Dựa trên phạm vi đề tài, nhằm đảm bảo sự linh hoạt và qua khảo sát. Module thu phát Bluetooth HC 05 là thích hợp cho dự án lần này. a. Tổng quan: Hình 2.16. Hình ảnh thực tế của HC 05 Mạch thu phát Bluetooth HC 05 đã ra chân được thiết kế nhỏ gọn ra chân tín hiệu giao tiếp cơ bản và nút bấm để vào chế độ AT COMMAND, mạch được thiết kế https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 16 để có thể cấp nguồn và giao tiếp qua 3.3VDC hoặc 5VDC, thích hợp cho nhiều ứng dụng khác nhau: Robot Bluetooth, điều khiển thiết bị qua Bluetooth… b. Thông số kỹ thuật: Điện áp hoạt động: 3.3 ~ 5VDC Mức điện áp chân giao tiếp: TTL tương thích 3.3VDC và 5VDC. - Dòng điện khi hoạt động: khi Pairing 30 mA, sau khi pairing hoạt động truyền nhận bình thường 8 mA. Baudrate UART có thể chọn được: 1200, 2400, 4800, 9600, 19200, 38400, 57600, Support115200profiles: Bluetooth serial port (master and slave) - Bluetooth protocol: Bluetooth specification v2.0 + EDR - Frequency: 2.4 GHz ISM band Modulation: GFSK (Gaussian frequency shift keying) - Transmit power: =4 dBm, class 2 - Sensitivity: = 84 dBm at 0.1% BER - Rate: Asynchronous: 2.1 Mbps (max.)/160 kbps - Synchronous: 1 Mbps/1 Mbps Security features: authentication and encryption - Kích thước: 15.2*35.7*5.6mm c. Hoạt động: Hình 2.17. Pinout của HC-05 Thiết lập UART mặc định: Baudrate 38400 hoặc 9600, N, 8, 1. Pairing code mặc định: 1234 hoặc 0000 Để vào chế độ AT COMMAND, bấm giữ nút bấm, thả nút bấm sẽ thoát chế độ AT COMMAND, lưu ý các lệnh AT đều là chữa in hoa. https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 17 Chân EN chỉ nhận mức logic TTL 3V3. Không có chức năng chọn vào chế độ AT COMMAND [7]. Bảng 2.1. Các lệnh thông dụng HC 05 Lệnh Trả lời Hiệu ứng Lưu ý AT OK Kiểm tra kết nối Không đổi AT+VERSION OKlinvorV1.6 Kiểm tra phiên bản Thay đổi tùy module AT+BAUD4 OK9600 Thiết lập tốc độ thành 9600 Có thể thay 4 thành 1 7 AT+PIN0000 OKsetPIN Thiết lập pin code thành 0000 Có thể thay đổi tùy ý AT+NAMExyz OKsetname Thay đổi tên thành xyz Có thể thay đổi tùy ý 2.2.5. Mạch Điều Khiển Động Cơ DC BTS7960 43A (1 Động Cơ): Có nhiều cách để điều khiển động cơ. Sử dụng cầu H để điều khiển động cơ DC được sử dụng phổ biến Một số module điều khiển động cơ bằng cầu H hiện hành trên thị trường hiện nay như: L9110S Mạch Điều Khiển Động Cơ DC 4 Kênh Điện áp hoạt động: 2.5 12VDC - Điện áp hoạt động của động cơ: 2.5-12VDC Dòng ra max mỗi kênh: 0.8A L9110 Mạch Điều Khiển Động Cơ DC 0.8A - Điện áp cung cấp: 2.5~12 VDC Dòng điện làm việc tối đa là 0.8A. - Có thể điều khiển hai động cơ DC hoặc một động cơ bước 4 pha 2 pha Trên phạm vi nghiên cứu của đề tài và qua khảo sát thực tế các loại module điều khiển động cơ khác nhau trên thị trường. Mạch Điều Khiển Động Cơ DC BTS7960 43A (1 Động Cơ) là thích hợp cho điều kiện của dự án như chịu được dòng cao từ ắc quy. https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 18 a. Tổng Hìnhquan:2.18. Hình ảnh thực tế của mạch điều khiển động cơ DC BTS7960 Mạch cầu H BTS7960 43A dễ dàng giao tiếp với vi điều khiển với driver tích hợpsẵntrongICvới đầyđủ cáctínhnăng currentsense(kếthợpvớiđiệntrởđodòng), tạo dead time, chống quá nhiệt, quá áp, quá dòng, sụt áp và ngắn mạch. b. Thông số kỹ thuật: Nguồn: 6 ~ 27V. - Dòng điện tải mach: 43A (Tải trở) hoặc 15A (Tải cảm). Tín hiệu logic điều khiển: 3.3 ~ 5V. - Tần số điều khiển tối đa: 25KHz. - Tự động shutdown khi điện áp thấp: để tránh điều khiển động cơ ở mức điện áp thấp thiết bị sẽ tự shutdown. Nếu điện áp < 5.5V, driver sẽ tự ngắt điện và sẽ mở lại sau khi điện áp > 5.5V. - Bảo vệ quá nhiệt: BTS7960 bảo vệ chống quá nhiệt bằng cảm biến nhiệt tích hợp bên trong. Đầu ra sẽ bị ngắt khi có hiện tượng quá nhiệt. - Kích thước: 40*50 x12mm. c. Sơ đồ chân và cách hoạt động: Hình 2.19. Sơ đồ chân của BTS7960 https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 19 VCC: Nguồn tạo mức logic điều khiển ( 5V 3V3 ) GND: Chân đất. R_EN = 0: Disable nửa cầu H phải. R_EN = 1: Enable nửa cầu H phải. L_EN = 0: Disable nửa cầu H trái. L_EN = 1: Enable nửa cầu H trái. RPWM và LPWM: chân điều khiển đảo chiều và tốc độ động cơ. RPWM = 1 và LPWM = 0: Mô tơ quay thuận. RPWM = 0 và LPWM = 1: Mô tơ quay nghịch RPWM = 1 và LPWM = 1 RPWM = 0 và LPWM = 0: Dừng. R_IS và L_IS: kết hợp với điện trở để giới hạn dòng qua cầu H Với ứng dụng bình thường RPWM, LPWM nối với GPIO (VD: chân digital 2,3) để điều khiển chiều quay của động cơ. Chân R_EN, L_EN nối chung lại rồi nối với PWM (VD chân digital 5) để điều khiển tốc độ động cơ [8]. 2.2.6. Động cơ Servo SG90: Hình 2.20. Hình ảnh động cơ ServoSG90 a. Giới thiệu: Động cơ servo SG90 Tower Pro có tốc độ phản ứng nhanh, các bánh răng được làm bằng nhựa nên cần lưu ý khi nâng tải nặng vì có thể làm hư bánh răng, động cơ RC Servo 9G có tích hợp sẵn Driver điều khiển động cơ bên trong nên có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM. b. Thông số kỹ thuật: Điện áp hoạt động: 4.8 5VDC https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 20 Tốc độ: 0.12 sec/ 60 deg (4.8VDC) Lực kéo: 1.6 Kg.cm - Kích thước: 21x12x22mm Trọng lượng: 9g 2.2.7. Cảm biến hồng ngoại Analog SHARP GP2Y0A02YK0F Trên thị trường có nhiều loại cảm biến để đo được khoảng cách như: Cảm biến đo khoảng cách bằng siêu âm Cảm biến đo khoảng cách bằng lazer Cảm biến đo khoảng cách bằng hồng ngoại Dựa trên khảo sát về mặt thông số, môi trường hoạt động, giá cả mà xét thấy cảm biến đo khoảng cách hồng ngoại SHARP là lựa chọn thích hợp cho những yêu cầu của dự án. Hình 2.21. Cảm biến hồng ngoại Sharp a. Giới thiệu: Được sử dụng để đo khoảng cách bằng tia hồng ngoại với dạng tín hiệu trả về là Analog tương ứng theo khoảng cách nên có thể biết chính xác khoảng cách đến vật thể cần đo. Cảm biến khoảng cách hồng ngoại Analog SHARP GP2Y0A02YK0F có độ ổn định cao, chống nhiễu tốt, kích thước nhỏ gọn, phù hợp với vô số ứng dụng khác nhau: robot dò đường, đo khoảng cách, tránh vật cản… [9]. https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 21 b. Thông số: Model: GP2Y0A02YK0F - Điện áp sử dụng: 4.5 ~ 5.5VDC. Dòng sử dụng trung bình: 33 mA (chú ý: cảm biến này thu được dòng điện lớn, ngắn và nhà sản xuất khuyên nên đặt một tụ 10F hoặc lớn hơn trên nguồn và tiếp đất gần cảm biến để ổn định đường dây cung cấp điện) Khoảng cách đo: 20 ~ 150cm. Dạng tín hiệu trả về: analog - Dãi volt ngõ ra: 2.05 V (thông thường) Khaongr thời gian cập nhật: 38 ± 10 ms - Kích thước: 44.5mm × 18.9mm × 21.6mm - Weight: 5 g (0.18 oz) c. Sơ đồ chân:Hình 2.22. Sơ đồ chân của cảm bến khoảng cách SHARP VCC: 5VDC Vo: Ngõ ra analog GND: GND 2.2.8. Pin Sạc Lipo 2000mAh 3.7V (LP803860): PinLi Po(viếttắtcủaLithiumPolymer)làloạipincóthểsạcđượcnhiềulần, sử dụng chất điện phân dạng polymer khô. Pin Li po với những ưu điểm vượt trội về tính năng và tuổi thọ nên đang được dùng trên đa số các thiết bị (điện thoại di động thông minh, Pin dự phòng, máy bay, xe mô hình…) https://doan.edu.vn/

- Pin LiPo có dung lượng cao trong khi kích thước, khối lượng nhỏ hơn các loại pin khác. Pin LiPo có dòng xả cao đảm bảo đủ cung cấp năng lượng cho các động cơ có công suất cao. Nên pin Lipo là một trong những yếu tố khiến cho mô hình điện phát triển nhanh chóng, đặc biệt là mô hình máy bay. Trong đó có máy bay phun thuốc MG 1P, một sản phẩm phun thuốc công nghệ đang được ưa chuộng trên thế giới. Hiện nay có nhiều loại pin Lipo trên thị trường, trong phạm vi của đề tại, Pin sạc Lipo 2000mAh 3.7V phù hợp với yêu cầu gọn nhẹ, dung lượng tương đối cao. a. TổngHìnhquan:2.23. Hình ảnh thực tế của Pin sạc Lipo 2000mAh LP803860 Pin sạc có kích thước nhỏ gọn, bảo đảm thẩm mỹ, dễ dàng cho các dự án có thiết kế nhỏ gọn nhẹ b. Thông số kỹ thuật: - Điện áp: 3.7 VDC Dung lượng: 2000mAh - Size: 50x40x8 mm (HxWxT)

Với các ưu điểm như: Pin LiPo nhỏ, nhẹ và có thể làm ở mọi hình dáng kích thước.

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 22

https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 23 Trọng lượng: 10g Dòng sạc max: 1C - Dòng xả max: 1C Sạc với dòng 1C 4.2V Điện áp hết pin: 3.0V - Tuổi thọ: 500 lần 2.2.9. TP4056 Mạch Sạc Pin MiniUSB 1A: Có rất nhiều loại mạch sạc Pin trên thị trườn dành cho Pin Lipo, nhưng trong giới hạn đề tài và dựa trên thông số của Pin LP803860. Mạch sạc TP4056 thích hợp với tính gọn nhẹ, giá cả Hình 2.24. Hình ảnh thực tế của mạch sạc TP4056 a. Thông số kỹ thuật: - Dòng sạc tối đa: 1000mA - Điện áp vào: 4.5V 5.5V Điện áp sạc đầy: 4.2V +/ 1% - Sạc chính xác: 1.5%. - Nhiệt độ làm việc 10 đến +85 Điện áp chống quá tải của pin: 2.5V - Đảo ngược: không. https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 24 Dòng bảo vệ quá dòng pin: 3A Giao diện đầu vào: Mini USB. - Kích thước: 25x19x10mm. b. Tính năng: Hình 2.25. Sơ đồ nguyên lí của TP4056 - Sử dụng sạc Pin 3.7V, Pin Ultrafire, Pin Lithium. - Đèn báo: Đỏ đang sạc, xanh đã đầy. - Mạch sạc có chế độ tự ngắt khi sạc đầy pin. Bảng 2.2. Thông số RPROG và IBAT của TP4056 RPROG(k) IBAT(mA) 30 50 20 70 10 130 5 250 4 300 3 400 2 580 1.66 690 1.5 780 1.33 900 1.2 1000 https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 25 2.2.10.Mạch Giảm Áp DC LM2596 3A: Trên thị trường có nhiều loại mạch giảm áp hiện hành như: Mạch Cấp Nguồn 3.3VDC ASM1117: Điện áp vào: 4.5~9VDC. Điện áp ra: 3.3VDC, 800mA (Dòng điện thực tế có thể vượt hơn 800mA). - Kích thước: 25*11 mm. Mạch Giảm Áp DC Mini 3A: Điện áp đầu vào: 4.5 ~ 28V - Điện áp đầu ra: 0.8 ~ 20V (có thể điều chỉnh) Dòng ra: Tối đa 3A - Dòng liên tục 2A - Tần số chuyển đổi: 1MHz (bình thường), 1.5Mhz (tối đa) Độ gợn đầu ra: < 30mV Mạch Giảm Áp DC XL4005 (5A): - Điện áp đầu vào: Từ 5V đến 32V. - Điện áp đầu ra: điều chỉnh từ 1.25V đến 30V. - Dòng đỉnh tối đa là 5A( dòng trung bình 3.5A). Hiệu suất: 90% - Độ gợn sóng: 30mV Trong đề tài qua khảo sát các loại sản phẩm trên thị trường, xét về mặt gọn nhé, giá thành. Mạch giảm áp DC LM2596 thích hợp với những yêu cầu của đề tài. a. Tổng quan: Mạch giảm áp DC nhỏ gọn có khả năng giảm áp từ 30V xuống 1.5V mà vẫn đạt hiệu suất cao (92%). Thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như camera, motor, robot… Hình 2.26. Hình ảnh thực tế của mạch giảm áp LM2596 https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 26 b. Thông số kỹ thuậHìnht: 2.27. Sơ đồ nguyên lý của LM2596 Điện áp đầu vào: Từ 3V đến 30V. - Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V. - Dòng đáp ứng tối đa là 3A. Hiệu suất: 92% - Công suất: 15W - Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm 2.2.11.Chuẩn giáo tiếp I2C: a. Giới thiệu: I2C là tên viết tắt của cụm từ tiếng anh “Inter Integrated Circuit”. Nó là một giao thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa một bộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường truyền tín hiệu. Đây là một giao thức giao tiếp nối tiếp đồng bộ. Nó có nghĩa là các bit dữ liệu được truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi một tín hiệu đồng hồ tham chiếu. b. Cách thức hoạt động:Hình 2.28. Mô hình hoạt động của I2C https://doan.edu.vn/

CHƯƠNG 2: CƠ SỞ LÍ THUYẾT BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 27 Thiết bị Master gửi điều kiện bắt đầu đến tất cả các thiết bị Slave. Thiết bị Master gửi 7 bit địa chỉ của thiết bị Slave mà thiết bị Master muốn giao tiếp cùng với bit Read/Write. Thiết bị Master gửi hoặc nhận khung dữ liệu. Nếu thiết bị Master muốn gửi dữ liệu đến thiết bị Slave, bit Read / Write là mức điện áp thấp. Nếu thiết bị Master đang nhận dữ liệu từ thiết bị Slave, bit này là mức điện áp cao. Nếu khung dữ liệu được thiết bị Slave nhận được thành công, nó sẽ thiết lập bit ACK / NACK thành ‘0’, báo hiệu cho thiết bị Master tiếp tục. Sau khi tất cả dữ liệu được gửi đến thiết bị Slave, thiết bị Master gửi điều kiện dừng để báo hiệu cho tất cả các thiết bị Slave biết rằng việc truyền dữ liệu đã kết thúc. [10]. https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 28 Chương 3. TÍNH TOÁN VÀ THIẾT KẾ 3.1. GIỚI THIỆU: Xe lăn điều khiển bằng các cử động của đầu bao gồm có 4 phân chính đó là: xe lăn điện có sẵn 2 động cơ DC 24VDC, thiết bị nhận dạng chuyển động của đầu, bộ điều khiển động cơ dựa trên dữ liệu nhận được qua Bluetooth từ thiết bị nhận dạng và kết hợp điều khiển xe lăn qua ứng dụng di động. Xe lăn điện có sẵn 2 động cơ DC gồm 2 bánh xe có đường kính là, xe chạy trên được địa hình bằng phẳng, gỗ ghề nhẹ và dốc có góc nghiêng thấp. Bộ điều khiển có kích thước bằng một tai nghe chụp tai thông thường đang lưu hành trên thị trường. Bộ điều khiển động cơ DC của xe lăn nhận lệnh từ thiết bị nhận dạng chuyển động của đầu thông qua Bluetooth. Kết hợp 2 cảm biến phát hiện vật cản trước và sau để có thể dùng lại kịp thời phòng trường hợp người điều khiển mất kiểm soát. Điều khiển xe lăn thông qua ứng dụng di động Blynk Nguồn nuôi cho thiết bị nhận dạng chuyển động của đầu là 3.7VDC 1A (2000mA), cho bộ điều khiển động cơ DC xe lăn là ắc quy 24VDC 15A. 3.2. TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG: 3.2.1. Thiết kế sơ đồ khối hệ thống: KHỐI XỬ LÍ TRUNGTÂM (THIẾT BỊ NHẬN DẠNG CHUYỂN ĐỘNG) KHỐI NGUỒN 5V KHỐI CẢMBIẾN GIATỐC KHỐI APP KHỐI XỬ LÍ TRUNGTÂM (BỘ ĐIỀUKHIỂN ĐỘNG CƠXE LĂN) KHỐI BLUETOOTH KHỐI GIẢM ÁP KHỐI CẢMBIẾN KHOẢNG CÁCH XE KHIỂNKHỐILĂNĐIỀUMOTOR ẮC QUY 24VDC Hình 3.1. Sơ đồ khối toàn bộ hệ thống https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 29 ❖ Chức năng của các khối: Khối sạc: Sử dụng mạch sạc TP4056 để sạc cho nguồn Pin Lipo 3.7V 2000mA. Sử dụng nguồn 5V 1A qua kết nối Mini B USB. Khối nguồn Pin: Dùng Pin Lipi 3.7V 1A để cung cấp nguồn cho thiết bị nhận dạng chuyển động của đầu báo gồm vi điều khiển trung tâm Arduino Nano, cảm biến gia tốc, vi điều khiển trung tâm xử lí phụ. Khối nguồn 24VDC: Dùng để cung cấp nguồn 24VDC 15A cho động cơ của xe lăn và mạch giảm áp 5V 3A. Khối giảm áp 5V: Nhận nguồn 24VDC 15A từ ắc quy và chuyển đổi sang nguồn 5V 3A để cung cấp cho bộ điều khiển động cơ bao gồm vi xử lý trung tâm Arduino Nano, cảm biến khoảng cách, động cơ servo điều hướng, khối điều khiển động cơ DC. Khối xử lý trung tâm (thiết bị nhận dạng cử động): Sử dụng kit Arduino Nano V3.0 để nhận dữ liệu từ cảm biến và tín hiệu từ vi điều khiển xử lí phụ để tiến hành phát lệnh qua Bluetooth. Khối xử lý trung tâm (bộ điều khiển động cơ): nhận tín hiệu từ khối xử lý dữ liệu chuyển động của đầu qua Bluetooth và kết hợp với dữ liệu từ cảm biến phát hiện vật cản để kết hợp vơi khối điều khiển động cơ DC điều khiển xe lăn. Khối cảm biến gia tốc: Thu thập và truyền dữ liệu qua I2C cho vi điều khiển trung tâm để tiến hành xử lý.sa Khối cảm biến khoảng cách: Thu thập và truyền dữ liệu khoảng cách bằng Analog cho vi điều khiển trung tâm của bộ điều khiển động cơ xe lăn để tiến hành xử lý và điều khiển các thuật toán dừng lại khi phát hiện vật cản. Khối điều hướng cảm biến: Sử dụng động cơ servo để điều hướng góc quay cảm biến khoảng cách trong khoảng 40 140 độ để quét vật cản. Nhận tín hiệu từ vi điều khiển để điều hướng. Dừng lại mỗi khi phát hiện vật cản và ngược lại di chuyển qua lại khi không có vật cản xuất hiện. Khối điều khiển motor DC: Sử dụng cầu H để nhận tín hiệu từ vi điều khiển trung tâm để điều khiển động cơ theo 5 cách: tới, lui, rẽ trái, rẽ phải, dừng lại. Khối vi truyền và nhận: Sử dụng ứng dụng Blynk để điều khiển xe lăn, tín hiệu được gửi đến bộ xử lí phụ để xử lí trước. Nhận tín hiệu từ bộ vi xử lí phụ để cảnh báo người dùng khi có sự cố xảy ra. https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 30 Khối vi xử lí phụ: Nhận tín hiệu từ khối truyền dữ và nhận dữ liệu để xử lí trước khi đưa đến vi xử lí trung tâm để phát tín hiệu đi điều khiển động cơ. Nhận dữ liệu từ vi xử lí trung tâm về các sự cố xảy ra và truyền đến khối truyền và nhận dữ liệu để cảnh báo người dùng và người thân của người dùng. 3.2.2. Tính toán và thiết kế mạch: a. Thiết kế khối cảm biến gia tốc MPU6050: Khối cảm biến dùng cảm biến GY 521 sử dụng chip MPU6050 để kết nối với bộ điều khiển trung tâm Arduino Nano V3.0 Sơ đồ kết nối khối cảm biến giá tốc MPU6050 GY 521 được kết nối với vi điều khiển như sau: Hình 3.2. Sơ đồ kết nối MPU6050 với Arduino Nano Nguồn cung cấp cho cảm biển là VCC = 3.7 VDC (Cảm biến hoạt động trong khoảng 3 5 VDC. Dòng hoạt động tối đa là:3.9mA nếu sử dụng hết 6DOF. MPU6050 giao tiếp với Arduino Nano bằng I2C: Chân A4 (SDA) của Arduino nổi tương ứng với chân SDA của MPU6050 - Chân A5 (SCL) sẽ nối với chân SCL của cảm biến. b. Thiết kế khối vi xử lý phụ (NodeMCU): Sử dụng NODEMCU để nhận dữ liệu từ ứng dụng di động để truyền bit điều khiển cho Arduino Nano (vi điều khiển trung tâm). https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 31 Hình 3.2. Sơ đồ kết nối NODEMCU đến Arduino Nano Khối vi xử lí phụ (NODEMCU) có nguồn cung cấp là: 5VDC Imax là 170mA. NODEMCU được kết nối với WiFi: - SSID: KhPSWD:ControlWheelchairhnphien1234 ối vi xử lí phụ sẽ nhận dữ liệu từ ứng dụng di động có một cần joystick ảo để xử lí và gửi 5 tín hiệu về cho vi xử lí trung tâm để tiến hành kết hợp lập trình. Các tín hiệu đó lần lượt là: cho phép rẽ trái, cho phép rẽ phải, cho phép tiến, cho phép lùi, cho phép dừng lại và cho phép điều khiển bằng ứng dụng hay không. Các chân digital của NodeMCU được nối lần lượt với Arduino Nano là: D0 D7, D1 D8, D2 D9, D3 D10, D4 D11, D6 D12 Khi cho phép thì các chân output tương ứng của NodeMCU sẽ được đưa lên mức cao. Vi xử lí trung tâm tiến hành đọc các chân input của mình và xử lí. c. Thiết kế khối phát Bluetooth: Sau khi đã xử lí được tín hiệu tiến hành thiết kế bộ phát Bluetooth để truyên dữ liệu đến cho bộ điều khiển động cơ tiến hành vân hành xe lăn. Sử dụng Module thu và nhận Bluetooth HC 05 để phát Bluetooth. Hình 3.3. Sơ đồ kết nối module HC 05 với Arduino Nano để phát Bluetooth. https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 32 Trước khi tiến hành hoàn thành mạch điện như trên ta tiến hành cài đặt cho module HC 05 thành mạch phát (Master) như sau: Kết nối mạch điện như sau: Hình 3.4. Sơ đồ kết nối cài đặt HC 05 Các bước cài đặt HC05 (Master): - Nạp code trắng cho Arduino Nano Chuyển baund của serial port sang 38400 baund (mặc định) - Chọn Both NL & CL Gõ AT - Gõ AT tiếp để vào AT Command - AT + Role = 1 để cài đặt HC05 làm master phát dữ liệu AT + CMODE = 0 chỉ kết nối với 1 thiết bị - AT + PSWD = 12345678 là mật khẩu của người dùng đặt để tránh kết nối không cần thiết AT + BIND = <địa chỉ của HC05 khối thu> để tiến hành kết nối Sau khi cài đặt xong ta tiến hành kết nối mạch như hình 3.3. Nguồn cung cấp cho HC 05 là 3.7VDC tương thích với dải hoạt động 3.3 ~ 5VDC của module HC 05. Module Bluetooth giao tiếp với Arduino Nano qua TX, RX chuẩn UART Tiến hành kết nối Tx của HC 05 với Rx của Arduino Nano và Rx của HC 05 với Tx của Arduino Nano. https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 33 Khi cấp điện sẽ tự động kết nối với HC 05 có địa chỉ và mật khẩu đã cài đặt ở trước đó.Dòng điện khi hoạt động: khi Pairing 30 mA, sau khi pairing hoạt động truyền nhận bình thường 8 mA. d. Thiết kế khối sạc cho Pin Lipo 2000mAh 3.7V 1A: Hình 3.5. Sơ đồ kết nối module sạc Pin và Pin LIPO Nguồn cung cấp cho TP4056 là 5V 1A. Có thể cung cấp bằng cổng Mini B USB hoăc nguồn ngoài tại Vin+ và Vin Module có đèn báo hiệu: đèn xanh là pin đã đầy và đèn đỏ là đang sạc. Module có chế độ tự ngắt khi đầy Pin và có mạch bảo vệ. e. Thiết kế khối xử lí trung tâm của thiết bị nhận dạng cử động đầu: Sau khi thiết kế từng phần của thiết bị nhận dạng chuyển động bao gồm: khối sạc pin, khối phát Bluetooth, khối cảm biến, khối xử lí phụ ta tiến hành hoàn thiện thiết kế của mạch nhận diện tín hiệu cử động của đầu. Hình 3.6. Sơ đồ nguyên lí nhận dạng chuyển động của đầu. https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 34 Sơ đồ trên là sự kết hợp cảu các khổi kể trên. Nguồn VOUT PIN là nguồn Pin dương ra cung cấp cho cả mạch. - Rx Tx của HC05 nối tương ứng với Tx Rx của Arduino Nano SCL và SDA của MPU6050 nối tương ứng với A4 và A5 của Arduino Nano NodeMCU gưi 6 đường output digital đến cho Arduino Nano để xử lí. Còn NodeMCU thì nhận được tín hiệu từ ứng dụng di động thông qua Wifi. Tính toán thiết kế nguồn Pin cho mạch sẽ tiến hành sau. f. Thiết kế khối nhận Bluetooth: Phần này ta thiết kế giống như khối phát Bluetooth chỉ khác ở những điểm để chuyển Module HC 05 thành Slave (nhận). Ta cũng có sơ đồ nguyên lí như sau: Hình 3.7. Sơ đồ nguyên lí của khối nhận dữ liệu Bluetooth Các bước cài đặt HC05 (Slave): - Nạp code trắng cho Arduino Nano Chuyển baund của serial port sang 38400 baund (mặc định) - Chọn Both NL & CL - Gõ AT - Gõ AT tiếp để vào AT Command - AT + Role = 0 để cài đặt HC05 làm slave phát dữ liệu AT + CMODE = 0 chỉ kết nối với 1 thiết bị Nguồn sử dụng của HC 05 vẫn là 3.7V nằm trong ngưỡng 3~5 VDC phù hợp với yêu cầu. https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 35 Dòng hoạt động sau khi pairing là 8mA. g. Thiết kế khối cảm biến khoảng cách: Sử dụng 2 cảm biến đo khoảng cách hồng ngoại SHARP để đo khoảng cách. Cảm biến khoảng cách này sử dụng ngõ ra Analog có điện áp hoạt động là 4.5 VDC 5.5 VDC. Dòng hoạt động trung bình là: 33mA Khoảng cách có thể đo được là từ 30 150 cm. Sơ đồ nguyên lí kết nối của 2 cảm biến hồng ngoại: Hình 3.8. Sơ đồ nguyên lí kết nối 2 cảm biến khoảng cách với Arduino Nano Cảm biến phía trước được đọc bởi kênh analog A4 Cảm biến phía sau được đọc bởi kênh analog A0 Vì để tránh nhiễu nên có đặt tụ C = 10F vào giữa VCC và GND của cảm biến. Hiệu quá chống nhiễu giảm đáng kể. h. Thiết kế khối điều hướng cho cảm biến: Kết hợp động cơ servo gắn trên có cảm biến khoảng cách để cảm biến quét một góc nhất định do người thiết kế đặt ra. Hình 3.9. Mô hình kết hợp cảm biến khoảng cách và động cơ Servo để quét https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 36 Ta sử dụng động cơ servo 9G cho mô hình trên. Ưu điểm của nó là nhỏ gọn dễ dàng sử dụng và lập trình. Hình 3.10. Sơ đồ nguyên lí kết nối 2 động cơ servo với Arduino Nano Động cơ servo sử 9G sử dụng nguồn 5VDC Dòng hoạt động của động cơ servo: 220mA ± 50mA Phạm vi quét của động cơ là: 0 180 độ. Nhưng trong đề tài giới hạn lại chỉ còn 40 140 độ. i. Thiết kế khối điều khiển động cơ DC dùng cầu H (BTS7960): Hình 3.11. Sơ đồ nguyên lí khối điều khiển động cơ DC Mạch BTS7960 sử dụng nguồn động cơ là 24VDC chiệu được dòng tải 40A. Mạch BTS7960 có tín hiệu logic điều khiển từ 3.3V 5V https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 37 Các chân L EN và R EN của từng module BTS7960 lần lượt được nối với các I/O 4 và 8 của Arduino Nano để điều khiển cho phép động cơ trái và phải hoạt động.Các chân LPWM và RPWM của từng module BTS7960 lần lượt cũng được nối với các chân I/O D3 D5 D6 D11 để băm xung PWM giúp điều khiển tốc độ hoặt động của động cơ DC. j. Thiết kế khối xử lí trung tâm cho bộ điều khiển động cơ xe lăn: Từ những khối trên ta tiến hành kết hợp lại với nhau để hoàn thiện bộ điều khiển động cơ xe lăn. Bộ này là sự kết hợp của các khối nhận tín hiệu Bluetooth, khối cảm biến khoảng cách, khối điều hướng cảm biến khoảng cách, khối nguồn (thiết kế sau). Hình 3.12. Sơ đồ nguyên lí bộ điều khiển động cơ của xe lăn https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 38 Hoạt động của mạch như sau: HC 05 đảm nhận vai trò là Slave nhận tín hiệu từ thiết bị nhận dạng chuyển động của đầ Arduinou.Nano nhận tín hiệu từ HC 05 kết hợp với dữ liệu từ cảm biến để điều khiển 2 module BTS7960 điều khiển 2 động cơ trái và phải. Động cơ servo có vai trò điều hướng cho 2 cảm biến quét 40 140 độ, khi phát hiện có vật cản Arduino Nano truyền lệnh cho 2 động cơ Servo dừng lại cho đến khi không cần vật cản. k. Thiết kế khối nguồn cho 2 phần (thiết bị nhận dạng chuyển động và bộ điều khiển động cơ xe lăn): • Khối nguồn cho thiết bị nhận dạng chuyển động của hệ thống: Bảng 3.1. Thống kê dòng tải của thiết bị nhận dạng Linh kiện Dòng tiêu thụ (mA) Số lượng I/O Arduino Nano IAR = 40 10 NodeMCU INODE = 170 1 MPU6050 IMPU = 3.9 1 HC 05 IHC = 30 1 Tổng dòng tiêu thụ là: IMAX = IAR + INODE + IMPU + IHC (3.1) = 40x10 + 170 + 30 + 3.9 = 603.9 (mA) Chọn khối nguồn là Pin LIPO 2000mAh (1A) 3.7V là đủ để cung cấp cho thiết bị nhận dạng chuyển động của xe lăn. Thời lượng sử dụng Pin: Ta có: t = (AVµ) �� (3.2) Trong đó: - t: thời gian sử dụng A: dung lượng PIN https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 39 V: điện áp sử dụng P: Công suất tải µ: hệ số sử dụng (µ = 0.7) Nên ta có thể tính được thời lượng sử dụng PIN là: t = (AVµ)/P = (2000*3.7*0.7)/(3.7*603.9) = 2.3(h) • Khối nguồn cho bộ điều khiển động cơ xe lăn: Bảng 3.2. Thống kê dòng tải của bộ điều khiển động cơ xe lăn Linh kiện Dòng tiêu thụ (mA) Số lượng I/O Arduino Nano IAR = 40 11 HC-05 IHC = 30 1 BTS7960 IBTS = 200 2 SHARP GP2Y0A02YK0F ISH = 33 2 Servo 9G ISER = 220 2 Tổng dòng tiêu thụ là: IMAX = IAR + IHC + IBTS + ISH + ISER (3.2) = 40x11 + 30 + 200x2 + 33x2 + 220x2 = 440 + 30 + 400 + 66 + 440 = 1376 (mA) Chọn khối nguồn là mạch giảm áp LS2596 có ngõ ra IMAX = 3A, V = 5VDC là đủ trong trường hợp này để mạch hoạt động một cách ổn định. Tương tự ta có thời lượng sử dụng Acquy là: t = (AVµ) �� = (12000*24*0.7)/((5*1376) + (7.2*2000*2)) = 201600/35680 = 5.7 (h) 3.2.3. Thiết kế sơ đồ nguyên lí toàn hệ thống: Sơ đồ nguyên lí gồm 2 phần chính là cho tai nghe (thiết bị nhận dạng tín hiệu chuyển động) và sơ đồ nguyên lí phần điều khiển động cơ DC của xe lắn Hai phần liên kết với nhau qua tín hiệu không dây Bluetooth. https://doan.edu.vn/

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 40 Hình 3.13. Sơ đồ nguyên lí toàn mạch https://doan.edu.vn/

Servo 9G

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 41 Chương 4. THI CÔNG HỆ THỐNG 4.1. GIỚI THIỆU: Trong phần này, sau khi đã thiết kế xong mạch nguyên lí cho những phần của toàn bộ xe lăn. Tiến hành rắp ráp các thành phần của hệ thống lại với nhau để hoàn thành xe lăn như: Thi công thiết bị nhận dạng chuyển động của đầu - Thi công bộ điều khiển động cơ DC xe lăn Ở dự án lần này nhóm không thiết kế mạch in mà thiết kế dựa trên những mô hình cõ sẵn như tai nghe, hộp linh kiện.

Arduino

https://doan.edu.vn/

Sau khi đã thiết kế, rắp ráp xong sẽ tiến hành lập trình cho hệ thống. Những phần cần lập trình là: - Thiết bị nhận dạng chuyển động Thiết bị nhận tín hiệu từ ứng dụng di động qua WiFi được tích hợp trên cùng một phần cứng với thiết bị nhận dạng chuyển động - Bộ điều khiển động cơ DC xe lăn 4.2. THI CÔNG HỆ THỐNG: 4.2.1. Thiết kế phần cứng cho hệ thống: Như đã nói ở trên, dự án lần này thiết kế dựa trên mô hình có sẵn, với sự kết hợp của những module khác nhau. Nên đề tài sẽ không có phần mạch in. Sau khi đã thiết kế xong sơ đồ nguyên lí cho từng phần. Ta tiến hành rắp ráp từng phần lại với nhau theo sơ đồ nguyên lí dựa trên phần cứng có sẵn như tai nghe chụp tai, hộp linh kiện. Dựa vào sơ đồ nguyên lí. Ta liệt kê danh sách linh kiện, module cần có: Bảng 4.1. Danh sách các linh kiện STT Tên linh kiện Giá trị SL thíchChú 1 Nano V3.0 2 2 NodeMCU ESP8266 1 3 Cảm biến hồng ngoại SHARP 2 4 Động cơ 2

GP2Y0A02YK0F

https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 42 5 Module thu nhận bluetooth HC 05 2 6 Module điều khiển động cơ DC BTS7960 2 7 Mạch giảm áp LS72596 1 8 Mạch sạc pin LIPO (5V 1A) 1 9 Pin LIPO 2000mAh 1 10 Đèn LED đỏ 1 11 Tụ 10F 2 12 Cảm biến gia tốc GY 521 MPU6050 1 Các linh kiện của hệ thống sẽ được thiết kế dựa trên mô hình phần kinh sau: • Thiết bị nhận dạng chuyển động của đầu: Hình 4.1. Sơ đồ vị trí linh kiện trên tai nghe chụp tai. Tai nghe sẽ có 2 bên tai trong đó tai bên trái ta sẽ để PIN và mạch sạc, tai còn lại sẽ có thể để những bộ điều khiển như NodeMCU, Arduino Nano và HC 05 Cảm biến sẽ để ở trên đỉnh đầu nhận dạng tín hiệu chuyển động.

Thiết bị di động để gửi tín hiệu về NodeMCU điều khiển xe lăn bằng ứng dụng di động.Có 2 cổng Mini B USB ở 2 bên dưới chụp tai để sạc cấp nguồn sạc PIN cũng như nạp chương trinh cho vi xử lí trung tâm. • Bộ điều khiển động cơ DC của xe lăn:

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 43 Hình 4.2. Sắp xếp linh kiện trong bộ điều khiển động cơ DC xe lăn Bộ điều khiển động cơ M1, M2 của xe lăn sắp xếp như hình, có 2 ngõ vào input là nguồn 24V 15A để động cơ hoạt động và một cổng Mini B USB để nạp code cho Arduino Nano đảm nhận vai trò vi xử lí trung tâm. 4.2.2. Lắp ráp và kiểm tra: a. Lắp ráp khối nguồn cho bộ điều khiển động cơ: Hình 4.3. Khối nguồn của bộ điều khiển động cơ LS72590 Tiến hành lắp ráp khối nguồn vào bộ điều khiển động cơ đầu tiên. Cấp nguồn 24VDC 15A vào mạch giảm áp sau đó tiến hành vặn biến trở sao cho áp về 5V đèn LED sáng thì mạch xem như đã xong khối nguồn. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 44 b. Lắp ráp khối vi xử lí trung tâm Arduino Nano vào bộ điều khiển: Hình 4.4. Hình ảnh Arduino Nano trên bộ điều khiển Tiến hành lắp áp board Arduino Nano V3.0 và bộ điều khiển Sau khi lắp ráp xong tiến hành cấp nguồn 5VDC vừa mới chỉnh xong, sau đó tiens nạp code cho Arduino Nano rồi xem kết quả trên Serial Port để kiểm tra. Kiểm tra nguồn lại lần nữa để đảm bảo board hoạt động tốt nhất c. Lắp ráp khối điều khiển động cơ bao gồm 2 BTS7960: Hình 4.5. Hình ảnh BTS7960 trên bộ điều khiển động cơ. Tiến hành lắp ráp 2 BTS7960 như trên. Kết nối với nguồn và các chân điều khiển được nối đến Arduino Nano. Nạp chương trình điều khiển động cơ sau đo đo áp ra của 2 đầu M+ và M có module để kiểm tra xem động cơ còn hoạt động hay không. d. Lắp ráp khối nhận tín hiệu Bluetooth HC-05: https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 45 Hình 4.6. Hình ảnh HC 05 trên bộ điều khiển Sau khi láp ráp xong trên hộp tiến hành thử xem module Bluetooth còn hoạt động tốt không: Kết nối Tx Rx của HC05 với Rx Tx của Arduino Nano và bật chế độ AT lên để xem module Bluetooth còn hoạt động tốt không. e. Lắp ráp cảm biến vào cho bộ điều khiển: Hình 4.7. Khối bảm biến và điều hướng cảm biến Sau khi đã kết nối cảm biến với bộ điều khiển ta vẫn tiếp tục nạp code cho Arduino Nano để kiểm tra cảm biến. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 46 f. Hoàn thiện bộ điều khiển động cơ DC của xe lăn: Hình 4.8. Hình ảnh bên hông của bộ điều khiển có input là USB. Hình 4.9. Hình ảnh bên hông trái của bộ điều khiển có công tắc cấp nguồn cho các linh kiện trong bộ điều khiển tránh sự cố xảy ra. g. Lắp ráp khối nguồn cho tai nghe nhận dạng chuyển động: https://doan.edu.vn/

Hình 4.10. Hình ảnh Pin LIPO và mạch such TP4056 của nó một bên tai nghe. Sau khi lắp ráp xong: Đo xem pin đã đủ điện áp chưa. Điện áp hết pin là 3VDC Tiến hành sạc thử xem mạch sạc có còn hoạt động không. Nếu như hiện đèn LED màu đỏ trên mạch sạc tức là còn hoạt động bình thường, màu xanh tức là Pin đã đầy. h. Lắp ráp khối vi xử lí trung tâm cho tai nghe nhận dạng chuyển động của đầ Hìnhu:4.11.

Hình ảnh của board Arduino Nano bên một phần của tai nghe. Cấp nguồn cho board mạch. Tiến hành nạp code để kiểm tra xem board có hoạt động tốt hay không. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 47

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 48 Nếu hoàn tất bước kiểm tra thì chuyển sang bước tiếp theo. i. Lắp ráp khối truyến tín hiệu Bluetooth cho dạng chuyển động: Hình 4.12. Hình ảnh của module HC05 một bên của tai nghe Tiến hành cấp điện cho cả Arduino Nano và HC05 Nạp code kiểm tra cho Arduino Nano sau đó bật chế độ AT Command của HC05 để kiểm tra xem module còn hoạt động tốt hay là không j. Lắp ráp khối xử lí phụ (NodeMCU): Hình 4.13. Hình ảnh NodeMCU bên trong tai nghe Sau khi lắp ráp xong tiến hành cấp nguồn cho NodeMCU Tiến hành bật WiFi và kiểm tra xem NodeMCU đã được kết nối với WiFi hay chưa, xem NodeMCU có hoạt động tốt hay không. k. Lắp ráp cảm biến cho tai nghe: https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 49 Hình 4.13. Hình ảnh cảm biến MPU6050 được gắn trên tai nghe. Tiến hành cấp nguồn cho cảm biến. Nạp code ví dụ có sẵn trong thư viện để có thẻ kiểm tra dữ liệu của tai nghe ra có đúng hay chưa. l. Hoàn thiện tai Hìnhnghe:4.14. Hình ảnh tai nghe sau khi đã hang thiện Tai nghe có 1 công tắc Switch và 2 cổng USB Mini B để sạc điện cho Pin và nạp code cho vi xử lí trung tâm Nạp code cho vi xử lí trung tâm và kiểm tra toàn bộ tai nghe 4.4. LẬP TRÌNH HỆ THỐNG: 4.4.1. Lưu đồ giải thuật: a. Giải thích quy trình vận hành hệ thống kể từ lúc đầu tiên. Cấp điện cho thiết bị nhận dạng chuyển động của đầu - Cấp điện cho động cơ và bộ điều khiển động cơ - Chờ kết nối Bluetooth và WiFi https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 50 Sa khi đã kết nối thành công thì tiến hành điều khiển xe lăn bằng các cử động của đầu như quay trái, quay phải, tiến, lùi. - Bật ứng dụng di động tiến hành điều khiển bằng ứng dùng. Khi điều khiển bằng ứng dụng thì chế độ điều khiển bằng đầu sẽ tự ngắt để tránh xung đột. b. Thiết kế lưu đồ chính của hệ thống: Bắt đầu Khởi tạo cảm biến, Servo, Bluetooth, WiFi Kiểm tra nút nhấn từ ứng dụng di động Nút nhấn trên APP bật Điều khiển xe bằng đầu S Điều khiển xe bằng APP Đ Hình 4.15. Lưu đồ thuật toán chung cho toàn bộ hệ thống. Giải thích lưu đồ thuật toán: Khi bắt đầu chương trình sẽ bắt đầu khởi tạo nhận tín hiệu từ cảm biến, cấp nguồn cho servo, phát tín hiệu, nhận tín hiệu WiFi. Nếu ứng dụng di động tắt hoặc ứng dụng không được bật thì sẽ hoạt động theo luồng điều khiển xe lăn bằng đầu. Nếu ứng dụng được bật và nút nhấn được bật thì xe lăn chạy theo tín hiệu từ ứng dụng di động mà không chạy theo tín hiệu cảm biến từ đầu. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 51 • Lưu đồ thuật toán chương trình con điều khiển xe lăn bằng đầu: Bắtđầu Quay đầusang trái Quay đầusang phải Gật đầu về trước Gật đầu ra sau S S S Không có sự cố Không có sự cố Không có sự cố Không có sự cố Đ Đ Đ Đ Xe rẽ trái Xe rẽ phải Xe đi tới Xe đi lùi Đ Đ Đ Đ Xe dừng, servo dừng và thông báo S S S Bậtcông tắc Đ Kết thúc S Hình 4.16. Chương trình con điều khiển xe bằng đầu Giải thích lưu đồ thuật toán: Khi bắt đầu chương trình sẽ kiểm tra công tắc, nếu công tắc không được bật thì sẽ kết thúc, không thực hiện chức năng nào Khi công tắc được bật thì tiếp theo chương trình sẽ kiểm tra các dạng chuyển động của đầu, khi nhận được một dạng chuyển động nào đó sẽ kiểm tra xem có sự sự cố xỷ ra hay không, nếu không thì mới đi theo hướng được yêu cầu. Nếu có sự cố xảy ra thì sẽ cho xe dừng lại và thông báo qua ứng dụng, email. Tiếp tục quay lại kiểm tra từ nút nhấn. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 52 • Lưu đồ thuật toán chương trình con điều khiển xe lăn qua ứng dụng di động: Bắtđầu Joystick sang trái Joystick sang phải Joystick lêntrên Joystick xuống dưới S S S Không có sự cố Không có sự cố Không có sự cố Không có sự cố Đ Đ Đ Đ Xe rẽ trái Xe rẽ phải Xe đi tới Xe đi lùi Đ Đ Đ Đ Xe dừng, servo dừng và thông báo S S S Bậtnút nhân cho phéptrên APP Đ Kết thúc S Hình 4.17. Lưu đồ chương trình con điều khiển bằng ứng dụng. Giải thích lưu đồ thuật toán: Khi bắt đầu chương trình sẽ kiểm tra nút nhấn, nếu nút nhấn được bật thì tiến hành điều khiển bằng Joystick trên ứng dụng còn không thì không có gì xảy ra Khi nút nhấn được bật thì tiếp theo chương trình sẽ kiểm tra các dạng chuyển động của Joystick, khi nhận được một dạng chuyển động nào đó của joystick sẽ kiểm tra xem có sự sự cố xỷ ra hay không, nếu không thì mới đi theo https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 53 hướng được yêu cầu. Nếu có sự cố xảy ra thì sẽ cho xe dừng lại và thông báo qua ứng dụng, email. Tiếp tục quay lại kiểm tra từ nút nhấn. 4.4.2. Phần mềm lập trình cho vi điều khiển: a. Giới thiệu phần mềm: Hình 4.18. Logo phần mềm ARDUINO IDE Aduino IDE là môi trường phát triển tích hợp mã nguồn mở, cho phép người dùng dễ dàng viết code và tải nó lên bo mạch. Môi trường phát triển được viết bằng Java dựa trên ngôn ngữ lập trình xử lý và phần mềm mã nguồn mở khác. Phần mềm này hỗ trợ cho một loạt các bo mạch Arduino như Arduino Uno, Nano, Mega, Pro hay Pro Mini,.... Ngôn ngữ tổng quát cho Arduino là C và C++, do đó phần mềm phù hợp cho những lập trình viên đã quen thuộc với cả 2 ngôn ngữ này. Các tính năng như làm nổi bật cú pháp, thụt đầu dòng tự động,...làm cho nó trở thành một sự thay thế hiện đại cho các IDE khác. Arduino IDE có thư viện code mẫu quá phong phú, viết chương trình trên Arduino IDE khá dễ dàng cộng thêm phần mềm hoàn toàn miễn phí cho người dùng. Để tải phần mềm Arduino IDE phiên bản mới nhất hiện nay là 1.8.8. Truy cập vào website https://www.arduino.cc/en/Main/Software. Hình 4.19. Cách tải phần mềm Tiếp theo, chọn Windows Installer để sử dụng cho hệ điều hành Windows hoặc có thể lựa chọn các hệ điều hành khác tương tự. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 54 Sau khi hoàn tất việc tải phần mềm, ta tiến hành cài đặt dễ dàng. Hình 4.20. Giao diện Arduino IDE b. Viết chương trình cho hệ thống: Chương trình đọc dữ liệu và chuyển đổi dữ liệu cảm biến: #include <Wire.h> const int MPU = 0x68; // Địa chỉ I2C của MPU6050 float AccX, AccY, AccZ; float GyroX, GyroY, GyroZ; float accAngleX, accAngleY, gyroAngleX, gyroAngleY, gyroAngleZ; float roll, pitch, yaw; float AccErrorX, AccErrorY, GyroErrorX, GyroErrorY, GyroErrorZ; float elapsedTime, currentTime, previousTime; int c = 0; void setup() { Wire.Serial.begin(19200);begin(); // Bắt đầu Wire Wire.beginTransmission(MPU); // Bắt đầu kết nối với MPU6050 Wire.Wire.(0x68)write(0x6B);write(0x00); // Reset Wire.endTransmission(true); Kết thúc quá trình truyền //Chương trình con tính lỗi offset cho cảm biến delaycalculate_IMU_error();(20); https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 55 } void loop() { // === ĐỌC DỮ LIỆU CẢM BIẾN ACC=== // Wire.Wire.beginTransmission(MPU);write(0x3B); // Bắt đầu với địa chỉ 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU, 6, true); // Đọc tổng cộng 6 register. Mỗi giá trị X, Y, Z được lưu trong 2 thanh ghi. //Từ datasheet của MPU6050 để lấy range 2g ta cần chia giá trị đọc được cho 16584 AccX = (Wire.read() << 8 | Wire.read()) / 16384.0; // X axis AccYvalue= (Wire.read() << 8 | Wire.read()) / 16384.0; // Y axis AccZvalue= (Wire.read() << 8 | Wire.read()) / 16384.0; // Z axis value // Tính Roll và Pitch dựa trên dữ liệu gốc của cảm biến accAngleX = (atan(AccY / sqrt(pow(AccX, 2) + pow(AccZ, 2))) * 180 / accAngleYPI);= (atan( 1 * AccX / sqrt(pow(AccY, 2) + pow(AccZ, 2))) * 180 / PI); // === ĐỌC GIÁ TRỊ GYRO === // previousTime = currentTime; currentTime = millis(); elapsedTime = (currentTime previousTime) / 1000; Wire.Wire.beginTransmission(MPU);write(0x43);// Địa chỉ đầu tiên Wire.endTransmission(false); Wire.requestFrom(MPU, 6, true); // GyroX = (Wire.read() << 8 | Wire.read()) / 131.0; GyroY = (Wire.read() << 8 | Wire.read()) / 131.0; GyroZ = (Wire.read() << 8 | Wire.read()) / 131.0; // Tính góc Roll Pitch Yaw từ dữ liệu GYRO gyroAngleX = gyroAngleX + GyroX * elapsedTime; gyroAngleY = gyroAngleY + GyroY * elapsedTime; yaw = yaw + GyroZ * elapsedTime; // Bộ lọc complementary filter: Tính Roll Pitch từ 2 dữ liệu GYRO và ACCEL roll = 0.96 * gyroAngleX + 0.04 * accAngleX; https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 56 pitch = 0.96 * gyroAngleY + 0.04 * accAngleY; } Giải thích chương trình: - Đầu tiên ta cần khai báo thư viên Wire.h (thư viện được sử dụng cho kết nối I2C). Trong phần setup của chương trình ta cần khởi tạo thư viện wire.h và khởi tạo lại địa chỉ cảm biến thông qua thanh ghi: Bảng 4.2. Thanh ghi reset và khởi tạo cảm biến Register(HEX) Register(DEC) Bit7 Bit6 Bit5 Bit4 Bit 3 Bit2 Bit1 Bit0 6B 107 DeviceReset SLEEP CYCLE - TEMP CLKSEL[2:0] - Chúng ta bắt đầu vòng lặp để bắt đầu lấy dữ liệu cảm biến và lập trình Dữ liệu của cảm biến được lưu bới 2 bytes cho 1 trục trong 3 trục (x axis, y axis, z axis). Bảng 4.3. Thanh ghi lưu giá trị của ACCEL Register(HEX) Register(DEC) Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 3B 59 ACCEL_XOUT [15:8] 3C 60 ACCEL_XOUT [7:0] 3D 61 ACCEL_YOUT [15:8] 3E 62 ACCEL_YOUT [7:0] 3F 63 ACCEL_ZOUT [15:8] 40 64 ACCEL_ZOUT [7:0] Để chuyển đổi giá trị cảm biến ACCEL sang giới hạn từ 1g +1g (dễ dang tính toán góc quay cho phần sau) ta có thể chuyển dổi dựa trên datasheet của cảm biến Bảng 4.4. Giá trị giới hạn của cảm biến ACCEL AFS_SEL Full Scale Range LSB Sensitivity 0 ±2g 16384 LSB/g 1 ±4g 8192 LSB/g 2 ±8g 4096 LSB/g 3 ±16g 2048 LSB/g Tương tự với giá trị của GYRO ta cũng có: Bảng 4.5. Giá trị giới hạn của cảm biến GYRO AFS_SEL Full Scale Range LSB Sensitivity 0 ±250 0 /s 131 LSB/g 1 ±500 0 /s 65.5 LSB/g 2 ±1000 0 /s 32.8 LSB/g https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 57 3 ±2000 0 /s 16.4 LSB/g Sau khi đã lấy được các dữ liệu cần thiết từ 2 cảm biến ACCEL và GYRO ta tiến hành tổng hợp dữ liệu để có thể tính toán ra góc quay và lập trình: Tính Roll và Pitch từ dữ liệu của ACCEL: AccX2 Roll = arctan(AccY/√(��������2 + ��������2)*180 �� (4.1) Pitch = arctan( 1*AccX/√(��������2 + ��������2)*180 �� (4.2) Trong AccX,đó:AccY, AccX là 3 giá trị đọc được từ cảm biến ACCEL 4.4.2. Phần mềm điện thoại: a. Giới thiệu: Hình 4.21. Ứng dụng BLYNK Blynk là một ứng dụng iOS và Android để kiểm soát thiết bị Esp8266, Arduino, Raspberry Pi và thiết bị khác trên Internet. Đặc điểm: Blynk không bị ràng buộc với những phần cứng. Thay vào đó, nó hỗ trợ phần cứng cho bạn lựa chọn b. Các bước thực hiện: Bước 1: Tạo project Hình 4.22. Các bước tạo 1 project trong BLYNK https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 58 Ta thực hiện lần lượt các thao tác: Create new project: tạo một một dự án mới và đặt tên cho dự án - Select your hardware: chọn phần cứng cần thực hiện. Trong đề tài là NodeMCU ConectionESP8266 type: chọn loại kết nối. Trong đề tà là WiFi Bước 2: Thêm nút nhấn điều khiển Hình 4.23. Cách thêm nút nhấn điều khiển. Các thao tác để thêm một nút nhấn: - Trong mục Widget Box ta chọn Button Sau khi đã chọn nút nhân ta tiến hành cài đặt cho nút nhấn - PIN ở đây ta có thể chọn Digital hoặc Virtal. Với digital ta sẽ chọn GPIO tương ứng với GPIO của phần cứng ta đã chọn trước đó Sau khi đã cài đặt PIN xong ta tiến hành cài đặt MODE: Có 2 mode là PUSH và SWITCH. - Sau khi đã cài đặt xong ta nhấn CONTINUE để tiếp tục quá trình Bước 3: Lấy TOKEN - Đểcó thếkếtnốiđượcvới phần cứng,tacần đồngbộTOKENcủatàikhoản Blynk với phần TOKEN của phần cứng - Có 2 cách để lấy TOKEN là qua mã code QR và qua Email tùy vào người sử dụng mong muốn. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 59 Hình 4.24. Cách lấy Token Bước 4: Hoàn thành các phần còn lại Hình 4.25. Giao diện ứng dụng trên di động Sau khi đã hoàn thành các bước cài đặt ta sẽ được giao diện điều khiển xe lăn qua ứng dụng di động như hình. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 60 4.5. LẬP TRÌNH MÔ PHỎNG: 4.5.1. Lưu đồ lập trình mô phỏng: Bắt đầu Đọc giá trị cảm biến Tính Roll, Pitch và Yaw Tính Roll, Pitch và Yaw Di chuyển vật thể trong không gian theo Roll Pitch Yaw Kết thúc Hình 4.26. Lưu đồ thuật toán mô phỏng cảm biến Hình 4.27. Mô phỏng chuyển động của cảm biến bằng Roll Pitch Yaw Mô phỏng góc độ của vật thế trong không gian bằng cảm biến gia tốc. Trên hình là vật thể đang nằm ngang. Ta tiến hành xoáy vật thể để kiểm tra góc độ xuất ra có chính xác hay không. Vật thể được biểu diễn trong không gian thông qua 3 thông số là ROLL PITCH YAW. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 61 4.6. VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG: 4.6.1. Viết tài liệu hướng dẫn sử dụng: Hướng dẫn các bước sử dụng: Bước 1: Cấp nguồn cho bộ điều khiển động cơ.và tai nghe. • Nguồn ắc quy 24VDC 15A bằng cách bật công tắc của ắc quy. Lúc này công tắc trên bộ điều khiển vẫn ở chế độ OFF. • Nguồn 3.7V 1A (PIN LIPO) cho tai nghe Bước 2: Bật công tắc của bộ điều khiển động cơ đồng thời bật luôn của tai nghe nhận dạng chuyển động để Bluetooth được kết nối. • Chờ khoảng 3s để cho Bluetooth được kết nối • Cả 2 công tắc nên bật đồng thời hoặc không sai biệt thời gian nhiều Bước 3: Tiến hành điều khiển xe lăn bằng cách quay đầu. • Quay trái để rẽ trái • Quay phải để rẽ phải • Gật tới để tiến • Gật lui để lùi Bước 4: Để điều khiển được bằng điện thoại thì cần kết nối WiFi cho tai nghe (WiFi được cài đặt sẵn, chỉ cần đúng SSID và PSWD là tự động kết nối). Sau nó nhấn nút ON/OFF trên ứng dụng để điều khiển xe lăn bằng ứng dụng di động • ON: Bật chế độ điều khiển trên ứng dụng đồng thời ngắt điều khiển bằng đầu • OFF: Điều khiển bằng đầu, không điều khiển bằng ứng dụng di động. Bước 5: Để dựng tất cả hoạt động chỉ cần tắt tai nghe hoặc tắt bộ điều khiển động cơ bằng các công tắc là được. 4.6.1. Quy trình thao tác: Quy trình thao tác được thực hiện theo lưu đồ sau để tránh những sự cố đáng tiếc, người dùng nên thực hiện đúng thứ tự Dựa vào tài liệu hướng dẫn sử dụng để có thể xây dựng lưu đồ một cách trực quan. Lưu đồ giúp người sử dụng có thể dễ dàng sử dụng ngay được xe lăn mà không cần phải cần đọc tài liệu chi tiết. https://doan.edu.vn/

CHƯƠNG 4: THI CÔNG HỆ THỐNG BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 62 Bắt đầu Bật tai nghe nhận dạng cử động Bật công tắc ắc quy Bật công tắc bộ điều khiển động cơ Đảm bảo WiFi hoạt động tốt Chờ 4 5s để thiết bị được kết nối Bluetooth Kiểm tra cảm biến bảo đảm an toàn Cảm biến hư Tiến hành điều khiển Kiểm tra cảm biến bảo đảm an toàn Kết thúc Hình 4.28. Lưu đồ các sử dụng xe lăn điều khiển https://doan.edu.vn/

• Biết sử dụng module thu phát Bluetooth nhằm kết nối 2 Arduino Nano lại với nhau đảm bảo thẩm mỹ và thuận tiện cho việc sử dụng.

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 63 Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.1. KẾT QUẢ: Qua quá trình nghiên cứu, thiết kế và thì công để tài trong vòn 15 tuần, những kết quả nghiên cứu, đạt được: • Biết sử dụng Arduino Nano V3.0 để ứng dụng trong lập trình điều khiển: kết nối với các module khác như module wifi, module thu phát Bluetooth, biêt cách kết hợp các loại cảm biến để xử lí… • Biết sử dụng NodeMCU để ứng dụng trong công nghệ thu phát wifi từ đó mà nhận dữ liệu từ các thiết bị khác qua wifi. Trong dự án NodeMCU nhận dữ liệu từ ứng dụng di động đẻ tiến hành sử lí và liên kết với Arduino Nano điều khiển xe lăn.

• Biết sử dụng cảm biến khoảng cách hồng ngoại: đã dùng cảm biến hông ngoại để đo khoảng cách từ đó phát hiện được vật cản mà có những xử lí phù hợp như dừng xe lại, cảnh báo…

• Biết sử dụng cảm biến gia tốc (accelerometer) và cảm biến con quay hồi chuyển (gyroscope) từ đó đưa về vi điều khiển tiến hành tính toán và tạo ra các giá trị thích hợp để thuận tiện cho việc lập trình thuạt toán.

• Biết sử dụng động cơ servo: ứng dụng động cơ servo vao trong điều hướng của cảm biến. Quét một góc nhất định trong vùng nào đó để cảm biến hoạt động theo. Biết cách lập trình để động cơ servo quay nhanh hoặc quay chậm tùy theo ý muốn của người sử dụng • Biết cách sử dụng module điều khiển 1 động cơ BTS7960 để tiến hành băm xung PWM điều khiển tốc độ động cơ. Kết hợp 2 module lại với nhau qua vi xử lí để điều khiển 2 động cơ DC • Biết cách ứng dụng Blynk vào trong lập trình điều khiển thiết bị qua Wifi. Blynk là ứng dụng mã nguồn mở như inventor của Google nhưng lại dễ dàng sử dụng hơn • Biết sử dụng trình Arduino IDE để lập trình cho 3 bộ vi xử lí Arduino Nano và NodeMCU ESP8266.

https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 64 5.1.1. Tai nghe nhận dạng chuyển động của đầu: Hình 5.1. Hình ảnh tai nghe nhận dạng chuyển động của đầu 5.1.2. Module điều khiển động cơ DC của xe lăn: Hình 5.2. Module điều khiển động cơ DC của xe lăn https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 65 5.1.3. Toàn bộ xe lăn: Hình 5.3. Hình ảnh mặt sau của xe lăn Hình 5.4. Hình ảnh mặt trước của xe lăn https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 66

5.1.4. Bộ lọc Complementary: Trong quá trình thu thập dữ liệu cảm biến luôn có nhiễu không đáng có xảy ra đó là lí do chúng ta cần xử lí trước khi đem đi tính toán. Ở đây ta ứng dụng bộ lọc ComplementaryB ộ lọcangleComplementary:=(1-alpha)*(gyro) + (alpha)*(acc) (4.3) Trong đó: angle: góc quay (roll, pitch) - alpha: hệ số bộ lọc gyro: là góc quay tính từ gyro - acc: là góc quay tính từ acc Chọn hệ số alpha: Ta chọn hệ só alpha là 0.98 của dữ liệu đọc được từ cảm biến GYRO bởi vì nó rất chính xác và không bị ảnh hưởng bởi các lực bên ngoài. Tuy nhiên theo thời gian tín hiệu từ GYRO sẽ có xu hướng có lỗi theo thời gian nên ta sử dụng 0.02 của tín hiệu ACCEL đủ để bù đắp mà lỗi theo thời gian GYRO gây ra. Thay vào ta được: Pitch = 0.98*PitchACC + 0.02*PitchGYRO (4.4) Roll = 0.98*RollACC + 0.02*RollGYRO (4.5) Hình 5.5. Tín hiệu Roll và Pitch cảu ACCEL trước khi qua bộ lọc Complementary.

https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 67

Tín hiệu nhận được bị nhiễu rất nhiều do tác động của ngoại lực không biết trước được ở môi trương xung quanh. Hình 5.6. Tín hiệu Roll và Pitch cảu GYRO trước khi qua bộ lọc Complementary. Dữ liễu của GYRO ít bị nhiễu hơn tuy nhiên lại có xu hướng không ổn định có xuất hiện gợn sóng sai số Hình 5.7. Roll và Pitch sau khi qua bộ lọc Complementary. Màu xanh dương: Roll Màu đỏ: Pitch Ta thấy sau khi qua bộ lọc tín hiệu rất ổn định và ít tác dụng của ngoại lực lên ACCEL và sai số theo thời gian của GYRO https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 68 5.1.5. Dữ liệu từ cảm biến: Kết quả dữ liệu lấy được từ cảm biến và tính toán qua bộ lọc để nhận dạng được tín hiệu như: quay đầu sang trái, quay đầu sang phải, gật đầu về trước, ngửa đầu ra sau. Hình 5.8. Dữ liệu cảm biến khi gật đầu về trước Dữ liệu của trục Roll giảm về âm khi gật đầu về trước. Khi ta trở lại vị trí cũ, dữ liệu cũng quay lại vị trị 0 ban đầu. Hình 5.9. Dữ liệu cảm biến khi ngửa đàu ra sau Dữ liệu của trục Roll tăng về dương khi gật đầu về trước. Khi ta trở lại vị trí cũ, dữ liệu cũng quay lại vị trị 0 ban đầu. https://doan.edu.vn/

Hình 5.10. Dữ liệu cảm biến khi quay đầu sang trái Dữ liệu của trục Yaw tăng về âm khi gật đầu về trước. Khi ta trở lại vị trí cũ, dữ liệu cũng quay lại vị trị 0 ban đầu. Hình 5.11. Dữ liệu cảm biến khi quay đầu sang phải Dữ liệu của trục Yaw tăng về dương khi gật đầu về trước. Khi ta trở lại vị trí cũ, dữ liệu cũng quay lại vị trị 0 ban đầu. 5.1.5. Kết quá thực nghiệm: a. Chạy thực nghiệm

https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 69

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 70 Hình 5.12. Khi ngủ gật sẽ có thông báo trên điện thoại di động và qua email Hình 5.13. Khi phát hiện vật cản xe tự động dừng lại https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 71 b. Kết quả thống kê chạy thực nghiệm: Bảng 5.1. Thống kê kết quả điều khiển Tình huống Số thựclầnhiện Số lần đạt Số khônglầnđạt Tỉ lệ thànhcông Quay đầu sang trái 50 47 3 86% Quay đầu sang trái 50 46 4 88% Gật đầu đến trước 50 49 1 98% Gật đầu về sau 50 48 2 96% Phát hiện vật cản 50 48 2 96% Ngủ gật 20 18 2 90% Từ bảng kết quả trên tiến hành kiểm ra thì rút ra được các nguyên nhân sau đây: • Quay trái, quay phải có tỉ lệ thấp hơn các phần còn lại là do trục chịu ảnh hưởng khi quay trái phải là trục YAW. Trục này sẽ bị ảnh hưởng khi xe dừng lại, do quán tính của xe, nên thông số thay đổi làm ảnh hưởng đến kết quả • Gật tới, gật lui có độ chính xác cao, một số lần lỗi có thể là do người dùng gật chưa đúng cách • Ngủ gật chưa có tình huống thức tế nên độ chính xác của kiểm tra chỉ là tương đối, mang bản chất định tính. Phát hiện vật cản có độ chính xác cao với những vật trong phạm vi dưới 100cm còn ngoài ra do độ nhiễu của cảm biến nên xảy ra ai số 5.2. NHẬN XÉT_ĐÁNH GIÁ: Sau khi hoàn thành hệ thống. Trải qua quá trình chạy thử nghiệm và chạy thật có những thông số sau: • Xe vận hành được trong môi trường địa hình bằng phẳng. • Tai nghe nhận dạng chuyển động của đầu phù hợp với nhiều kích thước đầu của người sử dụng, có thể căn chỉnh cho phù hợp với người sử dụng, tùy nhiên vẫn còn một số dây điện truyền tín hiệu lộ ra ngoài phần nào giảm bớt tính thẩm mỹ của thiết bị. https://doan.edu.vn/

CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 72 • Bộ điều khiển động cơ tương thích với 2 động cơ của xe lăn. Bộ điều khiển chắc chắn được cố định cần thận tuy nhiên quá trình đi dây bên trong còn chưa thật sự tốt, đường dây rất rối và khó khăn để bảo trì sau này. • Cảm biến hoạt động tốt tùy nhiên bộ điều hướng của cảm biến còn chưa thật sự tối ưu, còn bị giật khi quay. Cảm biến theo yêu cầu phải đo từ 30 150 cm nhưng trong thực tế đo được lại cho thấy trong khoảng từ 120 150 cm cảm biến đo không ổn định khi ở khoảng cách ngắn hơn.

• Thời gian đáp ứng của tai nghe với bộ điều khiển xe lăn còn khá chậm (3 5s). Mục đích đạt được yêu cầu phải nhanh hơn (khoảng 1s) để thuận tiện cho người dùng. • Điều khiển xe lăn qua ứng dụng di động mượt mà, tuy nhiên trong điều kiện WiFi không tốt hoặc không ổn đinh thì hệ thống điều khiển qua ứng dụng cũng không ổn định theo.

https://doan.edu.vn/

• Khi phát hiện vật cản yêu cầu servo dừng lại, servo vẫn dừng lại những bị giật giật chưa tìm hiểu ra nguyên nhân và cách khắc phục tuy điều này không ảnh hưởng đến kết quả của việc phát hiện vật cản • Nhận dạng tín hiệu theo dạng xét ngưỡng (xét lớn hơn hoặc bé hơn một hằng số nào đó của 3 trục Roll Pitch Yaw) còn nhiều hạn chế. 6.1. HƯỚNG PHÁT TRIỂN: Những hướng phát triển khả thi của đề tài: • Áp dụng machine learning vào trong lập trình nhận dạng chuyển động của đầu để tăng độ chính xác của nhận dạng cử động, thêm được nhiều động tác phức tạp. https://doan.edu.vn/

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 73 Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1. KẾT LUẬN: 6.1.1. Đạt được: Sau quá trình nghiên cứu, phát triển chỉnh sửa thì kết quả thu được so với những mục tiêu đã đặt ra là: • Thiết kế được thiết bị nhận dạng chuyển động của đầu: làm được khoảng 95% những yêu cầu đặt ra về phần cứng, về mặt thẩm mỹ đạt mức tốt so với mục tiêu ban đầu đặt ra. Hiệu suất từ những thí nghiệm ở trên thì đạt được trên 85% về phương diện nhận dạng chuyển động của đầu. • Bộ điều khiển động cơ DC của xe lăn: đã hoàn thành yêu cầu lúc ban đầu đặt ra không những vậy còn có thêm các chức năng phát hiện vật cản tự động dừng lại, thông báo. Về mặt thẩm mỹ thì đạt mức khá so với mục tiêu • Sau khi lắp ráp các phần lại vào xe lăn, xe lăn tổng thể đã đạt yêu cầu về mục tiêu ban đầu là: có thể điều khiển bằng đầu, có thể điều khiển bằng ứng dụng, có thể ngăn chặn tình huống nguy hiểm. Về hiệu suất của xe lăn xét tổng thể thì từ những thí nghiệm chạy thực tế cho thấy hiệu suất đạt được ở mức khá, một số lỗi xuất hiện do người dùng và do nhiễu cảm biến và tác động lực không tính toán trước như quán tính của xe lăn khi dừng lại. 6.1.2. Chưa đạt được: Bên cạnh những kết quả đạt được thì vẫn còn tồn tại hạn chế, chưa đạt được: • Quay trái, quay phải để điều khiển xe lăn vẫn chưa đạt được hiệu suất tốt nhất, vẫn còn tồn tại lỗi do nhiễu cảm biến, quán tính của xe lăn khi dừng lại.

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH 74 • Áp dụng điều khiển bằng giọng nói cho xe lăn để tăng thêm tính năng cho xe lăn • Thêm camera để người thân có thể theo dõi được tránh những sự cố đáng tiết không đáng có xảy ra. https://doan.edu.vn/

[4] Hoàng Minh Công, “Giáo trình cảm biến công nghiệp”, Đại Học Bách Khóa Đà Nẵng 2004.

TÀI LIỆU THAM KHẢO

https://doan.edu.vn/

TÀI LIỆU THAM KHẢO BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

[3] David Sarver - Marc Ackerman, Pitch, roll, and yaw: Describing the spatial orientation of dentofacial traits, Researchgate April 2007

[1] Trần Hoàng Phi Trương Văn Vinh, Thiết kế Chế tạo xe lăn điện cho người khuyết tật phần cơ, trong Đồ án tốt nghiệp Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh (2015). [2] Ngô Tùng, Chế xe lăn điều khiển bằng... đầu, tienphong.vn (Nhịp sống Cộng đồng mạng Tài năng trẻ) 10/04/2018.

[5] Lê Cảnh Trung Phạm Quang Huy, “Lập trình điều khiển với Arduino”, NXB Khoa học và kỹ thuật. [6] Lê Mỹ Hà Phạm Quang Huy, “Lập trình IOT với Arduino”, NXB Thanh Niên. [7] Anisha Cotta, Naik Trupti Devidas, “Wireless communication using HC05 Bluetooth module interfaced with arduino”, International Journal of Science, Engineering and Technology Research (IJSETR) Volume 5, Issue 4, April 2016 [8] H P Ramadhan, G Mansur, "Permanent magnet DC motor control by using arduino and motor drive module BTS7960", IOP Conference Series: Materials Science and Engineering [9] Benne de Bakker, "How to use a SHARP GP2Y0A21YK0F IR Distance Sensor with Arduino", Makerguides.com [10] Nguyễn Đình Phú, “Giáo trình vi xử lý II”, NXB ĐH Quốc Gia Tp.HCM, 2007

SimpleKalmanFilter simpleKalmanFilter_R(1, 1, 0.001); simpleKalmanFilter_P(1, 1, 0.001); simpleKalmanFilter_Y(1, 1, 0.001); int MPU = 0x68; // MPU6050 I2C

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH PHỤ LỤC ❖ Phần code nhận dạng tín hiệu: #include <TimerOne.h> #include <Wire.h> #include <SimpleKalmanFilter.h> #include <SoftwareSerial.h> #define TxD 6 #define RxD 5 #define BT_LEFT 7 #define BT_RIGHT 8 #define BT_FOR 9 #define BT_BACK 10 #define BT_STOP 11 #define BT_SW 12 int BT_LEFT_STATE = 0; int BT_RIGHT_STATE = 0; int BT_FOR_STATE = 0; int BT_BACK_STATE = 0; int BT_STOP_STATE = 0; int BT_SW_STATE = 0; SoftwareSerial mySerial(RxD, TxD);//RX TX

//DECLARE VARIABLE FOR GETTING RAWDATA float AccX, AccY, AccZ; float GyroX, GyroY, GyroZ; float accAngleX, accAngleY, gyroAngleX, gyroAngleY, gyroAngleZ; float roll, pitch, yaw, rollF, pitchF, yawF; float AccErrorX, AccErrorY, GyroErrorX, GyroErrorY, GyroErrorZ; float elapsedTime, currentTime, previousTime; float Gy_ER_X, Gy_ER_Y, Gy_ER_Z, STOP_FLAG_L, STOP_FLAG_R, STOP_FLAG_F, STOP_FLAG_B; //DECLARE FOR YAW CHANGING float yawF_Temp, ENA_BACK_YAW; int ENA_L_ON = 0, ENA_L_OFF = 0, ENA_R_ON = 0, ENA_R_OFF = 0; int TURN_L_ENA = 0, TURN_R_ENA = 0; //DECLARE FOR PITCH CHANGING float pitchF_Temp, ENA_BACK_PITCH; int ENA_L_ON_P = 0, ENA_L_OFF_P = 0, ENA_R_ON_P = 0, ENA_R_OFF_P = int0; TURN_L_ENA_P = 0, TURN_R_ENA_P = 0; https://doan.edu.vn/

SimpleKalmanFilter

address

SimpleKalmanFilter

const

// === Read gyroscope data === //

https://doan.edu.vn/

// Read 6 registers total, each axis value is stored in 2 registers //For a range of + 2g, we need to divide the raw values by 16384, according to the datasheet

// Talk to the register 6B Wire.write(0x00); // Make reset place a 0 into the 6B Wire.endTransmission(registertrue);

//end the transmission delay(20);Gy_ER_ZGy_Gy_ER_X//GETpinMode(BT_STOP,INPUT);pinMode(BT_BACK,INPUT);pinMode(BT_FOR,INPUT);pinMode(BT_RIGHT,INPUT);pinMode(BT_LEFT,INPUT);pinMode(13,OUTPUT);ERRORCONST=calculate_IMU_error_X();ER_Y=calculate_IMU_error_Y();=calculate_IMU_error_Z(); void} loop() { // === Read acceleromter data === // Wire.write(0x3B);Wire.beginTransmission(MPU);//Startwith register 0x3B (ACCEL_XOUT_H) Wire.requestFrom(MPU,Wire.endTransmission(false);6,true);

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

// Initialize comunication Wire.beginTransmission(MPU); // Start communication with MPU6050 // Wire.write(0x6B);MPU=0x68

//DECLARE FOR ROLL CHANGING float rollF_Temp, ENA_BACK_ROLL; int ENA_F_ON_R = 0, ENA_F_OFF_R = 0, ENA_B_ON_R = 0, ENA_B_OFF_R = int0; TURN_F_ENA_R = 0, TURN_B_ENA_R = 0; //SET VARIABLE FOR GETTING ERROR int c = 0; void setup()

Wire.begin();Serial.begin(38400);mySerial.begin(38400);{

AccX = (Wire.read() << 8 | Wire.read()) / 16384.0; // X axis value

AccY = (Wire.read() << 8 | Wire.read()) / 16384.0; // Y axis value

AccZ = (Wire.read() << 8 | Wire.read()) / 16384.0; // Z axis value // // Calculating Roll and Pitch from the accelerometer data // accAngleX = (atan(AccY / sqrt(pow(AccX, 2) + pow(AccZ, 2))) * 180 / PI); // AccErrorX ~(0.58) See the calculate_IMU_error()custom function for more details // accAngleY = (atan( 1 * AccX / sqrt(pow(AccY, 2) + pow(AccZ, 2))) * 180 / PI); // AccErrorY ~( 1.58)

previousTime = currentTime; // Previous time is stored before the actual time read currentTime = millis(); // Current time actual time = (currentTime previousTime) / 1000; // Divide by 1000 to get Wire.write(0x43);Wire.beginTransmission(MPU);seconds//Gyrodata first register address 0x43 Wire.requestFrom(MPU,Wire.endTransmission(false);6,true); // Read 4 registers total, each axis value is stored in 2 registers GyroX = (Wire.read() << 8 | Wire.read()) / 131.0; // For a 250deg/s range we have to divide first the raw value by 131.0, according to the datasheet GyroY = (Wire.read() << 8 | Wire.read()) / 131.0; GyroZ = (Wire.read() << 8 | Wire.read()) / 131.0; // // Correct the outputs with the calculated error values // GyroX = GyroX Gy_ER_X; // GyroErrorX // GyroY = GyroY Gy_ER_Y; // GyroErrorY // GyroZ = GyroZ Gy_ER_Z; // GyroErrorZ // // Currently the raw values are in degrees per seconds, deg/s, so we need to multiply by sendonds (s) to get the angle in degrees // gyroAngleX = gyroAngleX + GyroX * elapsedTime; // deg/s * s = //deg gyroAngleY = gyroAngleY + GyroY * elapsedTime; // Complementary filter combine acceleromter and gyro angle values yaw = yaw + (GyroZ Gy_ER_Z) * elapsedTime; roll = 0.98 * (roll + (GyroX Gy_ER_X) * elapsedTime) + 0.02 * ((atan(AccY / sqrt(pow(AccX, 2) + pow(AccZ, 2))) * 180 / PI)); pitch = 0.98 * (pitch + (GyroY Gy_ER_Y) * elapsedTime) + 0.02 * ((atan( 1 * AccX / sqrt(pow(AccY, 2) + pow(AccZ, 2))) * 180 / PI)); yawF = simpleKalmanFilter_Y.updateEstimate((float)yaw); rollF = simpleKalmanFilter_R.updateEstimate((float)roll); pitchF = simpleKalmanFilter_P.updateEstimate((float)pitch); // CONTROL //CONTROL// LEFT RIGHT VIA YAW: //TRACKENA_BACK_YAWPOSITION= yawF yawF_Temp; ENA_BACK_PITCH = pitchF pitchF_Temp; ENA_BACK_ROLL = rollF rollF_Temp; //SET BUTTON: if ((ENA_BACK_YAW > 0.1) && (yawF > 25)){ ENA_L_ON = 100; ENA_L_OFF = 0; Timer1.detachInterrupt(); }

readelapsedTime

https://doan.edu.vn/

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

((ENA_BACK_YAW < 0.1) && (yawF < 25)){ ENA_R_ON = 100; ENA_R_OFF = 0; Timer1.detachInterrupt(); if}

ROLL //SET BUTTON: if ((ENA_BACK_ROLL > 0.15) && (rollF > 20)){ ENA_F_ON_R = 100; ENA_F_OFF_R = 0; Timer1.detachInterrupt(); if} ((ENA_BACK_ROLL < 0.15) && (rollF > 7)){ ENA_F_OFF_R = 100; ENA_F_ON_R = 0; gyroAngleX = 0; accAngleX = Timer1.detachInterrupt();0; if}

((ENA_BACK_ROLL < 0.15) && (rollF < 20)){ ENA_B_ON_R = 100; ENA_B_OFF_R = 0; Timer1.detachInterrupt(); if} ((ENA_BACK_ROLL > 0.15)&& (rollF < 15)) { ENA_B_OFF_R = 100; ENA_B_ON_R = 0; gyroAngleX = 0; accAngleX = Timer1.detachInterrupt();0; //SET}

MODE FOR CONTROLING FORWARD BACKWARD if (ENA_F_ON_R == 100){ TURN_F_ENA_R = 1; TURN_L_ENA = 0; TURN_R_ENA = 0; https://doan.edu.vn/

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH if ((ENA_BACK_YAW < 0.1) && (yawF > 7)){ ENA_L_OFF = 100; ENA_L_ON = 0; Timer1.attachInterrupt(Blink);Timer1.initialize(1500000);yaw=0; if}

((ENA_BACK_YAW > 0.1)&& (yawF < 7)) { ENA_R_OFF = 100; ENA_R_ON = 0; yaw=0 Timer1.attachInterrupt(Blink);Timer1.initialize(1500000);; //CONTROL//}

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH if} (ENA_F_OFF_R == 100){ TURN_F_ENA_R = 0; if} (ENA_B_ON_R == 100){ TURN_B_ENA_R = 1; TURN_L_ENA = 0; TURN_R_ENA = 0; if} (ENA_B_OFF_R == 100){ TURN_B_ENA_R = 0; //SET}

LEFT RIGHT (YAW PITCH) CONTROL FORWARD AND BACKWARD VIA ROLL CHANGING if (((TURN_F_ENA_R == 1) && (BT_SW_STATE == 0)) || ((BT_FOR_STATE == 1) && (BT_RIGHT_STATE == 0) && (BT_LEFT_STATE == 0) && (BT_BACK_STATE == 0) && (BT_STOP_STATE == 0) && (BT_SW_STATE == 1))) { mySerial.print('3');Serial.println("FOR"); if} (((TURN_B_ENA_R == 1) && (BT_SW_STATE == 0)) || ((BT_FOR_STATE == 0) && (BT_RIGHT_STATE == 0) && (BT_LEFT_STATE == 0) && (BT_BACK_STATE == 1) && (BT_STOP_STATE == 0) && (BT_SW_STATE == 1))) { mySerial.print('2');Serial.println("BACK"); }

https://doan.edu.vn/

MODE FOR CONTROLING LEFT RIGHT if (ENA_L_ON == 100){ TURN_L_ENA = 1; TURN_F_ENA_R = 0; TURN_B_ENA_R = 0; if} (ENA_L_OFF == 100){ TURN_L_ENA = 0; if} (ENA_R_ON == 100){ TURN_R_ENA = 1; TURN_F_ENA_R = 0; TURN_B_ENA_R = 0; if} (ENA_R_OFF == 100){ TURN_R_ENA = 0; //READ}

BT_LEFT_STATENODEMCU = digitalRead(BT_LEFT); BT_RIGHT_STATE = digitalRead(BT_RIGHT); BT_FOR_STATE = digitalRead(BT_FOR); BT_BACK_STATE = digitalRead(BT_BACK); BT_STOP_STATE = digitalRead(BT_STOP); BT_SW_STATE = digitalRead(BT_SW); //CONTROL//

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH if (((TURN_L_ENA == 1) && (BT_SW_STATE == 0)) || ((BT_FOR_STATE == 0) && (BT_RIGHT_STATE == 0) && (BT_LEFT_STATE == 1) && (BT_BACK_STATE == 0) && (BT_STOP_STATE == 0) && (BT_SW_STATE == 1))) { mySerial.print('1');Serial.println("LEFT"); if} (((TURN_R_ENA == 1) && (BT_SW_STATE == 0)) || ((BT_FOR_STATE == 0) && (BT_RIGHT_STATE == 1) && (BT_LEFT_STATE == 0) && (BT_BACK_STATE == 0) && (BT_STOP_STATE == 0) && (BT_SW_STATE == 1))) { mySerial.print('4');Serial.println("RIGHT"); STOP//}if (((TURN_L_ENA == 0) && (TURN_R_ENA == 0) && (TURN_F_ENA_R == 0) && (TURN_B_ENA_R == 0)) && ((BT_FOR_STATE == 0) && (BT_RIGHT_STATE == 0) && (BT_LEFT_STATE == 0) && (BT_BACK_STATE == 0) && (BT_STOP_STATE == 1))) { mySerial.print('6');Serial.println("STOP"); //YAW//} PTICH ROLL CHANGE DETECTION yawF_Temp = yawF; pitchF_Temp = pitchF; rollF_Temp = rollF; // Serial.print(rollF); // Serial.print(" "); // Serial.print(pitchF); // Serial.print(" "); // Serial.println(yawF); void} {//digitalWrite(13,!digitalRead(13));Blink()yaw=0;//trìnhph ục vụ ngắt } ❖ Phần code chương trình con tính OFFSET cho cảm biến: //BY floatME:calculate_IMU_error_X() { c = 0; // Read gyro values 200 times while (c < 200) Wire.endTransmission(false);Wire.write(0x43);Wire.beginTransmission(MPU);{ https://doan.edu.vn/

c++;GyroErrorZ//GyroZGyroYGyroXWireWire.endTransmission(falsWire.write(0x43);Wire.beginTransmission(MPU);{e);.requestFrom(MPU,6,true);=Wire.read()<<8|Wire.read();=Wire.read()<<8|Wire.read();=Wire.read()<<8|Wire.read();Sumallreadings=GyroErrorZ+(GyroZ/131.0); //Divide}

calculate_IMU_error_Z() { c = 0; // Read gyro values 200 times while (c < 200)

Wire.requestFrom(MPU, 6, true); GyroX = Wire.read() << 8 | Wire.read(); GyroY = Wire.read() << 8 | Wire.read(); GyroZ = Wire.read() << 8 | Wire.read(); // Sum all readings GyroErrorX = GyroErrorX + (GyroX / 131.0); c++; //Divide} the sum by 200 to get the error value GyroErrorX = GyroErrorX / 200; return GyroErrorX; float}

https://doan.edu.vn/

{ c = 0; // Read gyro values 200 times while (c < 200)

calculate_IMU_error_Y()

c++;GyroErrorY//GyroZGyroYGyroXWire.requestFrom(MPUWire.endTransmission(false);Wire.write(0x43);Wire.beginTransmission(MPU);{,6,true);=Wire.read()<<8|Wire.read();=Wire.read()<<8|Wire.read();=Wire.read()<<8|Wire.read();Sumallreadings=GyroErrorY+(GyroY/131.0); //Divide} the sum by 200 to get the error value GyroErrorY = GyroErrorY / 200; return GyroErrorY; float}

the sum by 200 to get the error value

GyroErrorZ = GyroErrorZ / 200; return GyroErrorZ; } ❖ Phần code điều khiển dộng cơ DC: #include <SharpIR.h> #include <SoftwareSerial.h>

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

cong Serial

Serial.println("START!");mySerial.begin(38400); vo}id loop()

{ https://doan.edu.vn/

SharpIRmyservo;SharpIRB(irF, modelF); SharpIR SharpIRF(irB, modelB); SoftwareSerial mySerial(2, 7); // RX, TX int RPWM1 = 3; int LPWM1 = 5; int RPWM2 = 11; int LPWM2 = 6; int ENA_F = 0, ENA_B = 0; int M1_EN = 4; int M2_EN = 8; byte bluetoothByte = 0; //khai báo biến nhận bluetooth byte node = 0; //khai báo biến nhận bluetooth int fadeValue = 75 ; int posL = 0; int posR = 0; int TempR = 0; int TempL = 0; void setup()

Serial.begin(9600);pinMode(M2_EN,pinMode(M1_EN,pinMode(LPWM2,pinMode(RPWM2,pinMode(LPWM1,pinMode(RPWM1,myservo.attach(10);{OUTPUT);OUTPUT);OUTPUT);OUTPUT);OUTPUT);OUTPUT);//mo

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH #define irF A0 #define irB A4 #define modelF 20150 #define modelB 20150 // ir: the pin where your sensor is attached // model: an int that determines your sensor: 1080 for GP2Y0A21Y // 20150 for GP2Y0A02Y // (working distance range according to the datasheets) #include <Servo.h> Servo

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

for (posR = 40; posR <= 140; posR += 2) { // goes from 0 degrees to 180 degrees // in steps of 1 degree while (mySerial.available() > 0) { bluetoothByte = mySerial.read(); if}(ENA_F == 0) myservo.write(posR);{ // tell servo to go to position in variable 'pos' } int disF = SharpIRF.distance(); int disB = SharpIRB.distance(); // Serial.println(disF); // ifSerial.println(disB);((disF<70)||(disB < 70)) { ENA_F = 1; if} ((disF > 70) && (disB > 70)) { ENA_F = 0; if}(bluetoothByte == 51) //so 3 { Serial.println("MOVE FORWARD IS OK!"); dithang();//dunglai(); if} ((bluetoothByte == 54)||(ENA_F == 1)) // so 6 { Serial.println("STOP IS OK!"); dunglai(); if} ((bluetoothByte == 50)&&(ENA_F == 0)) //so 2 { Serial.println("MOVE BACKWARD IS OK!"); lui();//dunglai(); if} (bluetoothByte == 49) // so 1 { Serial.println("TURN LEFT IS OK!"); quaytrai();//dunglai(); if} (bluetoothByte == 52)// so 4 { Serial.println("TURN RIGHT IS OK!"); quayphai();//dunglai(); }

https://doan.edu.vn/

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

for} (posL = 140; posL >= 40; posL = 2) { // goes from 180 degrees to 0 whiledegrees(mySerial.available() > 0) { bluetoothByte = mySerial.read(); } if (ENA_F == myservo.write(posL);0){ // tell servo to go to position in variable 'pos' } int disF = SharpIRF.distance(); int disB = SharpIRB.distance(); if ((disF < 70) || (disB < 70)) { ENA_F = 1; if} ((disF > 70) && (disB > 70)) { ENA_F = 0; } if (bluetoothByte == 51) //so 3 { Serial.println("MOVE FORWARD IS OK!"); dithang();//dunglai(); if} ((bluetoothByte == 54)||(ENA_F == 1)) // so 6 { Serial.println("STOP IS OK!"); dunglai(); if} ((bluetoothByte == 50)&&(ENA_F == 0)) //so 2 { Serial.println("MOVE BACKWARD IS OK!"); lui();//dunglai(); if} (bluetoothByte == 49) // so 1 { Serial.println("TURN LEFT IS OK!"); quaytrai();//dunglai(); if} (bluetoothByte == 52)// so 4 { Serial.println("TURN RIGHT IS OK!"); quayphai();//dunglai(); } }

https://doan.edu.vn/

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH //} Phần điều khiển động cơ, mình viết như thế này...MAX dễ hiểu

{voidluôn:dunglai()digitalWrite(M1_EN, LOW); digitalWrite(M2_EN, LOW); analogWrite(RPWM1, 0); analogWrite(LPWM1, 0); analogWrite(RPWM2, 0); analogWrite(LPWM2, 0); void} dithang() { digitalWrite(M1_EN, HIGH); digitalWrite(M2_EN, HIGH); analogWrite(RPWM1, fadeValue); analogWrite(LPWM1, 0); analogWrite(RPWM2, fadeValue); analogWrite(LPWM2, 0); void} lui() { digitalWrite(M1_EN, HIGH); digitalWrite(M2_EN, HIGH); analogWrite(RPWM1, 0); analogWrite(LPWM1, fadeValue); analogWrite(RPWM2, 0); analogWrite(LPWM2, fadeValue); void} quaytrai() { digitalWrite(M1_EN, HIGH); digitalWrite(M2_EN, HIGH); analogWrite(RPWM1, 0); analogWrite(LPWM1, 0); analogWrite(RPWM2, fadeValue); analogWrite(LPWM2, 0); void} quayphai() { digitalWrite(M1_EN, HIGH); digitalWrite(M2_EN, HIGH); analogWrite(RPWM1, fadeValue); analogWrite(LPWM1, 0); analogWrite(RPWM2, 0); analogWrite(LPWM2, 0);

} ❖ Phần code của NodeMCU nhận tín hiệu từ ứng dụng di động: /** gungor 01/01/2019 #defi*/ne BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #define LEFT D0 https://doan.edu.vn/

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH

#define RIGHT D1 D2 D3 D4 // You should get Auth Token in the Blynk App. char auth[] = "rCsKWpoV Zf742lLMQ2uZrzWcyQTz66p"; //YourToken // Your WiFi credentials. char ssid[] = "ControlWheelchair"; //YourNetworkName char pass[] = "hnphien1234"; //YourPassword BLYNK_WRITE(V1) { int*= param[0].asInt(); int y = param[1].asInt(); if ((x < 27) && (y > 27) && (y < 153)){

#define FOR

#define BACK

if ((x > 153) && (y > 27) && (y < 153)){ Serial.print('4'); digitalWrite(STOP,digitalWrite(BACK,digitalWrite(FOR,digitalWrite(LEFT,digitalWrite(RIGHT,//RIGHTHIGH);LOW);LOW);LOW);LOW); else}

https://doan.edu.vn/

Serial.print('1'); //LEFT digitalWrite(LEFT, digitalWrite(STOP,digitalWrite(BACK,digitalWrite(FOR,digitalWrite(RIGHT,HIGH);LOW);LOW);LOW);LOW); else}

Serial.print('2'); //BACK digitalWrite(BACK, digitalWrite(STOP,digitalWrite(LEFT,digitalWrite(FOR,digitalWrite(RIGHT,HIGH);LOW);LOW);LOW);LOW); else}

#define STOP

Serial.print('6');{ //STOP digitalWrite(STOP, digdigitalWrite(BACK,digitalWrite(FOR,digitalWrite(RIGHT,HIGH);LOW);LOW);LOW);italWrite(LEFT,LOW); } }

if ((y > 153) && (x > 27) && (x < 153)){ Serial.print('3'); //FOR digitalWrite(FOR, digitalWrite(STOP,digitalWrite(BACK,digitalWrite(LEFT,digitalWrite(RIGHT,HIGH);LOW);LOW);LOW);LOW); else} if ((y < 27) && (x > 27) && (x < 153)){

PHỤ LỤC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP Y SINH void setup() pinMode(LEFT,{

pass); void} loop() { Blynk.run(); } https://doan.edu.vn/

Blynk.begin(auth,Serial.begin(115200);pinMode(STOP,pinMode(BACK,pinMode(FOR,pinMode(RIGHT,OUTPUT);OUTPUT);OUTPUT);OUTPUT);OUTPUT);ssid,

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.