Đề tài “Thiết kế và chế tạo máy huyết áp truyền dữ liệu không dây ứng dụngcông nghệ IoT.” cho phép người bệnh có thể đo để kiểm tra tình trạng huyết áp củamình, bao gồm các thông số như: huyết áp tâm thu (mức huyết áp cao), huyết tâmtrương (mức huyết áp thấp) và nhịp tim. Các số liệu đo được sẽ được lưu trữ dướidạng database, căn cứ vào các số liệu này thì hệ thống tiếp nhận sẽ gửi đến bộ phậngiám sát tình hình sức khỏe để điều động bác sĩ đến để có thể kịp thời chữa trị chobệnh nhân.Nội dung của đồ án nhóm sẽ đi sâu vô tìm hiểu về các thông số của huyết áp,cách đo huyết áp, cách truyền nhận dữ liệu giữa vi điều khiển trên Module ESP8266,tìm hiểu cách tạo ra giao diện của một trang web, lấy các thông tin đó để hiển thị trênweb.Kết quả nhóm đạt được sau khi thực hiện đề tài đó là thiết kế được máy đo huyếtáp bao gồm các thông số đã nêu trên, khối hiển thị các thông số rõ ràng, dễ quan sát.Tạo được một giao diện web thân thiện với người dùng, hiển thị được các thông sốsau khi đo được.
i 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 tháng năm 20 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Lê Minh Nhựt MSSV: 15141232 Trần Thanh Thái MSSV: 13141306 Chuyên ngành: Điện tử công nghiệp Mã ngành: 141 Hệ đào tạo: Đại học quy Mã hệ: Khóa: 2013-2015 Lớp:13141DT1A-15141DT2C Họ tên sinh viên: I TÊN ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO MÁY HUYẾT ÁP TRUYỀN DỮ LIỆU KHÔNG DÂY ỨNG DỤNG CÔNG NGHỆ IoT II NHIỆM VỤ Các số liệu ban đầu: Đối tượng nghiên cứu máy đo huyết áp, công nghệ không dây Kiến thức ESP8266, LCD, kiến thức lập trình cho vi điều khiển, ngôn ngữ để viết web Nội dung thực hiện: Thiết kế máy đo huyết áp cho bệnh nhân dùng cơng nghệ khơng dây gồm: tìm hiểu phương pháp đo huyết áp, bệnh huyết áp, cách truyền liệu không dây Module ESP với nhau, thiết kế giao diện trang web, thiết kế thi cơng mơ hình, viết chương trình điều khiển, viết báo cáo III NGÀY GIAO NHIỆM VỤ: 28/07/2019 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 28/12/2019 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Nguyễn Thanh Tâm CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ii 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Ự DO - HẠNH PHÚC o0o -Tp HCM, ngày 14 tháng 09 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Trần Thanh Thái Lớp: 13131DT1A MSSV: 13141306 Họ tên sinh viên 2: Lê Minh Nhựt Lớp: 15141DT2C MSSV: 15141232 Tên đề tài: Thiết kế chế tạo máy huyết áp truyền liệu không dây ứng dụng công nghệ IoT Tuần/ngày Tuần Nội dung cần thực Xác nhận GVHD Gặp GV môn để nghe phổ biến yêu cầu làm đồ án, nhận giấy giới thiệu làm đồ án Gặp GVHD để (02/09 – 08/09) Tuần (09/09 – 15/09) chọn đề tài GVHD tiến hành xét duyệt đề tài viết đề cương nộp lại Tuần - Tìm hiểu cách đo huyết áp (16/09 – 22/09) - Các phương pháp đo huyết áp Tuần (23/09 – 29/09) - Mô hoạt động altium - Kết nối Module thực tế để xem hoạt động Tuần - Thiết kế thi công máy đo huyết áp (30/09 – 06/10) Tuần - Lập trình cho Arduino (07/10 – 13/10) iii Tuần (14/10 – 20/10) Tuần (21/10 – 27/10) - Hồn chỉnh phần lập trình - Kiểm tra mạch chạy theo yêu cầu - Nghiên cứu, tìm hiểu cách đưa liệu lên Firebase thông qua ESP8266 - Nghiên cứu, tìm hiểu cách đưa liệu lên Tuần (28/10 – 03/11) Firebase thông qua ESP8266 - Lên ý tưởng thiết kế giao diện cho trang web thống nội dung hiển thị lên web Tuần 10 (04/11 – 10/11) Tuần 11 (11/11 – 17/11) Tuần 12 (18/11 – 24/11) - Tìm hiểu bước để tạo giao diện trang web - Tìm hiểu cách lấy liệu từ Firebase sang hiển thị trang web - Chạy thử nghiệm hệ thống hiệu chỉnh cho hệ thống hoạt động ổn định - Kiểm tra lại hệ thống để đảm bảo hệ thống làm Tuần 13 (25/11 – 01/12) việc với yêu cầu đặt - Kiểm tra lại hiển thị trang web giám sát để đảm bảo với yêu cầu Tuần 14 - Viết báo cáo ĐATN (02/12 – 08/12) - Hoàn thiện ĐATN gửi cho GVHD xem xét góp ý lần cuối trước in báo cáo Tuần 15 (09/12 – 15/12) - Viết tóm tắt báo cáo đồ án tốt nghiệp - Làm slide thuyết trình - In giấy tờ, phiếu điểm để bảo vệ iv Tuần 16 (16/12 – 22/12) - Nộp ĐATN - Chuẩn bị cho ngày bảo vệ GV HƯỚNG DẪN ThS Nguyễn Thanh Tâm v LỜI CAM ĐOAN Đề tài đồ án tốt nghiệp nhóm chúng em thực suốt học kỳ Trong q trình thực nhóm tham khảo số tài liệu trước để có thêm thơng tin kiến thức để phục vụ cho việc làm đề tài Nhóm cam kết khơng chép nội dung tài liệu khác Nếu có gian lận việc làm đề tài nhóm xin chịu trách nhiệm theo quy định Họ tên sinh viên Họ tên sinh viên Lê Minh Nhựt Trần Thanh Thái vi LỜI CẢM ƠN Nhóm xin gửi lời cảm ơn chân thành đến thầy Nguyễn Thanh Tâm giảng viên hướng dẫn nhóm việc thực đồ án tốt nghiệp học kỳ Nhờ dẫn tận tình, vạch hướng nhận xét kịp thời chúng em thực sai yêu cầu nên nhóm kịp thời sửa chữa, tìm kiếm tìm hiểu rõ lỗi sai sửa lỗi Nhóm gửi lời cảm ơn đến tồn thầy giảng dạy chúng em suốt trình học trường Đặc biệt, giảng viên khoa Điện – Điện tử dạy bảo, chia sẻ kiến thức chuyên ngành để nhóm áp dụng vơ đồ án tốt nghiệp cho cơng việc sau thân Nhóm cảm ơn đến bạn bè, anh chị có chia sẻ, trao đổi kiến thức, kinh nghiệm thực tế người cho nhóm gặp khó khăn Và cuối lời cảm ơn đến bậc phụ huynh, người thân gia đình Nhờ quan tâm, ủng hộ lời động viên người giúp nhóm hồn thành xong chương trình đại học để có kiến thức vào đời Xin chân thành cảm ơn! Họ tên sinh viên Họ tên sinh viên Lê Minh Nhựt Trần Thanh Thái vii MỤC LỤC TRANG BÌA………… ………………………… ……………………………….i NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii LỜI CAM ĐOAN vi LỜI CẢM ƠN vii MỤC LỤC viii LIỆT KÊ HÌNH VẼ xi LIỆT KÊ BẢNG xiii TÓM TẮT xiv Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ .1 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN .2 1.5 BỐ CỤC Chương CƠ SỞ LÝ THUYẾT .4 2.1 TÌM HIỂU VỀ HUYẾT ÁP 2.1.1 Huyết áp gì? 2.1.2 Các số huyết áp nhịp tim 2.1.3 Cách kiểm tra tình trạng huyết áp 2.2 GIỚI THIỆU VỀ ARDUINO 2.2.1 Tổng quan Arduino 2.2.2 Giới thiệu Arduino UNO R3 2.2.3 Giới thiệu Arduino Nano 10 2.3 GIỚI THIỆU VỀ MODULE ESP8266 16 2.3.1 Thông số phần cứng 16 2.3.2 Sơ đồ chân Module ESP8266 17 2.3.3 Giới thiệu Module ESP8266 NodeMCU 17 2.4 GIỚI THIỆU VỀ CẢM BIẾN ÁP SUẤT .20 2.5 GIỚI THIỆU VỀ LCD 1602 20 2.5.1 Thông số kỹ thuật 21 2.5.2 Chức chân LCD 1602 22 viii 2.6 GIỚI THIỆU VỀ FIREBASE 23 2.6.1 Tổng quan Firebase .23 2.6.2 Một số dịch vụ mà Firebase cung cấp 24 2.7 GIỚI THIỆU VỀ NGÔN NGỮ HTML 25 2.7.1 Khái quát ngôn ngữ HTML 25 2.7.2 Các thẻ HTML 25 2.8 GIỚI THIỆU VỀ NGÔN NGỮ CSS 26 Chương TÍNH TỐN VÀ THIẾT KẾ 27 3.1 GIỚI THIỆU 27 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 27 3.2.1 Thiết kế sơ đồ khối hệ thống 27 3.2.2 Tính tốn thiết kế mạch 29 3.2.3 Sơ đồ nguyên lý toàn mạch 36 3.3 THIẾT KẾ PHẦN MỀM 37 3.4 THIẾT KẾ GIAO DIỆN HIỂN THỊ CHO WEB 37 Chương THI CÔNG HỆ THỐNG .38 4.1 GIỚI THIỆU 38 4.2 THI CÔNG HỆ THỐNG .38 4.2.1 Thi công bo mạch 38 4.2.2 Lắp ráp kiểm tra .41 4.3 ĐÓNG GÓI VÀ THI CƠNG MƠ HÌNH 42 4.4 LẬP TRÌNH HỆ THỐNG 44 4.4.1 Lưu đồ giải thuật 44 4.4.2 Phần mềm lập trình cho vi điều khiển 47 4.4.3 Cách tạo database Firebase: 52 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 57 4.5.1 Viết tài liệu hướng dẫn sử dụng 57 4.5.2 Quy trình thao tác 58 Chương KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 60 5.1 KẾT QUẢ 60 5.1.1 Kết phần cứng 60 5.1.2 Kết phần mềm 61 5.1.3 Kết chạy thực nghiệm 62 5.1.4 Kết thống kê 64 5.2 NHẬN XÉT VÀ ĐÁNH GIÁ .65 ix 5.2.1 Về phần cứng 65 5.2.2 Về phần mềm 66 Chương KẾT LUẬN - HƯỚNG PHÁT TRIỂN 67 6.1 KẾT LUẬN 67 6.2 GIỚI HẠN CỦA ĐỀ TÀI 67 6.3 HƯỚNG PHÁT TRIỂN 68 TÀI LIỆU THAM KHẢO 69 PHỤ LỤC 70 x lcd.print(pulse_per_min); } } else if (timedisplay>1000&&timedisplay=200) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Red: Resume"); timecount=0; } } else { timedisplay=0; } if((analogRead(bt_resume) >= 900)&&(timepress2 >30)) { lcd.clear(); lcd.setCursor(0,0); lcd.print("White: Start"); lcd.setCursor(0,1); lcd.print("Grey: Stop"); currentState = startState; timepress2 = 0; systolic=0; diastolic=0; pulse_per_min=0; } } void reset_state(void) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 80 { if(timedisplay=200) { timecount=0; lcd.clear(); lcd.setCursor(0,0); lcd.print("Emergency Stop"); } } else if (timedisplay>1000&&timedisplay=200) { lcd.clear(); timecount=0; lcd.setCursor(0,0); lcd.print("Red: resume"); } } else { timedisplay=0; } if((analogRead(bt_resume) >= 900) && (timepress2 > 30)) { lcd.clear(); lcd.setCursor(0,0); lcd.print("White: Start"); lcd.setCursor(0,1); lcd.print("Grey: Stop"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 81 currentState = startState; timepress2 = 0; } } void pressuremeasure(void) { switch (meas_state) { case Sys_Measure: if(timing==0) sysmeasure(); //sampling signal at 40msec break; case Sys_Cal: if(timing==0) syscal(); break; case Rate_Measure: if(timing==0) ratemeasure(); break; case dias_Measure: diasmeasure(); break; case dias_Cal: diascal(); break; } //switch }//pressuremeasure void sysmeasure(void) { int data1; float adc_data1; data1 = analogRead(ADC1); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 82 delay(10); adc_data1 = (float)(((float)data1)/1023*Vref); pressure = (adc_data1/DC_gain)*6000; //9375 he so chuyen doi can tinh toan lai Serial.println(pressure); if(timing==0) { read_adc(0); } if(sys_count>=2) { meas_state = Sys_Cal; timecount=0; } if(timecount>=200) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Measuring"); lcd.setCursor(0,1); lcd.print("P = "); lcd.print(pressure); lcd.print("mmHg"); timecount=0; } } //*********************************************************** //this function is to calculate systolic pressure void syscal(void) { read_adc(1); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 83 if(timecount>=200){ lcd.clear(); lcd.setCursor(0,0); lcd.print("Sys Cal"); timecount=0; } }//syscal //************************************************************ void ratemeasure(void) { read_adc(0); //calculate the mean of pulse rate if(count_average==5) { pulse_period = total_pulse_period/5000; pulse_per_min= 60/pulse_period; lcd.clear(); lcd.setCursor(0,0); lcd.print("Pulse Rate"); lcd.setCursor(0,1); lcd.print(pulse_per_min); meas_state = dias_Measure; //then set timerun_dias=0 //also reset count_average for the next operation count_average=0; timerun_dias=0; } } //************************************************************ void diasmeasure(void) { int data1; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 84 float adc_data1; read_adc(0); data1 = analogRead(ADC1); adc_data1 = (float)(((float)data1)/1023*Vref); pressure = (adc_data1/DC_gain)*6000; //9375 he so chuyen doi can tinh toan lai if(timecount>=200) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Dia measuring"); //lcd.setCursor(0,1); //lcd.print("P = "); //lcd.print(pressure); //lcd.print(" mmHg"); timecount = 0; } }//dias measure //************************************************************* void diascal(void) { //choose ADC1 for reading DC read_adc(1); if(timecount>=200) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Dias_Cal"); timecount=0; } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 85 void read_adc(int Channel) { switch (Channel){ case 0: data = analogRead(ADC0); //Serial.println(data); break; case 1: data = analogRead(ADC1); break; } //then calculate adc_data into float; adc_data = (float)(((float)data)/1023*Vref); Serial.print(adc_data); Serial.print(" ");Serial.println(3.9); //if signal is above threshold, go to calculate systolic pressure if(meas_state ==Sys_Measure) { if(formerTH_sys){ sys_count++; //Serial.println("detect"); } former = adc_data; } // else if(meas_state==Sys_Cal) { if(count