Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 111 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
111
Dung lượng
7,35 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT Y SINH THIẾT KẾ VÀ THI CƠNG MƠ HÌNH GIÁM SÁT BỆNH NHÂN HƠN MÊ ỨNG DỤNG IoT GVHD: TS TRẦN VŨ HOÀNG SVTH: TRẦN HỒNG AN HUỲNH THỊ TRÚC LINH SKL008904 Tp.Hồ Chí Minh, tháng 6/2022 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 - - KHÓA LUẬN TỐT NGHIỆP NGÀNH KỸ THUẬT Y SINH ĐỀ TÀI: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH GIÁM SÁT BỆNH NHÂN HÔN MÊ ỨNG DỤNG IoT GVHD: TS Trần Vũ Hoàng SVTH: Trần Hoàng An MSSV: 18129001 SVTH: Huỳnh Thị Trúc Linh MSSV: 18129028 Tp Hồ Chí Minh – 06/2022 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 - - KHÓA LUẬN TỐT NGHIỆP NGÀNH KỸ THUẬT Y SINH ĐỀ TÀI: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH GIÁM SÁT BỆNH NHÂN HÔN MÊ ỨNG DỤNG IoT GVHD: TS Trần Vũ Hoàng SVTH: Trần Hoàng An MSSV: 18129001 SVTH: Huỳnh Thị Trúc Linh MSSV: 18129028 Tp Hồ Chí Minh – 06/2022 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc Tp HCM, ngày 21 tháng 06 năm 2022 NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: Trần Hoàng An Huỳnh Thị Trúc Linh Kỹ thuật Y Sinh Đại học quy 2018 MSSV: 18129001 MSSV: 18129028 Mã ngành: 7520212D Mã hệ: Lớp: 181290 I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CƠNG MƠ HÌNH GIÁM SÁT BỆNH NHÂN HÔN MÊ ỨNG DỤNG IoT II NHIỆM VỤ Các số liệu ban đầu: - NevonProjects, “Hệ thống giám sát dựa IoT cho bệnh nhân hôn mê”, Dự án điện tử, 23/04/2021 - Microtronics Technologies, “Theo dõi sức khỏe bệnh nhân dựa SMS Modem GSM”, 08/10/2020 - Dhiraj Sunehra, Shreeya Siddireddygari, “Hệ thống theo dõi sức khỏe bệnh nhân sử dụng Arduino Mega 2560 máy chủ Thingsboard”, Tạo chí Quốc tế Khoa học Công nghệ, 03/2020 Nội dung thực hiện: - Tham khảo tài liệu, đọc tóm tắt tài liệu đưa hướng giải đề tài - Tính tốn, thiết kế mạch nguyên lý khối hoạt động thiết bị - Lập trình vi điều khiển cho mạch nguyên lý hoạt động - Gửi, lưu trữ liệu lên web sở liệu PHPMyAdmin - Thi cơng mạch, thiết kế hồn thiện mơ hình - Chạy thử, kiểm tra, đánh giá hiệu chỉnh - Viết báo cáo thực - Bảo vệ luận văn III NGÀY GIAO NHIỆM VỤ: 25/02/2022 i IV NGÀY HOÀN THÀNH NHIỆM VỤ: 15/06/2022 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: CÁN BỘ HƯỚNG DẪN TS Trần Vũ Hoàng BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii 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ự - Hạnh phúc BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Tp HCM, ngày 21 tháng 06 năm 2022 LỊCH TRÌNH THỰC HIỆN KHĨA LUẬN TỐT NGHIỆP Họ tên sinh viên: Trần Hoàng An MSSV: 18129001 Họ tên sinh viên: Huỳnh Thị Trúc Linh MSSV: 18129028 Lớp: 181290 Tên đề tài: Thiết kế thi công mô hình giám sát bệnh nhân mê ứng dụng IoT Tuần/ngày Tuần Nội dung Xác nhận GVHD - Gặp GVHD để nghe phổ biến yêu cầu làm (24/02 – 02/03) đồ án, tiến hành chọn đồ án Tuần (03/03 – 09/03) Tuần - GVHD tiến hành xét duyệt đề tài - Tìm hiểu tổng quan đề tài, tham khảo tài (10/03 – 16/03) liệu đưa hướng giải đề tài Tuần - Tìm hiểu, lựa chọn linh kiện, cảm biến (17/03 – 23/03) cho đề tài Tuần - Tiến hành thiết kế sơ đồ khối, giải thích (24/03 – 30/03) chức khối Tuần (31/03 - 06/04) - Thiết kế sơ đồ ngun lý cho mơ hình - Lập trình Arduino nhận tín hiệu từ cảm biến iii - Lập trình khối cảnh báo Tuần (07/04 – 13/04) - Truyền liệu giao tiếp UART từ Arduino Uno sang Arduino Wemos Mega - Đọc không đồng giá trị cảm biến hiển thị lên LCD - Đọc không đồng giá trị cảm biến Tuần hiển thị lên LCD (14/04 – 20/04) - Lập trình cho việc gửi lưu trữ số liệu lên Web sở liệu PHPMyAdmin - Thiết kế mạch PCB, thi công mạch nguyên Tuần lý cho mô hình (21/04 – 27/04) - Lập trình cho việc gửi lưu trữ số liệu lên Web sở liệu PHPMyAdmin Tuần 10 - Thi công mạch nguyên lý cho mơ hình (28/04 – 03/05) - Thiết kế hộp cho mạch nguyên lý Tuần 11 - Lắp ráp linh kiện vào mạch nguyên lý (04/05 – 10/05) - Viết báo cáo chương 1, chương Tuần 12 - Tiếp tục viết báo cáo chương 1, chương (11/05 – 17/05) - Kiểm tra hoạt động mô hình Tuần 13 - So sánh kết với thiết bị thị trường (18/05 – 24/05) - Viết báo cáo chương 3, chương Tuần 14 - Hiệu chỉnh, kiểm tra hoạt động mơ hình (25/05 – 01/05) - Viết báo cáo chương 5, chương iv Tuần 15 (02/05 – 08/06) Tuần 16 - Tổng hợp chỉnh sửa báo cáo - Làm slide, báo cáo với GVHD (09/06 – 15/06) - Nộp báo cáo ĐATN GV HƯỚNG DẪN (Ký ghi rõ họ tên) v LỜI CẢM ƠN Trong suốt trình thực đồ án này, ngồi cố gắng nhóm nhóm nhận nhiều giúp đỡ, đóng góp ý kiến từ thầy cơ, anh chị bạn bè Chúng em xin chân thành cảm ơn đến thầy cô khoa Điện - Điện tử dạy cho chúng em kiến thức vô bổ ích để chúng em áp dụng vào đồ án lần xa áp dụng vào công việc tới Đặc biệt, chúng em xin gửi lời cảm ơn đến thầy Trần Vũ Hoàng hướng dẫn, góp ý tận tình, chia sẻ kinh nghiệm, lỗi sai giải đáp thắc mắc nhóm để nhóm hồn thành đề tài cách tốt Cuối cùng, nhóm chúng em xin chân thành cảm ơn gia đình, bạn bè, quan tâm, giúp đỡ, tạo điều kiện thuận lợi suốt trình học tập thực đồ án tốt nghiệp Xin chân thành cảm ơn! Sinh viên thực đề tài Trần Hoàng An Huỳnh Thị Trúc Linh vi LỜI CAM ĐOAN Nhóm xin cam đoan: Đề tài nhóm tự thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình có trước Mọi tham khảo sử dụng đồ án thích báo cáo vào danh mục tài liệu tham khảo Sinh viên thực đề tài Trần Hoàng An Huỳnh Thị Trúc Linh vii PHỤ LỤC Chương trình Arduino Wemos Mega Code đọc cảm biến đo mực nước - HC_SR04 void waterlevel() { unsigned long t; // biến đo thời gian int v; // biến lưu khoảng cách // Đọc giá trị thời gian tính khoảng cách /* Phát xung từ chân trig */ digitalWrite(trig, 0); // tắt chân trig delayMicroseconds(2); // phát xung từ chân trig digitalWrite(trig, 1); // xung có độ dài 10 us delayMicroseconds(10); // tắt chân trig digitalWrite(trig, 0); //* Tính tốn thời gian // Đo độ rộng xung HIGH chân echo t = pulseIn(echo, HIGH); // Tính khoảng cách đến vật v = (t * 0.034 / 2); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 78 PHỤ LỤC // Từ liệu khoảng cách xét mức nước tiểu if ((v > 10.42) && (v 9.66) && (v 8.48) && (v 7.34) && (v = 5.30) && (v 70) || (tem < 25) || (tem > 28) ) { tam = 1; // tam = mơ hình cảnh báo } else { tam = 0; } } Code đọc cảnh báo cảm biến phát chuyển động - HC_SR501 void chuyendong() { int value = digitalRead(PIR); if (value == HIGH) { cd = 0; digitalWrite(LED1, HIGH); digitalWrite(Buzzer, HIGH); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 80 PHỤ LỤC else { cd = 1; digitalWrite(LED1, LOW); digitalWrite(Buzzer, LOW); } } Code hiển thị phát chuyển động - HC_SR501 void printchuyendong() { if (cd == 0) { Serial.println("YES"); } if (cd == 1) { Serial.println("NO"); } } Code hiển thị cảnh báo giá trị nhiệt độ độ ẩm - DHT11 void printhcsr04() { if ((muc == 4) || (muc == 5)) { digitalWrite(Buzzer, LOW); digitalWrite(Buzzer, HIGH); digitalWrite(LED2, HIGH); Serial.println("Canh bao nuoc tieu qua muc"); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 81 PHỤ LỤC else { digitalWrite(LED2, LOW); digitalWrite(Buzzer, LOW); } Serial.print("Level:"); Serial.println(muc); } Code hiển thị LCD số nhịp tim, nhiệt độ, độ ẩm phòng, mức nước chuyển động bệnh nhân void tolcd() { // Hiển thị nhịp tim lcd.setCursor(0, 0); lcd.print("Nhip tim:"); lcd.setCursor(13, 0); if ((beatAvg < 99) && (beatAvg > 1)) { lcd.print(beatAvg); lcd.print(" "); } else { lcd.print(beatAvg); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 82 PHỤ LỤC if (beatAvg == 0) { lcd.setCursor(13, 0); lcd.print("00"); } // Hiển thị nhiệt độ, độ ẩm phòng lcd.setCursor(0, 1); lcd.print("Nhiet do:"); lcd.setCursor(13, 1); lcd.print(tem); lcd.setCursor(0, 2); lcd.print("Do am:"); lcd.setCursor(13, 2); if (hum < 99) { lcd.print(hum); lcd.print(" "); } lcd.print(hum); } else { lcd.setCursor(9, 3); lcd.print("Muc: "); lcd.print(muc); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 83 PHỤ LỤC // Hiển thị chuyển động bệnh nhân lcd.setCursor(0, 3); lcd.print("Cd:"); if (cd == 0) { lcd.setCursor(4, 3); lcd.print("YES"); } if (cd == 1) { lcd.setCursor(4, 3); lcd.print("NO "); } Code hiển thị cảnh báo giá trị nhịp tim void rev_heartrate() { Serial.print("BPM: "); Serial.println(beatAvg); if ((beatAvg > 100) || (beatAvg < 60)) { digitalWrite(Buzzer, LOW); digitalWrite(Buzzer, HIGH); digitalWrite(LED3, HIGH); } else { digitalWrite(LED3, LOW); digitalWrite(Buzzer, LOW); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 84 PHỤ LỤC Code nhận liệu Arduino Wemos Mega nhận từ Arduino Uno if (Serial1.available() > 3) { databpm[0] = Serial1.read(); if (databpm[0] == '0') { databpm[1] = Serial1.read() - 48; databpm[2] = Serial1.read() - 48; databpm[3] = Serial1.read(); if (databpm[3] == '0') { beatAvg = (databpm[1] * 10) + databpm[2]; Serial.print(beatAvg); } else { databpm[3] = databpm[3] - 48; beatAvg = (databpm[1] * 100) + (databpm[2] * 10) + databpm[3]; } } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 85 PHỤ LỤC Code đọc không đồng giá trị cảm biến + Khai báo định dạng thời gian chạy Job // * Khai báo job Timer::getInstance()->initialize(); khoangcachScheduler = new WorkScheduler(1000UL, khoangcach); chuyendongScheduler = new WorkScheduler(1000UL, chuyendong); waterlevelScheduler = new WorkScheduler(1000UL, waterlevel); nhietdodoamScheduler = new WorkScheduler(1000L, nhietdodoam); //* Định dạng thời gian chạy job printhcsr04Scheduler = new WorkScheduler(1000UL, printhcsr04); printdht11Scheduler = new WorkScheduler(1000UL, printdht11); printchuyendongScheduler = new WorkScheduler(1000UL, printchuyendong); printntScheduler = new WorkScheduler(1000UL, rev_heartrate); tolcdScheduler = new WorkScheduler(1000UL, tolcd); webScheduler = new WorkScheduler(1000UL, senttoweb); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 86 PHỤ LỤC + Cập nhật thời điểm khởi chạy Job void loop() { Timer::getInstance()->update(); webScheduler->update(); khoangcachScheduler->update(); chuyendongScheduler->update(); waterlevelScheduler->update(); nhietdodoamScheduler->update(); printntScheduler->update(); printchuyendongScheduler->update(); printhcsr04Scheduler->update(); printdht11Scheduler->update(); tolcdScheduler->update(); Timer::getInstance()->resetTick(); } Chương trình ESP Khai báo đường dẫn trang Web lưu trữ liệu const char* serverName = "http://mohinhquanlibn.000webhostapp.com//postdata.php"; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 87 PHỤ LỤC Chương trình gửi liệu lên Web sở liệu PHPMyAdmin void loop() { StaticJsonBuffer jsonBuffer; JsonObject& data = jsonBuffer.parseObject(Serial); if (data == JsonObject::invalid()) { //Serial.println("Invalid Json Object"); jsonBuffer.clear(); return; } Serial.println("JSON Object Recieved"); NHIPTIM = data["NHIPTIM"]; NHIETDO = data["NHIETDO"]; DOAM = data["DOAM"]; MUCNUOCTIEU = data["MUCNUOCTIEU"]; cd = data["CHUYENDONG"]; Serial.println(NHIPTIM); Serial.println(NHIETDO); Serial.println(DOAM); Serial.println(MUCNUOCTIEU); Serial.println(CHUYENDONG); if (cd == 1) { CHUYENDONG = "NO"; } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 88 PHỤ LỤC else if (cd == 0) { CHUYENDONG = "YES"; } if (WiFi.status() == WL_CONNECTED) { HTTPClient http; http.begin(serverName); http.addHeader("Content-Type","application/x-wwwform-urlencoded"); // * Chuẩn bị cho việc gửi liệu String httpRequestData = "api_key=" + apiKeyValue + "&NHIPTIM=" + NHIPTIM + "&NHIETDO=" + NHIETDO + "&DOAM=" + DOAM + "&MUCNUOCTIEU=" + MUCNUOCTIEU + "&CHUYENDONG=" + CHUYENDONG + ""; Serial.print("httpRequestData: "); Serial.println(httpRequestData); int httpResponseCode = http.POST(httpRequestData); if (httpResponseCode > 0) { Serial.print("HTTP Response code: "); Serial.println(httpResponseCode); } else { Serial.print("Error code: "); Serial.println(httpResponseCode); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH 89 PHỤ LỤC http.end(); } else { Serial.println("WiFi Disconnected"); } delay(2000); } Code gửi liệu lên web database webhost Khai báo thông tin database webhost để kết nối // khai báo thông tin web $servername = "localhost"; $dbname = "id19103686_mohinhtheodoibnhm"; $username = "id19103686_mohinhtheodoi_bnhm"; $password = "/