Con người chế tạo Robot thường được sử dụng các công việc lặp đi lặp lại, các công việc nguy hiểm… Robot là sự ghép nối giữa thành phần phần cứng và phần mềm điều khiển, dùng để thực
Trang 1KHOA ĐIỆN - ĐIỆN TỬ
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - TRUYỀN THÔNG
ĐIỀU KHIỂN ROBOT BẰNG BOARD RASPBERRY PI
VÀ ỨNG DỤNG ANDROID
GVHD: TS.NGUYỄN MẠNH HÙNG SVTH: PHẠM QUAN SƠN
MSSV: 12141641
Tp Hồ Chí Minh, tháng 07/2016
S K L 0 0 4 3 6 8
Trang 21 Thông tin sinh viên
Họ và tên: MSSV: ………
2 Thông tin đề tài
Tên của đề tài: Điều khiển Robot bằng board Raspberry Pi và ứng dụng Andoird
Mục đích của đề tài: Nghiên cứu, thiết kế và điều khiển Robot
Đồ án tốt nghiệp được thực hiện tại: Bộ môn Điện Tử Công Nghiê ̣p, Khoa Điện - Điện
Tử, Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Thời gian thực hiện: Từ ngày 25 – 03 – 2016 đến 25 – 06 – 2016
3 Các nhiệm vụ cụ thể của đề tài
- Kỹ thuâ ̣t lâp trình ngôn ngữ Python trong môi trường Linux
- Cách sử dụng phần mềm Android Studio để viết mô ̣t ứng du ̣ng điều khiển Robot và nhâ ̣n dữ liê ̣u hình ảnh từ Robot gửi về
- Cách giao tiếp giữa board Raspberry Pi và ứng du ̣ng Android
- Cách điều khiển động cơ DC
- Thiết kế khung xe Robot
- Đá nh giá và hiệu chỉnh việc điều khiển Robot
- Tổng hợp và viết báo cáo đề tài
4 Lời cam đoan của sinh viên
Tôi Phạm Quan Sơn cam đoan ĐATN là công trình nghiên cứu của bản thân tôi dưới
sự hướng dẫn của Tiến Sĩ Nguyễn Mạnh Hùng
Các kết quả công bố trong ĐATN là trung thực và không sao chép từ bất kỳ công trình
Trang 3I TÊN ĐỀ TÀI: ĐIỀU KHIỂP ROBOT BẰNG BOARD RASPBERRY PI VÀ
ỨNG DỤNG ADNROID
II NHIỆM VỤ
1 Các số liệu ban đầu:
(ghi những thông số, tập tài liệu tín hiệu, hình ảnh…)
- Phạm Hoàng Anh - Trần Hoàng Đạt, Đồ án tốt nghiệp” Thiết kế xe tránh vật cản trên board Raspberry Pi”, trường ĐH Sư Phạm Kỹ Thuật TpHCM, 2014
- Russell Bames, The Official Raspberry Pi Project Book, TheMagPi, 2016
2 Nội dung thực hiện:
(Ghi những nội dung chính cần thực hiện như trong phần tổng quan)
- Kỹ thuật lập trình ngôn ngữ Python
- Kỹ thuật lập trình Android
- Thiết lập kết nối giữa ứng dụng Android và board Raspberry Pi
- Cách điều khiển động cơ Robot
- Chạy thử và hiệu chỉnh Robot
- Tổng hợp và viết báo cáo
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 01/07/2016
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS Nguyễn Ma ̣nh Hù ng
Trang 4Bộ Môn Điện Tử Công Nghiệp
Tp Hồ Chí Minh, ngày 08 tháng 07 năm 2016
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
(Bản lịch trình này được đóng vào đồ án)
Họ tên sinh viên 1: Pha ̣m Quan Sơn
Tuầ n 2 GVHD tiến hành xét duyệt đề tài
Tuầ n 3 Viết tóm tắt yêu cầu đề tài
Tuầ n 4 Tiến hành thiết kế sơ đồ khối, giải thích chức
năng các khối
Tuầ n 5 Kết nối phần cứng: Raspberry, Robot và các
thiết bị ngoa ̣i vi
Thiết kế phầ n mềm: Xây dựng ứng du ̣ng Android trên điê ̣n thoa ̣i
Ghép nối giữa phần cứng và phần mềm
Kiểm tra hoa ̣t đô ̣ng của Robot
Tuầ n 6
Tuầ n 7
Tuầ n 8
Tuẩn 9 Hiê ̣u chỉnh Robot
Tuầ n 10 Viết báo cáo những nội dung đã làm
Tuầ n 12 Hoàn thiện báo cáo và gởi cho GVHD để xem
xét góp ý lần cuối trước khi in và báo cáo
Tuầ n 15 Nộp quyển báo cáo và báo cáo đề tài
GV HƯỚNG DẪN (Ký và ghi rõ họ và tên)
Trang 5PHIẾU ĐÁNH GIÁ KHÓA LUẬN TỐT NGHIỆP
(Dùng cho giáo viên hướng dẫn)
I Thông tin chung
- Họ và tên sinh viên: Phạm Quan Sơn MSSV: 12141641
- Tên đề tài: Điều khiển Robot bằng board Raspberry Pi và ứng dụng Android
- Họ và tên giáo viên hướng dẫn: TS Nguyễn Mạnh Hùng
II Nhận xét về khóa luận
2.1 Đánh giá chung (hoàn thành bao nhiêu phần trăm mục tiêu của đề tài):
2.2 Ưu điểm của đề tài:
2.3 Khuyết điểm của đề tài:
2.4 Thái độ làm việc của sinh viên:
2.5 Kết quả chính thu được:
2.6 Đề nghị: Được bảo vệ Không được bảo vệ
Trang 6Đề tài này là do tôi tự thực hiện dựa vào một số tài liệu trước đó và không sao chép từ tài liệu hay công trình đã có trước đó
TP.HCM, ngày 8 tháng 7 năm 2016
Người thực hiện đề tài
Trang 7Lời đầu tiên em xin chân thành cảm ơn các thầy cô trường Đại Học Sư Phạm
Kỹ Thuật Thành Phố Hồ Chí Mính đã quan tâm, tạo điều kiện để em có thể hoàn thành tốt khoá học tại trường
Em xin gởi lời cảm ơn chân thành đến Thầy Nguyễn Mạnh Hùng - Giảng viên
bộ môn Điện Tử Công Nghiệp đã tận tình hướng dẫn, chỉ bảo những kiến thức, kinh nghiệm và hỗ trợ phương tiện trong suốt quá trình tìm hiểu, nghiên cứu và thực hiện
đề tài
Em cũng cảm ơn Thầy Huỳnh Hoàng Hà - Giảng viên bộ môn Điện Tử Viễn Thông đã tạo điều kiện cung cấp kiến thức cơ bản, góp ý cần thiết cho em hoàn thành tốt đề tài
Đồng thời, em xin chân thành cảm ơn các thầy cô trong Khoa Điện-Điện Tử đã tạo những điều kiện, cung cấp những kiến thức cơ bản, những vật tư cần thiết để em có điều kiện tốt nhất để hoàn thành đề tài
Ngoài ra, em cũng gửi lời đồng cảm ơn đến các bạn tại phòng D401 đã chia sẻ, đóng góp và trao đổi kiến thức quý báu trong thời gian thực hiện đề tài Các anh chị đã hướng dẫn và giới thiệu tài liệu tham khảo, cách thực hiện nghiên cứu tại phòng D401
Em xin trân trọng cảm ơn!
TP.HCM, ngày 8 tháng 7 năm 2016
Người thực hiện đề tài
Trang 8Trang
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii
PHIẾU ĐÁNH GIÁ KHÓA LUẬN TỐT NGHIỆP iv
LỜI CAM ĐOAN v
LỜI CẢM ƠN vi
MỤC LỤC vii
LIỆT KÊ HÌNH VẼ 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 5
2.1 TỔNG QUAN VỀ ROBOT 5
2.1.1 Robot di động 6
2.1.2 Robot dùng cơ cấu bánh xe 8
2.2 GIỚI THIỆU MẠNG KHÔNG DÂY – Wireless LAN 9
2.2.1 Công nghệ mạng không dây 9
2.2.2 Phân loại các loại mạng không dây 10
2.2.3 Tiêu chuẩn mạng không dây 11
2.2.4 Ưu điểm của mạng không dây WLAN 11
2.2.5 Nhược điểm của mạng không dây WLAN 12
2.3 GIỚI THIỆU HỆ ĐIỀU HÀNH ANDROID 12
2.3.1 Kiến trúc hệ điều hành Android: 13
2.3.2 Công cụ phát triển Android: 14
2.3.3 Cấu trúc cơ bản trong một dự án Android: 15
2.3.4 Vòng đời của ứng dụng Android: 16
2.3.5 Các thành phần trong một ứng dụng Android: 16
Trang 92.4.1 Khái niệm Socket 21
2.4.2 Đặc điểm Socket 22
2.4.3 Lập trình Socket dùng ngôn ngữ Python 22
2.4.4 Lập trình Socket dùng ngôn ngữ Java trong Android 23
2.5 GIỚI THIỆU PHẦN CỨNG 24
2.5.1 Board Raspberry Pi 25
2.5.2 USB Wifi TP-Link 29
2.5.3 USB Webcam Logitech 30
2.5.4 Mạch điều khiển động cơ L298 31
2.5.5 Động cơ điện một chiều 34
Chương 3 TÍNH TOÁN VÀ THIẾT KẾ 36
3.1 GIỚI THIỆU 36
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 36
3.2.1 Thiết kế sơ đồ khối hệ thống 36
3.2.2 Tính toán và thiết kế mạch 38
3.2.3 Sơ đồ nguyên lý của toàn mạch 40
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 công mạch 41
4.2.2 Thi công khung Robot 41
4.2.3 Lắp ráp và kiểm tra 44
4.3 ĐÓNG GÓI VÀ THI CÔNG MÔ HÌNH 44
4.4 LẬP TRÌNH HỆ THỐNG 46
4.4.1 Lưu đồ giải thuật 46
4.4.2 Phần mềm lập trình cho board Raspberry Pi 53
4.4.3 Phần mềm lập trình cho điện thoại: 59
4.5 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG VÀ THAO TÁC 78
Chương 5 KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 81
5.1 KẾT QUẢ 81
5.1.1 Cảm biến Orientation 81
5.1.2 Raspberry Pi 81
5.1.3 Module Wifi 81
5.1.4 Module L298 81
5.1.5 Thiết kế Robot 81
Trang 105.2 NHẬN XÉT VÀ ĐÁNH GIÁ 84
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 85
6.1 KẾT LUẬN 85
6.2 HƯỚNG PHÁT TRIỂN 85
TÀI LIỆU THAM KHẢO 87
PHỤ LỤC 89
Trang 11Hình Trang
Hình 2.1 Robot Dante lấy mẫu phân tích từ núi lửa 5
Hình 2.2 Sự phát triển của Robot 6
Hình 2.3 Robot di động dùng cơ cấu khớp và bánh xe 8
Hình 2.4 Các loại Robot di động dùng cơ cấu bánh xích 8
Hình 2.5 Các loại bánh xe Robot 9
Hình 2.6 Robot di chuyển bằng bánh xe 9
Hình 2.7 Các loại mạng không dây 10
Hình 2.8 Các phiên bản của hệ điều hành android 13
Hình 2.9 Kiến trúc hệ điều hành Android 13
Hình 2.10 Công cụ lập trình cho Android 14
Hình 2.11 Các file trong Android Project 15
Hình 2.12 Vòng đời của một Activity 17
Hình 2.13 Phướng hướng của cảm biến Accelerometer 19
Hình 2.14 Cảm biến con quay hồi chuyển 20
Hình 2.15 Cảm biến Magnetic 21
Hình 2.16 Mô hình giao tiếp giữa Server và Client sử dụng Socket 22
Hình 2.17 Board Raspberry Pi 25
Hình 2.18 Sơ đồ các chân GPIO của board Raspberry Pi 28
Hình 2.19 Sự tương thích các thiết bị ngoại vi và Raspberry Pi 28
Hình 2.20 USB Wifi 29
Hình 2.21 Chipset trong USB Wifi 29
Hình 2.22 Webcam Logitech 30
Hình 2.23 Module L298 31
Hình 2.24 Mạch cầu H được cấu tạo bởi hai cặp transistor 32
Hình 2.25 Dạng sóng điều chế PWM 34
Hình 2.26 Động cơ điện một chiều 34
Hình 3.1: Sơ đồ khối hệ thống 37
Hình 3.2 Sơ đồ kết nối các thành phần trên Robot 40
Hình 4.1 Mặt dưới và mặt trên của khung Robot 42
Hình 4.2 Các mảnh ghép mặt bên của khung Robot 42
Hình 4.3 Gá đỡ động cơ 43
Hình 4.4 Bánh xe dẫn động 43
Hình 4.5 Động cơ DC 12V và bộ giảm tốc (1:48) 43
Trang 12Hình 4.8 Bố trí linh kiện mặt dưới của Robot 45
Hình 4.9 Giao diện ứng dụng điều khiển Robot 46
Hình 4.10 Lưu đồ chương trình chính trên ứng dụng Android 47
Hình 4.11 Lưu đồ kiểm tra đăng nhập ứng dụng 48
Hình 4.12 Lưu đồ kiểm tra đăng nhập chương trình 49
Hình 4.13 Xử lý thông số cảm biến Orientation, gửi tín hiệu điều khiển Robot 50
Hình 4.14 Xử lý thông tin hình ảnh Camera gửi về từ Robot 51
Hình 4.15 Lưu đồ chương trình trên board Raspberry Pi 52
Hình 4.16 Chương trình định dạng thẻ nhớ 53
Hình 4.17 Chương trình ghi hệ điều hành Raspbian 54
Hình 4.18 Chương trình kết nối Raspberry và máy tính 54
Hình 4.19 Màn hình đăng nhập vào kit Raspberry Pi 55
Hình 4.20 Đường dẫn cài đặt Java JDK phiên bản 8 60
Hình 4.21 Lựa chọn phiên bản JDK phù hợp với hệ điều hành sử dụng 60
Hình 4.22 File cài đặt Java JDK phiên bản 8 61
Hình 4.23 Bắt đầu cài đặt Java JDK phiên bản 8 61
Hình 4.24 Tuỳ chọn nơi cài đặt Java JDK phiên bản 8 61
Hình 4.25 Kết thúc cài đặt Java JDK kết thúc 62
Hình 4.26 Mở cửa sổ cấu hình Java JDK 62
Hình 4.27 Cấu hình biến môi trường JAVA_HOME 63
Hình 4.28 Cấu hình đường dẫn biến môi trường JAVA_HOME 63
Hình 4.29 Quá trình download Android Studio 64
Hình 4.30 File cài đặt Android Studio 64
Hình 4.31 Chương trình cài đặt Andorid Studio 64
Hình 4.32 Tuỳ chọn cài đặt Android Studio 65
Hình 4.33 Điều khoản của phần mềm Android Studio 65
Hình 4.34 Đường dẫn thư mục cài đặt Android Studio 66
Hình 4.35 Tuỳ chọn máy ảo của phần mềm Android Studio 66
Hình 4.36 Cài đặt chương trình 67
Hình 4.37 Cài đặt chương trình hoàn thành 67
Hình 4.38 Kết thúc cài đặt phần mềm Android Studio 68
Hình 4.39 Tuỳ chọn thiết lập phần mềm Android Studio 68
Hình 4.40 Tuỳ chọn giao diện phần mềm Android Studio 69
Hình 4.41 Cập nhật thành phần của phần mềm Android Studio 69
Hình 4.42 Kết thúc thiết lập phần mềm Android Studio 70
Trang 13Hình 4.45 Chọn đối tượng Phone and Tablet để lập trình 72
Hình 4.46 Chọn cấu hình Activity trống để lập trình 72
Hình 4.47 Đặt tên cho Activity và tên file layout của Activity chính 73
Hình 4.48 Quá trình khởi tạo project dùng Android Studio 73
Hình 4.49 Cửa sổ mẹo vặt của phần mềm 73
Hình 4.50 Cửa sổ MainActivity 74
Hình 4.51 Cửa sổ AndroidManifest 74
Hình 4.52 Cửa sổ Layout giao diện đồ hoạ 74
Hình 4.53 Cửa số Layout giao diện dòng lệnh 74
Hình 4.54 Chọn thiết bị để biên dịch chương trình 75
Hình 4.55 Cửa sổ chọn thiết bị để phần mềm biên dịch 75
Hình 4.56 Ứng dụng sau khi được biên dịch trên thiết bị thực tế 75
Hình 4.57 Lưu đồ điều khiển Robot dùng điện thoại Andoird 78
Hình 4.58 Cấp nguồn cho hệ thống 79
Hình 4.59 Khởi động ứng dụng điều khiển trên điện thoại Android 80
Hình 4.60 Giao diện điều khiển Robot 80
Hình 5.1 Mô hình Robot 82
Hình 5.2 Giao diện đăng nhập của ứng dụng 83
Hình 5.3 Giao diện điều khiển và nhận hình ảnh của ứng dụng 83
Hình 6.1 Màn hình hiển thị Robot khi trang bị cảm biến laser scanner 86
Trang 14Bảng Trang
Bảng 2.1: Bảng phân chia mạng không dây theo tiêu chuẩn IEEE 802.11 11
Bảng 2.2: Các phương thức chung cho Socket: 23
Bảng 2.3 Phân loại board Raspberry Pi 26
Bảng 2.4 Thông số webcam 30
Bảng 2.5 Thông số Module L298 31
Bảng 2.6 Chức năng các chân Module L298 31
Bảng 2.7 Bảng tín hiệu điều khiển Robot 33
Bảng 3.1 Điện áp và dòng điện hệ thống………….………39
Bảng 4.1 Danh sách các linh kiện 41
Bảng 4.2 Chương trình hệ thống trên board Raspberry Pi 57
Bảng 4.3 Khai báo quyền truy cập mạng 76
Bảng 4.4 Khai báo cảm biến Orientation 76
Bảng 4.5 Xử lý tín hiệu điều khiển Robot 76
Bảng 4.6 Chương trình nhận dữ liệu hình ảnh 77
Bảng 4.7 Chương trình khởi tạo Socket 77
Trang 15Trong những năm gần đây, công nghệ kỹ thuật cao trong việc chế tạo linh kiện điện tử tích hợp phát triển vượt bậc Việc sử dụng điện thoại thông minh để hỗ trợ các công việc trong công tác quan sát, điều khiển các thiết bị nơi nguy hiểm càng phổ biến Trong đó, điện thoại thông mình dùng hệ điều hành Android rất đa dạng, giá thành rẻ được mọi người ưa chuộng Các máy tính nhúng như Raspberry Pi dùng hệ điều hành mở Linux được các nhà tài trợ phát triển và hỗ trợ cung cấp đến mọi đối tượng
Đề tài sử dụng điện thoại dùng hệ điều hành Android điều khiển hướng di chuyển của Robot bằng cảm biến Orientation Việc điều khiển được thực hiện bằng cách nghiêng điện thoại theo các hướng muốn Robot di chuyển Khi Robot di chuyển sẽ có hình ảnh truyền về từ Robot và hiển thị lên màn hình điện thoại
Tất cả thông tin điều khiển được hiển thị trên màn hình điện thoại Hệ thống sẽ giúp người điều khiển quan sát được hình ảnh từ xa thông qua Robot, đồng thời giúp người điều khiển có cảm giác đang điều khiển xe thật sự
Hệ thống sử dụng môi trường mạng không dây Wifi để truyền tải hình ảnh được
rõ nét và việc điều khiển chính xác nhất Tuy nhiên, Robot hoạt động dưới sự kiểm soát của board Raspberry Pi thông qua điều khiển động cơ DC còn chưa nhạy, sai số khi điều khiển chưa thấp được như mong đợi
Trang 16Chương 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Trong những năm gần đây, việc áp dụng khoa học – kỹ thuật vào việc nghiên cứu, xây dựng, thám hiểm và cứu hộ ngày càng phát triển Các công trình ngầm hóa như: các tuyến hầm thông xe, các hệ thống cấp thoát nước, các hê ̣ thống điê ̣n lực, viễn thông… Ngoài ra, các cuộc thám hiển hang động, các di tích có không gian chật hẹp cũng như công tác cứu hộ khi xảy ra tai nạn lao động như sập hầm, môi trường rò rỉ khí gas, khí metan mà con người không thể trực tiếp tiếp xúc
Đối với các công trình xây dựng, ngay từ khâu khảo sát xây dựng đã phải có kế hoạch đảm bảo an toàn lao động cho con người bằng cách phân tích môi trường, khảo sát địa chất Khi công trình hoàn thành, việc vận hành và bảo trì cũng như khi gặp sự
cố cũng gặp khó khăn do không gian chật hẹp của hầm ngầm cũng như điều kiện môi trường như thiếu ánh sáng, thiếu khí ô-xy
Đối với công tác thám hiểm, việc khảo sát trước địa hình mà con người đặt chân đến cũng rất quan trọng, nó đảm bảo sự an toàn cho cả đoàn khảo sát
Đối với công tác cứu hộ, khi môi trường lao động không còn được đảm bảo, việc cứu hộ không đúng quy trình rất nguy hiểm cho lực lượng cứu hộ
Với lý do vừa nêu, Robot di động sẽ thay thế con người trong làm các nhiệm vụ nguy hiểm đó Robot có thể di chuyển linh hoạt trong không gian chật hẹp do có kích thước nhỏ gọn và linh hoạt Ngoài ra, Robot còn được trang bị camera để người điều khiển có thể quan sát khoảng không gian bên trong hay các loại cảm biến để xử lý các thông tin điều kiện môi trường như: nhiệt độ, độ ẩm và gửi dữ liệu đó về cho người điều khiển để có thể nhận biết được điều kiện môi trường nơi cần khảo sát
Vớ i mu ̣c tiêu thay con người làm viê ̣c ở vùng nguy hiểm, hiê ̣n ta ̣i đã có các ứng
du ̣ng Robot sử du ̣ng các vi điều khiển như PIC, Atmel, Freescale… Đặc biệt là board Arduino sử dụng dòng chip AVR được thiết kế ở Italia và phát hành năm 2005 Board Arduino có một thư viện mã nguồn mở đầy đủ, bao gồm cả thư viện, sơ đồ nguyên lý giúp cho những người chưa từng tiếp xúc với việc lập trình cũng có thể sử dụng được
Trang 17Tuy nhiên, đối với các yêu cầu cao hơn mà các loại vi điều khiển hay board Arduino chưa làm được thì các máy tính nhúng như Raspberry Pi và Intel Galileo giúp cho việc
xử lý và truyền tải lượng lớn dữ liệu được dễ dàng hơn
So với các máy tính nhúng khác, Raspberry Pi được trang bị cấu hình phần cứng chuyên dùng cho các tác vụ liên quan đến xử lý hình ảnh, giúp cho việc sử dụng đơn giản hơn Mặt khác, các điện thoại sử dụng hệ điều hành Android cũng đang được mọi
người lựa chọn sử dụng càng nhiều nên chúng tôi chọn đề tài:” Điều khiển Robot
bằng board Raspberry Pi va ̀ ứng du ̣ng Android”
1.2 MỤC TIÊU
Thiết kế mô ̣t mô hình Robot điều khiển từ xa bằng điê ̣n thoa ̣i sử du ̣ng hê ̣ điều
hà nh Android di chuyển trong đi ̣a hình bằng phẳng Ứng du ̣ng Android được xây dựng
sử du ̣ng cảm biến phương hướng (orientation) để gửi tín hiê ̣u điều khiển Board Raspberry Pi nhâ ̣n lê ̣nh để điều khiển các đô ̣ng cơ và xử lý hình ảnh thu được trên Robot Sau đó, hình ảnh được truyền về hiển thị trên điê ̣n thoa ̣i
1.3 NỘi DUNG NGHIÊN CỨU
Để có thể thiết kế được một Robot có thể di chuyển linh hoa ̣t và gửi được hình ảnh thu được về điện thoại sử du ̣ng hê ̣ điều hành Android cần tìm hiểu các nô ̣i dung:
NỘI DUNG 1: Kỹ thuâ ̣t lập trình ngôn ngữ Python trong môi trường Linux
NỘI DUNG 2: Cách sử du ̣ng phần mềm Android Studio để viết mô ̣t ứng du ̣ng điều khiển Robot và nhâ ̣n dữ liệu hình ảnh từ Robot gửi về
NỘI DUNG 3: Tìm hiểu phương thức lập trình “Socket” giữa board Raspberry Pi
NỘI DUNG 6: Cách sử dụng phần mềm Solidworks để thiết kế khung xe Robot
NỘI DUNG 7: Đánh giá và hiệu chỉnh sự làm viê ̣c của ứng du ̣ng Android điều khiển Robot
Trang 181.4 GIỚI HẠN
Đề tài: Điều khiển Robot bằng board Raspberry Pi và ứng du ̣ng Android gă ̣p
phải các giới hạn bao gồm:
Robot có kích thước: 25 cm x 15 cm x 10cm (dài x rộng x cao)
Điều khiển Robot di chuyển tốc đô ̣: 20 cm/s
Địa hình di chuyển có bề mă ̣t bằng phẳng, ít gồ ghề, ít dốc cao
Khoả ng cách điều khiển qua môi trường không dây sử du ̣ng phương pháp lập trình “Socket” giớ i hạn ở 20 mét
Hình ảnh không gian có chất lượng tốt
Giao diê ̣n điều khiển ứng du ̣ng Android đơn giản
1.5 BỐ CỤC
Chương 1: Tổng Quan
Chương 2: Cơ Sở Lý Thuyết
Chương 3: Thiết Kế và Tính Toán
Chương 4: Thi Công Hệ Thống
Chương 5: Kết Quả, Nhận Xét và Đánh Giá
Chương 6: Kết Luận và Hướng Phát Triển
Nội dung các chương như sau:
Chương 1: Tổng quan
Chương này trình bày tổng quan về đề tài nghiên cứu, các nhiê ̣m vu ̣, các giới
ha ̣n và bố cục của đề tài phải thực hiê ̣n
Chương 2: Cơ sở lý thuyết
Chương này trình bày cơ sở lý thuyết khái quát về Robot di động
Công nghệ truyền dữ liệu trong môi trường mạng không dây
Giới thiệu và cấu trúc của hệ điều hành Android
Các cảm biến tích hợp trong điện thoại thông minh
Lập trình Socket trong Python
Chuẩn hình ảnh sử dụng trong Webcam Camera
Trang 19 Chương 3: Tính toán và thiết kế
Chương này gồm các bước thiết kế phần cứng và phần mềm
Sơ đồ khối hệ thống
Điều khiển động cơ sử dụng cầu H và phương pháp băm xung – PWM
Cách truyền hình ảnh giữa board Raspberry Pi và ứng dụng Android
Thiết lập kết nối giữa Robot và Android
Lựa chọn và kết nối linh kiện, module cho Robot
Chương 4: Thi công hệ thống
Chương này gồm các bước thi công mô hình, lập trình hệ thống
Lưu đồ giải thuật hệ thống
Hướng dẫn cài đặt hệ điều hành, cài đặt phần mềm lập trình và biên dịch chương trình hệ thống
Hướng dẫn sử dụng hệ thống
Chương 5: Kết quả, nhâ ̣n xét và đánh giá
Chương này trình bày kết quả sau khi thi công hệ thống, các hình ảnh về hệ thống Nhận xét về ưu điểm, nhược điểm và đánh giá so với mu ̣c tiêu của đề tài
Chương 6: Kết luâ ̣n và hướng phát triển
Chương này trình bày kết luâ ̣n nghiên cứu đề tài và đề ra các giải pháp phát triển cho đề tài
Trang 20Chương 2 CƠ SỞ LÝ THUYẾT
Robot là một sản phẩm hoạt động một cách có hệ thống, được điều khiển bởi các thuật toán được lập trình sẵn bởi các vi mạch điện tử Con người chế tạo Robot thường được sử dụng các công việc lặp đi lặp lại, các công việc nguy hiểm…
Robot là sự ghép nối giữa thành phần phần cứng và phần mềm điều khiển, dùng
để thực hiện các nhiệm vụ lắp ráp theo dây chuyền, quan sát, do thám, thu thập thông tin hay để vận chuyển các sản phẩm khác… có mục đích xác định
Hình 2.1 Robot Dante lấy mẫu phân tích từ núi lửa
Trang 21Ở thập niên 20s của thế kỷ XX, thuật ngữ Robot xuất hiện trong một vở kịch Kể
từ đó, các Robot thương mại và các Robot công nghiệp được sản xuất với nhiều ưu điểm chính xác, giá thành rẻ hơn và đáng tin cậy hơn
Có nhiều cách để phân loại Robot như: không gian làm việc, phương thức điều khiển hay thế hệ Robot
Trải qua nhiều thế hệ, các Robot đầu tiên hoạt động mà không thay đổi được chu trình, Robot sử dụng các cảm biến để giao tiếp với môi trường bên ngoài, Robot sử dụng các bộ điều khiển PLC (Programmable Logic Controller), Robot dùng ngôn ngữ lập trình cấp cao như C, C++… hoặc các chương trình để lập trình và thế hệ hiện náy
sử dụng trí tuệ nhân tạo (hình ảnh, tiếng nói, cảm xúc)
Hiện nay, một chuyên ngành về khoa học Robot (Robotics) đã hình thành và phát triển rất rộng, bao gồm nhiều vấn đề trong cơ cấu chấp hành, cơ cấu vận động, các giác quan và cảm xúc nhân tạo
Hình 2.2 Sự phát triển của Robot
Trang 22Đối với các Robot di chuyển bằng cơ cấu khớp chuyển động, địa hình di chuyển lồi lõm và phức tạp hơn, di chuyển bằng khớp vì thế mà tốc độ không được nhanh như
cơ cấu bánh xe
Đối với Robot sử dụng cơ cấu bánh xe, Robot không gặp vấn đề về trọng tâm khi
di chuyển, từng địa hình khác nhau mà có nhiều biến thể về cơ cấu di chuyển khác nhau như: dùng bánh xe, dùng bánh xích hoặc kết hợp cả hai loại trên
Ngoài ra, còn có các Robot được thiết kế để điều khiển trong không khí như các thiết bị trang bị cánh quạt (quadcopter)
Do đó, Robot sử dụng cơ cấu chuyển động bằng bánh xe là cơ cấu được sử dụng rộng rãi, phù hợp nhất đối với Robot cần di chuyển nhanh Vấn đề trọng tâm của các loại Robot là khác nhau, đối với Robot sử dụng hai bánh, sự cân bằng cần được thiết
kế chính xác, đối với Robot ba bánh thì trọng tâm được phân bố và duy trì dễ dàng nhất, còn Robot nhiều bánh xe hơn thì trọng tâm các bánh cần duy trì sự tiếp xúc với
về mặt di chuyển Ngoài vấn đề trọng tâm, Robot cần có động cơ đủ mạnh để di chuyển, kéo Robot về hướng được xác định
Robot di động có thể đảm đương hầu hết mọi công việc được lập trình Các Robot có thể vận chuyển các sản phẩm trong dây chuyền sản xuất, Robot giao hàng từ các cửa hàng, các kho lưu trữ đến tay khách hàng, Robot kiểm tra chất lượng môi trường làm việc, Robot khám phá không gian trong hệ mặt trời của NASA, Robot do thám trong các hoạt động quân sự, cứu hộ và Robot hút bụi trong gia đình…
Tuy các Robot có thể làm được rất nhiều loại công việc, nó cũng gặp các hạn chế chưa giải quyết được như giá thành còn cao, thiếu tính linh hoạt và không phù hợp do không lường trước được nhiều điều kiện làm việc khác nhau
Trang 23Hình 2.3 Robot di động dùng cơ cấu khớp và bánh xe
Hình 2.4 Các loại Robot di động dùng cơ cấu bánh xích
2.1.2 Robot dùng cơ cấu bánh xe
Bên cạnh các loại Robot khác, Robot sử dụng bánh xe có thể dễ dàng di chuyển trên nhiều dạng địa hình, cũng như có nhiều ứng dụng trong đời sống sản xuất
Robot được trang bị các bánh xe bằng nhựa hoặc kim loại cùng với nhiều kích cỡ khác nhau Các loại bánh xe được dùng với nhiều mục đích và có nhiều loại phổ biến như: bánh nhựa tròn, bánh Mecanum, bánh Omni, bánh bi cầu…
Trang 24Hình 2.5 Các loại bánh xe Robot
Hình 2.6 Robot di chuyển bằng bánh xe
2.2 GIỚI THIỆU MẠNG KHÔNG DÂY – Wireless LAN
2.2.1 Công nghệ mạng không dây
Ngày nay, (WLAN - Wireless Local Area Network), mạng không dây đang trở nên phổ biến trong các tổ chức, doanh nghiệp và cá nhân Chính vì sự tiện lợi của mạng không dây nên nó dần thay thế cho các hệ thống mạng có dây truyền thống Tuy nhiên, hệ thống mạng dây đã và sẽ luôn đóng vai trò hết sức quan trọng trong thế giới hiện đại, trong phạm vi vài chục hoặc vài trăm mét vuông của một hộ gia đình hay một công ty nhỏ Thay vào đó, việc triển khai một hệ thống mạng LAN hoàn toàn không dây không hẳn là quá khó khăn, giúp bớt đi nhiều dây rợ lằng nhằng, giúp việc sử dụng và di chuyển thiết bị trở nên đơn giản, thuận tiện hơn ngoài một vài trở ngại như chi phí thiết bị và kiến thức cơ bản của hệ thống không dây
Mạng không dây sử dụng công nghệ mà cho phép hai hay nhiều thiết bị kết nối với nhau bằng cách sử dụng một giao thức chuẩn nhưng không cần kết nối vật lý hay chính xác là không cần sử dụng dây mạng (cable)
Trang 25Tuy nhiên với sự phát triển mạnh mẽ của các thiết bị không dây ngày nay, vẫn còn một số hạn chế mà mạng không dây không mang lại được như: tính bảo mật, tính
ổn định
Công nghệ không dây dựa trên tiêu chuẩn 802.11, dựa trên tiêu chuẩn mạng Ethernet 802.3
Hiện tại được gọi là mạng Wireless Ethernet hoặc Wi-Fi (Wireless Fidelity)
2.2.2 Phân loại các loại mạng không dây
Tương tự mạng có dây, cách phân chia cơ bản nhất của các hệ thống mạng không dây là theo phạm vi phủ sóng
Theo đó mạng không dây được phân thành bốn nhóm:
Wireless Personal Area Network (WPAN):
o Mạng cá nhân không dây như công nghệ Bluetooth, hồng ngoại
Wireless Local Area Network (WLAN):
o Mạng cục bộ không dây như Wifi
Wireless Metropolitan Area Network (WMAN):
o Mạng diện rộng giữa các vùng như Wimax
Wireless Wide Area Network (WWAN):
o Mạng diện rộng như mạng điện thoại GSM, GPRS, HSDPA
Hình 2.7 Các loại mạng không dây
Trang 262.2.3 Tiêu chuẩn mạng không dây
Công nghệ chính được sử dụng cho mạng không dây là dựa trên chuẩn IEEE 802.11 (Institute of Electrical and Electronics Engineers) Hầu hết các mạng Wireless hiện nay đều sử dụng tần số 2.4GHz
Bảng 2.1: Bảng phân chia mạng không dây theo tiêu chuẩn IEEE 802.11
nhà
Ngoài trời 802.11-
Theo các tiêu chuẩn khác nhau, hiện nay đều sử dụng tiêu chuẩn 802.11n với tốc
độ truyền tối đa 150Mbps Tầm hoạt động tối đa 250m
2.2.4 Ưu điểm của mạng không dây WLAN
Mạng không dây cung cấp tất cả các tính năng của công nghệ mạng LAN như Ethernet mà không bị giới hạn về số kết nối vật lý (giới hạn về cáp kết nối)
Sự thuận lợi đầu tiên của mạng không dây chính là tính linh động Mạng WLAN tạo ra sự thoải mái trong việc truyền tải dữ liệu giữa các thiết bị có hỗ trợ mà không có
sự ràng buộc về khoảng cách và không gian như mạng có dây thông thường Người dùng mạng không dây có thể kết nối vào mạng trong khi di chuyển bất cứ nơi nào trong phạm vi phủ sóng của thiết bị tập trung (Access Point - AP)
Mạng WLAN sử dụng sóng hồng ngoại (Infrared Light) và sóng Radio (Radio Frequency) để truyền nhận dữ liệu thay vì dùng Twist-Pair hay Fiber Optic Cable Thông thường thì sóng Radio được sử dụng phổ biến hơn vì nó truyền xa hơn, lâu hơn, rộng hơn, băng thông lớn hơn
Công nghệ mạng không dây bao gồm các thiết bị và hệ thống phức tạp như hệ thống WLAN, điện thoại di động (Mobile Phone) cho đến các thiết bị đơn giản như tai nghe không dây, máy ghi âm không dây và nhiều thiết bị khác có khả năng truyền
Trang 27nhận và lưu trữ thông tìn từ mạng Ngoài ra cũng bao gồm tất cả những thiết bị hỗ trợ hồng ngoại như điều khiển từ xa, điện thoại… truyền dữ liệu giữa hai thiết bị
Tính dễ dàng kết nối và tiện lợi trong sử dụng đã làm cho mạng không dây nhanh chóng phổ biến trong cuộc sống chúng ta, hỗ trợ tích cực trong công việc của chúng ta
2.2.5 Nhược điểm của mạng không dây WLAN
Bên cạnh những thuận lợi của mạng không dây thì sự thay thế mạng có dây là không thể được
Tốc độ mạng không dây phụ thuộc nhiều vào băng thông Do đó tốc độ mạng không dây thấp hơn mạng có dây, vì mạng không dây chuẩn cần phải xác nhận cẩn thận những khung (frame) đã nhận để tránh tình trạng mất dữ liệu
Bảo mật trong hệ thống mạng không dây là mối quan tâm hàng đầu hiện nay Mạng không dây cho phép bất kỳ ai trong phạm vi cho phép với thiết bị phù hợp Trong mạng có dây truyền thống thì tín hiệu truyền trong dây dẫn nên có thể được bảo mật an toàn hơn, còn trong hệ thống mạng không dây thì việc tiếp cận rất dễ dàng, bởi vì mạng không dây sử dụng sóng Radio thì có thể bị bắt và xử lý bởi bất kỳ thiết bị nhận nào trong phạm vi cho phép, ngoài ra mạng không dây thì không có ranh giới rõ ràng cho nên rất khó quản lý
2.3 GIỚI THIỆU HỆ ĐIỀU HÀNH ANDROID
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008
Thị phần điện thoại sử dụng hệ điều hành Android hiện tại chiếm 65% số lượng điện thoại thông minh trên toàn thế giới Binh đoàn Android gồm rất nhiều nhà sản xuất thiết bị như Samsung, Sony, HTC, Lenovo…… Các sản phẩm sử dụng hệ điều hành Android trải dài trong nhiều phân khúc giá cũng như tính năng
Trang 28Từ khi ra đời, hệ điều hành Android trải qua nhiều lần nâng cấp về hệ điều hành
như hình 2.8
Hình 2.8 Các phiên bản của hệ điều hành android
2.3.1 Kiến trúc hệ điều hành Android:
Hình 2.9 Kiến trúc hệ điều hành Android
Trang 29Lược đồ trên thể hiện các thành phần của hệ điều hành Android, qua lược đồ ta
có thể thấy hệ điều hành Android gồm năm thành phần chính là Aplication, Aplication Framework, Libraries, Android Runtime và Linux Kernel
2.3.2 Công cụ phát triển Android:
Các bộ công cụ phục vụ lập trình ứng dụng trên Android OS gồm:
Java for Developers (JDK): do các phần mềm chạy trên Android OS đều được phát triển trên nền tảng ngôn ngữ Java nên ta cần bộ thư viện của Java, được cung cấp miễn phí cho người phát triển phần mềm bởi Oracle
Android Studio: bộ công cụ dùng để lập trình ứng dụng trên Andoird
Android Software Development Kit (Android SDK) Plugin: tập hợp các công cụ
và thư viện để phát triển các ứng dụng cho Android OS Sau khi cài đặt thì Android SDK được tích hợp vào chương trình Android Studio
Android Studio là một môi trường phát triển tích hợp (IDE - Integrated Development Environment), được dựa trên một tên tuổi nổi tiếng IntelliJ IDE
Android Studio là một môi trường thiết kế và phát triển ứng dụng dành cho nền
tảng Android Môi trường phát triển này rất dễ cài đặt, thiết lập và dễ dàng lập trình
Hình 2.10 Công cụ lập trình cho Android
Trang 302.3.3 Cấu trúc cơ bản trong một dự án Android:
File AndroidManifest.xml
Trong bất kì một dự án Android nào, khi tạo ra đều có một file AndroidManifest.xml, file này dùng để mô tả các thông tin của ứng dụng dưới dạng xml, các thông tin bao gồm số phiên bản ứng dụng, các thành phần tài nguyên ứng dụng sử dụng, các thông tin về giao diện, thông tin về Activity
File này được tự động sinh ra khi tạo một dự án Android Trong file AndroidManifest.xml bao giờ cũng có ba thành phần chính đó là: application, permission và version
Trong file AndroidManifest.xml, Permission gồm các thuộc tính chỉ định quyền
truy xuất và sử dụng tài nguyên của ứng dụng Khi cần sử dụng một loại tài nguyên nào đó thì cần phải khai báo các quyền truy xuất và sử dụng tài nguyên
File R.java
File R.java được tự động sinh ra khi tạo một dự án Android, file này được sử dụng để liên kết, quản lý các thuộc tính được khai báo trong file XML của ứng dụng
và các tài nguyên khác với file java
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy ra làm thay đổi các thuộc tính trong ứng dụng
Ngoài ra, một dự án Andoird còn có các thành phần sau:
Hình 2.11 Các file trong Android Project
Trang 31Thư mục drawable: nơi chứa các đồ hoạ của ứng dụng
Thư mục layout: nơi chứa file thiết kế giao diện dạng người dùng
Thư mục menu: nơi chứa file thiết kế menu
Thư mục values: nơi chứa file giá trị như mã màu, cỡ chữ…
2.3.4 Vòng đời của ứng dụng Android:
Android có cơ chế quản lý các tiến trình (process) theo chế độ ưu tiên (priority) Các tiến trình có độ ưu tiên thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằm đảm bảo tài nguyên
Một sự khác thường và đặc tính cơ bản của Android là thời gian sống – vòng đời (life circle) của tiến trình ứng dụng không được điều khiển trực tiếp bởi chính nó Thay vào đó, nó được xác định bởi hệ thống qua sự kết hợp của:
Những phần của ứng dụng mà hệ thống biết đang chạy
Những phần đó quan trọng như thế nào đối với người dùng
Bao nhiêu vùng nhớ chiếm lĩnh trong hệ thống
Các loại tiến trình của Android:
o Foreground Process: process của ứng dụng hiện tại đang được người dùng
tương tác
o Visible Process: process của ứng dụng mà Activity đang hiển thị đối với
người dùng (onPaused() của activity được gọi)
o Service Process: process Service đang chạy
o Background Process: process của ứng dụng mà các Activity của nó không
hiển thị với người dùng (onStoped() của Activity được gọi)
o Empty Process: process không có bất cứ 1 thành phần nào Active
2.3.5 Các thành phần trong một ứng dụng Android:
Activity
Activity là một thành phần chính của một ứng dụng Android, được dùng để hiển thị một giao diện và nắm bắt các hoạt động xảy ra trên giao diện đó
Trang 32Một ứng dụng thường bao gồm nhiều Activity được ràng buộc với nhau Thông thường, một trong những Activity được quy định là Activity chính (MainActivity), được trình bày cho người dùng xem khi ứng dụng chạy lần đầu Mỗi Activity sau đó
có thể gọi Activity khác để thực hiện hành động khác nhau
Mỗi Activity muốn hoạt động thì phải được khai báo trong AndroidManifest.xml Trạng thái của Activity:
Running: Activity đang hiển thị trên màn hình
Pause: Activity vẫn hiển thị nhưng không thể tương tác
Stop: Activity cũ bị thay thế bởi Activity mới
Killed: khi hệ thống thiếu bộ nhớ, nó giải phóng các tiến trình theo nguyên tắc ưu tiên Các tiến trình Pause, Stop một khi bị giải phóng, khi muốn hiển thị lại thì phải khởi động lại hoàn toàn
Hình 2.12 Vòng đời của một Activity
Trang 33Khi một Activity được khởi tạo, nó phải được onCreate(), trải qua các trạng thái onStart() onResume() thì Activity được Running Khi có một Activity khác được khởi tạo, Activity cũ sẽ được đưa vào trạng thái onPause(), nếu không sử dụng nữa thì sẽ rơi vào trạng thái onStop() và bị onDesstroy() Khi gọi Activity đó trở lại, khi ở trạng thái onPause thì Activity chỉ cần onResume, khi ở trạng thái onStop() thì cần onRestart() và onStart() là trở lại hoạt động Khi ở trạng thái onStop() mà đã bị hệ điều hành killed thì phải onCreate mới trở lại hoạt động
Ngoài ra, Android còn có các thành phần như:
Content Provider là nơi dữ liệu được lưu trữ, nó cung cấp cách truy cập dữ liệu
và chia sẻ dữ liệu giữa các ứng dụng
Content Provider muốn hoạt động thì phải được khai báo trong AndroidManifest.xml
Intent:
Intent là nơi truyền tải các thông báo hay định dạng dùng để đưa dữ liệu lên và khởi tạo Activity hay truyền dữ liệu giữa các Activity
Notification:
Notification đưa ra các thông báo khi ứng dụng được thực thi
Các dạng Notification thường gặp là Toast và AlertDialog
Trang 34hệ thống tự động như Robot, máy bay Nói cách khác, gia tốc kế đo gia tốc tuyến tính, nó cho phép ta biết trạng thái của thiết bị; còn con quay hồi chuyển đo gia tốc quay, nó cho phép ta biết hướng của thiết bị
Hình 2.13 Phướng hướng của cảm biến Accelerometer
Trang 35Hình 2.14 Cảm biến con quay hồi chuyển
Nói ngắn gọn hơn, con quay hồi chuyển chuyển động theo cách chống lại trọng lực, đây chính là đặc tính nổi bật nhất của nó Con quay hồi chuyển được dùng kết hợp với gia tốc kế trong các thiết bị di động để hỗ trợ việc tính toán gia tốc tuyến tính tương đối so với hệ qui chiếu, từ đó đưa ra kết quả chính xác hơn Con quay hồi chuyển bổ sung khả năng nhận biết chuyển động xoay theo phương dọc, thứ mà gia tốc kế không làm được
Trang 36Cảm biến này cũng nhận diện các chuyển động dựa trên ba chiều không gian X,
Y, Z và dùng hệ thống điện và cơ siêu nhỏ (MEMS)
c Cảm biến Magnetic
Cảm biến Magnetic dùng để xác định từ trường trái đất tại chỗ của điện thoại Cảm biến tự cảm nhận từ trường và khi kết hợp các loại dữ liệu địa lý như GPS (Global Positioning System) thì giúp việc định vị chính xác hơn Từ đó xác định được hướng của thiết bị trên bản đồ số Các ứng dụng di động như la bàn số sử dụng cảm biến này để hiển thị la bàn xác định cực bắc của thiết bị, từ đó xác ta xác định được các hướng còn lại Ngoài ra, các ứng dụng có thể đo được góc lệch của thiết bị so với hướng bắc
Hình 2.15 Cảm biến Magnetic
Với sự kết hợp của các cảm biến gia tốc kế, con quay hồi chuyển và cảm biến từ trường, ta sẽ xác định được phương hướng của thiết bị, giúp thiết bị xác định được mọi hướng khi có sự chuyển động
2.4 LẬP TRÌNH SOCKET TCP
2.4.1 Khái niệm Socket
Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trình yêu cầu dịch vụ (client) và một chương trình cung cấp dịch vụ (server) trên mạng LAN, WAN hay Internet và đôi lúc là giữa những quá trình ngay bên trong máy tính Mỗi socket có thể được xem như một điểm cuối trong một kết nối
Trang 37Một socket trên máy yêu cầu dịch vụ có địa chỉ mạng được cấp sẵn để “gọi” một Socket trên máy cung cấp dịch vụ Một khi socket đã được thiết lập phù hợp, hai máy tính có thể trao đổi dịch vụ và dữ liệu
2.4.2 Đặc điểm Socket
Là một phần mềm trừu tượng hỗ trợ vào – ra của một phiên truyền thông
Là kênh truyền thông cụ thể xác định việc truyền dữ liệu qua một cổng riêng biệt Một kiểu truyền thông mạng được sử dụng trong lập trình mạng
Thường kết nối truyền thông giữa hai máy tính
Socket(host, port#) Accept()
Hình 2.16 Mô hình giao tiếp giữa Server và Client sử dụng Socket
2.4.3 Lập trình Socket dùng ngôn ngữ Python
Hệ điều hành Raspian được tích hợp sẵn Module Socket trong Python
Để tạo một Socket, ta sử dụng hàm socket.socket() có sẵn trong socket Module
s = socket.socket(socket_family, socket_type, protocol)
Chú thích:
socket_family: Tuỳ chọn AF_UNIX hoặc AF_INET
socket_type: Tuỳ chọn SOCK_STREAM hoặc SOCK_DGRAM
protocol: Thường được để trống, mặc định là 0
Khi có đối tượng Socket, ta có thể sử dụng các hàm để tạo chương trình cho Server hoặc Client
Dưới đây là danh sách các phương thức:
Trang 38 Phương thức sử dụng cho Server Socket:
s.bind(): Phương thức gắn kết địa chỉ (hostname, port number) tới Socket
s.listen(): Phương thức thiết lập và bắt đầu TCP Listener
s.accept(): Phương thức chấp nhận thụ động kết nối TCP Client, đợi cho tới khi kết
nối tới
Phương thức sử dụng cho Client Socket
s.connect(): Phương thức khởi tạo kết nối TCP Server
Bảng 2.2: Các phương thức chung cho Socket:
socket.gethostname() Trả về hostname
Chú ý:
Server phải thực hiện đủ các trình tự: socket(), bind(), listen(), accept()
Nếu có nhiều client thì accept() được thực hiện nhiều lần
Client chỉ cần thực hiện socket() và connect()
2.4.4 Lập trình Socket dùng ngôn ngữ Java trong Android
Java định nghĩa các lớp hỗ trợ các dạng truyền thông theo phương pháp Socket
Gồm các lớp:
Trang 39o Socket
o DatagramPacket
o DatagramSocket
o MulticastSocket InetAddress: quản lý một địa chỉ Internet Protocol
ServerSocket: hỗ trợ các phương thức liên quan đến Socket với số hiệu PORT xác định chế độ kết nối TCP
Socket: hỗ trợ phương thức kết nối giữa Server và Client chế độ có kết nối TCP DatagramPacket: lớp cài đặt gói tin dạng thư tín người dùng khi giao tiếp giữa Client và Server chế độ không kết nối UDP
DatagramSocket: hỗ trợ các phương thức liên quan đến Socket cho Client và Server chế độ không kết nối UDP
Phương thức sử dụng cho Socket
ServerSocket(InetAddress, Port): tạo một Socket
Socket accept(): phương thức lắng nghe yêu cầu kết nối từ Client
InputStream getInputStream(): phương thức nhận dữ liệu từ Server
OutputStream getOutputStream(): phương thức gửi dữ liệu cho Server
Close(): phương thức đóng Socket, giải phóng kết nối Client và Server
2.5 GIỚI THIỆU PHẦN CỨNG
Thiết bị đầu vào: cảm biến Orientation tích hợp trong điện thoại Android,
webcam Camera
Thiết bị đầu ra: module L298, động cơ motor DC
Thiết bị điều khiển trung tâm: board Raspberry Pi
Chuẩn truyền dữ liệu: giao thức mạng Socket TCP
Thiết bị lưu trữ: thẻ nhớ microSD 16GB
Thiết bị giao diện điều khiển: điện thoại sử dụng hệ điều hành Android
Trang 402.5.1 Board Raspberry Pi
a Sơ lược
Raspberry Pi là máy tính giá 35USD kích cỡ như thẻ ATM và chạy hệ điều hành Linux.Ban đầu, mục tiêu chính của chương trình là giúp học sinh dễ dàng tiếp cận và giảng dạy máy tính cho trẻ em Không chỉ ho ̣c về phần mềm, các vấn đề phần cứng đồng thời được giảng dạy giúp cho học sinh tiếp câ ̣n tài nguyên đa dạng hơn Với các thiết vị ngoại vi như màn hình có cổng HDMI, bàn phím, chuột và nguồn USB 5V là chúng ta có thể làm các ứng dụng đơn giản
Raspberry Pi được phát triển bởi Raspberry Foundation – tổ chức phi lợi nhuận với tiêu chí xây dựng hệ thống mà nhiều người có thể sử dụng được trong những công việc tùy biến khác nhau
Raspberry Pi sản xuất bởi 3 OEM: Sony, Qsida, Egoman Và được phân phối chính bởi Element14, RS Components và Egoman
Raspberry Pi ban đầu là một thẻ card được cắm trên bo mạch máy tính được phát triển bởi các nhà phát triển ở Anh Sau đó Raspberry Pi đã được phát triển thành một
bo mạch đơn có chức năng như một máy tính mini dùng để giảng dạy trong môn khoa học máy tính ở các trường trung học
Raspberry Pi được ra mắt vào tháng 2 năm 2012
Hình 2.17 Board Raspberry Pi