Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 117 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
117
Dung lượng
6,3 MB
Nội dung
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ROBOT VẬN CHUYỂN MẪU XÉT NGHIỆM TRONG BỆNH VIỆN GVHD: ThS Ngô Bá Việt SVTH: Đinh Việt Hùng MSSV: 14141137 SVTH: Đặng Thị Huỳnh Như MSSV: 14141219 Tp Hồ Chí Minh - 01/2019 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: ROBOT VẬN CHUYỂN MẪU XÉT NGHIỆM TRONG BỆNH VIỆN GVHD: ThS Ngô Bá Việt SVTH: Đinh Việt Hùng MSSV: 14141137 SVTH: Đặng Thị Huỳnh Như MSSV: 14141219 Tp Hồ Chí Minh - 01/2019 Báo cáo đồ án tốt nghiệp TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o Tp HCM, ngày 07 tháng 01 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Đinh Việt Hùng MSSV: 14141137 Đặng Thị Huỳnh Như MSSV: 14141219 Chuyên ngành: Điện tử công nghiệp Mã ngành: 14941 Hệ đào tạo: Đại học quy Mã hệ: K14941 Khóa: 2014 Lớp: 14941DT I TÊN ĐỀ TÀI: ROBOT VẬN CHUYỂN MẪU XÉT NGHIỆM TRONG BỆNH VIỆN II NHIỆM VỤ Các số liệu ban đầu: - Mô đun ESP8266, thiết bị ngoại vi cảm biến siêu âm, động servo, động giảm tốc - Kit Raspberry Pi Model B Raspberry Pi Camera Rev 1.3 - Điện thoại chạy hệ điều hành Android Nội dung thực hiện: - Tìm hiểu xử lý ảnh, thư viện OpenCV phương pháp nhận dạng đường - Tìm hiểu phương pháp trực tiếp hình ảnh lên web tĩnh - Lựa chọn phần cứng, nghiên cứu, phân tích nguyên tắc hoạt động khối để xây dựng mơ hình hồn chỉnh cho hệ thống - Lập trình Linux, HTML, Python Raspbery Pi - Lập trình Android phần mềm Android Studio - Lập trình Arduino III NGÀY GIAO NHIỆM VỤ: 03/10/2018 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH i Báo cáo đồ án tốt nghiệp IV NGÀY HOÀN THÀNH NHIỆM VỤ: 19/01/2018 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Ngô Bá Việt CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii Báo cáo đồ án tốt nghiệp TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN - ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o Tp HCM, ngày 07 tháng 01 năm 2018 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Đinh Việt Hùng Lớp: 14941DT MSSV: 14141137 Họ tên sinh viên 2: Đặng Thị Huỳnh Như Lớp: 14941DT Tên đề tài: MSSV: 14141219 ROBOT VẬN CHUYỂN MẪU XÉT NGHIỆM TRONG BỆNH VIỆN Tuần/ngày 1/10/2018 - Nội dung Xác nhận GVHD Chọn đề tài 7/10/2018 8/10/2018 - Viết đề cương chi tiết 14/11/2018 15/10/2018 - Tìm hiểu xử lý ảnh, phương pháp nhận dạng 21/10/2018 đường 22/10/2018 - Cài đặt hệ điều hành thư viện cho 28/10/2018 Raspberry Pi, tìm hiểu ngơn ngữ lập trình Python Raspberry Pi 29/10/2018 - Thiết kế thi công khung robot 4/11/2018 5/11/2018 - Vẽ sơ đồ khối, sơ đồ nguyên lý, sơ đồ nối dây 11/11/2018 tiến hành lắp ráp mơ hình 12/11/2018 - Lập trình Android, lập trình Linux, lập trình 9/12/2018 Python, lập trình Arduino BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii Báo cáo đồ án tốt nghiệp 10/12/2018 - Hồn thành mơ hình 23/12/2018 Kiểm tra hoạt động robot 24/12/2018 - Chỉnh sửa lỗi phần cứng lỗi lập trình 30/12/2018 Kiểm tra lại hoạt động robot 31/12/2018 - Viết báo cáo 6/1/2019 GV HƯỚNG DẪN (Ký ghi rõ họ tên) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iv Báo cáo đồ án tốt nghiệp LỜI CAM ĐOAN Đề tài nhóm chúng tơi thực có tham khảo số tài liệu cơng trình nghiên cứu đính kèm tài liệu tham khảo không chép từ tài liệu hay cơng trình có trước Người thực đề tài Đinh Việt Hùng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Đặng Thị Huỳnh Như v Báo cáo đồ án tốt nghiệp LỜI CẢM ƠN Nhóm thực đề tài xin chân thành cảm ơn Thầy Ths.Ngô Bá Việt thầy cô Khoa Điện - Điện Tử tận tình hướng dẫn, truyền đạt kinh nghiệm quý báu hỗ trợ phương tiện vật tư suốt trình tìm hiểu, nghiên cứu đề tài Đặc biệt xin cảm ơn cha mẹ tạo điều kiện cho học tập, nghiên cứu Luôn động viên, quan tâm ủng hộ thời gian qua Ngồi ra, nhóm xin cảm ơn chia sẻ, hỗ trợ từ anh chị, bạn bè khoa hướng dẫn giới thiệu tài liệu tham khảo thêm việc thực nghiên cứu Trân trọng Nhóm thực đồ án Đinh Việt Hùng – Đặng Thị Huỳnh Như BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH vi Báo cáo đồ án tốt nghiệp MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii LỜI CAM ĐOAN v LỜI CẢM ƠN vi MỤC LỤC vii DANH MỤC HÌNH xi DANH MỤC BẢNG xiv DANH MỤC CÁC TỪ VIẾT TẮT xv CHƯƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 ROBOT VẬN CHUYỂN PHỤC VỤ TRONG LĨNH VỰC Y TẾ 2.1.1 Giới thiệu 2.1.2 Một số robot vận chuyển bệnh viện 2.1.2.1 Robot Noah 2.1.2.2 Robot RP7 2.1.2.3 Robot vận chuyển chất thải y tế Anh 2.1.2.4 Robot TUG 2.2 PHƯƠNG PHÁP NHẬN DẠNG LINE 2.2.1 Giới thiệu 2.2.2 Thuật toán Contour 2.2.2.1 Giới thiệu 2.2.2.2 Thuật toán 2.2.3 Thuật toán Moment 12 2.2.3.1 Giới thiệu 12 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH vii Báo cáo đồ án tốt nghiệp 2.2.3.2 Thuật toán 12 2.3 NGƠN NGỮ LẬP TRÌNH PYTHON .14 2.3.1 Giới thiệu .14 2.3.2 Đặc điểm 15 2.4 THƯ VIỆN OPENCV 15 2.4.1 Giới thiệu .15 2.4.2 Đặc điểm .15 2.5 BỘ TRUYỀN NHẬN UART 16 2.6 GIỚI THIỆU VỀ WEB SERVER VÀ NGƠN NGỮ LẬP TRÌNH HTML 17 2.6.1 Khái niệm web server 17 2.6.2 Nguyên lí hoạt động web server 18 2.6.3 Các giao thức sử dụng web server 18 2.6.3.1 Giao thức HTTP 18 2.6.3.2 Giao thức FTP 19 2.6.4 Khái niệm ngơn ngữ lập trình HTML 19 2.6.5 Cấu trúc HTML 20 2.7 CÁC CHUẨN TRUYỀN THÔNG KHÔNG DÂY 21 2.7.1 Một số công nghệ kết nối truyền thông không dây 21 2.7.2 Tìm hiểu chuẩn IEEE 802.11 .22 2.7.3 Tìm hiểu chuẩn IEEE 208.16 23 2.8 TỔNG QUAN VỀ PHẦN CỨNG 24 2.8.1 Kit Raspberry Pi Model B 24 2.8.2 Mô đun Raspberry Pi Camera 25 2.8.3 Tổng quan ESP8266 NodeMCU Lua CP1202 26 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 27 3.1 GIỚI THIỆU 27 3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG .27 3.2.1 Thiết kế sơ đồ khối .27 3.2.2 Thiết kế phần cứng .28 3.2.2.1 Khối điều khiển xử lý trung tâm 28 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH viii PHỤ LỤC DO AN TOT NGHIEP """ class StreamingOutput(object): def init (self): self.frame = None self.buffer = io.BytesIO() self.condition = Condition() def write(self, buf): if buf.startswith(b'\xff\xd8'): self.buffer.truncate() with self.condition: self.frame = self.buffer.getvalue() self.condition.notify_all() self.buffer.seek(0) return self.buffer.write(buf) class StreamingHandler(server.BaseHTTPRequestHandler): def do_GET(self): if self.path == '/': self.send_response(301) self.send_header('Location', '/index.html') self.end_headers() elif self.path == '/index.html': content = PAGE.encode('utf-8') self.send_response(200) self.send_header('Content-Type', 'text/html') self.send_header('Content-Length', len(content)) self.end_headers() self.wfile.write(content) elif self.path == '/stream.mjpg': self.send_response(200) self.send_header('Age', 0) self.send_header('Cache-Control', 'no-cache, private') self.send_header('Pragma', 'no-cache') self.send_header('Content-Type', 'multipart/x-mixed-replace; boundary=FRAME') self.end_headers() try: while True: with output.condition: output.condition.wait() frame = output.frame self.wfile.write(b' FRAME\r\n') self.send_header('Content-Type', 'image/jpeg') self.send_header('Content-Length', len(frame)) self.end_headers() self.wfile.write(frame) self.wfile.write(b'\r\n') except Exception as e: logging.warning( self.client_address, str(e)) else: self.send_error(404) self.end_headers() class StreamingServer(socketserver.ThreadingMixIn, server.HTTPServer): BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 86 PHỤ LỤC allow_reuse_address = True daemon_threads = True with picamera.PiCamera(resolution='480x240', framerate=24) as camera: output = StreamingOutput() camera.rotation = 180 camera.start_recording(output, format='mjpeg') try: address = ('', 8000) server = StreamingServer(address, StreamingHandler) server.serve_forever() finally: camera.stop_recording() Code Arduino nạp cho ESP8266 file NodeMCUcontrolRobo.ino: #include #include #include #define A1 15 #define B1 #define A2 #define B2 #define IN_FOR 14 #define IN_RIGHT 12 #define IN_LEFT 13 #define servo_ver 16 #define servo_hor Servo verti; Servo hori; int sped = 500; int sped1 = 5; int led=0; int mode_control = 0; int value_ver = 512; int value_hor = 512; int ang_ver = 90; int ang_hor = 90; int val_for = 0; int val_right = 0; int val_left = 0; int mode_ = 0; String tt; IPAddress ip (192,168,1 ,150); IPAddress gateway (192,168,1 ,1 ); IPAddress subnet (255,255,255,0 ); IPAddress dns (192,168,1 ,1 ); const char* ssid = "Nam Dep Trai"; const char* password = "Namdeptrai@123"; WiFiServer server(80); void setup() { pinMode(A1,OUTPUT); pinMode(B1,OUTPUT); pinMode(A2,OUTPUT); pinMode(B2,OUTPUT); pinMode(IN_FOR,INPUT); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 87 PHỤ LỤC pinMode(IN_RIGHT,INPUT); pinMode(IN_LEFT,INPUT); digitalWrite(A1, digitalWrite(B1, digitalWrite(A2, digitalWrite(B2, LOW); LOW); LOW); LOW); digitalWrite(IN_FOR, LOW); digitalWrite(IN_LEFT, LOW); digitalWrite(IN_RIGHT, LOW); verti.attach(servo_ver); hori.attach(servo_hor); verti.write(90); hori.write(90); Serial.begin(9600); delay(10); //Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.config(ip,dns,gateway,subnet); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); server.begin(); Serial.println("Server started"); // Print the IP address Serial.println(WiFi.localIP()); } void loop() { if(mode_ == 0) { val_for = digitalRead(IN_FOR); val_right = digitalRead(IN_RIGHT); val_left = digitalRead(IN_LEFT); if(val_left==LOW && val_for == LOW && val_right==LOW) { digitalWrite(A1, LOW); digitalWrite(B1, LOW); digitalWrite(A2, LOW); digitalWrite(B2, LOW); } else if(val_left==LOW && val_for == HIGH && val_right==LOW) { analogWrite(A1, sped); digitalWrite(B1, LOW); analogWrite(A2, sped); digitalWrite(B2, LOW); } else if(val_left==LOW && val_for == LOW && val_right==HIGH) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 88 PHỤ LỤC { analogWrite(A1, sped); digitalWrite(B1, LOW); digitalWrite(A2, LOW); analogWrite(B2, sped); } else if(val_left==HIGH && val_for == LOW && val_right==LOW) { digitalWrite(A1, LOW); analogWrite(B1, sped); analogWrite(A2, sped); digitalWrite(B2, LOW); } } // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; } // Wait until the client sends some data //Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String request = client.readStringUntil('\r'); client.flush(); Serial.print(request); Serial.print("\n"); if(request.indexOf("thamdo")!=-1) { mode_ = 1; } else if(request.indexOf("tuhanh")!=-1) { mode_ = 0; } if(request.indexOf("motor")!=-1) { mode_control = 0; } else if (request.indexOf("servo")!=-1) { mode_control = 1; } Serial.println(mode_); Serial.println(mode_control); if(mode_ == 1) { if(mode_control == 0) { if(request.indexOf("tien")!=-1){ analogWrite(A1, sped); digitalWrite(B1, LOW); analogWrite(A2, sped); digitalWrite(B2, LOW); Serial.println("thang"); tt = "tien"; request=" "; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 89 PHỤ LỤC else if(request.indexOf("lui")!=-1){ digitalWrite(A1, LOW); analogWrite(B1, sped); digitalWrite(A2, LOW); analogWrite(B2, sped); Serial.println("lui"); tt = "lui"; request=" "; } else if(request.indexOf("trai")!=-1){ digitalWrite(A1, LOW); analogWrite(B1, sped); analogWrite(A2, sped); digitalWrite(B2, LOW); Serial.println("trai"); tt = "trai"; request=" "; } else if(request.indexOf("phai")!=-1){ analogWrite(A1, sped); digitalWrite(B1, LOW); digitalWrite(A2, LOW); analogWrite(B2, sped); Serial.println("phai"); tt = "phai"; request=" "; } if(request.indexOf("dung")!=-1){ digitalWrite(A1, LOW); digitalWrite(B1, LOW); digitalWrite(A2, LOW); digitalWrite(B2, LOW); Serial.println("dung"); tt = "dung"; request=" "; } } else { if(request.indexOf("tien")!=-1){ ang_ver = ang_ver + sped1; request=" "; } else if(request.indexOf("lui")!=-1){ ang_ver = ang_ver - sped1; request=" "; } else if(request.indexOf("trai")!=-1){ ang_hor = ang_hor + sped1; request=" "; } else if(request.indexOf("phai")!=-1){ ang_hor = ang_hor - sped1; request=" "; } verti.write(ang_ver); hori.write(ang_hor); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 90 PHỤ LỤC if(request.indexOf("100")!=-1){ sped = 100; sped1 = 3; request=" "; } else if(request.indexOf("200")!=-1){ sped = 200; sped1 = 4; request=" "; } else if(request.indexOf("300")!=-1){ sped = 300; sped1 = 5; request=" "; } else if(request.indexOf("400")!=-1){ sped = 400; sped1 = 6; request=" "; } else if(request.indexOf("500")!=-1){ sped = 500; sped1 = 7; request=" "; } else if(request.indexOf("600")!=-1){ sped = 600; sped1 = 8; request=" "; } else if(request.indexOf("700")!=-1){ sped = 700; sped1 = 9; request=" "; } else if(request.indexOf("800")!=-1){ sped = 800; sped1 = 10; request=" "; } else if(request.indexOf("900")!=-1){ sped = 900; sped1 = 11; request=" "; } else if(request.indexOf("1000")!=-1){ sped = 1023; sped1 = 12; request=" "; } if(tt=="tien") { // Serial.print("gui len tien"); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("tien"); tt=" "; request=" "; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 91 PHỤ LỤC } else if(tt=="lui") { // Serial.print("gui len lui"); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("lui"); tt=" "; request=" "; } else if(tt=="trai") { // Serial.print("gui len trai"); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("trai"); tt=" "; request=" "; } else if(tt=="phai") { // Serial.print("gui len phai"); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("phai"); tt=" "; request=" "; } else { // Serial.print("gui len dung"); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("dung"); tt=" "; request=" "; } } Code giao diện Android file activity_main.xml: Code Android file MainActivity.java package com.example.viethung.datn; import import import import import import import import import import import import import import import import import import import import android.support.v7.app.AppCompatActivity; android.os.Bundle; android.content.Context; android.net.ConnectivityManager; android.net.NetworkInfo; android.os.AsyncTask; android.view.MotionEvent; android.view.View; android.webkit.WebSettings; android.webkit.WebView; android.webkit.WebViewClient; android.widget.Button; android.widget.CompoundButton; android.widget.EditText; android.widget.RadioButton; android.widget.RadioGroup; android.widget.SeekBar; android.widget.Switch; android.widget.TextView; android.widget.Toast; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 95 PHỤ LỤC import java.io.IOException; public class MainActivity extends AppCompatActivity { WebView displayYoutubeVideo; Button btn_forwad,btn_back,btn_left,btn_right; TextView trangthai; SeekBar seekBar; Switch screen, door; RadioGroup Radiogroupmode; RadioButton Rbtnservo, Rbtnmotor; String frameVideo = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_forwad = (Button) findViewById(R.id.forward); btn_back = (Button) findViewById(R.id.back); btn_left = (Button) findViewById(R.id.left); btn_right = (Button) findViewById(R.id.right); seekBar = (SeekBar) findViewById(R.id.seekBar); screen = (Switch) findViewById(R.id.sw); trangthai = (TextView) findViewById(R.id.txttrangthai); displayYoutubeVideo = (WebView) findViewById(R.id.webview); Rbtnservo = (RadioButton) findViewById(R.id.radioButton_servo); Rbtnmotor = (RadioButton) findViewById(R.id.radioButton_motor); Radiogroupmode = (RadioGroup) findViewById(R.id.radioGroup_mode); displayYoutubeVideo.setVisibility(View.INVISIBLE); displayYoutubeVideo.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }); WebSettings webSettings = displayYoutubeVideo.getSettings(); webSettings.setJavaScriptEnabled(true); displayYoutubeVideo.loadData(frameVideo, "text/html", "utf-8"); screen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { displayYoutubeVideo.setVisibility(View.VISIBLE); dulieu("thamdo"); } else { displayYoutubeVideo.setVisibility(View.INVISIBLE); } } }); Radiogroupmode.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 96 PHỤ LỤC public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { } case R.id.radioButton_servo: { dulieu("servo"); break; } case R.id.radioButton_motor: { dulieu("motor"); break; } } }); btn_forwad.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){ dulieu("tien"); } if(motionEvent.getAction()==MotionEvent.ACTION_UP){ dulieu ("dung"); btn_right.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){ dulieu ("phai"); } if(motionEvent.getAction()==MotionEvent.ACTION_UP){ dulieu ("dung"); } return false; } }); btn_left.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){ dulieu ("trai"); } if(motionEvent.getAction()==MotionEvent.ACTION_UP){ dulieu ("dung"); } return false; } }); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 97 PHỤ LỤC return false; } }); btn_back.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){ dulieu("lui"); } if(motionEvent.getAction()==MotionEvent.ACTION_UP){ dulieu("dung"); btn_right.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){ dulieu("phai"); } if(motionEvent.getAction()==MotionEvent.ACTION_UP){ dulieu("dung"); } return false; } }); btn_left.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){ dulieu("trai"); } if(motionEvent.getAction()==MotionEvent.ACTION_UP){ dulieu("dung"); } return false; } }); } return false; } }); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean fromUser) { dulieu(String.valueOf((i+1)*100)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 98 PHỤ LỤC } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } @Override public void onBackPressed() { if(displayYoutubeVideo.canGoBack()) { displayYoutubeVideo.goBack(); }else { super.onBackPressed(); } } public void dulieu(String lenh){ ConnectivityManager connectivityManager =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if(networkInfo != null && networkInfo.isConnected()){ String url = "http://192.168.1.150/"; new Guilenserver().execute(url + lenh); }else{ Toast.makeText(MainActivity.this, "Gui that bai",Toast.LENGTH_LONG).show(); } } private class Guilenserver extends AsyncTask { @Override public String doInBackground(String url) { return Geturl.Guilenh(url[0]); } @Override public void onPostExecute(String result) { if(result != null){ if(result.contains("tien")){ trangthai.setText("xe tiến"); } else if(result.contains("lui")){ trangthai.setText("xe lùi"); } else if(result.contains("trai")){ trangthai.setText("rẽ trái"); } else if(result.contains("phai")){ trangthai.setText("rẽ phải"); } else if(result.contains("mot")){ trangthai.setText("rẽ phải"); } else if(result.contains("muoi")){ trangthai.setText("rẽ trái"); } else if(result.contains("bon")){ trangthai.setText("lùi phải"); } else if(result.contains("bay")){ trangthai.setText("lùi trái"); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 99 PHỤ LỤC else if(result.contains("dung")){ trangthai.setText("xe dừng"); } }else{ Toast.makeText(MainActivity.this, "Khong co phan hoi",Toast.LENGTH_LONG).show(); } } } } Code Android file Geturl.java package com.example.viethung.datn; import import import import java.io.IOException; okhttp3.OkHttpClient; okhttp3.Request; okhttp3.Response; public class Geturl { public static String Guilenh(String urllenh){ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() url(urllenh) build(); try{ Response response = client.newCall(request).execute(); return response.body().string(); }catch (IOException erro){ return erro.toString(); } } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Trang 100 ... THUYẾT 2.1 ROBOT VẬN CHUYỂN PHỤC VỤ TRONG LĨNH VỰC Y TẾ 2.1.1 Giới thiệu 2.1.2 Một số robot vận chuyển bệnh viện 2.1.2.1 Robot Noah 2.1.2.2 Robot RP7 ... cố định - Robot hoạt động ổn định môi trường nhà với đầy đủ ánh sáng 1.5 BỐ CỤC Chương 1: Tổng quan Trong chương này, đồ án trình bày tổng quan robot robot hỗ trợ y tế số ứng dụng robot vào... phòng khác - Trong q trình di chuyển, robot phát vật cản sau dừng lại phát âm cảnh báo - Ở chế độ điều khiển, robot đảm nhận thêm vai trò giám sát Các nhân viên y tế điều khiển di chuyển robot điều