1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Điều khiển robot bằng board raspberry PI và ứng dụng android

104 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 104
Dung lượng 6,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

KHOA Đ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 2

1 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 3

I 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 4

Bộ 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 5

PHIẾ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 7

Lờ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 8

Trang

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 9

2.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 10

5.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 11

Hì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 12

Hì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 13

Hì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 14

Bả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 15

Trong 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 16

Chươ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 17

Tuy 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 18

1.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 20

Chươ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 23

Hì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 24

Hì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 25

Tuy 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 26

2.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 27

nhậ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 28

Từ 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 29

Lượ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 30

2.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 31

Thư 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 32

Mộ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 33

Khi 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 34

hệ 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 35

Hì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 36

Cả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 37

Mộ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 39

o 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 40

2.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

Ngày đăng: 27/11/2021, 23:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Văn Hiệp, Đinh Quang Hiệp, “Lập trình Android cơ bản”, NXB ĐH Quốc Gia Tp.HCM, 2015.Các trang web Sách, tạp chí
Tiêu đề: Lập trình Android cơ bản
Nhà XB: NXB ĐH Quốc Gia Tp.HCM
[2] Ứng dụng Gyro vào Robot chạy đa hướng trong Robocon, http://codientu.org [3] Overview | Simple Raspberry Pi Robot, https://learn.adafruit.com Link
[4] Remote Controlling a Car over the Web Ingredients: Smartphone, WebSocket and Raspberry Pi, The Zinger, https://blog.kaazing.com Link
[5] Raspberry Pi - Serial Console – All, http://www.instructables.com Link
[6] Linux commands - Raspberry Pi Documentation, https://www.raspberrypi.org [7] Raspberry Pi Android App Communication, http://www.instructables.com [8] Make an Android App to control GPIO pins, https://www.raspberrypi.org Link
[11] Raspberry Pi Webcam over the Internet Using MJPG-Streamer, Jacob Salmela, http://jacobsalmela.com Link
[12] Android Password Field Example, https://examples.javacodegeeks.com [13] Position Sensors | Android Developers, https://developer.android.com [14] Socket | Android Developers, https://developer.android.com Link
[17] HTTP Camera live preview example, https://examples.javacodegeeks.com [18] Python Programming Tutorials, https://pythonprogramming.net Link

TỪ KHÓA LIÊN QUAN

w