Ứ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

125 821 0
Ứ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

Đ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

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

TRƯỜNG ĐẠI HỌC TIỀN GIANG BÁ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 Công nghệ Tiền Giang, tháng 06 năm 2015 TRƯỜNG ĐẠI HỌC TIỀN GIANG BÁ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 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ứ: Số năm đào tạo: 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 LỜI CẢM ƠN Em xin chân thành cảm ơn quý thầy cô Trường ĐH Tiền Giang nói chung thầy Khoa Kỹ Thuật Cơng Nghiệp nói riêng dạy bảo, tận tình truyền đạt kiến thức cho em suốt trình học Đặc biệt thầy Hồng Hữu Duy tận tình dẫn cho em trình làm hoàn thành đề tài Đồng cảm ơn Ban giám hiệu nhà trường tạo điều kiện cho em học tập trau dồi kiến thức Xin cảm ơn bạn lớp có ý kiến đóng góp trình tìm hiểu làm đề tài Do thời gian trình độ có hạn nên đề tài khơng tránh khỏi thiếu sót, mong nhận ý kiến đóng góp q thầy bạn để đề tài hoàn thiện Em xin chân thành cảm ơn! Sinh viên Trần Thanh Tòng MỤC LỤC MỤC LỤC i DANH MỤC HÌNH ẢNH v DANH MỤC BẢNG BIỂU vi A MỞ ĐẦU 1 Tổng quan tình hình nghiên cứu 2 Lý chọn đề tài Mục tiêu đề tài Phương pháp nghiên cứu Khách thể nghiên cứu Đối tượng phạm vi nghiên cứu .3 Giả thuyết nghiên cứu B NỘI DUNG CHƯƠNG TỔNG QUAN CÁC HÌNH THỨC ĐIỀU KHIỂN XA 1.1 Điều khiển từ xa tia hồng ngoại 1.1.1 Khái niệm .5 1.1.2 Ứng dụng 1.2 Điều khiển từ xa sóng vơ tuyến 1.2.1 Khái niệm .5 1.2.2 Ứng dụng 1.3 Điều khiển từ xa Bluetooth 1.3.1 Khái niệm .6 1.3.2 Ứng dụng 1.4 Điều khiển xa Internet 1.4.1 Khái niệm Internet 1.4.2 Lịch sử phát triển 1.4.3 Kết nối qua quay số 1.4.4 Kết nối qua ADSL 1.4.5 Địa IP 1.4.6 Tên miền .8 1.4.7 ISP 1.4.8 World Wide Web 1.4.9 HTML 1.4.10 Ứng dụng Internet 10 CHƯƠNG 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 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 ứ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 ứ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 vòng đời ứng dụng .19 2.4.1 Applications 19 2.4.2 Activity .19 2.4.3 Vòng đời ứng dụng .19 2.5 Các hàm lệnh 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 liệu lên WebServer 23 2.7.1 Phương thức gửi 23 2.7.2 Quy ước liệu gửi 24 2.7.3 Thuật tốn mã hóa liệu gửi 25 2.7.4 Thuật toán gửi liệu 25 2.7.5 Tiến trình gửi liệu 26 2.8 Nhận liệu từ WebServer 27 2.8.1 Phương thức nhận .27 2.8.2 Quy ước liệu nhận 27 2.8.3 Thuật toán giải mã liệu nhận 27 2.8.4 Thuật toán nhận liệu 29 2.8.5 Tiến trình nhận liệu 29 2.9 Đồng liệu 30 2.9.1 Phương thức đồng 30 2.9.2 Thuật toán đồng .30 2.10 Đọc liệu theo chu kỳ 31 2.10.1 Khai báo Timer 31 2.10.2 Giải thuật đọc 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 THIẾT KẾ VÀ LẬP TRÌNH WEBSERVER 39 3.1 Tổng quan WebServer 39 3.1.1 Các đối tượng gửi nhận liệu WebServer 39 3.1.2 Các đối tượng lưu trữ WebServer 39 3.1.3 Cấu trúc liệu 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 liệu 41 3.3.1 Tổng quan trình gửi nhận liệu 41 3.3.2 Giải mã ghi nhận liệu 42 3.3.4 Truy xuất liệu 44 3.3.5 Thuật toán gửi/nhận liệu từ Board Raspberry 45 3.3.6 Thuật toán gửi/nhận liệu từ thiết bị Android 47 CHƯƠNG 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 Raspberry Pi 48 4.2 Các lệnh Linux Shell 49 4.2.1 Cấu trúc thư mục 49 4.2.2 Tập lệnh 50 4.3 Hệ điều hành 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 kiểu liệu 54 4.4.3 Cấu trúc rẽ nhánh vòng lặp 55 4.4.4 Xây dựng hàm 56 4.5 Tổng quan 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 kiện cho đối tượng 58 4.5.6 Biên dịch mã nguồn Python 58 4.5.7 Xử lý kiện người dùng giao diện .59 4.5.8 Thay đổi thuộc tính đố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 đối tượng giao diện 61 4.6.3 Giải thuật điều khiển đóng ngắt 62 4.6.4 Khai báo biến quản lý trạng thái toàn cục 63 4.6.5 Khai báo thông số cố định 64 4.6.6 Khai báo ngõ vào ngõ GPIO 65 4.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 liệu board mạch WebServer .66 4.7.1 Quy ước mã giãi mã .66 4.7.2 Mở file đóng file 66 4.7.3 Thư viện URL Python .67 4.8 Gửi liệu lên Web Server .68 4.9 Chế độ điều khiển tay .68 4.9.1 Thư viện GPIO 68 4.9.2 Thuật toán thực 69 4.10 Phát triển Module công suất 70 4.10.1 Điện áp dòng điện ngõ 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 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 liệu cho máy chủ .78 5.2.3 Các thiết lập 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 thực nghiệm đánh giá .79 5.3.1 Kết thực nghiệm 79 5.3.2 Đánh giá .80 C KẾT LUẬN VÀ KHUYẾN NGHỊ .81 Kết luận 82 Khuyến nghị .82 TÀI LIỆU THAM KHẢO .83 DANH MỤC HÌNH ẢNH Hình 1.1 Kết nối quay số qua mạng điện thoại Hình 1.2 Kết nối qua ADSL .8 Hình 1.3 Mơ hình hoạt động dịch vụ Web Hình 2.1 Giao diện máy ảo sau khởi động .12 Hình 2.2 Cấu trúc ứ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 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 ứ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 trạng thái đóng mở 23 Hình 2.13 Thuật tốn mã hóa liệu gửi .25 Hình 2.14 Giải thuật gửi liệu lên WebServer 26 Hình 2.15 Tiến trình gửi liệu .27 Hình 2.16 Thuật toán giải mã liệu trạng thái .28 Hình 2.17 Thuật tốn giải mã liệu thiết bị 28 Hình 2.18 Giải thuật nhận liệu từ WebServer 29 Hình 2.19 Tiến trình nhận liệu 30 Hình 2.20 Thuật toán đồng liệu 31 Hình 2.21 Thuật toán thực thi hàm đọc liệu theo chu kỳ 32 Hình 2.22 Thuật tốn khởi chạy onCreate() 33 Hình 2.23 Thuật tố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 liệu .37 Hình 2.26 Giải thuật hiển thị thơng báo gửi-nhận liệu 38 public void CLICK_TB2(View v) { if (TRANG_THAI_THIET_BI_2.equals("1")) { TRANG_THAI_THIET_BI_2="0"; MA_HOA_DU_LIEU_GUI("0", "2"); ID_NUT_NHAN_2.setImageResource(R.drawable.b); } else if (TRANG_THAI_THIET_BI_2.equals("0")) { TRANG_THAI_THIET_BI_2="1"; MA_HOA_DU_LIEU_GUI("1", "2"); ID_NUT_NHAN_2.setImageResource(R.drawable.bb); } THONG_BAO_NUT_NHAN.show(); new Thread(new TIEN_TRINH_GUI_DU_LIEU()).start(); } public void CLICK_TB3(View v) { if (TRANG_THAI_THIET_BI_3.equals("1")) { TRANG_THAI_THIET_BI_3="0"; MA_HOA_DU_LIEU_GUI("0", "3"); ID_NUT_NHAN_3.setImageResource(R.drawable.c); } else if (TRANG_THAI_THIET_BI_3.equals("0")) { TRANG_THAI_THIET_BI_3="1"; MA_HOA_DU_LIEU_GUI("1", "3"); ID_NUT_NHAN_3.setImageResource(R.drawable.cc); } THONG_BAO_NUT_NHAN.show(); new Thread(new TIEN_TRINH_GUI_DU_LIEU()).start(); } public void CLICK_TB4(View v) { if (TRANG_THAI_THIET_BI_4.equals("1")) { TRANG_THAI_THIET_BI_4="0"; MA_HOA_DU_LIEU_GUI("0", "4"); ID_NUT_NHAN_4.setImageResource(R.drawable.d); -5- } else if (TRANG_THAI_THIET_BI_4.equals("0")) { TRANG_THAI_THIET_BI_4="1"; MA_HOA_DU_LIEU_GUI("1", "4"); ID_NUT_NHAN_4.setImageResource(R.drawable.dd); } THONG_BAO_NUT_NHAN.show(); new Thread(new TIEN_TRINH_GUI_DU_LIEU()).start(); } public void CLICK_TB5(View v) { if (TRANG_THAI_THIET_BI_5.equals("1")) { TRANG_THAI_THIET_BI_5="0"; MA_HOA_DU_LIEU_GUI("0", "5"); ID_NUT_NHAN_5.setImageResource(R.drawable.e); } else if (TRANG_THAI_THIET_BI_5.equals("0")) { TRANG_THAI_THIET_BI_5="1"; MA_HOA_DU_LIEU_GUI("1", "5"); ID_NUT_NHAN_5.setImageResource(R.drawable.ee); } THONG_BAO_NUT_NHAN.show(); new Thread(new TIEN_TRINH_GUI_DU_LIEU()).start(); } public void CLICK_TB6(View v) { if (TRANG_THAI_THIET_BI_6.equals("1")) { TRANG_THAI_THIET_BI_6="0"; MA_HOA_DU_LIEU_GUI("0", "6"); ID_NUT_NHAN_6.setImageResource(R.drawable.f); } else if (TRANG_THAI_THIET_BI_6.equals("0")) { TRANG_THAI_THIET_BI_6="1"; MA_HOA_DU_LIEU_GUI("1", "6"); ID_NUT_NHAN_6.setImageResource(R.drawable.ff); } -6- THONG_BAO_NUT_NHAN.show(); new Thread(new TIEN_TRINH_GUI_DU_LIEU()).start(); } public void CLICK_TB7(View v) { if (TRANG_THAI_THIET_BI_7.equals("1")) { TRANG_THAI_THIET_BI_7="0"; MA_HOA_DU_LIEU_GUI("0", "7"); ID_NUT_NHAN_7.setImageResource(R.drawable.g); } else if (TRANG_THAI_THIET_BI_7.equals("0")) { TRANG_THAI_THIET_BI_7="1"; MA_HOA_DU_LIEU_GUI("1", "7"); ID_NUT_NHAN_7.setImageResource(R.drawable.gg); } THONG_BAO_NUT_NHAN.show(); new Thread(new TIEN_TRINH_GUI_DU_LIEU()).start(); } public void CLICK_TB8(View v) { if (TRANG_THAI_THIET_BI_8.equals("1")) { TRANG_THAI_THIET_BI_8="0"; MA_HOA_DU_LIEU_GUI("0", "8"); ID_NUT_NHAN_8.setImageResource(R.drawable.h); } else if (TRANG_THAI_THIET_BI_8.equals("0")) { TRANG_THAI_THIET_BI_8="1"; MA_HOA_DU_LIEU_GUI("1", "8"); ID_NUT_NHAN_8.setImageResource(R.drawable.hh); } THONG_BAO_NUT_NHAN.show(); new Thread(new TIEN_TRINH_GUI_DU_LIEU()).start(); } public void MA_HOA_DU_LIEU_GUI(String TRANG_THAI, String THIET_BI) { if (TRANG_THAI.equals("1") ) { DA_TA_GUI="A";} -7- else if (TRANG_THAI.equals("0")) { DA_TA_GUI="B";} DA_TA_GUI= DA_TA_GUI + "_" + THIET_BI; } public void GIAI_MA_DU_LIEU_NHAN(){ String TRANG_THAI="0"; //khai bao bien TRANG THAI trung gian if(DA_TA_NHAN.substring(0, 1).equals("A")) { TRANG_THAI="1"; } else{ TRANG_THAI="0"; } if (DA_TA_NHAN.substring(2, 3).equals("1")) { TRANG_THAI_THIET_BI_1=TRANG_THAI; if (TRANG_THAI.equals("1")) { ID_NUT_NHAN_1.setImageResource(R.drawable.aa); } else { ID_NUT_NHAN_1.setImageResource(R.drawable.a); } } if (DA_TA_NHAN.substring(2, 3).equals("2")) { TRANG_THAI_THIET_BI_2=TRANG_THAI ; if (TRANG_THAI.equals("1")) { ID_NUT_NHAN_2.setImageResource(R.drawable.bb); } else {ID_NUT_NHAN_2.setImageResource(R.drawable.b);} } if (DA_TA_NHAN.substring(2, 3).equals("3")) { TRANG_THAI_THIET_BI_3=TRANG_THAI ; if (TRANG_THAI.equals("1")) -8- { ID_NUT_NHAN_3.setImageResource(R.drawable.cc); } else { ID_NUT_NHAN_3.setImageResource(R.drawable.c); } } if (DA_TA_NHAN.substring(2, 3).equals("4")) { TRANG_THAI_THIET_BI_4=TRANG_THAI ; if (TRANG_THAI.equals("1")) { ID_NUT_NHAN_4.setImageResource(R.drawable.dd); } else { ID_NUT_NHAN_4.setImageResource(R.drawable.d); } } if (DA_TA_NHAN.substring(2, 3).equals("5")) { TRANG_THAI_THIET_BI_5=TRANG_THAI ; if (TRANG_THAI.equals("1")) { ID_NUT_NHAN_5.setImageResource(R.drawable.ee); } else { ID_NUT_NHAN_5.setImageResource(R.drawable.e); } } if (DA_TA_NHAN.substring(2, 3).equals("6")) { TRANG_THAI_THIET_BI_6=TRANG_THAI ; if (TRANG_THAI.equals("1")) { ID_NUT_NHAN_6.setImageResource(R.drawable.ff); } else -9- { ID_NUT_NHAN_6.setImageResource(R.drawable.f); } } if (DA_TA_NHAN.substring(2, 3).equals("7")) { TRANG_THAI_THIET_BI_7=TRANG_THAI ; if (TRANG_THAI.equals("1")) { ID_NUT_NHAN_7.setImageResource(R.drawable.gg); } else { ID_NUT_NHAN_7.setImageResource(R.drawable.g); } } if (DA_TA_NHAN.substring(2, 3).equals("8")) { TRANG_THAI_THIET_BI_8=TRANG_THAI ; if (TRANG_THAI.equals("1")) { ID_NUT_NHAN_8.setImageResource(R.drawable.hh); } else { ID_NUT_NHAN_8.setImageResource(R.drawable.h); } } } public void GUI_DU_LIEU(String URL, String DA_TA) { HttpClient httpclient = new DefaultHttpClient(); HttpPost method = new HttpPost(URL + DA_TA); HttpResponse response = null; try { response = httpclient.execute(method); } catch (ClientProtocolException e) { runOnUiThread(new Runnable() { -10- @Override public void run() { c.create().show(); } }); return; } catch (IOException e) { runOnUiThread(new Runnable() { @Override public void run() { c.create().show(); } }); return; } response.getEntity(); } public String DOC_DU_LIEU(String URL) { HttpClient httpclient = new DefaultHttpClient(); HttpPost method = new HttpPost(URL); HttpResponse response = null; try { response = httpclient.execute(method); } catch (ClientProtocolException e) { return "C_0"; } catch (IOException e) { return "C_0"; } HttpEntity entity = response.getEntity(); try { return EntityUtils.toString(entity).substring(0, 3); } catch (ParseException e) { return "C_0"; } catch (IOException e) { -11- return "C_0"; } } class TIEN_TRINH_GUI_DU_LIEU implements Runnable { public void run() { GUI_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Nhan_App.aspx? ID=",DA_TA_GUI); THONG_BAO_NUT_NHAN.dismiss(); new Thread(new DONG_BO_DU_LIEU()).start(); } } class TIEN_TRINH_DOC_DU_LIEU implements Runnable { @Override public void run() { DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.as px"); runOnUiThread(new Runnable() { @Override public void run() { GIAI_MA_DU_LIEU_NHAN();} }); } } public void DOC_DU_LIEU_THEO_CHU_KY() { timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub -12- new Thread(new TIEN_TRINH_DOC_DU_LIEU()).start(); } },0,10000);} class DONG_BO_DU_LIEU implements Runnable { @Override public void run() { DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.as px?ID=1"); if (DA_TA_NHAN.equals("C_0")) {runOnUiThread(new Runnable() { @Override public void run() { d.create().show(); } }); } runOnUiThread(new Runnable() { @Override public void run() { GIAI_MA_DU_LIEU_NHAN(); } }); DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.as px?ID=2"); if (DA_TA_NHAN.equals("C_0")) {runOnUiThread(new Runnable() {@Override void run() { d.create().show(); } }); } runOnUiThread(new Runnable() -13- { @Override public void run() { GIAI_MA_DU_LIEU_NHAN();} }); DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.as px?ID=3"); if (DA_TA_NHAN.equals("C_0")) { runOnUiThread(new Runnable() { @Override public void run() { d.create().show(); } }); } runOnUiThread(new Runnable() { @Override public void run() { GIAI_MA_DU_LIEU_NHAN(); } }); DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.a spx?ID=4"); if (DA_TA_NHAN.equals("C_0")) { runOnUiThread(new Runnable() {@Override void run() { d.create().show(); } }); } runOnUiThread(new Runnable() { -14- @Override public void run() { GIAI_MA_DU_LIEU_NHAN(); } }); DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.a spx?ID=5"); if (DA_TA_NHAN.equals("C_0")) { runOnUiThread(new Runnable() { @Override public void run() {d.create().show(); } }); } runOnUiThread(new Runnable() { @Override public void run() { GIAI_MA_DU_LIEU_NHAN(); }}); DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.a spx?ID=6"); if (DA_TA_NHAN.equals("C_0")) { runOnUiThread(new Runnable() { @Override public void run() { d.create().show(); } }); } runOnUiThread(new Runnable() { @Override -15- public void run() { GIAI_MA_DU_LIEU_NHAN(); }}); DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.a spx?ID=7"); if (DA_TA_NHAN.equals("C_0")) { runOnUiThread(new Runnable() { @Override public void run() { d.create().show(); } }); } runOnUiThread(new Runnable() { @Override public void run() { GIAI_MA_DU_LIEU_NHAN(); } }); DA_TA_NHAN=DOC_DU_LIEU("http://www.dieukhienasp2509.somee.com/Data_Gui_App.as px?ID=8"); if (DA_TA_NHAN.equals("C_0")) {runOnUiThread(new Runnable() { @Override public void run() { d.create().show(); } }); } runOnUiThread(new Runnable() { @Override public void run() -16- { GIAI_MA_DU_LIEU_NHAN(); } }); a.dismiss(); } } } -17- Ý KIẾN CỦA NGƯỜI HƯỚNG DẪN Qua thời gian thực đề tài nghiên cứu khoa học sinh viên: Trần Thanh Tòng, người hướng dẫn có nhận xét sau: - Về cấu trúc đề tài: Đề tài thể chi tiết, đầy đủ, rõ ràng, logic xây dựng nên sản phẩm - Tính cấp thiết đề tài: Đề tài đáp ứng xu công nghệ - Về hình thức trình bày: Đề tài trình bày mạch lạc, rõ ràng Tuy nhiên, có vài nội dung sơ lượt, chưa sâu vào trọng tâm vấn đề - Đánh giá chung: Đề tài đáp ứng mục tiêu đề ban đầu Đề nghị: không NGƯỜI HƯỚNG DẪN Hoàng Hữu Duy HỘI ĐỒNG NGHIỆM THU ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN - CHỦ TỊCH: - THƯ KÝ : - THÀNH VIÊN PHẢN BIỆN 1: - THÀNH VIÊN PHẢN BIỆN 2: - THÀNH VIÊN HỘI ĐỒNG: Tiền Giang, ngày tháng Chủ tịch năm

Ngày đăng: 05/03/2018, 14:15

Từ khóa liên quan

Mục lục

  • HỘI ĐỒNG NGHIỆM THU

  • ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN

  • MỤC LỤC

  • DANH MỤC HÌNH ẢNH

  • DANH MỤC BẢNG BIỂU

  • A. MỞ ĐẦU

    • 1. Tổng quan tình hình nghiên cứu

    • 2. Lý do chọn đề tài

    • 3. Mục tiêu đề tài

    • 4. Phương pháp nghiên cứu

    • 4. Khách thể nghiên cứu

    • 5. Đối tượng và phạm vi nghiên cứu

    • 6. Giả thuyết nghiên cứu

  • B. NỘI DUNG

    • CHƯƠ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

        • 1.1.2. Ứng dụng

      • 1.2. Điều khiển từ xa bằng sóng vô tuyến

        • 1.2.1. Khái niệm

        • 1.2.2. Ứng dụng

      • 1.3. Điều khiển từ xa bằng Bluetooth

        • 1.3.1. Khái niệm

        • 1.3.2. Ứng dụng

      • 1.4. Điều khiển xa bằng Internet

        • 1.4.1. Khái niệm Internet

        • 1.4.2. Lịch sử phát triển

        • 1.4.3. Kết nối qua quay số

          • Hình 1.1. Kết nối quay số qua mạng điện thoại

        • 1.4.4. Kết nối qua ADSL

          • Hình 1.2. Kết nối qua ADSL

        • 1.4.5. Địa chỉ IP

        • 1.4.6. Tên miền

        • 1.4.7. ISP

        • 1.4.8. World Wide Web

          • Hình 1.3. Mô hình hoạt động của một dịch vụ Web

        • 1.4.9. HTML

        • 1.4.10. Ứng dụng của Internet

    • CHƯƠ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

        • 2.1.2. Các bước tạo môi trường lập trình Android

        • 2.1.3. Android Virtual Device (AVD)

          • 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

        • Hình 2.2. Cấu trúc của một ứng dụng

        • 2.2.1. Tập tin Activity_main.xml

          • Hình 2.3. Phần Graphical Layout

        • 2.2.2. Tập tin MainActivity.java

          • 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

          • Hình 2.5. Phần Package Explorer

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

          • Hình 2.7. Ví dụ FrameLayout

          • Hình 2.8. Ví dụ LinearLayout

          • Hình 2.9. Ví dụ RelativeLayout

        • 2.3.2. TextView

        • 2.3.3. EditText

        • 2.3.4. Button

      • 2.4. Các thành phần cơ bản và vòng đời của một ứng dụng

        • 2.4.1. Applications

        • 2.4.2. Activity

        • 2.4.3. Vòng đời của một ứng dụng

          • Hình 2.10. Vòng đời của một ứng dụng

      • 2.5. Các hàm và các lệnh cơ bản trong Java Android

        • Bảng 2.1. Các hàm và lệnh trong Java Android

      • 2.6. Thiết kế giao diện điều khiển

        • 2.6.1. Khai báo giao diện

          • Bảng 2.2. Khai báo thuộc tính đối tượng Imagebutton đối với thiết bị 1

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

          • Bảng 2.4. Khai báo thuộc tính cho đối tượng LinearLayout

          • 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

        • 2.7.2. Quy ước dữ liệu gửi

          • Bảng 2.5. Quy ước mã hóa trạng thái thiết bị được điều khiển

          • Bảng 2.6. Quy ước mã hóa thiết bị được điều khiển

        • 2.7.3. Thuật toán mã hóa dữ liệu gửi

          • Hình 2.13. Thuật toán mã hóa dữ liệu gửi

        • 2.7.4. Thuật toán gửi dữ liệu

          • Hình 2.14. Giải thuật gửi dữ liệu lên WebServer

        • 2.7.5. Tiến trình gửi dữ liệu

          • Bảng 2.7. Khai báo tiến trình

          • Hình 2.15. Tiến trình gửi dữ liệu

      • 2.8. Nhận dữ liệu từ WebServer

        • 2.8.1. Phương thức nhận

        • 2.8.2. Quy ước dữ liệu nhận

        • 2.8.3. Thuật toán giải mã dữ liệu nhận

          • Hình 2.16. Thuật toán giải mã dữ liệu trạng thái

          • Hình 2.17. Thuật toán giải mã dữ liệu thiết bị 1

        • 2.8.4. Thuật toán nhận dữ liệu

          • Hình 2.18. Giải thuật nhận dữ liệu từ WebServer

        • 2.8.5. Tiến trình nhận dữ liệu

          • Hình 2.19. Tiến trình nhận dữ liệu

      • 2.9. Đồng bộ dữ liệu

        • 2.9.1. Phương thức đồng bộ

          • Bảng 2.8. Mã hóa dữ liệu gửi

        • 2.9.2. Thuật toán đồng bộ

          • Hình 2.20. Thuật toán đồng bộ dữ liệu

      • 2.10. Đọc dữ liệu theo chu kỳ

        • 2.10.1. Khai báo Timer

          • Bảng 2.9. Cấu trúc Timer

        • 2.10.2. Giải thuật đọc dữ liệu theo chu kì

          • Hình 2.21. Thuật toán thực thi hàm đọc dữ liệu theo chu kỳ

      • 2.11. Khởi động ứng dụng

        • 2.11.1. Hàm onCreate()

          • Hình 2.22. Thuật toán khởi chạy onCreate()

          • Bảng 2.10. Biến dùng trong hàm onCreate()

        • 2.11.2. Hàm onResume()

          • Hình 2.23. Thuật toán khởi chạy onResume()

        • 2.11.3. Hàm onPause()

          • Hình 2.24. Thuật toán khởi chạy onPause()

      • 2.12. Hiển thị thông báo

        • Hình 2.25. Giải thuật hiển thị thông báo đồng bộ dữ liệu

        • Hình 2.26. Giải thuật hiển thị thông báo gửi-nhận dữ liệu

    • CHƯƠNG 3 THIẾT KẾ VÀ LẬP TRÌNH WEBSERVER

      • 3.1. Tổng quan về WebServer

        • 3.1.1. Các đối tượng gửi nhận dữ liệu của WebServer

        •  3.1.2. Các đối tượng lưu trữ trên WebServer

        •  3.1.3. Cấu trúc dữ liệu của bản tin HTML

      • 3.2. Lập trình WebServer

        • 3.2.1. Các hàm xử lý chuỗi

          • Bảng 3.1. Các hàm xử lý chuỗi trên WebServer

        • 3.2.2. Lệnh rẽ nhánh

      • 3.3. Xây dựng WebServer truyền nhận dữ liệu

        • 3.3.1. Tổng quan quá trình gửi nhận dữ liệu

          • Bảng 3.2. Các Webpage xử lý

          • Hình 3.1. Mô hình hoạt động của WebServer

        • 3.3.2. Giải mã và ghi nhận dữ liệu

          • Bảng 3.3. Quy ước mã hóa trạng thái thiết bị được điều khiển

          • Bảng 3.4. Quy ước mã hóa thiết bị được điều khiển

          • Bảng 3.5. Quy ước ghi nhận dữ liệu từ board mạch Raspberry tại WebServer

        • 3.3.4. Truy xuất dữ liệu

          • Bảng 3.6. Truy xuất biến toàn cục trên WebServer

        • 3.3.5. Thuật toán gửi/nhận dữ liệu từ Board Raspberry

          • Hình 3.2. Thuật toán gửi dữ liệu từ Module

          • Hình 3.3. Thuật toán nhận dữ liệu từ Module

        • 3.3.6. Thuật toán gửi/nhận dữ liệu từ thiết bị Android

          • Hình 3.4. Thuật toán gửi dữ liệu

          • Hình 3.5. Thuật toán nhận dữ liệu từ thiết bị Android

    • CHƯƠNG 4. LẬP TRÌNH VÀ XÂY DỰNG PHẦN CỨNG CHO BOARD MẠCH RASPBERRY PI

      • 4.1. Kết cấu cổng GPIO của Raspberry Pi

        • Hình 4.1. Kết cấu Port 1 cổng GPIO

        • Hình 4.2. Kết cấu Port 5 cổng GPIO

        • Hình 4.3. Kết cấu Port 6 cổng GPIO

      • 4.2. Các lệnh cơ bản trong Linux Shell

        • 4.2.1. Cấu trúc thư mục

          • Bảng 4.1. Cấu trúc thư mục Linux

        • 4.2.2. Tập lệnh cơ bản

          • Bảng 4.2. Các lệnh trong Linux Shell

      • 4.3. Hệ điều hành trên board mạch Raspberry Pi

        • 4.3.1. Giao diện người dùng

          • Hình 4.4. Giao diện đồ họa Raspberry

        • 4.3.2. Quản lý tập tin

          • Hình 4.5. Chương trình quản lý file Raspberry

          • Bảng 4.3. Thư mục chương trình của Raspberry

        • 4.3.3. LxTerminal

          • Hình 4.6. Cửa sổ Lxterminal

      • 4.4. Ngôn ngữ lập trình Python

        • 4.4.1. Cấu trúc chương trình Python

          • Hình 4.7. Cấu trúc cơ bản của ngôn ngữ Python

        • 4.4.2. Biến và kiểu dữ liệu

          • Bảng 4.4. Các phép toán trong Python

          • Bảng 4.5. Các lệnh chức năng trong Python

        • 4.4.3. Cấu trúc rẽ nhánh và vòng lặp

          • Bảng 4.6. Cấu trúc rẽ nhánh và vòng lặp

        • 4.4.4. Xây dựng hàm

      • 4.5. Tổng quan về PyQt4

        • 4.5.1. Đối tượng Push Button

          • Bảng 4.7. Thuộc tính Push Button

        • 4.5.2. Đối tượng Radio Button

          • Bảng 4.8. Thuộc tính Radio Button

        • 4.5.3. Đối tượng Label

          • Bảng 4.9. Thuộc tính Label

        • 4.5.4. Đối tượng Frame

          • Bảng 4.10. Thuộc tính Frame

        • 4.5.5. Tạo sự kiện cho các đối tượng

          • Bảng 4.11. Các sự kiện trong PyQt

          • Bảng 4.12. Các hàm tác động sự kiện

        • 4.5.6. Biên dịch mã nguồn Python

          • Bảng 4.13. Quy ước biến và hàm trong Class

        • 4.5.7. Xử lý sự kiện người dùng trên giao diện

        • 4.5.8. Thay đổi thuộc tính các đối tượng giao diện

          • Bảng 4.14. Điều khiển đối tượng QtGui

      • 4.6. Xây dựng chương trình điều khiển đóng ngắt

        • 4.6.1. Xây dựng giao diện điều khiển

          • Hình 4.8. Giao diện thiết kế giám sát

        • 4.6.2. Thiết lập thuộc tính các đối tượng trong giao diện

          • Bảng 4.15. Các thuộc tính trong giao diện giám sát

        • 4.6.3. Giải thuật điều khiển đóng ngắt

          • Hình 4.9. Thuật toán điều khiển đóng ngắt

        • 4.6.4. Khai báo biến quản lý trạng thái toàn cục

          • Bảng 4.16. Quản lý biến trạng thái

        • 4.6.5. Khai báo thông số cố định

          • Bảng 4.17. Quản lý hằng số

        • 4.6.6. Khai báo ngõ vào ngõ ra trên GPIO

          • Bảng 4.18. Quản lý thứ tự chân ngõ ra GPIO

          • Bảng 4.19. Quản lý thứ tự chân ngõ vào GPIO

        • 4.6.7. Khai báo biến quản lý cài đặt

          • Bảng 4.20. Quản lý cài đặt

        • 4.6.8. Đa tiến trình

      • 4.7. Đồng bộ dữ liệu giữa board mạch và WebServer

        • 4.7.1. Quy ước mã và giãi mã

        • 4.7.2. Mở file và đóng file

          • Bảng 4.21. Mã hóa file dự phòng

        • 4.7.3. Thư viện URL trong Python

      • 4.8. Gửi dữ liệu lên Web Server

        • Hình 4.10. Thuật toán gửi dữ liệu lên Web Server

      • 4.9. Chế độ điều khiển bằng tay

        • 4.9.1. Thư viện GPIO

          • Bảng 4.22. Hàm điều khiển GPIO

        • 4.9.2. Thuật toán thực hiện

          • Hình 4.11. Thuật toán quét phím

      • 4.10. Phát triển Module công suất

        • 4.10.1. Điện áp và dòng điện ngõ ra GPIO

          • Bảng 4.23. Điện áp và dòng điện GPIO

        • 4.10.2. Sơ đồ khối mạch công suất

          • Hình 4.12. Kết cấu khối công suất

        • 4.10.3. Khối ổn áp nguồn

          • Hình 2.13. Sơ đồ chân IC ổn áp LM2576

        • 4.10.4. Khối tăng dòng

          • Hình 4.14. Sơ đồ chân và kiến trúc IC ULN2803

        • 4.10.5. Khối giao tiếp người dùng

          • Hình 4.15. Điện trở nối lên và điện trở nối xuống

          • Hình 4.16. Kết nối ngõ ra GPIO

        • 4.10.6. Khối đóng ngắt công suất

          • Bảng 4.24. Thông số của relay

        • 4.10.7. Các cổng giao tiếp mạch công suất

        • 4.10.8. Sơ đồ mạch công suất

          • Hình 4.17. Sơ đồ mạch công suất

    • CHƯƠNG 5. THỰC NGHIỆM VÀ KẾT QUẢ

      • 5.1. Chế tạo phần cứng

        • Hình 5.1. Mặt trước của sản phẩm

        • Hình 5.2. Mặt sau của sản phẩm

        • Hình 5.3. Mặt bên phải của sản phẩm

      • 5.2. Thiết lập chương trình điều khiển

        • 5.2.1. Đăng ký máy chủ

          • Bảng 5.1. Các tính năng của Host được sử dụng

        • 5.2.2. Cập nhật dữ liệu cho máy chủ

          • Bảng 5.2. Hệ thống tập tin máy chủ

        • 5.2.3. Các thiết lập trên chương trình quản lý

          • Hình 5.4. Giao diện giám sát trên board mạch Raspberry Pi

        • 5.2.4. Cài đặt ứng dụng lên thiết bị Android

          • Hình5.5. Biểu tượng của chương trình điều khiển trên thiết bị Android

      • 5.3 Kết quả thực nghiệm và đánh giá

        • 5.3.1. Kết quả thực nghiệm

          • Bảng 5.3. Kết quả thực nghiệm nhận dữ liệu từ thiết bị Android

          • Bảng 5.4. Kết quả thực nghiệm nhận dữ liệu từ thiết bị Android

        • 5.3.2. Đánh giá

  • C. KẾT LUẬN VÀ KHUYẾN NGHỊ

    • 1. Kết luận

    • 2. Khuyến nghị

  • TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan