--------------------------------------------------------------------------------------------- https://www.youtube.com/watch?v=wj5sQc-bunA --------------------------------------------------------------------------------------------- Đề tài nghiên cứu khoa học của sinh viên Đại học Tiền Giang. Đề tại ứng dụng board mạch nhúng raspberry pi để xử lý việc truyền nhận dữ liệu giữa điện thoại Android hệ thống thông qua môi trường internet. Đề tài mô tả chi tiết cách thức thực hiện bao gồm: lập trình, thiết lập, phần cứng, kiểm tra. Mã nguồn đi kèm với file
Trang 1BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
ỨNG DỤNG RASPBERRY PI TRONG VIỆC
THIẾT KẾ CHẾ TẠO BỘ ĐÓNG NGẮT THIẾT BỊ ĐIỆN ĐƯỢC ĐIỀU KHIỂN TỪ XA QUA THIẾT BỊ ANDROID
TRONG MÔI TRƯỜNG INTERNET
Thuộc nhóm ngành khoa học: Kỹ thuật và Công nghệ
Tiền Giang, tháng 06 năm 2015
Trang 2ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
ỨNG DỤNG RASPBERRY PI TRONG VIỆC
THIẾT KẾ CHẾ TẠO BỘ ĐÓNG NGẮT THIẾT BỊ ĐIỆN ĐƯỢC ĐIỀU KHIỂN TỪ XA QUA THIẾT BỊ ANDROID
TRONG MÔI TRƯỜNG INTERNET
Thuộc nhóm ngành khoa học: Kỹ thuật và Công nghệ
Sinh viên thực hiện: TRẦN THANH TÒNG Nam, Nữ: Nam
Dân tộc: Kinh
Lớp: CĐ CNKT Đ-ĐT 12A Khoa: KTCN Năm thứ: 3 Số năm đào tạo: 3 Ngành học: CNKT Điện-Điện tử
Người hướng dẫn: Ths HOÀNG HỮU DUY
Tiền Giang, tháng 06 năm 2015
Trang 3Em xin chân thành cảm ơn quý thầy cô Trường ĐH Tiền Giang nói chung và cácthầy cô trong Khoa Kỹ Thuật Công Nghiệp nói riêng đã dạy bảo, tận tình truyền đạt kiếnthức cho em trong suốt quá trình học Đặc biệt là thầy Hoàng Hữu Duy đã tận tình chỉ dẫncho em trong quá trình làm và hoàn thành đề tài này.
Đồng cảm ơn Ban giám hiệu nhà trường đã tạo điều kiện cho em học tập và trau dồikiến thức Xin cảm ơn các bạn cùng lớp đã có ý kiến đóng góp trong quá trình tìm hiểu vàlàm đề tài
Do thời gian và trình độ có hạn nên đề tài không tránh khỏi những thiếu sót, mongnhận được ý kiến đóng góp của quý thầy cô và các bạn để đề tài được hoàn thiện hơn
Em xin chân thành cảm ơn!
Sinh viên
Trần Thanh Tòng
Trang 4MỤC LỤC i
DANH MỤC HÌNH ẢNH v
DANH MỤC BẢNG BIỂU vi
A MỞ ĐẦU 1
1 Tổng quan tình hình nghiên cứu 2
2 Lý do chọn đề tài 2
3 Mục tiêu đề tài 2
4 Phương pháp nghiên cứu 3
4 Khách thể nghiên cứu 3
5 Đối tượng và phạm vi nghiên cứu 3
6 Giả thuyết nghiên cứu 3
B NỘI DUNG 4
CHƯƠNG 1 TỔNG QUAN CÁC HÌNH THỨC ĐIỀU KHIỂN XA 5
1.1 Điều khiển từ xa bằng tia hồng ngoại 5
1.1.1 Khái niệm 5
1.1.2 Ứng dụng 5
1.2 Điều khiển từ xa bằng sóng vô tuyến 5
1.2.1 Khái niệm 5
1.2.2 Ứng dụng 5
1.3 Điều khiển từ xa bằng Bluetooth 6
1.3.1 Khái niệm 6
1.3.2 Ứng dụng 6
1.4 Điều khiển xa bằng Internet 6
1.4.1 Khái niệm Internet 6
1.4.2 Lịch sử phát triển 6
1.4.3 Kết nối qua quay số 7
Trang 51.4.6 Tên miền 8
1.4.7 ISP 8
1.4.8 World Wide Web 9
1.4.9 HTML 9
1.4.10 Ứng dụng của Internet 10
CHƯƠNG 2 THIẾT KẾ VÀ LẬP TRÌNH GIAO DIỆN ĐIỀU KHIỂN CHO THIẾT BỊ ANDROID 11
2.1 Tổng quan về phần mềm lập trình ứng dụng Android 11
2.1.1 Lịch sử phát triển Eclipse 11
2.1.2 Các bước tạo môi trường lập trình Android 11
2.1.3 Android Virtual Device (AVD) 12
2.2 Cấu trúc bên trong của một ứng dụng 12
2.2.1 Tập tin Activity_main.xml 13
2.2.2 Tập tin MainActivity.java 14
2.2.3 Thư mục Package Explorer 15
2.3 Các đối tượng cơ bản trong ứng dụng 16
2.3.1 Layout 16
2.3.2 TextView 18
2.3.3 EditText 19
2.3.4 Button 19
2.4 Các thành phần cơ bản và vòng đời của một ứng dụng 19
2.4.1 Applications 19
2.4.2 Activity 19
2.4.3 Vòng đời của một ứng dụng 19
2.5 Các hàm và các lệnh cơ bản trong Java Android 21
2.6 Thiết kế giao diện điều khiển 22
2.6.1 Khai báo giao diện 22
2.6.2 Canh chỉnh giao diện người dùng 22
2.7 Gửi dữ liệu lên WebServer 23
Trang 62.7.4 Thuật toán gửi dữ liệu 25
2.7.5 Tiến trình gửi dữ liệu 26
2.8 Nhận dữ liệu từ WebServer 27
2.8.1 Phương thức nhận 27
2.8.2 Quy ước dữ liệu nhận 27
2.8.3 Thuật toán giải mã dữ liệu nhận 27
2.8.4 Thuật toán nhận dữ liệu 29
2.8.5 Tiến trình nhận dữ liệu 29
2.9 Đồng bộ dữ liệu 30
2.9.1 Phương thức đồng bộ 30
2.9.2 Thuật toán đồng bộ 30
2.10 Đọc dữ liệu theo chu kỳ 31
2.10.1 Khai báo Timer 31
2.10.2 Giải thuật đọc dữ liệu theo chu kì 32
2.11 Khởi động ứng dụng 32
2.11.1 Hàm onCreate() 32
2.11.2 Hàm onResume() 34
2.11.3 Hàm onPause() 35
2.12 Hiển thị thông báo 36
CHƯƠNG 3 THIẾT KẾ VÀ LẬP TRÌNH WEBSERVER 39
3.1 Tổng quan về WebServer 39
3.1.1 Các đối tượng gửi nhận dữ liệu của WebServer 39
3.1.2 Các đối tượng lưu trữ trên WebServer 39
3.1.3 Cấu trúc dữ liệu của bản tin HTML 40
3.2 Lập trình WebServer 40
3.2.1 Các hàm xử lý chuỗi 40
3.2.2 Lệnh rẽ nhánh 40
3.3 Xây dựng WebServer truyền nhận dữ liệu 41
3.3.1 Tổng quan quá trình gửi nhận dữ liệu 41
3.3.2 Giải mã và ghi nhận dữ liệu 42
Trang 73.3.6 Thuật toán gửi/nhận dữ liệu từ thiết bị Android 47
CHƯƠNG 4 LẬP TRÌNH VÀ XÂY DỰNG PHẦN CỨNG CHO BOARD MẠCH RASPBERRY PI 48
4.1 Kết cấu cổng GPIO của Raspberry Pi 48
4.2 Các lệnh cơ bản trong Linux Shell 49
4.2.1 Cấu trúc thư mục 49
4.2.2 Tập lệnh cơ bản 50
4.3 Hệ điều hành trên board mạch Raspberry Pi 51
4.3.1 Giao diện người dùng 51
4.3.2 Quản lý tập tin 51
4.3.3 LxTerminal 52
4.4 Ngôn ngữ lập trình Python 53
4.4.1 Cấu trúc chương trình Python 53
4.4.2 Biến và kiểu dữ liệu 54
4.4.3 Cấu trúc rẽ nhánh và vòng lặp 55
4.4.4 Xây dựng hàm 56
4.5 Tổng quan về PyQt4 56
4.5.1 Đối tượng Push Button 56
4.5.2 Đối tượng Radio Button 56
4.5.3 Đối tượng Label 57
4.5.4 Đối tượng Frame 57
4.5.5 Tạo sự kiện cho các đối tượng 58
4.5.6 Biên dịch mã nguồn Python 58
4.5.7 Xử lý sự kiện người dùng trên giao diện 59
4.5.8 Thay đổi thuộc tính các đối tượng giao diện 60
4.6 Xây dựng chương trình điều khiển đóng ngắt 60
4.6.1 Xây dựng giao diện điều khiển 60
4.6.2 Thiết lập thuộc tính các đối tượng trong giao diện 61
4.6.3 Giải thuật điều khiển đóng ngắt 62
Trang 84.6.7 Khai báo biến quản lý cài đặt 65
4.6.8 Đa tiến trình 66
4.7 Đồng bộ dữ liệu giữa board mạch và WebServer 66
4.7.1 Quy ước mã và giãi mã 66
4.7.2 Mở file và đóng file 66
4.7.3 Thư viện URL trong Python 67
4.8 Gửi dữ liệu lên Web Server 68
4.9 Chế độ điều khiển bằng tay 68
4.9.1 Thư viện GPIO 68
4.9.2 Thuật toán thực hiện 69
4.10 Phát triển Module công suất 70
4.10.1 Điện áp và dòng điện ngõ ra GPIO 70
4.10.2 Sơ đồ khối mạch công suất 71
4.10.3 Khối ổn áp nguồn 72
4.10.4 Khối tăng dòng 73
4.10.5 Khối giao tiếp người dùng 73
4.10.6 Khối đóng ngắt công suất 74
4.10.7 Các cổng giao tiếp mạch công suất 75
4.10.8 Sơ đồ mạch công suất 75
CHƯƠNG 5 THỰC NGHIỆM VÀ KẾT QUẢ 76
5.1 Chế tạo phần cứng 76
5.2 Thiết lập chương trình điều khiển 77
5.2.1 Đăng ký máy chủ 77
5.2.2 Cập nhật dữ liệu cho máy chủ 78
5.2.3 Các thiết lập trên chương trình quản lý 78
5.2.4 Cài đặt ứng dụng lên thiết bị Android 79
5.3 Kết quả thực nghiệm và đánh giá 79
5.3.1 Kết quả thực nghiệm 79
5.3.2 Đánh giá 80
C KẾT LUẬN VÀ KHUYẾN NGHỊ 81
Trang 92 Khuyến nghị 82
TÀI LIỆU THAM KHẢO 83
Trang 10Hình 1.1 Kết nối quay số qua mạng điện thoại 7
Hình 1.2 Kết nối qua ADSL 8
Hình 1.3 Mô hình hoạt động của một dịch vụ Web 9
Hình 2.1 Giao diện máy ảo sau khi khởi động 12
Hình 2.2 Cấu trúc của một ứng dụng 13
Hình 2.3 Phần Graphical Layout 14
Hình 2.4 Phần MainActivity dùng để lập trình cho ứng dụng 14
Hình 2.5 Phần Package Explorer 15
Hình 2.6 Cấu trúc bên trong của AndroidManifest.xml 16
Hình 2.7 Ví dụ FrameLayout 17
Hình 2.8 Ví dụ LinearLayout 17
Hình 2.9 Ví dụ RelativeLayout 18
Hình 2.10 Vòng đời của một ứng dụng 20
Hình 2.11 Hiển thị trạng thái điều khiển thiết bị 22
Hình 2.12 Giao diện người dùng ở 2 trạng thái đóng và mở 23
Hình 2.13 Thuật toán mã hóa dữ liệu gửi 25
Hình 2.14 Giải thuật gửi dữ liệu lên WebServer 26
Hình 2.15 Tiến trình gửi dữ liệu 27
Hình 2.16 Thuật toán giải mã dữ liệu trạng thái 28
Hình 2.17 Thuật toán giải mã dữ liệu thiết bị 1 28
Hình 2.18 Giải thuật nhận dữ liệu từ WebServer 29
Hình 2.19 Tiến trình nhận dữ liệu 30
Hình 2.20 Thuật toán đồng bộ dữ liệu 31
Hình 2.21 Thuật toán thực thi hàm đọc dữ liệu theo chu kỳ 32
Hình 2.22 Thuật toán khởi chạy onCreate() 33
Hình 2.23 Thuật toán khởi chạy onResume() 35
Hình 2.24 Thuật toán khởi chạy onPause() 35
Hình 2.25 Giải thuật hiển thị thông báo đồng bộ dữ liệu 37
Hình 2.26 Giải thuật hiển thị thông báo gửi-nhận dữ liệu 38
Trang 11Hình 3.3 Thuật toán nhận dữ liệu từ Module 46
Hình 3.4 Thuật toán gửi dữ liệu 47
Hình 3.5 Thuật toán nhận dữ liệu từ thiết bị Android 47
Hình 4.1 Kết cấu Port 1 cổng GPIO 48
Hình 4.2 Kết cấu Port 5 cổng GPIO 49
Hình 4.3 Kết cấu Port 6 cổng GPIO 49
Hình 4.4 Giao diện đồ họa Raspberry 51
Hình 4.5 Chương trình quản lý file Raspberry 52
Hình 4.6 Cửa sổ Lxterminal 53
Hình 4.7 Cấu trúc cơ bản của ngôn ngữ Python 54
Hình 4.8 Giao diện thiết kế giám sát 61
Hình 4.9 Thuật toán điều khiển đóng ngắt 63
Hình 4.10 Thuật toán gửi dữ liệu lên Web Server 68
Hình 4.11 Thuật toán quét phím 70
Hình 4.12 Kết cấu khối công suất 72
Hình 2.13 Sơ đồ chân IC ổn áp LM2576 72
Hình 4.14 Sơ đồ chân và kiến trúc IC ULN2803 73
Hình 4.15 Điện trở nối lên và điện trở nối xuống 74
Hình 4.16 Kết nối ngõ ra GPIO 74
Hình 4.17 Sơ đồ mạch công suất 75
Hình 5.1 Mặt trước của sản phẩm 76
Hình 5.2 Mặt sau của sản phẩm 77
Hình 5.3 Mặt bên phải của sản phẩm 77
Hình 5.4 Giao diện giám sát trên board mạch Raspberry Pi 78
Hình5.5 Biểu tượng của chương trình điều khiển trên thiết bị Android 79
Trang 12Bảng 2.1 Các hàm và lệnh trong Java Android 21
Bảng 2.2 Khai báo thuộc tính đối tượng Imagebutton đối với thiết bị 1 22
Bảng 2.3 Khai báo thuộc tính đối tượng Imagebutton từ thiết bị 2 đến thiết bị 8 22
Bảng 2.4 Khai báo thuộc tính cho đối tượng LinearLayout 23
Bảng 2.5 Quy ước mã hóa trạng thái thiết bị được điều khiển 24
Bảng 2.6 Quy ước mã hóa thiết bị được điều khiển 24
Bảng 2.7 Khai báo tiến trình 26
Bảng 2.8 Mã hóa dữ liệu gửi 30
Bảng 2.9 Cấu trúc Timer 31
Bảng 2.10 Biến dùng trong hàm onCreate() 33
Bảng 3.1 Các hàm xử lý chuỗi trên WebServer 40
Bảng 3.2 Các Webpage xử lý 41
Bảng 3.3 Quy ước mã hóa trạng thái thiết bị được điều khiển 43
Bảng 3.4 Quy ước mã hóa thiết bị được điều khiển 43
Bảng 3.5 Quy ước ghi nhận dữ liệu từ board mạch Raspberry tại WebServer 44
Bảng 3.6 Truy xuất biến toàn cục trên WebServer 45
Bảng 4.1 Cấu trúc thư mục Linux 49
Bảng 4.2 Các lệnh trong Linux Shell 50
Bảng 4.3 Thư mục chương trình của Raspberry 52
Bảng 4.4 Các phép toán trong Python 54
Bảng 4.5 Các lệnh chức năng trong Python 55
Bảng 4.6 Cấu trúc rẽ nhánh và vòng lặp 55
Bảng 4.7 Thuộc tính Push Button 56
Bảng 4.8 Thuộc tính Radio Button 56
Bảng 4.9 Thuộc tính Label 57
Bảng 4.10 Thuộc tính Frame 57
Bảng 4.11 Các sự kiện trong PyQt 58
Bảng 4.12 Các hàm tác động sự kiện 58
Bảng 4.13 Quy ước biến và hàm trong Class 59
Trang 13Bảng 4.16 Quản lý biến trạng thái 64
Bảng 4.17 Quản lý hằng số 64
Bảng 4.18 Quản lý thứ tự chân ngõ ra GPIO 65
Bảng 4.19 Quản lý thứ tự chân ngõ vào GPIO 65
Bảng 4.20 Quản lý cài đặt 66
Bảng 4.21 Mã hóa file dự phòng 67
Bảng 4.22 Hàm điều khiển GPIO 69
Bảng 4.23 Điện áp và dòng điện GPIO 70
Bảng 4.24 Thông số của relay 74
Bảng 5.1 Các tính năng của Host được sử dụng 77
Bảng 5.2 Hệ thống tập tin máy chủ 78
Bảng 5.3 Kết quả thực nghiệm nhận dữ liệu từ thiết bị Android 79
Bảng 5.4 Kết quả thực nghiệm nhận dữ liệu từ thiết bị Android 80
Trang 14THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI
1 Thông tin chung:
- Tên đề tài: Ứng dụng Raspberry Pi trong việc thiết kế chế tạo bộ đóng ngắt thiết bị điện
được điều khiển từ xa qua thiết bị Android trong môi trường Internet
- Lớp:CĐ CNKT Điện, Điện tử 12 Khoa: KTNCN Năm thứ: 03 Số năm đào tạo: 03
- Người hướng dẫn: Ths Hoàng Hữu Duy
+ Sử dụng board mạch raspberry pi xữ lý trung tâm
+ Phát triển trên môi trường internet
- Sáng tạo:
+ Sử dụng WebServer làm trung gian truyền nhận dữ liệu điều khiển
+ Giao tiếp trực quan với người dùng thông qua thiết bị android
4 Kết quả nghiên cứu:
- Sản phẩm hoạt động tốt, điều khiển tối đa 8 thiết bị điện với công suất tối đa cho mỗi thiết bị điện là 1KW
- Chương trình trên thiết bị Android tương thích với phiên bản 4.0 và cao hơn
5 Đóng góp về mặt kinh tế - xã hội, giáo dục và đào tạo, an ninh, quốc phòng và khả năng áp dụng của đề tài:
Đề tài có khả năng áp dụng:
- Cho văn phòng, nhà ở với mục đích tiết kiệm điện
- Tài liệu học tập, tham khảo trong lập trình android, linux, asp.net
6 Công bố khoa học của sinh viên từ kết quả nghiên cứu của đề tài (ghi rõ tên tạp chí
nếu có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):
Ngày tháng năm
Sinh viên chịu trách nhiệm chính
thực hiện đề tài
(ký, họ và tên)
Nhận xét của người hướng dẫn về những đóng góp khoa học của sinh viên thực hiện
đề tài (phần này do người hướng dẫn ghi):
Trang 15- Sản phẩm có thể áp dụng được ngây trên thực tế với các thao tác cài đặt đơn giản.
- Thuyết minh của sản phẩm có thể làm tài liệu để phát triển ứng dụng điều khiển trên cácloại thiết bị di động khác như: WindowsPhone, Iphone
Trang 16THÔNG TIN VỀ SINH VIÊN CHỊU TRÁCH NHIỆM CHÍNH THỰC HIỆN ĐỀ TÀI
I SƠ LƯỢC VỀ SINH VIÊN:
- Họ và tên: Trần Thanh Tòng
- Sinh ngày: 19 tháng 09 năm 1994
- Nơi sinh: Ấp Bắc, Mỹ Tho, Tiền Giang
- Lớp: CĐ CNKT Điện, Điện tử 12 Khóa: K12
- Khoa: Kỹ thuật Công nghiệp
- Địa chỉ liên hệ: Ấp Bắc, Mỹ Tho, Tiền Giang
Sơ lược thành tích: Nghiên cứu thành công đề tài “Xây dựng ứng dụng đóng ngắt thiết
bị điện bằng Web sử dụng board mạch raspberry pi”
Xác nhận của Trưởng Khoa……
(ký tên và đóng dấu) Tiền Giang, ngày tháng năm Sinh viên chịu trách nhiệm chính
thực hiện đề tài
(ký, họ và tên)
Trang 18A MỞ ĐẦU
Trang 191 Tổng quan tình hình nghiên cứu
Trong nước: Nhà thông minh BKAV phối hợp với Phú Mỹ Hưng đặt tại dự ánGreen Valley (quận 7, TP Hồ Chí Minh), người dùng điều khiển thiết bị trong gia đình ởbất cứ đâu thông qua thiết bị thông minh Smartphone Tuy nhiên, giá thành của các sảnphẩm này khá cao, khả năng áp dụng phổ biến trong cộng đồng là hạn chế
Ngoài nước: Điều khiển đóng ngắt thiết bị được tích hợp trong hệ thốngSmartHouse như hệ thống Wiser – một sản phẩm mới trong họ sản phẩm Clipsal C-Bus,điều khiển thiết bị gia dụng từ xa trên màn hình cảm ứng thông qua từng thao tác trên ứngdụng
Sản phẩm từ đề tài “Xây dựng ứng dụng điều khiển đóng-ngắt thiết bị điện qua Web
trên board mạch Raspberry Pi” là module điều khiển có 8 ngõ ra và một trang Web điều
khiển Hệ thống này tạo ra sự thuận lợi trong điều khiển xa Đó là khả năng truy vấn trạngthái và thay đổi trạng thái điều khiển ở bất cứ nơi nào chỉ cần có trình duyệt Web Tuynhiên, hệ thống này chỉ phù hợp cho máy tính cá nhân hoặc các thiết bị di động có cấuhình cao
2 Lý do chọn đề tài
Cùng với sự phát triển của ngành công nghệ thông tin, phương thức điều khiển xacũng trở nên đa dạng và phong phú Điều khiển xa có thể sử dụng qua hệ thống khôngdây như: wifi, bluetooth, RF…; qua hệ thống có dây với khoảng cách gần như: USB,UART, IEEE1394… và khoảng cách xa như: Ethernet, Internet, line điện thoại Hiện nay,điều khiển qua Internet đang dần trở nên phổ biến do tốc độ đường truyền nhanh và sự đadạng hóa các thiết bị điện tử hiện đại
Viết ứng dụng cho hệ điều hành Android đang là mối quan tâm của đông đảo lậptrình viên, nhà tuyển dụng và các bạn sinh viên hiện nay Với ưu thế về giá thành ngàycàng thấp, tốc độ xử lý cao, và mức độ phổ biển rộng, thiết bị sử dụng hệ điều hànhAndroid (thiết bị Android) là sự lựa chọn tốt cho việc học tập, nghiên cứu và phát triểnứng dụng trong lĩnh vực này
Đề tài “Ứng dụng Raspberry Pi trong việc thiết kế chế tạo bộ đóng ngắt thiết bị
điện được điều khiển từ xa qua thiết bị Android trong môi trường Internet” được thực
hiện nhằm khắc phục mặt hạn chế trên, đồng thời tiếp cận được với xu thế hiện nay, đápứng được nhu cầu hiện đại hóa các thiết bị thông dụng và mang lại một sự tiện nghi chongười dùng Đề tài được thực hiện cũng là cơ hội để tiếp cận nghiên cứu công nghệ mới
3 Mục tiêu đề tài
Đề tài được thực hiện gồm các mục tiêu sau:
+ Nghiên cứu giải pháp truyền nhận dữ liệu trạng thái thiết bị qua mạng Internet.+ Xây dựng được WebServer làm trung gian nhận gửi dữ liệu điều khiển
+ Viết chương trình trên board mạch Raspberry Pi có khả năng xử lý dữ liệu trạngthái điều khiển từ xa và đưa ra tín hiệu điện tương ứng
Trang 20+ Viết chương trình trên thiết bị Android có khả năng giao tiếp với người dùng vàgửi dữ liệu điều khiển về cơ cấu chấp hành.
+ Thiết kế board mạch có chức năng chuyển đổi công suất cho board mạchRaspberry Pi
4 Phương pháp nghiên cứu
Phương pháp nghiên cứu lý thuyết: tra cứu, tham khảo tài liệu sách báo
Phương pháp mô hình hóa:
+ Sử dụng host miễn phí để vận hành phần mềm (Script) truyền nhận dữ liệu
+ Sử dụng điện thoại Android để kiểm tra phần mềm điều khiển
+ Sử dụng VOM, máy dao động ký để đo điện áp ngõ ra
4 Khách thể nghiên cứu
Khách thể nghiên cứu: Môi trường truyền dẫn Internet
5 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu: Bộ đóng ngắt thiết bị điện được điều khiển từ xa qua thiết bịAndroid
Phạm vi nghiên cứu:
+ Module điều khiển có 8 kênh ngõ ra với công suất mỗi kênh là 1KW
+ Phiên bản hệ điều hành Android là 4.0
+ WebServer hỗ trợ là ASP.Net
Đề tài không đi sâu vào nghiên cứu:
+ Cấu trúc phần cứng của board mạch Raspberry Pi
+ Nhân hệ điều hành Debian, Android
6 Giả thuyết nghiên cứu
Nếu người dùng sử dụng phần mềm điều khiển trên thiết bị Android và có kết nốimạng Internet thì có thể điều khiển thiết bị điện ở bất cứ nơi nào
Trang 21B NỘI DUNG
Trang 22CHƯƠNG 1.
TỔNG QUAN CÁC HÌNH THỨC ĐIỀU KHIỂN XA
1.1 Điều khiển từ xa bằng tia hồng ngoại
1.1.1 Khái niệm
Tia hồng ngoại là ánh sáng không thể nhìn thấy được bằng mắt thường Bước sóngcủa ánh sáng này nằm trong khoảng 0,8m-0,9µm Với bước sóng này, dữ liệu với tốc độlên đến 3Mbps Tia hồng ngoại ngoại có những đặc điểm sau:
+ Dễ bị hấp thụ, khả năng xuyên thấu kém
+ Tầm hoạt động thấp (nhỏ hơn 10m)
+ Không thể truyền qua các bức tường hoặc vòng qua các góc
+ Dễ bị nhiễu sóng do nguồn ánh sáng hồng ngoại có ở khắp nơi
1.1.2 Ứng dụng
Tia hồng ngoại thường được sử dụng vào những mục đích sau:
+ Dùng làm công tắc điều khiển bằng hồng ngoại
+ Làm cảm biến trong nhiều hệ thống tự động hóa, bảo vệ, báo động…
1.2 Điều khiển từ xa bằng sóng vô tuyến
1.2.1 Khái niệm
Điều khiển bằng sóng vô tuyến là hình thức điều khiển từ xa xuất hiện đầu tiên vàđến nay vẫn giữ một vai trò quan trọng và phổ biến trong đời sống Hình thức điều khiểnnày có những đặc điểm sau:
+ Khoảng cách truyền xa hơn tia hồng ngoại
+ Có thể điều khiển xuyên tường, kính
+ Dễ bị nhiễu sóng do tín hiệu vô tuyến có mặt khắp nơi trong không gian…
Tần số vô tuyến dùng được cho nhiều vật dụng bên ngoài như, hệ thống báo hiệucho xem các loại đồ chơi điện tử từ xa thậm chí kiểm soát vệ tinh và các hệ thống máytính xách tay và điện thoại thông minh…
1.2.2 Ứng dụng
Tần số vô tuyến được ứng dụng trong các hoạt động điều khiển sau:
+ Làm thiết bị điều khiển mở cửa gara xe, điều khiển hệ thống báo hiệu, các thiết bịđiện gia dụng trong gia đình…
+ Điều khiển máy tính xách tay và điện thoại thông minh
Trang 23+ Dùng làm công tắc điều khiển từ xa.
1.3 Điều khiển từ xa bằng Bluetooth
+ Tiêu thụ năng lượng thấp
+ Giao tiếp được với nhiều thiết bị cầm tay khác nhau
+ Giá thành thấp
+ Tốc độ truyền dữ liệu có thể đạt đến 1Mbps (do sử dụng tần số cao) mà các thiết
bị không cần thấy trực tiếp nhau
1.4 Điều khiển xa bằng Internet
1.4.1 Khái niệm Internet
Internet là một liên mạng máy tính toàn cầu được hình thành từ các mạng nhỏ hơn,liên kết hàng triệu máy tính trên thế giới thông qua cơ sở hạ tầng nhằm mục đích chia sẻthông tin, dữ liệu với nhau Đặc điểm của Internet:
Các thiết bị trong được điều khiển như bóng đèn, máy giặt, tivi, lò vi sóng sẽ đượckết nối đến các đầu ra của bộ điều khiển Bộ điều khiển kết nối với Internet Người dùng,với phần mềm được cài trên thiết bị Android khi kết nối với Internet có thể truy cập vào
hệ thống và tương tác điều khiển các thiết bị một cách dễ dàng Việc điều khiển ở đây làhai chiều, trong đó, người dùng không chỉ đơn thuần gửi lệnh điều khiển đóng ngắt màcòn có thể giám sát được thiết bị nhờ thông tin phản hồi từ các thiết bị về trạng thái làmviệc hiện tại
1.4.2 Lịch sử phát triển
Mốc lịch sử quan trọng của Internet được chọn vào giữa thập kỷ 1980, khi Quỹ khoahọc quốc gia Mỹ thành lập mạng liên kết các trung tâm máy tính lớn với nhau gọi làNSFNET Mạng này chính là mạng Internet Điểm quan trọng của NSFNET là cho phépmọi người cùng sử dụng Trước NSFNET, chỉ các nhà khoa học, chuyên gia máy tính vànhân viên các cơ quan Chính phủ được kết nối Internet
Trang 24Ngày nay, mạng Internet phát triển mạnh mẽ hơn các phương tiện truyền thôngtruyền thống khác như phát thanh và truyền hình, do sự cải tiến và phát triển khôngngừng Các công nghệ đang áp dụng trên Internet giúp cho Internet trở thành mạng liênkết vô số kho thông tin toàn cầu, có dịch vụ phong phú về nội dung và hình thức
1.4.3 Kết nối qua quay số
Trong phương thức kết nối này, người dùng kết nối với Internet thông qua mạngđiện thoại Để kết nối, người dùng cần có một đường điện thoại và một thiết bị kết nối cótên modem Máy tính của người dùng kết nối với modem và modem được kết nối tớiđường điện thoại
Hình 1.1 Kết nối quay số qua mạng điện thoại
Hiện nay, dịch vụ kết nối này đều được các nhà cung cấp dịch vụ Viễn thông cungcấp Khi người sử dụng đăng ký, nhà cung cấp sẽ cấp cho họ một tài khoản để truy nhập
và số điện thoại cần gọi Kết nối kiểu này không luôn thường trực Khi muốn sử dụngdịch vụ, người dùng phải quay số đến số điện thoại do nhà cung cấp dịch vụ cấp Sau đó,nhập tên truy nhập và mật khẩu để đăng nhập Kiểu kết nối này thường được người dùng
cá nhân sử dụng vì giá thành rẻ và dễ lắp đặt
1.4.4 Kết nối qua ADSL
Kết nối Internet qua ADSL là một dịch vụ mới và đang rất phổ biến ADSL làcông nghệ truy nhập bất đối xứng, tốc độ đường xuống lớn hơn tốc độ đường lên Đặcđiểm này rất phù hợp với truy nhập Internet vì người dùng thường lấy thông tin từInternet xuống nhiều hơn gửi thông tin lên Internet Người dùng có thể đăng ký dịch vụnày ngay trên đường dây điện thoại sẵn có của mình chứ không nhất thiết phải mắcthêm một đường dây mới Để sử dụng, người dùng cần có ADSL modem Máy tính củangười dùng kết nối tới ADSL modem và modem này được kết nối với đường dây điệnthoại đã đăng ký dịch vụ ADSL
Trang 25Hình 1.2 Kết nối qua ADSL
Đặc điểm của phương thức này là kết nối mạng cũng luôn thường trực (sau khi kếtnối được tự động thực hiện) nhưng người dùng chỉ phải trả tiền cho những thời gian sửdụng Cụ thể, các nhà cung cấp dịch vụ hiện nay đều tính cước dựa trên dung lượng thôngtin người dùng tải xuống và tải lên Internet
1.4.5 Địa chỉ IP
Các máy tính trên Internet giao tiếp với nhau sử dụng bộ giao thức TCP/IP Để cácmáy tính có thể liên lạc với nhau, mỗi máy tính cần có một địa chỉ liên lạc và địa chỉ nàyphải là duy nhất Điều này cũng giống như các thuê bao trong mạng điện thoại di độngphải có một số hiệu thuê bao (số máy) và số thuê bao này phải là duy nhất trong mạng
1.4.6 Tên miền
Mỗi máy tính khi kết nối vào mạng Internet thì được gán cho một địa chỉ IP xácđịnh Địa chỉ IP của mỗi máy là duy nhất Hệ thống DNS ra đời nhằm giúp chuyển đổi từđịa chỉ IP khó nhớ mà máy sử dụng sang một tên dễ nhớ cho người sử dụng, đồng thờigiúp hệ thống Internet ngày càng phát triển
Hệ thống DNS sử dụng hệ thống cơ sở dữ liệu phân tán và phân cấp hình cây Vìvậy, việc quản lý sẽ dễ dàng và thuận tiện cho việc chuyển đổi từ tên miền sang địa chỉ IP
và ngược lại Hệ thống DNS giống như mô hình quản lý công dân của một nước Mỗicông dân sẽ có một tên xác định đồng thời cũng có địa chỉ chứng minh thư để giúp quản
lý con người một cách dễ dàng hơn
1.4.7 ISP
ISP (Internet Service Provider) là nhà cung cấp dịch vụ Internet Nhà cung cấp dịch
vụ Internet cấp quyền truy cập Internet qua mạng viễn thông và các dịch vụ như: Email,Web, FTP, Telnet, Chat Để có thể truy nhập và sử dụng các dịch vụ của Internet, người
sử dụng phải đ ăng ký với nhà cung cấp dịch vụ này
1.4.8 World Wide Web
Trang 26World Wide Web là một trong những dịch vụ phổ biến nhất của Internet Dịch vụnày cho phép bạn truy nhập đến các trang thông tin siêu văn bản được đặt tại nhiều vị tríkhác nhau trên Internet
Dịch vụ này hoạt động theo mô hình Khách/Chủ (Client/Server) Trong đó, máy chủweb là máy tính trên Internet có chạy phần mềm WebServer Máy chủ web lưu trữ nộidung thông tin, nhận và trả lời các yêu cầu từ máy khách web Máy khách web là máytính của người dùng có chạy trình duyệt web Máy khách web gửi yêu cầu và hiển thịthông tin trả lời từ máy chủ web
Hình 1.3 Mô hình hoạt động của một dịch vụ Web 1.4.9 HTML
HTML (Hyper Text Markup Language) là một ngôn ngữ đánh dấu được thiết kế ra
để tạo nên các trang web Một file HTML là một tập tin văn bản bao gồm nhiều thẻ (tag).Những thẻ này nói cho trình duyệt biết nó phải hiển thị trang đó như thế nào Phần mởrộng của tập tin HTML là htm hoặc html và có thể được tạo bởi một trình soạn thảo vănbản đơn giản
Mọi tài liệu HTML đều có khung cấu trúc như sau:
Trang 27+ Thông qua Internet người dùng có thể truy cập một lượng lớn thông tin trên toàncầu thông qua các Website, tìm kiếm thông tin, kết nối với nhau qua các dịch vụ trựctuyến, các ứng dụng, trang mạng xã hội, các dịch vụ giải trí…
+ Kết nối điều khiển, giám sát các thiết bị điện gia dụng, thiết bị văn phòng, các thiết
bị đặt ở những nơi không thuận tiện cho việc điều khiển trực tiếp bằng tay
Trang 28CHƯƠNG 2.
THIẾT KẾ VÀ LẬP TRÌNH GIAO DIỆN ĐIỀU KHIỂN
CHO THIẾT BỊ ANDROID
2.1 Tổng quan về phần mềm lập trình ứng dụng Android
2.1.1 Lịch sử phát triển Eclipse
Eclipse là môi trường phát triển tích hợp, được phát hành miễn phí, dùng để lậptrình Java do IBM cùng với 8 tổ chức khác tạo thành Hiện nay, Eclipse không chỉ cungcấp môi trường phát triển tích hợp cho Java mà còn cho các ngôn ngữ khác như PHP, C,C++, Cobol, Python, C#, HTML nếu người dùng mở rộng các plug-in Eclipse có nhiềugói sản phẩm hỗ trợ nhiều khía cạnh khác nhau trong lập trình trên cả Windows, Linux vàMac đáp ứng cho nhiều đối tượng người dùng khác nhau
2.1.2 Các bước tạo môi trường lập trình Android
Hai thành phần cơ bản nhất cần phải có để sử dụng được Eclipse chính là bộAndroid SDK (Software Development Kit) chứa các phiên bản Android, các hàm API cầnthiết cũng như các công cụ hỗ trợ lập trình khác và JDK (Java Development Kit) dùng đểtạo ra môi trường thực thi máy ảo cho hệ điều hành đang sử dụng:
Bước 1: Tải và cài đặt Java JDK: Mở trình duyệt web trên máy tính và truy cập vào
địa chỉ: “http://java.sun.com/javase/downloads/index.jsp” và chọn phiên bản mới nhất
tiến hành cài đặt vào máy tính
Bước 2: Cài đặt bộ Android SDK
Truy cập vào địa chỉ: “http://developer.android.com/sdk/index.html”, tải gói ADT
Bundle for Windows, gói này sẽ chứa các thành phần:
+ Eclipse: Công cụ dùng để lập trình ứng dụng Android
+ ADT plugin: Công cụ mở rộng khả năng tương thích của Eclipse với các ProjectAndroid
+ Android SDK Tools: Công cụ giúp cài đặt thiết bị giả lập Android trên máy tính.+ Android Platform tools
+ Android API mới nhất
+ Android system image mới nhất cho Emulator
2.1.3 Android Virtual Device (AVD)
Trang 29Mục đích sử dụng Android Vitual Device (AVD) nhằm mô phỏng thiết bị androidthật trong điều kiện không có thiết bị Android thật Mọi sự tương tác trên AVD cũngchính là tương tác trên thiết bị thật.
Hình 2.1 Giao diện máy ảo sau khi khởi động 2.2 Cấu trúc bên trong của một ứng dụng
Một ứng sau khi được tạo về cơ bản cấu trúc bên trong gồm có các phần sau:activity_main.xml, MainActivity.java, Package Explorer, AndroidManifest.xml
Trang 30Hình 2.2 Cấu trúc của một ứng dụng 2.2.1 Tập tin Activity_main.xml
Là phần thiết kế giao diện của ứng dụng Trong activity_main có 2 phần:
+ Graphical Layout: Dùng để thiết kế giao diện bằng cách kéo thả các control
+ Activity_main.xml: Dùng thiết kế giao diện bằng cách viết các mã code
Trong Graphical Layout có 5 vùng cơ bản dùng thiết kế giao diện cho ứng dụng:+ Vùng số 1: Là nơi chứa các control, component… chỉ cần kéo thả vào vùng số 2 là
có thể sử dụng
+ Vùng số 2: Là giao diện, nơi dùng để thiết kế
+ Vùng số 3: Cho phép thiết kế theo chiều đứng hay chiều ngang
+ Vùng số 4: Chức năng Zoom in – zoom out thuận tiện cho việc thiết kế
+ Vùng số 5: Là nơi thiết lập các thuộc tính cho các control được kéo thả vàogiao diện
Trang 31Hình 2.3 Phần Graphical Layout 2.2.2 Tập tin MainActivity.java
Là nơi chứa toàn bộ mã nguồn của chương trình
Hình 2.4 Phần MainActivity dùng để lập trình cho ứng dụng 2.2.3 Thư mục Package Explorer
Trang 32Chứa cấu trúc bên trong của toàn bộ ứng dụng.
Hình 2.5 Phần Package Explorer
+ Các thư mục Drawable-hdpi, Drawable-ldpi,Drawable-mdpi, Drawable-xdpi: cáctập tin được kéo thả trực tiếp vào trong này (tạo Resource) Khi chương trình load cácReSource sẽ tự động vào -hdpi, -ldbpi, -xdpi lấy đúng dữ liệu ở bên trong tùy thuộc vào
độ phân giải màn hình
+ Thư mục gen: Là thực mục do Android tự động tạo ra Thư mục này chứa tất cảnhững gì được kéo thả vào giao diện Những thiết lập string.xml, menu… liên quan tớiresource sẽ được sinh ra bên trong R.java
+ AndroidManifest.xml: Bất kì một Activity muốn được triệu gọi thành công trongAndroid Project thì bắt buộc Activity đó phải được khai báo trong tập tinAndroidManifest.xml
Trang 33Hình 2.6 Cấu trúc bên trong của AndroidManifest.xml 2.3 Các đối tượng cơ bản trong ứng dụng
2.3.1 Layout
Layout là đối tượng dùng để thiết kế giao diện cho Android, khi tạo một AndroidProject thì mặc định sẽ có một Activity được chỉ định chạy đầu tiên khi thực thi ứngdụng Các layout cơ bản:
+ FrameLayout: Là loại layout đơn giản nhất thường được sử dụng cho các mànhình chỉ có một thành phần duy nhất FrameLayout chiếm một vùng cố định trong mànhình Tất cả các đối tượng đều được cố định ở góc trái bên trên layout Các đối tượng này
sẽ được sắp xếp theo thứ tự thêm vào, các đối tượng được thêm vào sau sẽ đè lên trên cácđối tượng được thêm vào trước đó
Trang 35+ RelativeLayout: Là loại layout mà các đối tượng được sắp xếp dựa trên vị trítương đối của đối tượng đó với các đối tượng khác và với layout.
Hình 2.9 Ví dụ RelativeLayout 2.3.2 TextView
Là đối tượng chỉ cho phép hiển thị thông tin mà không cho phép người dùng chỉnhsửa nội dung bên trong Để thuận lợi cho việc quản lý cũng như thực thi, mỗi TextViewđược tạo ra cần có id riêng
+ id: Gán tên cho TextView
+ layout_width, layout_height: Thiết lập kích thước của TextView
+ background: Thay đổi màu nền cho TextView
+ textColor: Thay đổi màu chữ bên trong TextView
2.3.3 EditText
Trang 36Giống với TextView, EditText là đối tượng cho phép hiển thị thông tin Ngoài chứcnăng hiển thị thông tin, EditText còn cho phép người dùng thay đổi hoặc chỉnh sửa dữliệu bên trong hoặc cấm chỉnh sửa dữ liệu bằng coding hay trong xml.
2.4.3 Vòng đời của một ứng dụng
Một Activity có 3 trạng thái:
+ Running (Đang kích hoạt): Activity đang hiển thị trên màn hình (foreground).Activity tập trung vào những thao tác của người dùng trên ứng dụng
Trang 37+ Paused (Tạm dừng): Activity được tạm dừng, tuy vẫn hiển thị nhưng không thểtương tác do có một Activity mới ở trên nó Activity tạm dừng còn hoạt động nhưng cóthể bị kết thúc bởi hệ thống trong trường hợp thiếu vùng nhớ.
+ Stopped (Dừng): Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạngthái Stop Trạng thái và thông tin trên Activity cũ vẫn còn, tuy nhiên người dùng khôngthấy nó và thường bị loại bỏ khi hệ thống cần vùng nhớ cho các tác vụ khác
Trang 38Các hàm thực thi trong vòng đời của một Activity:
+ onCreate(): Được gọi khi Activity lần đầu tiên được tạo Luôn theo sau là hàmonStart()
+ onRestart(): Được gọi sau khi Activity đã bị dừng trước đó và được khởi động lại.Luôn theo sau hàm onStart()
+ onStart(): Được gọi chỉ trước khi Acitivity trở nên nhìn thấy được với người dùng.Luôn theo sau là hàm onResume() nếu Activity chạy ngầm hoặc onStop() nếu nó bị ẩn đi.+ onResume(): Chỉ được gọi trước Activity bắt đầu tương tác với người dùng Luôntheo sau là hàm onPause()
+ onPause(): Được gọi khi hệ thống sắp bắt đầu hồi phục lại một Activity khác.Theo sau là hàm onResume() hay onStop()
+ onStop(): Được gọi khi người dùng không nhìn thấy được Activity nữa Theo sau
là hàm onRestart()
2.5 Các hàm và các lệnh cơ bản trong Java Android
Các hàm và các lệnh trong lập trình Java Android được thể hiện trong bảng sau:
Bảng 2.1 Các hàm và lệnh trong Java Android
Hàm so sánh chuỗi string1.equals(string2) So sánh từng ký tự trong hai chuỗi
khác nhauHàm xác định chuỗi lastIndexOf(int string) Xác định vị trị ký tự xuất hiện cuốicùng của một chuỗi con
2.6 Thiết kế giao diện điều khiển
2.6.1 Khai báo giao diện
Trang 39Giao diện điều khiển được thiết kế trong phần activity_main.xml, đối tượng được sửdụng là Imagebutton cho người dùng chọn lựa trạng thái hoạt động của các thiết bị Có 8Imagebutton tương ứng với 8 thiết bị được điều khiển
Bảng 2.2 Khai báo thuộc tính đối tượng Imagebutton đối với thiết bị 1
1 Id @+id/imageButton1 Khai báo tên cho đối tượng
3 Scale Type fitCenter Canh chỉnh tỉ lệ cho đối tượng
4 On Click CLICK_TB1() Bắt sự kiện click cho đối tượng
Đối với các thiết bị còn lại thay đổi khai báo:
Bảng 2.3 Khai báo thuộc tính đối tượng Imagebutton từ thiết bị 2 đến thiết bị 8
Hình 2.11 thể hiện trạng thái đóng ngắt của thiết bị 1 tương ứng với 2 file hình ảnh:a.png và aa.png Các thiết bị khác sẽ truy xuất các file hình ảnh theo thứ tự b.png, c.png,
…h.png tương ứng với trạng thái đóng; bb.png,cc.png,…hh.png tương ứng với trạng tháimở
Hình 2.11 Hiển thị trạng thái điều khiển thiết bị 2.6.2 Canh chỉnh giao diện người dùng
Các nút nhấn điều khiển được canh chỉnh bởi đối tượng LinearLayout theo chiềuđứng cố định Bảng 2.4 thể hiện các thiết lập cho đối tượng LinearLayout
Bảng 2.4 Khai báo thuộc tính cho đối tượng LinearLayout
Trang 40LinearLayout Orientation: vertical Canh chỉnh nút nhấn theo chiều đứng
Orientation: horizontal Canh chỉnh nút nhấn theo chiều ngangQuá trình canh chỉnh cho ra giao diện điều khiển như hình 2.12
Hình 2.12 Giao diện người dùng ở 2 trạng thái đóng và mở 2.7 Gửi dữ liệu lên WebServer
2.7.1 Phương thức gửi
Có 2 phương thức gửi dữ liệu lên WebServer: Post và Get Phương thức Post chophép gửi kèm dữ liệu được đóng gói trong quá trình yêu cầu, còn phương thức Get thìkhông thể Phương thức được sử dụng ở đây là Post có cấu trúc như sau:
+ Khởi tạo HttpClient: HttpClient có chức năng thực thi HTTPPOST
DefaultHttpClient httpClient = newDefaultHttpClient();
+ Khởi tạo HttpPost: Khi khai báo trên thể hiện của HttpPost có nghĩa là chúng ta sửdụng phương thức POST của HTTP để làm việc với máy chủ
HttpPost method = new HttpPost(URL);
+ Chờ phản hồi từ WebServer:
HttpResponse response = null;
try {