Nghiên cứu chế tạo hệ thống quản lý xe máy bằng Smartphone SPKT Hồ Chí Minh.

145 140 0
Nghiên cứu chế tạo hệ thống quản lý xe máy bằng Smartphone  SPKT Hồ Chí Minh.

Đ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

1. Tên đề tài: Nghiên cứu và chế tạo hệ thống quản lý xe máy bằng smartphone. 2. Các số liệu, tài liệu ban đầu: Phần mềm Android Studio 2.3.2. Công cụ lập trình Intergrated Development Environment (IDE). Sơ đồ mạch điện xe Future neo. 3. Nội dung thực hiện đề tài: Thiết kế App ứng dụng quản lý xe máy trên Smartphone Android. Thiết kế thiết bị quản lý xe giao nhận dữ liệu với Smartphone. Lắp đặt thiết bị và cho vận hành trên xe máy. Cải tiến thiết bị để đạt được hiệu suất hoạt động tốt nhất. 4. Sản phẩm: App Android . Thiết bị thu nhận dữ liệu từ xe máy Quyển thuyết minh Đồ Án. Đĩa CD thuyết minh đề tài. File in 3D .

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨUCHẾ TẠO HỆ THỐNG QUẢN XE MÁY BẰNG SMARTPHONE TP.Hồ Chí Minh, Ngày 12 tháng 10 Năm 2018 i CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc *** -TP Hồ Chí Minh, ngày 15 tháng 07 năm 2017 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Ngày nhận đề tài: 20/03/2017 Ngày nộp đề tài: 15/07/2017 Tên đề tài: Nghiên cứu chế tạo hệ thống quản xe máy smartphone Các số liệu, tài liệu ban đầu: - Phần mềm Android Studio 2.3.2 - Cơng cụ lập trình Intergrated Development Environment (IDE) - Sơ đồ mạch điện xe Future neo Nội dung thực đề tài: - Thiết kế App ứng dụng quản xe máy Smartphone Android - Thiết kế thiết bị quản xe giao nhận liệu với Smartphone - Lắp đặt thiết bị cho vận hành xe máy - Cải tiến thiết bị để đạt hiệu suất hoạt động tốt Sản phẩm: - App Android - Thiết bị thu nhận liệu từ xe máy - Quyển thuyết minh Đồ Án - Đĩa CD thuyết minh đề tài - File in 3D TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN ii CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Tên đề tài: Nghiên cứu chế tạo hệ thống quản xe máy smartphone NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ ) TP Hồ Chí Minh, ngày 15 tháng 07 năm 2017 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) iii CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Tên đề tài: Nghiên cứu chế tạo hệ thống quản xe máy smartphone Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ:………………………………………….) TP Hồ Chí Minh, ngày 15 tháng 07 năm 2017 Giáo viên phản biện (Ký & ghi rõ họ tên) iv LỜI MỞ ĐẦU  Hiện xu hướng ứng dụng IoT vào thiết bị sống hàng ngày phổ biến thơng dụng, với nhiều lợi ích mà ứng dụng IoT mang lại Xu hướng IoT tràn ngập mảng Smarthome, Smartgarden,… len lỏi vào lĩnh vực ôtô Xu hướng ứng dụng IoT vào xe tất yếu ứng dụng tuyệt vời mà IoT mang lại Với mục đích muốn ứng dụng thiết bị IoT vào việc quản xe máy để thu thập liệu xe mức nhiên liệu, số Km, tốc độ xe,… từ đưa cảnh báo cần thiết giúp cho người sử dụng quản phương tiện cách hiệu an tồn trước vấn nạn trộm xe máy Mục đích nhóm muốn việc quản xe máy người dùng tối ưu tiện lợi nhất, sử dụng thơng qua điện thoại cá nhân từ việc quản xe người dùng tiện lợi nhiều Từ mục đích nhóm đến định thực Đồ Án “ Nghiên cứu chế tạo hệ thống quản xe máy Smartphone.” qua sự hướng dẫn thầy Vũ Đình Huấn Do thời gian kiến thức có hạn nên khơng thể tránh khỏi thiếu sót Kính mong q thầy bạn tận tình góp ý để phiên sau hoàn thiện hơn.! TP.HCM, Ngày 15 tháng 07 năm 2017 Nhóm thực đề tài : v LỜI CẢM ƠN  Để hoàn thành Đồ Án em xin cảm ơn đến tất quý thầy cô giúp đỡ tận tình suốt trình học tập tình thực đề tài Tốt nghiệp Xin chân thành cảm ơn Ban giám hiệu trường Đại học Sư Phạm Kỹ Thuật Hồ Chí Minh tạo điều kiện thuận lợi cho chúng em hoàn thành tốt Đồ Án Tốt Nghiệp Quá trình thực Đồ Án vỏn vẹn tháng khoảng thời gian chúng em học nhiều thứ, củng cố nhiều kiến thức bổ ích mà q trình học thầy truyền đạt Chắc chắn rằng, kiến thức hành trang quý báu hỗ trợ chúng em công việc mà sau trường chúng em ứng dụng vào Q trình làm Đồ Án chúng em khơng tránh khỏi thiếu sót sản phẩm cuối, chúng em mong nhận ý kiến đóng góp từ thầy để từ chúng em rút thiếu sót tư nghiên cứu, tư lập trình TP.HCM, Ngày 15 tháng 07 năm 2017 Nhóm thực đề tài : vi TĨM TẮT ĐỒ ÁN NGHIÊN CỨU CHẾ TẠO HỆ THỐNG QUẢN XE MÁY BẰNG SMARTPHONE 1.Tóm tắt Hiện nay, nhu cầu thiết bị quản xe máy vô lớn nước ta nước mà phương tiện giao thông lại chủ yếu người dân xe máy thực tế sản phẩm quản lý, bảo vệ xe máy trước tầm mắt kẻ trộm chưa có nhiều giá lại cao, tính sản phẩm chưa phát triển nhiều Nắm bắt nhu cầu thị trường hạn chế sản phẩm có thị trường nhóm có ý tưởng nghiên cứu chế tạo thiết bị quản lý, giám sát xe máy thông qua điện thoại thông minh nhằm đơn giản hóa việc quản xe máy người sử dụng, phát triển thêm nhiều tính cho thiết bị để thiết bị hỗ trợ người dùng nhiều hiệu Sau thời gian nghiên cứu, nhóm thực việc thiết kế sản phẩm lắp đặt xe máy, thiết bị thu thập tín hiệu xe mức xăng mà xe có, số km mà xe đi, tốc độ xe, tọa độ xe, mã lỗi từ xử tín hiệu đầu vào, gửi liệu đến điện thoại chạy hệ điều hành Android để người dùng cập nhật thông tin cần thiết nhằm quản xe máy họ như: bật tắt chống trộm từ xa, tìm xe bãi đỗ, báo bảo dưỡng, báo hết xăng, báo tốc độ, cảnh báo trộm xe, đọc mã lỗi xe dễ dàng bảo vệ xe người sử dụng cách an toàn vii 2.Nội dung Tổng quan giao nhận liệu thiết bị Smartphone Hình : Nguyên hoạt động thiết bị viii Giải thích Hình 1: Trên Hình sơ đồ nguyên hoạt động giao nhận liệu thiết bị lắp xe máy điện thọai Smartphone thông qua cách : Giao nhận gián tiếp thông qua Webserver gửi nhận liệu trực tiếp điện thoại thiết bị lắp xe máy Dữ liệu truyền nhận thông tin xe mà người dùng quan tâm như: mức xăng, số Km xe đi, lệnh bảo dưỡng, tốc độ, lệnh cảnh báo,… Quá trình nhận gửi liệu gián tiếp điện thoại thiết bị lắp xe thơng qua Webserver Q trình giao nhận liệu gồm tiến trình xảy độc lập nhau: Gửi – nhận liệu thiết bị lắp xe máy thông qua mạng 3G Webserver Nhận – gửi liệu Smartphone Webserver thông qua mạng 3G Wifi xe Quá trình nhận gửi liệu trực tiếp điện thoại thiết bị lắp Ở trình này, liệu truyền trực tiếp điện thoại thiết bị lắp xe không thông qua Webserver mà thông qua mạng Lan(mạng nội bộ) , áp dụng xe hết lưu lượng 3G chế độ chờ( tắt khóa xe) Quá trình truyền nhận liệu phụ thuộc tức Smartphone có kết nối thiết bị gửi liệu ix Sản phẩm thực tế Nhóm thiết kế sản phẩm quản xe máy thông qua điện thoại Smartphone Android lắp đặt thực tế xe hoạt động Hình 2: Thiết bị quản xe máy vỏ hộp Hình : Board mạch bên hộp x isThongBaoBaoDuong = isThongBaoQuaTocDo = isThongBaoTromXe = isThongBaoHetXang = false; mPlayerTromXe = MediaPlayer.create(MapsActivity.this, R.raw.tat_chong_trom_khoi_dong_xe); mPlayerTromXe.setAudioStreamType(AudioManager.STREAM_MUSIC); mPlayerTromXe.setLooping(true); mPlayerBaoDuong = MediaPlayer.create(MapsActivity.this, R.raw.bao_duong); mPlayerBaoDuong.setAudioStreamType(AudioManager.STREAM_MUSIC); mPlayerHetXang = MediaPlayer.create(MapsActivity.this, R.raw.gan_het_xang); mPlayerHetXang.setAudioStreamType(AudioManager.STREAM_MUSIC); mPlayerQuaTocDo = MediaPlayer.create(MapsActivity.this, R.raw.max_speed); mPlayerQuaTocDo.setAudioStreamType(AudioManager.STREAM_MUSIC); setUpMap(); Connect.setListener(mListener); if (!TextUtils.isEmpty(Connect.getIPAddress())) { Connect.login("12345678"); } } @Override protected void onStop() { super.onStop(); Connect.close(); if(alertDialog != null) { alertDialog.dismiss(); 106 } } private void setUpMap() { if (mMap == null) { ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; mMap.getUiSettings().setZoomControlsEnabled(true); setPosition(mLat, mLng); } }); } } double tmpLat = 0, tmpLng = 0; private void setPosition(double lat, double lng) { if(Math.abs(lat-tmpLat) > 0.01 || Math.abs(lng-tmpLng) > 0.01) { tmpLat = lat; tmpLng = lng; LatLng latLng = new LatLng(lat, lng); 107 mMap.clear(); mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 13)); MarkerOptions option = new MarkerOptions(); option.title("Vị trí xe"); option.snippet(latLng.latitude + ", " + latLng.longitude); option.position(latLng); Marker currentMarker = mMap.addMarker(option); currentMarker.showInfoWindow(); } } Chương trình ứng với trường hợp thỏa mãn điều kiện private AlertDialog alertDialog; public void canhBao(int id){ switch (id) { case 1: { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Thông báo (─‿‿─)"); builder.setMessage("Xe bạn đến hạn bảo dưỡng! Hãy đem xe bảo dưỡng bạn ^.^"); builder.setCancelable(false); builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); 108 mPlayerBaoDuong.stop(); mPlayerBaoDuong = null; } }); if (alertDialog != null) { alertDialog.dismiss(); } alertDialog = builder.create(); alertDialog.show(); } break; case 2: { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Cảnh báo (─‿‿─)"); builder.setMessage("Xe bạn vượt tốc độ!"); builder.setCancelable(false); builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); } }); if (alertDialog != null) { alertDialog.dismiss(); 109 } alertDialog = builder.create(); alertDialog.show(); } break; case 3: { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Thông Báo (─‿‿─)"); builder.setMessage("Hãy tắt chức Chống Trộm để khởi động xe bạn ! ^.^"); builder.setCancelable(false); builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); mPlayerTromXe.stop(); mPlayerTromXe = null; } }); if (alertDialog != null) { alertDialog.dismiss(); } alertDialog = builder.create(); alertDialog.show(); 110 } break; case 4: { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Cảnh báo (─‿‿─)"); builder.setMessage("Xe bạn hết xăng! ^.^"); builder.setCancelable(false); builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); mPlayerHetXang.stop(); mPlayerHetXang = null; } }); if (alertDialog != null) { alertDialog.dismiss(); } alertDialog = builder.create(); alertDialog.show(); } break; case 5: { AlertDialog.Builder builder = new AlertDialog.Builder(this); 111 builder.setTitle("Thông báo mã lỗi (─‿‿─) "); builder.setMessage(maLoi); builder.setCancelable(false); builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { dialogInterface.dismiss(); isShowMaLoi = false; if (isBaoDuong) { if (!isThongBaoBaoDuong) { canhBao(1); isThongBaoBaoDuong = true; if (mPlayerBaoDuong != null && !mPlayerBaoDuong.isPlaying()) { mPlayerBaoDuong.start(); } } } } }); if (alertDialog != null) { alertDialog.dismiss(); } alertDialog = builder.create(); 112 alertDialog.show(); } break; } } } 113 3.Code Webserver import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Timer; import java.util.TimerTask; public class MainApp { private static ServerSocket serverSocket; public static void main(String[] arg) { System.out.println("Start"); new Server().start(); } 114 static class Server extends Thread { public void run() { Socket socket = null; try { serverSocket = new ServerSocket(1234); } catch (IOException e) { e.printStackTrace(); } while (!Thread.currentThread().isInterrupted()) { try { socket = serverSocket.accept(); System.out.println("******** Client connect ********"); new Client(socket).start(); } catch (Exception e) { } } } }; public static final List listClient = new ArrayList(); public static final Map mapData = new HashMap(); public static class Client extends Thread { public Socket socket; 115 public PrintWriter output; public BufferedReader input; public int id = 0; public Client(Socket socket) { this.socket = socket; listClient.add(this); try { input = new BufferedReader(new InputStreamReader(socket.getInputStream())); output = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); } catch (IOException ex) { ex.printStackTrace(); } } @Override public void run() { int index; while (!Thread.currentThread().isInterrupted()) { try { String data = input.readLine(); if(data == null || data.equals("")) { break; 116 } // System.out.println(data); if(id == 0) { index = data.indexOf("ID"); id = Integer.parseInt(data.substring(index+3)); } else { Data dt = mapData.get(id); if(dt == null) { dt = new Data(); mapData.put(id, dt); } if(data.indexOf("GET DATA") >= 0) { output.println("LAT=" + dt.lat); output.println("LON=" + dt.lon); output.println("KM=" + dt.km); output.println("XANG=" + dt.xang); output.println("BAODUONG=" + (dt.isBaoDuong ? : 0)); output.println("KHOAXE=" + dt.khoaXe); } else if((index = data.indexOf("LAT")) >= 0) { dt.lat = Double.parseDouble(data.substring(index + 4)); sendAll(this, data); } else if((index = data.indexOf("LON")) >= 0) { dt.lon = Double.parseDouble(data.substring(index + 4)); sendAll(this, data); 117 } else if((index = data.indexOf("KM")) >= 0) { dt.km = Double.parseDouble(data.substring(index + 3)); sendAll(this, data); } else if((index = data.indexOf("XANG")) >= 0) { dt.xang = Double.parseDouble(data.substring(index + 5)); sendAll(this, data); } else if(data.indexOf("BAODUONG=1") >= 0) { dt.isBaoDuong = true; sendAll(this, data); } else if(data.indexOf("BAODUONG=0") >= 0) { dt.isBaoDuong = false; sendAll(this, data); } else if(data.indexOf("RESET") >= 0) { dt.isBaoDuong = false; sendAll(this, data); } else if(data.indexOf("FIND") >= 0) { sendAll(this, data); } else if(data.indexOf("MAXSPEED") >= 0) { sendAll(this, data); } else if(data.indexOf("TROMXE") >= 0) { sendAll(this, data); } else if(data.indexOf("KHOAXE=0") >= 0) { dt.khoaXe = 0; sendAll(this, data); 118 } else if(data.indexOf("KHOAXE=1") >= 0) { dt.khoaXe = 1; sendAll(this, data); } else if(data.indexOf("STOP") >= 0) { sendAll(this, data); } else if(data.indexOf("START") >= 0) { sendAll(this, data); } } } catch(Exception e) { System.out.println("Close"); break; } } try { input.close(); output.close(); socket.close(); } catch(Exception e) { e.printStackTrace(); } } private void sendAll(Client client, String data) { 119 for(Client c : listClient) { if(c != client) { c.output.println(data); c.output.flush(); } } } } public static class Data { public double lat; public double lon; public double km; public double xang; public boolean isBaoDuong; public int khoaXe = 0; } } 120 ... lên xe máy thu nhận liệu cở xe số Km xe đi, mức xăng xe, tốc độ xe, tọa độ xe, gửi liệu App cài Smartphone nhận liệu điều khiển từ Smartphone - Thiết bị lắp ráp lên xe không làm thay đổi sai lệch... liệu Smartphone thiết bị quản lý xe máy 29 3.6.1 Yêu cầu việc gửi nhận liệu xe Smartphone 29 3.6.2 Phương án đề .29 3.7 Cơ sở lý thuyết đọc lỗi xe ( Áp dụng xe FI... nghiên cứu, nhóm thực việc thiết kế sản phẩm lắp đặt xe máy, thiết bị thu thập tín hiệu xe mức xăng mà xe có, số km mà xe đi, tốc độ xe, tọa độ xe, mã lỗi từ xử lý tín hiệu đầu vào, gửi liệu đến

Ngày đăng: 10/12/2018, 21:50

Từ khóa liên quan

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

Tài liệu liên quan