Đồ án Thiết kế và thi công thiết bị giám sát nhịp tim và nồng độ oxy trong máu

pdf 114 trang phuongvu95 32133
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án Thiết kế và thi công thiết bị giám sát nhịp tim và nồng độ oxy trong máu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdo_an_thiet_ke_va_thi_cong_thiet_bi_giam_sat_nhip_tim_va_non.pdf

Nội dung text: Đồ án Thiết kế và thi công thiết bị giám sát nhịp tim và nồng độ oxy trong máu

  1. 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 18 tháng 12 năm 2019 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Phi Lân MSSV: 15141195 Kim Thanh Huy MSSV: 15141171 Chuyên ngành: Công Nghệ Kĩ Thuât Điện tử Truyền Thông Mã ngành: 11 Hệ đào tạo: Đại học chính quy-Sư phạm Mã hệ: 1 Khóa: 2015 Lớp: 159410DT I. TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU II. NHIỆM VỤ 1. Các số liệu ban đầu: - Nguyễn Đình Phú, “Giáo trình vi xử lý ”, NXB ĐH Quốc Gia Tp.HCM, 2014 - Nguyễn Hữu Phương, “Xử lí tín hiệu số”, NXB ĐH Quốc Gia Tp.HCM, 2015 - Khoa Y,“ Kĩ thuật đo và phân tích điện tâm đồ bình thường”, NXB ĐH Quốc Gia Tp.HCM, 2015. - Nguyễn Thanh Hoàng, Nguyễn Khoa Nam, “THIẾT KẾ VÀ THI CÔNG VÒNG TAY ĐO NHỊP TIM SỬ DỤNG CÔNG NGHỆ IoTs”, Đồ Án Tốt Nghiệp ĐH, Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2019. 2. Nội dung thực hiện: - NỘI DUNG 1: Tiến hành nguyên cứu về nhịp tim và đồ thị điện tim . - NỘI DUNG 2: Đọc cảm biến thu được giá trị và cho đi qua 3 bộ lọc bằng vi xử lí - truyền giá trị thu được qua chuẩn truyền không dây. - NỘI DUNG 3:Nhận dữ liệu từ chuẩn truyền không giao tiếp với vi điều khiển chính qua chuẩn truyền UART. - NỘI DUNG 4 : Thiết kế board mạch điều khiển màn hình chuẩn FSMC và khối nhận dữ liệu - NỘI DUNG 5: Xử lí và xuất dữ liệu lên màn hình LCD dạng số và dạng điện tim. - NỘI DUNG 6: Viết ứng dụng Android hiển thị các dữ liệu trên màn hình LCD ii
  2. - NỘI DUNG 7: Thiết kế và thi công mô hình hệ thống hoàn chỉnh - NỘI DUNG 8: Đánh giá kết quả thực hiện và so sánh với các thiết bị đang có trên thị trường. - NỘI DUNG 9: Viết báo cáo đề tài. III. NGÀY GIAO NHIỆM VỤ: 28/08/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. Phan Vân Hoàn CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH iii
  3. 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 15 tháng 12 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Nguyễn Phi Lân Lớp: 159410DT MSSV:15141195 Họ tên sinh viên 2: Kim Thanh Huy Lớp: 159410DT MSSV:15141171 Tên đề tài: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU Xác nhận Tuần/ngày Nội dung GVHD Tuần 1 - Gặp GVHD để nghe phổ biến yêu cầu làm đồ án, tiến hành chọn đề tài, GVHD tiến hành xét duyệt đề (26/8 - 2/9) tài. Tuần 2 - Viết đề cương tóm tắt nội dung đồ án. (3/9 - 10/3) - Tìm hiểu nhịp tim và đồ thị điện tim. Tuần 3 - Tìm hiểu về công nghệ truyền không dây của (11/9 - 18/9) NodeMCU ESP8266. Tuần 4 -Tìm hiểu về màn hình TFT 7 inch. (19/9 - 26/9) - Hiển thị thông số, đồ thị trên màn hình LCD TFT - Tiến hành vẽ mạch nguyên lí và mạch PCB trên Altium cho board STM32F407 điều khiển màn hình Tuần 5 - Tìm hiểu và nghiên cứu hiển thị dạng sóng điện tim (27/9 - 4/10) trên màn hình LCD, và điện thoại Android. - Tiến hành hàn linh kiện mạch in và kiểm tra. Tuần 6 - Tìm hiểu cách lập trình trên app Inventer (5/10 - 12/10) - Thiết kế board đo nhịp tim với vi điều khiển Tuần 7 - Lập trình điều khiển hiển thị trên STM32F4 (13/10 - 20/10) iv
  4. - Lập trình trên ESP8266 Node MCU giao tiếp với Tuần 8 cảm biến nhịp tim MAX30100. (21/10 - 28/10) - Tiến hành truyền và nhận dữ liệu giữa 2 module Tuần 9 - 10 ESP8266. - Hoàn thiện app Android hiển thị nhịp tim và tín (29/11 - 12/11) hiệu điện tim. Tuần 11 - Hiển thị giá trị nhịp tim và đồ thị điện tim trên màn hình LCD TFT (13/11 - 20/11) Tuần 12 - 13 - Hoàn thiện và cải tiến chương trình. (21/11 - 5/12) Tuần 14 - Tiến hành đóng gói mô hình và hoàn thiện sản phẩm (6/5- 12/5) - Tiến hành viết báo cáo cho đề tài Tuần 15 - Chỉnh sửa báo cáo theo yêu cầu GVHD (6/12 – 13/12) Tuần 16-17 - Nộp quyển báo cáo và báo cáo đề tài. (14/12 - 28/12) - Thiết kế Slide báo cáo. GV HƯỚNG DẪN (Ký và ghi rõ họ và tên) v
  5. LỜI CAM ĐOAN Đề tài này là công trình do bản thân nhóm tự thực hiện dựa vào một số tài liệu trước đó và dưới sự hướng dẫn của ThS.Phan Vân Hoàn. Các số liệu trong đề tài được nhóm thu thập và không sao chép từ tài liệu hay công trình nào khác. Người thực hiện đề tài NGUYỄN PHI LÂN KIM THANH HUY LỜI CẢM ƠN Em xin gởi lời cảm ơn sâu sắc đến Thầy Phan Vân Hoàn _ Giảng viên bộ môn Điện tử công nghiệp – y sinh đã trực tiếp hướng dẫn và tận tình giúp đỡ tạo điều kiện để hoàn thành tốt đề tài. Em xin gửi lời chân thành cảm ơn các thầy cô trong Khoa Điện-Điện Tử và các anh chị khóa trước đã tạo những điều kiện tốt nhất cho em hoàn thành đề tài. Em cũng gửi lời đồng cảm ơn đến các bạn lớp 159410 đã chia sẻ trao đổi kiến thức cũng như những kinh nghiệm quý báu trong thời gian thực hiện đề tài. Cảm ơn đến cha mẹ, người thân đã ở bên cạnh động viên trong suốt quá trình thực hiện đề tài này Xin chân thành cảm ơn! Người thực hiện đề tài NGUYỄN PHI LÂN KIM THANH HUY vi
  6. LỜI CẢM ƠN Em xin gởi lời cảm ơn sâu sắc đến Thầy Phan Vân Hoàn _ Giảng viên bộ môn Điện tử công nghiệp – y sinh đã trực tiếp hướng dẫn và tận tình giúp đỡ tạo điều kiện để hoàn thành tốt đề tài. Em xin gửi lời chân thành cảm ơn các thầy cô trong Khoa Điện-Điện Tử và các anh chị khóa trước đã tạo những điều kiện tốt nhất cho em hoàn thành đề tài. Em cũng gửi lời đồng cảm ơn đến các bạn lớp 159410 đã chia sẻ trao đổi kiến thức cũng như những kinh nghiệm quý báu trong thời gian thực hiện đề tài. Cảm ơn đến cha mẹ, người thân đã ở bên cạnh động viên trong suốt quá trình thực hiện đề tài này Xin chân thành cảm ơn! Người thực hiện đề tài NGUYỄN PHI LÂN KIM THANH HUY vii
  7. MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình iv Cam đoan vi Lời cảm ơn vii Mục lục viii Liệt kê hình vẽ xii Liệt kê bảng vẽ xv Tóm tắt xii Chương 1. TỔNG QUAN Error! Bookmark not defined. 1.1. ĐẶT VẤN ĐỀ Error! Bookmark not defined. 1.2. MỤC TIÊU Error! Bookmark not defined. 1.2.1 Đối tượng và phạm vi nghiên cứu Error! Bookmark not defined. 1.2.2 Phương pháp nghiên cứu Error! Bookmark not defined. 1.3. NỘI DUNG NGHIÊN CỨU Error! Bookmark not defined. 1.4. GIỚI HẠN Error! Bookmark not defined. 1.5. BỐ CỤC Error! Bookmark not defined. Chương 2. CƠ SỞ LÝ THUYẾT Error! Bookmark not defined. 2.1 LÍ THUYẾT VỀ NHỊP TIM VÀ PHƯƠNG PHÁP ĐO ĐIỆN TIM . Error! Bookmark not defined. 2.1.1 Khái niệm nhịp tim Error! Bookmark not defined. 2.1.2 Nồng độ oxy trong máu Error! Bookmark not defined. 2.1.3 Quá trình điện học của tim. Error! Bookmark not defined. 2.1.4 Đo nhịp tim bằng phương pháp hấp thụ quang họcError! Bookmark not defined. viii
  8. 2.2 CÁC CHUẨN GIAO TIẾP GIỮA CÁC MODULE Error! Bookmark not defined. 2.2.1 Chuẩn giao tiếp I2C giữa MAX30100 và ESP8266 Node MCU. Error! Bookmark not defined. ix
  9. 2.2.2 Chuẩn giao tiếp UART giữa STM32F407 và ESP8266 Node MCUError! Bookmark not defined. 2.2.3 Chuẩn truyền không dây theo giao thức UDP Error! Bookmark not defined. Chương 3. TÍNH TOÁN VÀ THIẾT KẾ 19 3.1 GIỚI THIỆU Error! Bookmark not defined. 3.2 THIẾT KẾ SƠ ĐỒ KHỐI HỆ THỐNG Error! Bookmark not defined. 3.3 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNGError! Bookmark not defined. 3.3.1 Thiết kế khối cảm biến đô nhịp tim Error! Bookmark not defined. a. Chức năng Error! Bookmark not defined. b. Lựa chọn linh kiện Error! Bookmark not defined. c. Thông số kỹ thuật Error! Bookmark not defined. d. Sơ đồ nguyên lý Error! Bookmark not defined. e. Giải thích sơ đồ nguyên lí Error! Bookmark not defined. 3.3.2 Thiết kế khối vi điều khiển đọc cảm biến và giao tiếp wifi Error! Bookmark not defined. a. Chức năng Error! Bookmark not defined. b. Lưa chọn linh kiện Error! Bookmark not defined. c. Thông số kỹ thuật Error! Bookmark not defined. d. Sơ đồ nguyên lý Error! Bookmark not defined. e. Giải thích nguyên lí Error! Bookmark not defined. 3.3.3 Thiết kế khối giao tiếp wifi Error! Bookmark not defined. a. Chức năng Error! Bookmark not defined. b. Lựa chọn linh kiện Error! Bookmark not defined. c. Thông số kĩ thuật Error! Bookmark not defined. x
  10. d. Sơ đồ nguyên lí 29 e. Giải thích sơ đồ nguyên lí 29 3.3.4 Thiết kế khối xử lý trung tâm điều khiển hiển thị Error! Bookmark not defined. a. Chức năng Error! Bookmark not defined. b. Lựa chọn linh kiện Error! Bookmark not defined. c. Thông số kĩ thuật 31 d. Sơ đồ nguyên lý Error! Bookmark not defined. e. Giải thích sơ đồ nguyên lí Error! Bookmark not defined. 3.3.5 Thiết kế khối hiển thị giao diện người dùng Error! Bookmark not defined. a. Chức năng Error! Bookmark not defined. b. Lựa chọn linh kiện Error! Bookmark not defined. c. Thông số kỹ thuật Error! Bookmark not defined. d. Sơ đồ nguyên lí Error! Bookmark not defined. e. Giải thích sơ đồ nguyên lí Error! Bookmark not defined. 3.3.6 Thiết kế khối nguồn Error! Bookmark not defined. a. Chức năng Error! Bookmark not defined. b. Lựa chọn linh kiện Error! Bookmark not defined. c. Thông số kỹ thuật Error! Bookmark not defined. d. Sơ đồ nguyên lí 40 e. Giải thích sơ đồ nguyên lí 40 3.4 SƠ ĐỒ NGUYÊN LÍ TOÀN MẠCH Error! Bookmark not defined. 3.4.1 Sơ đồ nguyên lí Error! Bookmark not defined. 3.4.2 Giải thích sơ đồ nguyên lí Error! Bookmark not defined. xi
  11. Chương 4. THI CÔNG HỆ THỐNG Error! Bookmark not defined. 4.1 GIỚI THIỆU Error! Bookmark not defined. 4.2 THI CÔNG HỆ THỐNG Error! Bookmark not defined. 4.2.1 Thi công bo mạch Error! Bookmark not defined. a. Liệt kê linh kiện Error! Bookmark not defined. b. Tiến hành vẽ PCB Error! Bookmark not defined. 4.2.2 Lắp ráp và kiểm tra Error! Bookmark not defined. 4.3 ĐÓNG GÓI MÔ HÌNH Error! Bookmark not defined. 4.4 LẬP TRÌNH HỆ THỐNG 51 4.4.1 Lưu đồ giải thuật 51 4.4.2 Phần mềm lập trình cho vi điều khiển 54 a. Phần mềm lập trình ESP8266 Error! Bookmark not defined. b. Phần mềm STM32CubeMX và Keil C V5 Error! Bookmark not defined. 4.4.3 Phần mềm lập trình Android 63 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC Error! Bookmark not defined. Chương 5. KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁ 70 5.1 KẾT QUẢ 70 5.1.1 Giao diện App Android 70 5.1.2 Mô hình chạy thực tế Error! Bookmark not defined. 5.1.3 Kết quả so với đồng hồ fitbit. Error! Bookmark not defined. 5.2 NHẬN XÉT 80 5.3 ĐÁNH GIÁ 81 Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 80 xii
  12. 6.1 KẾT LUẬN 82 6.2 HƯỚNG PHÁT TRIỂN 82 TÀI LIỆU THAM KHẢO 84 PHỤ LỤC 85 xiii
  13. LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1: Các thể Hemoglobin tác động qua màng 8 Hình 2.2: Quá trình điện học của tim 10 Hình 2.3: Đo nhịp tim bằng phương pháp hấp thụ quang học 11 Hình 2.4: Chuẩn giao tiếp I2C 13 Hình 2.5: Truyền UART 15 Hình 2.6: So sánh giao thức truyền TCP và UDP 17 Hình 3.1: Sơ đồ khối hệ thống 19 Hình 3.2: Nguyên lí hoạt động LED hồng ngoại 21 Hình 3.3: Hình ảnh cảm biến MAX30100 22 Hình 3.4: Sơ đồ nguyên lý cảm biến MAX30100 22 Hình 3.5: Sơ đồ chân ESP8266 NodeMCU CP2102 25 Hình 3.6: Sơ đồ nguyên lý ESP_8266 và MAX30100 26 Hình 3.7: Sơ đồ nguyên lý ESP_8266 Node MCU CH340 28 Hình 3.8 Mạch giao tiếp esp8266 với vi điều khiển chuẩn UART 29 Hình 3.9 Ứng dụng ARM trong kĩ thuật điện tử 30 Hình 3.10: Hình ảnh chip STM32F407VET6 kiểu đóng gói LQF1000 32 Hình 3.11: Sơ đồ nguyên lí STM32F407VET6 giao tiếp ngoại vi 33 Hình 3.12: Mạch Reset vi điều khiển mức thấp 34 Hình 3.13: Mạch tạo dao động và thời gian thực 34 Hình 3.14: Hình ảnh LCD TFT mặt trước 37 Hình 3.15: Hình ảnh LCD TFT mặt sau 37 Hình 3.16: Giao tiếp LCD TFT với vi điều khiển chuẩn FSMC 38 Hình 3.17: Mạch hạ áp LM2596 40 Hình 3.18: Sơ đồ nguyên lí mạch hạ áp 40 Hình 3.19 Sơ đồ nguyên lí board đọc cảm biến và truyền dữ liệu 42 Hình 3.20 Sơ đồ nguyên lí board nhận dữ liệu và hiển thị 43 Hình 4.1: PCB lớp trên Board STM điều khiển màn hình 47 Hình 4.2: PCB lớp dưới Board STM điều khiển màn hình 48 Hình 4.3: PCB định vị SMD Board STM điều khiển màn hình 48 Hình 4.4: Mô phỏng mạch giao tiếp màn hình 49 xiv
  14. CHƯƠNG 1. TỔNG QUAN Hình 4.5: Mạch cảm biến đo nhịp tim 50 Hình 4.6: Mặt trước màn hình hiển thị kết quả 51 Hình 4.7: Mặt cấp nguồn và nút nhấn reset 51 Hình 4.8: Lưu đồ thuật toán chương trình đọc cảm biến và truyền dữ liệu 52 Hình 4.9 Lưu đồ thuật toán chương trình con ghép chuỗi dữ liệu nhịp tim 53 Hình 4.10 Lưu đồ thuật toán chương trình con ghép chuỗi tín hiệu điện tim 54 Hình 4.11 Lưu đồ thuật toán nhận dữ liệu và hiển thị 55 Hình 4.12 Giao diện Aduino IDE mới khởi động 56 Hình 4.13 Giao diện Aduino IDE lập trình 57 Hình 4.14 Tiến hành tổng hợp và nạp chương trình 58 Hình 4.15 Giao diện khởi động chương trình STM32CubeMX 58 Hình 4.16 Tạo 1 Project mới 59 Hình 4.17 Giao diện cấu hình vi điều khiển 60 Hình 4.18 Cấu hình xung clock cho mạch 61 Hình 4.19 Lưu thông tin project và sinh code 61 Hình 4.20 Cấu hình cho mạch nạp 62 Hình 4.21 Cấu hình cho mạch reset 63 Hình 4.22 Tiến hành compile và nạp chương trình 64 Hình 4.23 Giao diện tạo project MIT INVENTER 65 Hình 4.24 Thiết kế giao diện người dùng 66 Hình 4.25 Các lệnh lập trình cơ bản 67 Hình 4.26 Màn hình thiết bị khi cấp nguồn khởi động 68 Hình 4.27 Cách đặt tay trên cảm biến như hình 68 Hình 4.28 Màn hình hiển thị kết quả LCD 69 Hình 5.1 Giao diện màn hình khởi động của App 70 Hình 5.2 Giao diện màn hình chính của App 71 Hình 5.3 Giao diện đo ID1 của App 72 Hình 5.4 Giao diện đo ID2 của App 73 Hình 5.5 Giao diện đo Dual của App 74 Hình 5.6 Giao diện thông tin liên hệ 75 Hình 5.7 Giao diện khi hệ thống được cấp nguồn 76 xiii
  15. Hình 5.8 Giao diện đo khi chỉ có 1 cảm biến hoạt động 76 Hình 5.9 Giao diện đo khi cả 2 cảm biến cùng hoạt động 77 Hình 5.10 Đồng hồ thể thao Fitbit theo dõi tình trạng sức khỏe 78 Hình 5.11 Vị trí đeo đồng hồ ở cổ tay 79 xiv
  16. LIỆT KÊ BẢNG Bảng Trang Bảng 2.1: Chỉ số HR phụ thuộc vào giới tính và độ tuổi 6 Bảng 2.2: Chỉ số HR đối với trạng thái hoạt động cơ thể . 7 Bảng 3.1: Bảng sơ đồ kết nối chân vi điều khiển 35 Bảng 3.2: Bảng dòng điện tiêu thụ của các thiết bị sử dụng 39 Bảng 4.1. Danh sách các linh kiện. 45 Bảng 5.1. Bảnh so sánh mô hình với đồng hồ thể thao 79 xv
  17. TÓM TẮT Chúng ta có thể thấy, những sự cố ảnh hưởng đến sức khỏe có thể xảy ra bất cứ lúc nào với chúng ta cũng như sự quan tâm chưa đúng về tim mạch thường xuyên trong đời sống thường ngày. Vì thế, chúng em đã đưa ra ý tưởng làm một thiết bị đo điện tim nhỏ gọn. Mục đích giúp chúng ta có thể theo dõi sức khỏe của người sử dụng một cách linh hoạt nhất. Ở thiết bị sẽ có chức năng đo nhịp tim và nồng độ oxy trong máu kết hợp với dạng điện tim. Vì vậy chúng em thực hiện đề tài “THIẾT KẾ VÀ THI CÔNG MÁY ĐO ĐIỆN TIM” mang lại những chức năng rất cần thiết để đảm bảo tính mạng và sức khỏe cho mọi người. Cũng như chức năng theo dõi nhịp tim giúp chúng ta biết và điều chỉnh các hoạt động tối ưu, có lợi cho sức khỏe, không gây hại hoặc chấn thương. Hệ thống gồm mạch đo sử dụng cảm biến MAX30100 giao tiếp với vi điều khiển ESP8266 Node MCU. Dữ liệu được truyền và nhận không dây qua wifi. Bộ hiển thị gồm có LCD TFT inch đủ để người dùng có thể theo dõi tình trạng sức khỏe của mình. Trên màn hình gồm có các chỉ số nhịp tim, SPO2 và dạng đồ thị điện tim theo thời gian. Ngoài ra, ứng dụng Android còn lấy dữ liệu không dây từ wifi hiển thị trên app giúp người thân có thể theo dõi người bệnh. xvi
  18. CHƯƠNG 1. TỔNG QUAN Chương 1. TỔNG QUAN 1.1. ĐẶT VẤN ĐỀ Ngày nay với sự phát triển của ngành điện tử và ứng dụng điện tử đã giúp sự sáng tạo của con người trở thành hiện thực. Ngành điện tử và ứng dụng điện tử vào lĩnh vực y sinh đã tạo chỗ đứng và khẳng định được tầm quan trọng của mình đối với nhu cầu của con người. Nhưng sự cố ảnh hưởng đến sức khỏe có thể xảy ra bất cứ lúc nào với chúng ta nếu như chúng ta chưa có sự quan tâm chưa đúng về vấn đề tim mạch trong đời sống thường ngày. Mặc dù trình độ khoa học kỹ thuật trong nước về lĩnh vực y tế đang có những bước tiến lớn, tuy nhiên do là một nước đang phát triển, việc chăm lo đảm bảo cho sức khỏe người dân cũng có nhiều hạn chế và chưa được thật sự chú trọng. Với những nước phát triển như Mỹ, Anh, Úc, việc theo dõi chăm sóc sức khỏe là cần thiết và rất được chú trọng. Có rất nhiều phần mềm theo dõi sức khỏe được lập trình với giao diện thân thiện người dùng, rất dễ sử dụng trên smartphone hay tablet, PC, laptop, vv kết hợp với các bệnh viện. Các tập đoàn, công ty lớn cũng rất chú trọng đến mảng y sinh với các sản phẩm phần cứng theo dõi sức khỏe như Apple Watch, Xiaomi Band, Samsung Gear Fit Wearables, vv đi kèm với phần mềm hỗ trợ tích hợp trên smartphone, tablet. Các thông số để có thể đánh giá được gần đúng tình trạng sức khỏe bao gồm: nhịp tim, huyết áp, nhiệt độ cơ thể. Tuy nhiên, với những hạn chế như trình độ, thời gian của thực hiện đồ án, yếu tố về công nghệ, đồ án sẽ chỉ tập trung vào giá trị nhịp tim để nghiên cứu và xử lý đồ thị điện tim, ngoài ra còn nguyên cứu nồng độ Oxi trong máu. Đối tượng chúng em chọn để theo dõi ở đây là người cao tuổi và người có tiền sử về tim mạch nên việc di chuyển đến bệnh viện để kiểm tra thường xuyên là rất khó khăn. Vì vậy chúng em đã đưa ra ý tưởng làm một thiết bị đo điện tim nhỏ gọn. Mục đích giúp chúng ta có thể theo dõi sức khỏe của người cao tuổi hoặc người có tiểu sử về tim mạch sử dụng tại gia đình một cách linh hoạt nhất. Thiết bị sẽ có chức năng đo nhịp tim và được hiển thị dạng số kết hợp với dạng điện tim (dạng sóng). Ngoài ra, còn có thể hiển thị nhịp tim và đồ thị điện tim trên ứng dụng điện thoại android để người nhà có thể theo dõi được mọi nơi. Nêu nhóm chúng em đã quyết định chọn đề tài: “Thiết kế và thi công thiết bị giám sát nhịp tim và nồng độ oxy trong máu” để thực hiện làm khóa luận tốt nghiệp. 1
  19. CHƯƠNG 1. TỔNG QUAN 1.2. MỤC TIÊU Thiết kế và thi công mô hình hệ thống theo dõi, giám sát nhịp tim, nồng độ oxy trong máu và đồ thị điện tim, tức thời và có thể hoạt động liên tục, đồng thời gửi các thông số dữ liệu đo được qua mạng wifi hiển thị trên ứng dụng di động để nâng cao khả năng giám sát, theo dõi. 1.2.1 Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu về phần mềm là các giải thuật để đo được nhịp tim, nồng độ oxi trong máu từ cảm biến MAX30100 chính xác, tức thời, đảm bảo hệ thống hoạt động đúng chức năng và thông tin tới người dùng qua mạng wifi, mạng di động. Cách thức lập trình ESP8266 Node MCU. Giao tiếp giữa board ESP8266 Node MCU và ARM. Lập trình STM32F407VET6 xuất màn hình FSMC. Phạm vi nghiên cứu trong khuôn khổ mô hình nhỏ áp dụng cho một hoặc hai người dùng, tuy nhiên có khả năng mở rộng thành hệ thống lớn. Ngoài ra, do kiến thức về lập trình ứng dụng android còn rất nhiều hạn chế nên nhóm sử dụng app inventor để lập trình. 1.2.2 Phương pháp nghiên cứu Tìm hiểu các thông số chính của tín hiệu nhịp tim, từ đó xây dựng được giải thuật phù hợp nhằm giảm thiểu sai số đo đạc. Kiểm tra tính chính xác của phép đo bằng các thiết bị đang được sử dụng trên thị trường. Tiến hành thiết kế, xây dựng và thi công mô hình hệ thống giám sát nhịp tim. 1.3. NỘI DUNG NGHIÊN CỨU NỘI DUNG 1: Tiến hành nguyên cứu về nhịp tim và đồ thị điện tim . NỘI DUNG 2: Đọc cảm biến thu được giá trị và cho đi qua 3 bộ lọc bằng vi xử lí, truyền giá trị thu được qua chuẩn truyền không dây. NỘI DUNG 3: Nhận dữ liệu từ chuẩn truyền không dây và giao tiếp với vi điều khiển chính qua chuẩn truyền UART. NỘI DUNG 4: Thiết kế board mạch điều khiển màn hình chuẩn FSMC và khối nhận dữ liệu. 2
  20. CHƯƠNG 1. TỔNG QUAN NỘI DUNG 5: Xử lí và xuất dữ liệu lên màn hình LCD dạng số và dạng điện tim. NỘI DUNG 6: Viết ứng dụng Android hiển thị các dữ liệu trên màn hình điện thoại. NỘI DUNG 7: Thiết kế và thi công mô hình hệ thống hoàn chỉnh. NỘI DUNG 8: Đánh giá kết quả thực hiện và so sánh với các thiết bị đang có trên thị trường. NỘI DUNG 9: Viết báo cáo đề tài. 1.4. GIỚI HẠN - Thiết bị phù hợp sử dụng ở hộ gia đình, phòng khám nhỏ, yêu cầu cần phải có 1 modem wifi để hoạt động. - Kết quả đo được phụ thuộc vào chất lượng của cảm biến MAX30100 và cách đặt ngón tay lên cảm biến nên yêu cầu phải đặt ngón tay chính xác. - Cảm biến MAX30100 được sử dụng trong đề tài này đo kết quả chính xác nhất là ở đầu ngón tay trỏ. 1.5. BỐ CỤC Chương 1: Tổng quan. Trong chương này, nhóm thực hiện đề tài trình bày tổng quan về tình hình nghiên cứu, thông tin liên quan đến đề tài trước đây. Mục tiêu, đối tượng và phạm vi nghiên cứu của đề tài. Chương 2: Cơ Sở Lý Thuyết. Giới thiệu về sơ lược về cấu tạo của tim, tín hiệu nhịp tim, đồ thị điện tim,, phương pháp đo điện tim bằng phương pháp hấp thụ quang học chuẩn giao tiếp I2C ,UART, UDP và các chuẩn giao tiếp khác trong đề tài. Chương 3: Tính toán và thiết kế Trong chương này, nhóm thực hiện thiết kế sơ đồ khối cho đề tài. Thực hiện giới thiệu chức năng, lựa chọn linh kiện, thông số kĩ thuật của linh kiện, thiết kế sơ đồ nguyên lí và giải thích sơ đồ nguyên lí cho từng khối. Chương 4: Thi công hệ thống Tiến hành thi công mô hình. Chương 5: Kết Quả, Nhận Xét và Đánh Giá 3
  21. CHƯƠNG 1. TỔNG QUAN Đưa ra kết quả mà nhóm đạt được, số liệu, hình ảnh hệ thống sau khi thi công, so sánh ưu điểm có cải tiến sao với các đề tài trước và so với máy đo thực tiếp của các sản phẩm đang có trên thị trường. Chương 6: Kết Luận và Hướng Phát Triển Đưa ra kết luận và hướng phát triển của đề tài. 4
  22. CHƯƠNG 2. CƠ SỞ LÝ THUÝET Chương 2. CƠ SỞ LÝ THUYẾT 2.1 LÍ THUYẾT VỀ NHỊP TIM VÀ PHƯƠNG PHÁP ĐO ĐIỆN TIM 2.1.1 Khái niệm nhịp tim Nhịp tim là tốc độ nhịp tim đo bằng số lần co thắt (nhịp đập) của tim mỗi phút (BPM - beat per minute). Nhịp tim có thể thay đổi theo nhu cầu thể chất của cơ thể, bao gồm cả nhu cầu hấp thu oxy và bài tiết carbon dioxit. Các hoạt động có thể tạo ra thay đổi bao gồm tập thể dục, ngủ , lo lắng, căng thẳng, bệnh tật và khi uống thuốc. Chỉ số nhịp tim bình thường là khác nhau giữa các cá thể, phụ thuộc vào giới tính, độ tuổi, tình trạng sức khỏe, . Sự thay đổi của chỉ số nhịp tim có thể là dấu hiệu cho thấy một sự thay đổi của trạng thái tim, qua đó có thể phản ánh tình trạng sức khỏe cơ thể. Trong khi nhịp tim được điều hòa hoàn toàn bởi nút xoang nhĩ trong điều kiện bình thường, nhịp tim được điều chỉnh bởi đầu vào giao cảm và giao cảm với nút xoang nhĩ. Các dây thần kinh gia tốc cung cấp đầu vào thông cảm cho tim bằng cách giải phóng norepinephrine lên các tế bào của nút xoang nhĩ (nút SA), và dây thần kinh phế vị cung cấp đầu vào giao cảm với tim bằng cách giải phóng acetylcholine vào các tế bào nút xoang nhĩ. Do đó, kích thích thần kinh gia tốc tăng nhịp tim, trong khi kích thích dây thần kinh phế vị làm giảm nhịp tim. Nhịp tim được đo theo đơn vị nhịp/phút. Bảng 2.1 Chỉ số HR phụ thuộc vào giới tính và độ tuổi 5
  23. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Thời điểm tốt nhất để bạn xác định nhịp tim nghỉ ngơi là buổi sáng, sau khi thức dậy. Bạn có thể đặt ngón trỏ và ngón giữa lên cổ tay hoặc một bên cổ để đếm nhịp tim trong vòng 60 giây. Như đã trình bày ở trên, nhịp tim thông thường ở người trưởng thành là 60-100 nhịp/phút. Tuy nhiên, nhịp tim nghỉ ngơi thấp hơn mức này không có nghĩa là bạn đang mắc bệnh tim mạch. Ngược lại, nó cho thấy tim bạn hoạt động hiệu quả hơn mức thông thường và trên thực tế, các vận động viên chuyên nghiệp đều có nhịp tim nghỉ ngơi quanh ngưỡng 40 nhịp/phút. Ngoài ra nhịp tim còn chịu tác động từ 4 yếu tố: Nhiệt độ không khí: nhiệt độ tăng cao thường sẽ khiến tim bơm máu mạnh hơn và nhịp tim của bạn tăng 5-10 nhịp/phút. Tư thế khi đo: yếu tố này chỉ ảnh hưởng đáng kể trong 15-20 giây đầu tiên. Vậy nên, bạn hãy luôn đợi một vài phút trước khi tiến hành đo nhịp tim. 6
  24. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Cân nặng: những người bị bệnh béo phì, thừa cân thường có nhịp tim cao hơn mức thông thường. Sử dụng thuốc: các loại thuốc có chứa chất ức chế beta sẽ khiến nhịp tim của bạn chậm lại, trong khi thuốc chữa trị tuyến giáp lại khiến nhịp tim tăng lên. Bảng 2.2 Chỉ số nhịp tim đối với trạng thái hoạt động cơ thể Chỉ số nhịp tim nhắm đến khi cơ thể ở trạng thái hoạt động như làm việc, tập thể dục, vận động cơ thể, vv, do đó tim cần hoạt động co bóp mạnh để cung cấp đủ lượng máu nuôi các cơ quan. Chỉ số nhịp tim thường được sử dụng để theo dõi trong quá trình luyện tập, bảo đảm các bài tập không quá sức. Vì vậy, theo dõi chỉ số nhịp tim của một người trong thời gian dài sẽ cho ta biết được phần nào tình trạng sức khỏe, thói quen hàng ngày, chất lượng cuộc sống của họ, qua đó có những biện pháp cải thiện kịp thời. 2.1.2 Nồng độ oxy trong máu Một phân tử Hemoglobin (Hb) có thể kết hợp với 4 phân tử oxy, khi đã gắn đủ 4 phân tử oxy được gọi là bão hòa oxy. Độ bão hòa oxy trong máu còn được gọi là chỉ số SpO2, biểu thị cho tỷ lệ Hemoglobin có oxy trên tổng lượng Hemoglobin trong máu. Nếu tất cả các phân tử Hemoglobin trong máu đều gắn với oxy thì độ bão hòa oxy là 100%. Chỉ số SpO2 được xem là một trong những dấu hiệu sinh tồn của cơ thể, bên cạnh các dấu hiệu như: nhiệt độ, mạch, nhịp thở và huyết áp. Khi bị thiếu oxy máu, các cơ quan như tim, gan, 7
  25. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT não sẽ chịu tác động tiêu cực rất nhanh. Vì vậy, cần theo dõi chỉ số SpO2 thường xuyên để kịp thời can thiệp nếu xảy ra tình trạng nguy hiểm. Hình 2.1 Các thế tác động qua màng Hầu hết các phân tử Hb sẽ gắn với oxy khi chúng đi qua phổi. Một người khỏe mạnh bình thường khi thở ở không khí trên mực nước biển sẽ có độ bão hòa oxy động mạch là 95% - 100%. Nếu lượng oxy trong máu hòa tan ở khoảng 97% - 99%: oxy trong máu tốt. Nếu lượng oxy trong máu hòa tan ở khoảng 94% - 96%: oxy trong máu trung bình – cần cho thở thêm oxy. Nếu lượng oxy trong máu hòa tan ở khoảng 90% - 93%: oxy trong máu thấp – nên có y tá hoặc bác sĩ theo dõi hoặc đến bệnh viện gần nhất. Nếu SpO2 dưới 92% không thở oxy hoặc dưới 95% có thở oxy: đây là các dấu hiệu suy hô hấp rất nặng. Độ bão hòa oxy thấp hơn 90% là một cấp cứu trên lâm sàng. Chỉ số SpO2 ở trẻ sơ sinh cũng giống như người lớn: trên 94%. Nếu chỉ số SpO2 của trẻ giảm xuống dưới mức 90% thì cần thông báo cho y bác sĩ để được hỗ trợ can thiệp kịp thời. Nồng độ oxy trong máu bất thường nói lên: 8
  26. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT - Ngộ độc CO là một khí độc, có nhiều khi đốt than. Đã có nhiều nạn nhân ngộ độc khí CO do dùng than tổ ong để sưởi ấm để lại hậu quả nghiêm trọng. CO thay thế oxy ở vị trí gắn vào Sắt trên phân tử Hb gây ra ngộ độc CO, làm tăng COHb (CO gắn vào Hemoglobin) và giảm HbO2 (oxy gắn vào Hemoglobin). Hiện tượng này làm giảm độ bão hòa của oxy trong máu. - Thiếu máu tức là Hemoglobin trong máu giảm thấp hơn bình thường. Khi không có tình trạng thiếu oxy máu, máy đo oxy dựa vào mạch đập sẽ cho kết quả chỉ số SpO2 chính xác khi nồng độ hemoglobin giảm xuống 2 - 3g/dL. - Những bệnh nhân có chỉ số đo SpO2 dưới 93%, được đánh giá là thiếu oxy máu cần được thở oxy hoặc thở máy (nếu bệnh nhân không tự thở được). Với bệnh nhân làm trong môi trường bí khí, thiếu oxy như nhà máy, lò đốt, mỏ quặng khi đi ra môi trường thoáng nhiều, oxy sẽ được bổ sung khi thở, bác sĩ sẽ điều chỉnh lượng oxy cho bệnh nhân thở cho tới khi chỉ số SpO2 ở mức ổn định là 97 - 100%. Mức oxy được sử dụng cho bệnh nhân tiếp tục được giữ cho tới khi họ thở ổn định trở lại. 2.1.3 Quá trình điện học của tim. Tim là tổ chức cơ rỗng, tại đó sự co bóp một cách tuần tự các cơ sẽ tạo ra áp lực đẩy máu đi qua các bộ phận khác nhau trên cơ thể. Mỗi nhịp tim được kích thích bởi xung điện từ các tế bào nút xoang tại tâm nhĩ. Các xung điện truyền đến các bộ phận khác của tim và làm cho tim co bóp. Việc ghi tín hiệu điện tim là ghi lại các tín hiệu điện này (tín hiệu ECG). Năng lượng chuyển hóa được sử dụng để tạo ra môi trường trong giàu Kali nhưng ít Natri so với thành phần ngoại bào Natri cao và Kali thấp. Do có sự không cân bằng tồn tại điện thế tĩnh trên màng tế bào, bên trong chừng 90 mV so với bên ngoài. Khi tế bào bị kích thích (bằng cách cho dòng điện vốn làm tăng tạm thời thế ngang mảng), các tính chất của mảng thay đổi theo chu trình, pha thứ nhất của nó là độ thấm mạnh đối với Natri, dòng Natri lớn (sớm) chảy vào trong do các gradient khuếch tán và điện. 9
  27. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Hình 2.2 Quá trình điện học của tim Trong khi di chuyển liên tiếp, tế bào về cơ bản có tính chất như nguồn lưỡng điện. Dòng Natri chuyển tiếp này chịu trách nhiệm về dòng mạch điện nội tại và là một phần của dòng điện đó. Theo cách này, hoạt động mở rộng tiếp tới các tế bào lân cận. Khi màng hồi phục (trở về các tính chất nghỉ), thế tác động của tế bào kết thúc và nó trở lại trạng thái nghỉ và có khả năng được tái kích thích. Nói một cách ngắn gọn khi có dòng Natri, Kali chảy qua màng tim thì có điện thế được sinh ra. 2.1.4 Đo nhịp tim bằng phương pháp hấp thụ quang học Khi tim đập, máu sẽ được đẩy đi khắp cơ thể qua động mạch, tạo ra sự thay đổi về áp suất trên thành động mạch và lượng máu chảy qua động mạch. Vì vậy, ta có thề đo nhịp tim bằng cách đo những sự thay đổi đó. Khi hàm lượng máu trong thành động mạch thay đổi sẽ làm thay đổi mức độ hấp thụ ánh sáng của động mạch, do đó khi một tia sáng được truyền qua động mạch thì cường độ ánh sáng sau khi truyền qua sẽ biến thiên đồng bộ với nhịp tim. Khi tim giãn ra, lượng máu qua động mạch nhỏ nên hấp thụ ít ánh sáng, ánh sáng sau khi truyền qua động mạch có cường độ lớn, ngược lại khi tim co vào, lượng máu qua động mạch lớn hơn, ánh sáng sau khi truyền qua động mạch sẽ có cường độ nhỏ hơn. 10
  28. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Hình 2.3 Đo nhịp tim bằng phương pháp hấp thụ quang học Ánh sáng khi truyền qua ngón tay gồm 2 thành phần AC và DC: • Thành phần DC đặc trưng cho cường độ ánh sáng cố định truyền qua mô xương và tĩnh mạch. • Thành phần AC đặc trưng cho cường độ ánh sáng thay đổi khi lượng máu thay đổi truyền qua động mạch, tần số của tín hiệu này đồng bộ với tần số nhịp tim. Về nguyên tắc có thể đặt nguồn sáng và Photodiode ở bất cứ nơi nào trên cơ thể có chứa động mạch. Nhiễu của ánh sáng môi trường vào Photodiode có thể xem là không đổi nên phép đo sẽ càng tin cậy nếu tín hiệu ánh sáng Photodiode nhận được là lớn nhất. Nếu đặt cảm biến ở khuỷu tay hay cổ tay thì có ưu điểm là áp suất máu trong động mạch biến động rất lớn, nhưng do ánh sáng từ LED phải truyền qua một bề dày lớn của cơ thể, dẫn đến việc bị hấp thụ quá nhiều bởi mô và xương. Mà độ nhạy của Photodiode là giới hạn nên ta sẽ cần một nguồn sáng với cường độ rất lớn, dẫn đến hao phí năng lượng và khó ổn định được cường độ của nguồn sáng từ LED. Nếu đặt cảm biến ở vành tai, ánh sáng chỉ cần đi qua một bề dày rất nhỏ, nhưng động mạch ở vị trí này quá bé, mức độ biến thiên cường độ ánh sáng nhận được là quá nhỏ so với toàn bộ ánh sáng nhận được, nên tín hiệu điện không đủ độ tin cậy. 11
  29. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Vị trí đặt cảm biến hợp lý nhất là các đầu ngón tay, tuy động mạch ở vị trí này không quá lớn nhưng bề dày cơ thể ánh sáng phải truyền qua lại tương đối ít nên chỉ cần dùng 1 LED làm nguồn phát. Mặt khác, ở vị trí này cho mức độ biến thiên cường độ ánh sáng nhận được là khá lớn so với toàn bộ ánh sáng nhận được, tỉ số giữa biên độ tín hiệu với nền một chiều là đủ lớn để phần xử lý tín hiệu hoạt động đưa ra kết quả chính xác nhất. 2.2 CÁC CHUẨN GIAO TIẾP GIỮA CÁC MODULE 2.2.1 Chuẩn giao tiếp I2C giữa cảm biến MAX30100 và ESP8266 NodeMCU Đầu năm 1980 Phillips đã phát triển một chuẩn giao tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit. Đây là đường Bus giao tiếp giữa các IC với nhau. I2C mặc dù được phát triển bởi Phillips, nhưng nó đã được rất nhiều nhà sản xuất IC trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có thể kể ra đây một vài tên tuổi ngoài Phillips như: Texas Instrument(TI), MaximDallas, analog Device, National Semiconductor, vv. Bus I2C được sử dụng làm bus giao tiếo ngoại vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC, AVR, ARM, vv chip nhớ như: RAM tĩnh (Static RAM), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tự (DAC), IC điều khiển LCD, LED, vv. I2C sử dụng hai đường truyền tín hiệu: • Một đường xung clock (SCL) chỉ do Master phát đi (thông thường ở 100kHz và 400kHz. Mức cao nhất là 1MHz và 3.4MHz). • Một đường dữ liệu (SDA) theo 2 hướng. 12
  30. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Hình 2.4 Chuẩn giao tiếp I2C Có rất nhiều thiết bị có thể cũng được kết nối vào một bus I2C, tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được nhận ra bởi một địa chỉ duy nhất với một quan hệ master/slave tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thể hoạt động như là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là master hay slave. Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân biệt, nó còn được cấu hình là thiết bị master hay slave. Đó là vì trên một bus I2C thì quyền điều khiển thuộc về thiết bị master hay slave. Thiết bị master nắm vai trò tạo xung clock đồng bộ cho toàn hệ thống, khi giữa hai thiết bị master – slave giao tiếp thì thiết bị master có nhiệm vụ tạo xung clock đồng bộ và quản lý địa chỉ của thiết bị slave trong suốt quá trình giao tiếp. Thiết bị master giữ vai trò chủ động, còn thiết bị slave giữ vai trò bị động trong việc giao tiếp. Về lý thuyết lẫn thực tế I2C sử dụng 7 bit để định địa chỉ, do đó trên một bus có thể có tới 27 địa chỉ tương ứng với 128 thiết bị có thể kết nối, nhưng chỉ có 112, 16 địa chỉ còn lại được sử dụng vào mục đích riêng. Bit còn lại quy định việc đọc hay ghi dữ liệu (1 là write, 0 là read). Có một lưu ý nhỏ về xung clock. Bản chất của I2C là dữ liệu trên đường SDA chỉ được ghi nhận ở sườn lên của chân CLK. Do vậy xung clock có thể không cần 13
  31. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT chính xác tốc độ là 1MHz hay 3.4MHz. Lợi dụng điểm này có thể sử dụng 2 chân GPIO để làm chân giao tiếp I2C mềm mà không nhất thiết cần một chân CLK tạo xung với tốc độ chính xác. Quá trình truyền dữ liệu giữa 2 thiết bị chế độ Master – Slave dùng bus I2C diễn ra như sau: Thiết bị master tạo xung START (tức là đường SDA thay đổi từ mức cao xuống mức thấp và đường SCL đang ở mức cao) để bắt đầu quá trình giao tiếp. Thiết bị master gửi địa chỉ của thiết bị slave muốn giao tiếp cùng với bit R/W và đợi xung ACK phản hồi. Địa chỉ của thiết bị slave được định nghĩa bởi 7 bit, ngoài ra có thể đánh địa chỉ dưới dạng 10 bit nếu sau lệnh START gửi chuỗi 11110 ra đường SDA. Bit R/W dùng để điều khiển hướng truyền- bit “0” là truyền từ master tới slave, ngược lại bit “1” là truyền từ slave tới master. Việc thiết lập bit R/W do thiết bị master quy định. Khi nhận được xung báo ACK từ thiết bị slave xác nhận đúng địa chỉ thì bắt đầu thực hiện truyền dữ liệu. Dữ liệu được gửi theo từng byte. Mỗi byte gồm 8 bit và sau mỗi byte đều bắt buộc có một xung ACK để đảm bảo quá trình truyền nhận diễn ra chính xác. Số lượng byte là không giới hạn. Xung ACK được định nghĩa là SDA kéo xuống mức thấp. Ngoài ra, khi không nhận được đúng địa chỉ hay khi muốn kết thúc quá trình giao tiếp thiết bị nhận sẽ gửi một xung NACK tức là SDA ở mức cao. Kết thúc quá trình truyền, thiết bị master sẽ gửi xung STOP hoặc thiết bị slave gửi xung NACK để báo hiệu kết thúc. Xung STOP tương tự như xung START nhưng trạng thái của đường SDA thay đổi từ mức thấp lên mức cao. Ngoài ra, trong một quá trình giao tiếp có thể lặp lại xung START kèm theo một địa chỉ mới để bắt đầu một giao tiếp khác. Điểm mạnh của I2C chính là hiệu suất và sự đơn giản của nó: một khối điều khiển trung tâm có thể điều khiển cả một mạng thiết bị mà chỉ cần hai lối ra điều khiển. 2.2.2 Chuẩn giao tiếp UART giữa STM32F407 và ESP8266 NodeMCU 14
  32. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT UART chuyển đổi giữa dữ liệu nối tiếp và song song. Một chiều UART chuyển đổi dữ liệu song song bus hệ thống ra dữ liệu nối tiếp để truyền đi. Một chiều khác UART chuyển đổi dữ liệu nhận được dạng dữ liệu nối tiếp thành dạng dữ liệu song song cho CPU có thể đọc vào bus hệ thống. Hình 2.5 Truyền UART UART hỗ trợ cả hai kiểu giao tiếp là giao tiếp đồng thời và giao tiếp không đồng thời. Giao tiếp đồng thời tức là UART có thể gửi và nhận dữ liệu vào cùng một thời điểm. Còn giao tiếp không đồng thời là chỉ có một thiết bị có thể chuyển dữ liệu vào một thời điểm, với tín hiệu điều khiển hoặc mã sẽ quyết định bên nào có thể truyền dữ liệu. Giao tiếp không đồng thời được thực hiện khi mà cả 2 chiều chia sẽ một đường dẫn hoặc nếu có 2 đường nhưng cả 2 thiết bị chỉ giao tiếp qua một đường ở cùng một thời điểm. Thêm vào đường dữ liệu, UART hỗ trợ bắt tay chuẩn RS232 và tín hiệu điều khiển như RTS, CTS, DTR, DCR, RT và CD. Để thuận tiện, các chương trình gửi và nhận dữ liệu trong định dạng không đồng bộ đơn giản hơn. PC và nhiều vi xử lý khác có một bộ phận gọi là UART (universal asynchronous receiver/transmitter: truyền /nhận không đồng bộ chung) vì thế có thể vận dụng phần lớn những chi tiết truyền và nhận dữ liệu. Trong PC, hệ điều hành và ngôn ngữ lập trình hỗ trợ cho lập trình liên kết nối tiếp mà không cần phải hiểu rõ chi tiết cấu trúc UART. Để mở liên kết, ứng dụng lựa chọn một tần số dữ liệu hoặc là thiết lập khác hoặc cho phép truyền thông tại các cổng. Để gửi 1 byte, ứng dụng ghi byte này vào bộ đệm truyền của cổng được lựa chọn, và UART gửi dữ liệu này, từng bit một, trong định dạng yêu cầu, thêm bit Start, bit Stop, bit chẵn lẻ khi cần. Trong một cách đơn giản, byte nhận được tự động được lưu trữ trong bộ đệm. UART có thể dùng nhanh một ngắt để báo cho CPU và các ứng dụng biết dữ liệu đang nhận được và các sự kiện 15
  33. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT khác. Một vài vi điều khiển không bao gồm UART, và thỉnh thoảng bạn cần nhiều hơn các UART mà vi xử lý có. Trong trường hợp này, có 2 lựa chọn: thêm UART ngoài, hoặc mô phỏng UART trong mã chương trình. Basic Stamp của Parallax là một ví dụ của chip với một UART bổ sung trong mã chương trình. UART là một thiết bị đơn giản hỗ trợ tốt cả hai kiểu truyền thông đồng bộ và không đồng bộ. Các thông số cơ bản của chuẩn truyền: - Baud rate (tốc độ Baud): Khi truyền nhận không đồng bộ để hai module hiểu được nhau thì cần quy định một khoảng thời gian cho 1 bit truyền nhận, nghĩa là trước khi truyền thì tốc độ phải được cài đặt đầu tiên. Theo định nghĩa thì tốc độ baud là số bit truyền trong một giây. - Frame (khung truyền): Do kiểu truyền thông nối tiếp này rất dễ mất dữ liệu nên ngoài tốc độ, khung truyền cũng được cài đặt từ ban đầu để giảm bớt sự mất mát dữ liệu này. Khung truyền quy định số bit trong mỗi lần truyền, các bit thông báo như start, stop, các bit kiểm tra như parity, và số bit trong một data. - Bit Start: Là bit bắt đầu trong khung truyền. Bit này nhằm mục đích báo cho thiết bị nhận biết quá trình truyền bắt đầu. Trên AVR bit Start có trạng thái là 0. - Data: Dữ liệu cần truyền data không nhất thiết phải 8 bit có thể là 5, 6, 7, 8, 9. Trong UART bit LSB được truyền đi trước, bit MSB được truyền đi sau. - Parity bit: Là bit kiểm tra dữ liệu. Có 2 loại parity: chẵn (even parity), lẻ (old parity). Parity chẵn là bit parity thêm vào để số số 1 trong data + parity = chẵn. Parity lẻ là bit parity thêm vào để số số 1 trong data + parity = lẻ. Bit parity là không bắt buộc nên có thể dùng hoặc không. 2.2.3 Chuẩn truyền không dây theo giao thức UDP Giới thiệu UDP viết tắt của User Datagram Protocol, là một trong những giao thức cốt lõi của giao thức TCP/IP. Dùng UDP, chương trình trên mạng máy tính có thể gửi những dữ liệu ngắn được gọi là datagram tới máy khác. UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo. Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian. Do 16
  34. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu. Hình 2.6 So sánh giao thức truyền TCP và UDP Trong bộ giao thức TCP/IP, UDP cung cấp một giao diện rất đơn giản giữa tầng mạng bên dưới ( thí dụ, IPv4 ) và tầng phiên làm việc hoặc tầng ứng dụng phía trên. UDP không đảm bảo cho các tầng phía trên thông điệp đã được gửi đi và người gửi cũng không có trạng thái thông điệp UDP một khi đã được gửi ( Vì lý do này đôi khi UDP còn được gọi là Unreliable Datagram Protocol). UDP chỉ thêm các thông tin multiplexing và giao dịch. Các loại thông tin tin cậy cho việc truyền dữ liệu nếu cần phải được xây dựng ở các tầng cao hơn. Do thiếu tính tin cậy, các ứng dụng UDP nói chung phải chấp nhận mất mát, lỗi hoặc trùng dữ liệu. Một số ứng dụng như TFTP có nhu cầu phải thêm những kỹ thuật làm tin cậy cơ bản vào tầng ứng dụng. Hầu hết các ứng dụng UDP không cần những kỹ thuật làm tin cậy này và đôi khi nó bị bỏ đi. Streaming media, game trực tuyến và voice over IP (VoIP) là những thí dụ cho các ứng dụng thường dùng UDP. 17
  35. CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Trong đề tài này chúng em chọn giao thức truyền này để truyền dữ liệu giữa hai bộ truyền nhận không dây. Ngoài ra ứng dụng Android cũng truy cập tới địa chỉ IP này để lấy lấy dữ liệu về hiển thị. 18
  36. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Chương 3. TÍNH TOÁN VÀ THIẾT KẾ 3.1 GIỚI THIỆU Trong chương này, trình bày về cách tính toán, sơ đồ khối, sơ đồ nguyên lý của các board mạnh của hệ thống: mạch điều khiển LCD, module đọc giá trị cảm biến, giao tiếp không dây, lcd hiển thị, mạch nguồn và mạch giảm áp. 3.2 THIẾT KẾ SƠ ĐỒ KHỐI HỆ THỐNG KHỐI KHỐI NGUỒN NGUỒN KHỐI GIAO KHỐI VI XỬ LÍ TRUNG TÂM TIẾP WIFI ĐỌC CẢM BIẾN VÀ GIAO TIẾP WIFI KHỐI VI XỬ LÍ TRUNG TÂM ĐIỀU KHIỂN HIỂN THỊ ỨNG DỤNG KHỐI CẢM KHỐI HIỂN APP BIẾN THỊ ANDROID Truyền dữ liệu Giao diện người dùng Nhận dữ liệu Hình 3.1 Sơ đồ khối Chức năng của các khối: - Khối nguồn: cấp nguồn cho các khối vi xử lí trung tâm. - Khối cảm biến: đọc giá trị nhịp tim, SpO2 gửi cho khối vi xử lí. - Khối vi xử lý trung tâm đọc cảm biến và giao tiếp wifi: cấp nguồn nuôi cho khối cảm biến nhịp tim. Nhận dữ liệu từ khối cảm biến, xử lý tính toán lọc giá trị cho ra giá trị nhịp tim, SpO2, giá trị vẽ đồ thị điện và gửi dữ liệu qua giao tiếp wifi. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 19
  37. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ - Khối giao tiếp wifi: nhận dữ liệu từ khối trung tâm đọc cảm biến và truyền cho khối xử lí hiển thị. - Khối xử lý hiển thị : nhận giá trị từ khối giao tiếp wifi. Thực hiện tách chuỗi dữ liệu nhận được gửi cho Khối hiển thị. - Khối hiển thị : hiển thị nội dung nhận được từ khối vi điều khiển xử lý hiển thị. - App android: Nhận dữ liệu từ khối đọc giá trị cảm biến, để vẽ đồ thị điện tim, hiển thị nhịp tim, SpO2. Và cho phép thiết lập tên bệnh nhân từ điện thoại và gửi đến khối vi điều khiển xử lý hiển thị. 3.3 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 3.3.1 Thiết kế khối cảm biến đo nhịp tim a. Chức năng: Đo nhịp tim của người dùng theo phương pháp hấp thụ quang học, nồng độ oxy trong máu, kèm theo giá trị để vẽ đồ thị điện tim. b. Lựa chọn linh kiện: Với các nguyên lý đo nhịp tim đã được trình bày thì cảm biến nhịp tim MAX30100 phù hợp cho dự án này do tính phổ biến, dễ lập trình và sử dụng. Cảm biến nhịp tim MAX30100 của hãng Maxim integrated hoạt động dựa trên phương pháp hấp thụ quang học đã trình bày. Như vậy, để có thể đo được nhịp tim bằng phương pháp này, nguyên lý tương đối đơn giản, ta sẽ cần 3 thành phần: LED, LDR và vi điều khiển. LED và LDR được bố trí như hình. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20
  38. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Hình 3.2 Nguyên lí hoạt động LED hồng ngoại Ở trạng thái hoạt động, LED luôn phát ra ánh sáng và LDR sẽ thu ánh sáng phản xạ từ LED, khi có máu dẫn trong mạch máu (mạch máu dãn ra), ánh sáng từ LED sẽ bị hấp thụ nhiều hơn, dẫn đến cường độ ánh sáng mà LDR thu được là ít hơn, ngược lại, khi không có máu dẫn (mạch máu co lại), ánh sáng từ LED sẽ không bị hấp thụ bởi máu, và do đó cường độ ánh sáng LDR thu được là lớn hơn. Từ đó, ta có thể nhận biết được sự thay đổi, qua đó xác định được thời điểm máu dẫn trong mạch máu, tức thời điểm tim đập. c. Thông số kỹ thuật: • Cảm biến nhịp tim và oxy trong máu MAX30100 • IC chính: MAX30100. • Đo được nhịp tim và nồng độ Oxy trong máu. • Điện áp sử dụng: 1.8~5.5VDC. • Nhỏ gọn, siêu tiết kiệm năng lượng, thích hợp cho các thiết bị đo nhỏ gọn, Wearable Devices. • Giao tiếp: I2C, mức tín hiệu TTL. • Kích thước: 1.9 cm x 1.4 cm x 0.3 cm BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21
  39. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Hình 3.3 Hình ảnh cảm biến MAX30100 d. Sơ đồ nguyên lý Hình 3.4 Sơ đồ nguyên lý cảm biến MAX30100 e. Giải thích sơ đồ nguyên lí Nguồn cung cấp cho cảm biến từ 1,8 -5.5V. Tuy nhiên nguồn 3.3V được khuyến khích sử dụng để cảm biến hoạt động tốt nhất. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 22
  40. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Tụ điện C1, C2, C4, C5, C6, C7 mục đích để lọc nguồn trước khi đi vào các khối chức năng. Khối U1 bộ điều khiển cảm biến led hồng ngoại chính của MAX30100 Khối U2 là khối IC ổn áp nguồn. Khối U3 mạch giảm áp 3.3V-1.8V. Điện trở R1,R2 điện trở 4.7k kéo lên của của chuẩn giao tiếp I2C. 3.3.2 Thiết kế khối vi điều khiển đọc cảm biến và giao tiếp wifi a. Chức năng: Nhận dữ liệu từ cảm biến. Tính toán và xử lí cho đi qua 3 bộ lọc xuất ra giá trị nhịp tim, SpO2 và giá trị để vẽ đồ thị. Ngoài ra còn có nhiệm vụ truyền dữ liệu đã được xử lí cho các thiết bị khác có thể nhận được qua truyền không dây. b. Lựa chọn linh kiện: Chính vì lí do trên chúng tôi chọn Kit RF thu phát Wifi ESP8266 NodeMCU Lua là khối vi điều khiển đọc dữ liệu cảm biến của chúng tôi. ESP8266 NodeMCU Lua phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP8266 Node MCU trở nên rất đơn giản. Kit RF thu phát Wifi ESP8266 NodeMCU Lua được dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên quan đến IoT. Kit RF thu phát Wifi ESP8266 NodeMCU Lua gồm 2 phiên bản sử dụng chip nạp là CP2102 có khả năng tự nhận Driver trên tất cả các hệ điều hành Window và Linu., đây là phiên bản nâng cấp từ các phiên bản sử dụng IC nạp giá rẻ CH340 c. Thông số kỹ thuật: • NodeMCU có cổng USB-TTL với IC CP2102 hoạt động ổn định với chuẩn công nghiệp. • Điện áp giao tiếp: 3.3 VDC, • Loại ăngten: ăng ten PCB tích hợp trên mạch. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 23
  41. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ • Chuẩn 802.11 b / g / n không dây • WiFi 2.4GHz, hỗ trợ chế độ bảo mật WPA / WPA2 • Hỗ trợ 3 chế độ hoạt động STA / AP / STA + AP • Tích hợp giao thức TCP / IP để hỗ trợ nhiều kết nối TCP Client (5 MAX) • D0 ~ D8, SD1 ~ SD3: sử dụng như GPIO, PWM, IIC, vv, dòng điều khiển 15mA • AD0: 1 kênh ADC • Nguồn vào: 4.5V ~ 9V (10VMAX), nguồn từ cổng USB • Dòng tải: truyền liên tục: ≈70mA (200mA MAX), chế độ chờ: <200uA • Tốc độ truyền: 110-460800bps • Hỗ trợ giao tiếp truyền dữ liệu UART / GPIO • Nâng cấp phần mềm từ xa (OTA) • Hỗ trợ Smart Link Smart Networking • Nhiệt độ làm việc: -40 ~ +125 độ C • Loại điều khiển: Cầu H đôi • ESP8266 có chân IO • Flash: 4Mbyte BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 24
  42. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Hình 3.5 Sơ đồ chân ESP8266 Node MCU BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 25
  43. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ d. Sơ đồ nguyên lý Hình 3.6 Sơ đồ nguyên lý ESP_8266 Node MCU và MAX30100 e. Giải thích nguyên lí: Ta có cảm biến với vi điều khiển giao tiếp qua đường bus I2C chỉ gồm hai dây và được đặt tên là Serial Clock Line (SCL) và Serial Data Line (SDA). Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng hồ (clock) từ SCL. Cả hai đường bus I2C (SDA, SCL) đều hoạt động như các bộ lái cực máng hở (open drain). Nó có nghĩa là bất kỳ thiết bị nào trên mạng I2C có thể lái SDA và SCL xuống mức thấp, nhưng không thể lái chúng lên mức cao. Vì vậy, cần điện trở kéo lên R1,R2,R5,R6 giá trị 4.7k được sử dụng cho mỗi đường bus, để giữ cho chúng ở mức cao (ở điện áp dương) theo mặc định. Lý do sử dụng một hệ thống cực máng hở (open drain) là để không xảy ra hiện tượng ngắn mạch, điều này có thể xảy ra khi một thiết bị cố gắng kéo đường dây lên cao và một số thiết bị khác cố gắng kéo đường dây xuống thấp. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26
  44. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Tụ điện C19, C20, C15, C16 thành triệt nhiễu vào mạch. 3.3.3 Thiết kế khối giao tiếp wifi a. Chức năng: Nhận dữ liệu về từ khối đọc cảm biến và giao tiếp wifi. b. Lựa chọn linh kiện: Kit NodeMCU ESP8266 CH340 sử dụng chip nạp CH340 (không dùng chip CP2102 cao cấp) và ESP8266 V12 MOD mới và ổn định nhất trong các phiên bản ESP8266 trên thị trường, trước đây để phát triển.các ứng dụng IoT( Internet of Things) phải sử dụng rất nhiều thứ như vi điều khiển, module wifi, mạch nguồn Với NodeMCU ESP8266 V3.0 Kit bạn có thể phát triển các ứng dụng sử dụng wifi một cách dễ dàng và tiện lợi nhất, kit được hỗ trợ rất mạnh bởi các cộng đồng IoT trong đó có Inventer giúp bạn tạo ứng dụng kiểm soát thông qua smartphone với giao diện người dùng đẹp đẽ và dể sử dụng. c. Thông số kĩ thuật NodeMCU có cổng USB-TTL với IC CH340 hoạt động ổn định với chuẩn công nghiệp. • Điện áp giao tiếp: 3.3 VDC, • Loại ăngten: ăng ten PCB tích hợp trên mạch. • Chuẩn 802.11 b / g / n không dây, • WiFi 2.4GHz, hỗ trợ chế độ bảo mật WPA / WPA2 • Hỗ trợ 3 chế độ hoạt động STA / AP / STA + AP • Tích hợp giao thức TCP / IP để hỗ trợ nhiều kết nối TCP Client (5 MAX) • D0 ~ D8, SD1 ~ SD3: sử dụng như GPIO, PWM, IIC, vv, dòng điều khiển 15mA • AD0: 1 kênh ADC • Nguồn vào: 4.5V ~ 9V (10VMAX), nguồn từ cổng USB • Dòng tải: truyền liên tục: ≈70mA (200mA MAX), chế độ chờ: <200uA • Tốc độ truyền: 110-460800bps • Hỗ trợ giao tiếp truyền dữ liệu UART / GPIO • Nâng cấp phần mềm từ xa (OTA) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27
  45. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ • Hỗ trợ Smart Link Smart Networking • Nhiệt độ làm việc: -40 ~ +125oC • Loại điều khiển: Cầu H đôi • ESP8266 có chân IO • Flash: 4Mbyte d. Sơ đồ nguyên lí Hình 3.7 Sơ đồ nguyên lý ESP_8266 Node MCU CH340 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28
  46. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ d. Sơ đồ nguyên lí Hình 3.8 Mạch giao tiếp ESP8266 Node MCU với vi điều khiển STM32F407 chuẩn truyền UART e. Giải thích sơ đồ nguyên lí Nguồn cấp cho ESP8266 Node MCU hoạt động là nguồn 5VDC. Chân Tx Của module là chân truyền dữ liệu được nối với chân nhận dữ liệu RX của vi điều khiển. Chân Rx của module là chân nhận dữ liệu được nối với chân truyền dữ liệu Tx của vi điều khiển. 3.3.4 Thiết kế khối xử lí trung tâm điều khiển hiển thị a. Chức năng: Giao tiếp với khối giao tiếp wifi qua giao tiếp UART. Xử lí đọc giá trị chuỗi nhận được, thực hiện tách chuỗi lấy các giá trị nhịp tim, SPO2, giá trị vẽ đồ thị điện tim. Dữ liệu được hiển thị trên LCD qua chuẩn truyền FSMC. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29
  47. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ b. Lựa chọn linh kiện: Để thiết kế khối xử lí trung tâm của đề tài: “THIẾT KẾ THI CÔNG THIẾT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU” trên thị trường hiện nay có rất nhiều dòng vi xử lí như: PIC,ARM,AVR,8051, .Tuy nhiên với yêu cầu của đề tài này là tốc độ xử lí dữ liệu phải nhanh và cập nhật liên tục để vẽ đồ thị điện tim thì ARM đáp ứng được hầu hết các yêu cầu trên. Cũng như trong quá trình học tập nhóm cũng đã từng tiếp xúc với dòng vi điều khiên này nên quyết định chọn ARM để làm vi điều khiển cho đề tài tốt nghiệp của nhóm mình. GIỚI THIỆU VỀ VI XỬ LÝ ARM Cấu trúc ARM (Acorn RISC Machine) là một loại cấu trúc vi xử lý 32 bit kiểu RISC được sử dụng rộng rãi trong thiết kế nhúng. Do đặc điểm tiết kiệm năng lượng, các bộ CPU ARM chiếm được ưu thế trong các sản phẩm điện tử di động, mà các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế hàng đầu. Hình 3.9 Ứng dụng ARM trong kĩ thuật điện tử BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30
  48. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Với mô hình máy đo điện tim sử dụng vi xử lý ARM này thì nhóm tôi quyết định chọn con chip STM32F407VET6 vì tốc độ và dung lượng lưu trữ phù hợp với yêu cầu đặt ra để giao tiếp với màn hình chuẩn FSMC, quan trọng nhất là đã được tiếp xúc trong quá trình học tập . c. Thông số kĩ thuật: • Bộ nhớ Flash lên tới 1 Mbyte. • 192 + 4 Kbyte SRAM bao gồm RAM dữ liệu 64-Kbyte CCM (bộ nhớ kết hợp lõi). • Bộ điều khiển bộ nhớ tĩnh linh hoạt hỗ trợ các bộ nhớ Compact Flash, SRAM, PSRAM, NOR và NAND. • Hỗ trợ truyền dữ liệu song song với LCD • Nguồn cung cấp từ 1.8V đến 3.6V • Bộ tạo dao động tinh thể 4 đến 26 MHz. • Dao động 32 kHz cho RTC với hiệu chuẩn RC 32 kHz bên trong có hiệu chuẩn. • Chế độ ngủ, dừng và chờ. • Cung cấp cho RTC, các thanh ghi dự phòng 20 × 32 bit + SRAM sao lưu 4 KB tùy chọn. • Bộ chuyển đổi A/D 3 × 12 bit, 2.4 MSPS: tối đa 24 kênh và 7.2 MSPS • Bộ chuyển đổi D/A 2 × 12 bit DMA đa năng. • DMA 16 luồng với hỗ trợ FIFO và hỗ trợ cụm. • Lên đến 17 bộ định thời: tối đa 12 bộ định thời 16 bit và 2 bộ định thời 32 bit lên đến 168 MHz, mỗi bộ có tối đa 4 IC / OC / PWM hoặc bộ đếm xung. • 140 cổng I/O với khả năng ngắt. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31
  49. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ • 136 I/O nhanh lên đến 84 MHz. • Giao diện lên tới 3 × I 2 C (SMBus / PMBus) • 4 USART / UART (10,5 Mbit / s, giao diện ISO 7816, LIN, IrDA, điều khiển modem). • 3 SPI (42 Mbits/giây), 2 với I2S song công hoàn chỉnh để đạt được độ chính xác của lớp âm thanh thông qua PLL âm thanh bên trong hoặc đồng hồ bên ngoài. • Giao diện 2 × CAN (Hoạt động 2.0B). • Giao diện SDIO. • Giao diện camera song song 8- đến 14 bit lên tới 54 Mbyte/s. • Trình tạo số ngẫu nhiên thực. • Đơn vị tính CRC ID duy nhất 96 bit. • RTC: độ chính xác cao Hình 3.10 Hình ảnh chip STM32F407VET6 kiểu đóng gói LQF1000 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32
  50. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ d. Sơ đồ nguyên lý kết nối chân STM32F4VET6 Hình 3.11 Sơ đồ nguyên lí STM32F407VET6 giao tiếp ngoại vi BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33
  51. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Hình 3.12 Mạch Reset vi điều khiển mức thấp. Hình 3.13 Mạch tạo dao động và thời gian thực e. Giải thích sơ đồ nguyên lí Sơ đồ nguyên lí của khối xử lí hiển thị được giải thích theo bảng sau: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34
  52. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Bảng 3.1 Bảng sơ đồ kết nối chân vi điều khiển FSMC 1 bộ giao tiếp màn hình LCD ( 16 chân dữ liệu, 4 chân điều khiển,3 chân điều khiển cảm ứng và 2 chân nguồn ) 1 UART giao tiếp ESP8266 Node MCU Chuẩn truyền thông sử dụng (PA2,PA3) 1 I2C giao tiếp màn hình cảm ứng (PB6,PB7) Oscillator Type ( tạo dao động) Thạch anh 8Mhz (PC14,PC15) Điện áp hoạt động 3.3V được cấp từ mạch giảm áp Bộ tạo tạo thời thực Thạch Anh 32.768kHz ( PH0,PH1) Mach nạp ST-Link v2 SW_DIO,SW_CLK ( PA13,PA14) Tụ điện lọc nguồn C8, ,C12,C21, ,C29 chống nhiễu công (100nF,10Uf) nghiệp Nút Nhấn Loại thường mở Diode 1N5818 chống ngược nguồn 3.3.5 Thiết kế khối hiển thị giao diện người dùng a. Chức năng: Nhận dữ liệu từ khối vi xử lí hiển thị. Nhịp tim, nồng độ oxy và đồ thị điện tim được hiển thị lên màn hình lớn giúp người dùng có thể theo dõi quan sát. b. Lựa chọn linh kiện Với yêu cầu của đề tài “ Thiết kế thi công máy đo điện tim” dữ liệu cần hiển thị sẽ được truyền nhận liên tục để đảm bảo tính ổn định của đồ thị dạng sóng. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35
  53. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Chính vì những lí do đó màn hình LCD cảm ứng điện dung 7 inch được phát triển với mục đích giúp người sử dụng có thể thiết kế các giao diện điều khiển và hiển thị (GUI) trên màn cảm ứng một cách dễ dàng và trực quan nhất. Các điểm mạnh về tính năng: • Giao tiếp FSMC chuẩn song song, với chỉ 16 dây dữ liệu và 4 dây điều khiển tín hiệu . • Thiết kế cảm ứng điện dung giúp dễ dàng thao tác khi mang găng tay trong môi trường lao động. • Mạch có chất lượng gia công tốt, độ bền cao. c. Thông số kỹ thuật: • Màn hình HMI 7 inch cảm ứng điện dung. • Giao tiếp song song FSMC. • Cấp nguồn 3.3VDC. • Có bộ nhớ lưu trữ và xử lý hình ảnh Hình 3.14 Hình ảnh LCD mặt trước BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36
  54. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Hình 3.15 Hình ảnh LCD mặt sau BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37
  55. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ d. Sơ đồ nguyên lí Hình 3.16 Giao tiếp LCD với vi điều khiển STM32F407 chuẩn FSMC e. Giải thích sơ đồ nguyên lí Chân 2,36,34 : nối GND. Chân 25, 33: Cấp nguồn 3.3V từ mạch giảm áp LM2596. Tụ điện C1 10uF: lọc nhiễu 50Hz công nghiệp. Chân 3, ,18: chân lấy dữ liệu truyền song song từ chân vi điều khiển. Chân 19: tín hiệu cho phép LCD hoạt động thường là mức thấp. Chân 20: Chọn ghi dữ liệu hay đọc dữ liệu trong thanh ghi. Chân 21: Chân ghi dữ liệu. Chân 22: Chân đọc dữ liệu. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38
  56. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ 3.3.6 Thiết kế khối nguồn: a. Chức năng: Cung cấp nguồn cho toàn bộ hệ thống bao gồm cả khối đo nhịp tim và khối điều khiển hiển thị. b. Lựa chọn linh kiện: Bảng 3.2 Dòng điện tiêu thụ của các thiết bị sử dụng Tên linh kiện Điện áp định mức Dòng điện định mức ESP8266 5VDC 200mA STM32F407VET6 3.3VDC 240mA LCD 7 inch 3.3VDC 180mA Với các thông số điện áp, dòng điện của các linh kiện được sử dụng cũng như để đáp ứng mục tiêu thiết kế nhỏ gọn thì nguồn 5V 1.5A là lựa chọn phù hợp cho khối nguồn của toàn mạch. Loại nguồn này rất phổ biến trong các ứng dụng Iot hiện nay có thể đc cung cấp từ Adapter, Sạc pin điện thoại, pin dự phòng, pin lipo Tuy nhiên với ứng dụng đo điện tim hiển thị thì sử dụng nguồn cung cấp từ pin dự phòng hoặc adapter sạc cho điện thoại là hợp lí và dễ sử dụng nhất. Ngoài ra còn cần phải thực hiện cho nguồn 5v dc qua mạch Buck DC-DC để cấp có các ngoại vi ở đây nhóm em chọn module đc thế kế sẵn là mạch hạ áp dùng IC LM2596. c. Thông số kỹ thuật: Điện áp đầu vào: Từ 3V đến 30V. Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V. Dòng đáp ứng tối đa là 3A. Hiệu suất : 92% Công suất : 15W Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39
  57. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Hình 3.17 Mạch hạ áp LM2596 d. Sơ đồ nguyên lí Hình 3.18 Sơ đồ nguyên lí mạch hạ áp e. Giải thích sơ đồ nguyên lí. Bộ chuyển đổi Buck là bộ chuyển đổi nguồn DC-DC có điện áp đầu ra nhỏ hơn điện áp đầu vào. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40
  58. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Khi “Switch On” tức là nối nguồn vào mạch, lúc đó dòng điện đi qua cuộn cảm nên dòng cuộn cảm tăng lên. Tại thời điểm này thì tụ điện được nạp và cũng cung cấp dòng điện qua tải. Khi “Switch Off” tức là ngắt nguồn ra khỏi mạch. Khi đó cuộn cảm tích lũy năng lượng từ trường và tụ điện được tích lũy trước đó sẽ phóng điện qua tải. Cuộn cảm có xu hướng giữ cho dòng không đổi và giảm dần. Điện áp đầu ra được tính như sau : Vout = Vin * ( ton /( ton + toff) . Với ton và toff lần lượt là thời gian mở và thời gian khóa của Switch Đối với kiểu nguồn Buck này thì cho công suất đầu ra rất lớn so với công suất đầu vào vì sử dụng cuộn cảm, tổn hao công suất thấp. Trong trường hợp này Mạch giảm áp DC dùng IC LM2596 nhỏ gọn có khả năng giảm áp từ 30V xuống 1.5V mà vẫn đạt hiệu suất cao (92%) . Thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như camera, motor , robot, BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41
  59. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ 3.4 SƠ ĐỒ NGUYÊN LÍ TOÀN MẠCH 3.4.1 Sơ đồ nguyên lí Hình 3.19 Sơ đồ nguyên lí board đọc cảm biến và truyền dữ liệu BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42
  60. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ Hình 3.20 Sơ đồ nguyên lí board nhận dữ liệu và hiển thị 3.4.2 Giải thích sơ đồ nguyên lí Cảm biến Max30100 giao tiếp với ESP8266 Node MCU qua chuẩn truyền I2C. Dữ liệu từ led phát và led thu từ cảm biến sẽ đc ESP8266 Node MCU xử lí và cho qua 3 bộ lọc để hình thành tín hiệu dạng điện tim. Ngoài ra vi xử lí cũng sẽ tính toán ra giá trị nhịp tim và nồng độ oxy trong máu. Mỗi lần thực hiện tính toán giá xong dữ liệu sẽ được cập nhật và truyền đi bằng giao thức UDP. Vòng lặp lại tiếp tục xử lí đọc giá trị cảm biến. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43
  61. CHƯƠNG 3. TÍNH TOÁN VÀ THIẾT KẾ ESP8266 Node MCU trong khối xử lí hiển thị sẽ nhận dữ liệu qua giao thức UDP và sẽ được cập nhật qua vi điều khiển STM32F407 bằng 2 chân Tx và Rx. Dữ liệu được lấy về dưới dạng chuỗi gồm có: giá trị điện tim, nhịp tim và nồng độ oxy trong máu. Thực hiện thuật toán tách chuỗi và đẩy dữ liệu hiển thị qua 16 chân truyền song song FSMC để hiển thị giao diện người dùng. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44
  62. CHƯƠNG 4. THI CÔNG HỆ THỐNG Chương 4. THI CÔNG HỆ THỐNG 4.1 GIỚI THIỆU Chương này trình bày quá trình thi công mạch PCB, lập trình hệ thống, lắp ráp phần cứng và kiểm tra mạch. Quá trình thực hiện gồm hình vẽ cũng như hình ảnh thực tế của mô hình, hình ảnh kết quả chạy mà hệ thống thực hiện được. 4.2 THI CÔNG HỆ THỐNG 4.2.1 Thi công bo mạch a. Liệt kê linh kiện. - Mạch in được thiết kế trên phần mềm Alitum Designer 18. - Thực hiện in mạch và tiến hành thi công bo mạch. Sau khi thi công sẽ dùng đồng hồ VOM để kiểm tra ngõ vào, ngõ ra chân chip dán có lỗi trong lúc thực hiện hay không. Câp nguồn 5VDC cho mạch kiểm tra nguồn ra 3.3VDC từ mạch giảm áp. Bảng 4.1. Danh sách các linh kiện. STT Tên linh kiện Giá trị Dạng vỏ Chú thích 1 STM32F407VET6 SMD SL:1 ESP8266 Node Module tích 2 MCU hợp mạch SL:3 nạp Gồm chip Hãng 3 LCD TFT 7 inch điều khiển và Waveshare cảm ứng SL:1 4 MAX30100 Đã ra chân SL:2 hàng rào BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45
  63. CHƯƠNG 4. THI CÔNG HỆ THỐNG 5 Thạch anh tạo 8MHZ SMD SL:1 giao động 6 Thạch anh tạo thời 32678 KHZ Dạng chân SL:1 gian thực đứng 7 Chuông 5VDC SMD SL:1 8 Transistor c1815 NPN SMD SL:1 9 Nút nhấn SMD SL:1 10 Mạch nạp ST Link USB mạch SL:1 V2 nạp 11 Đế Pin CR1220 SMD SL:1 12 Pin CR1220 3VDC SL:1 12 Mạch giảm áp 5VDC-> Module SL:1 LM2596 3VDC 13 Điện trở 10k SMD SL:5 14 Điện trở 4.7K SMD SL:4 15 Điện trở 680 SMD SL:1 16 Tụ điện 10uF SMD SL:9 17 Tụ điện 22pF SMD SL:5 18 Tụ điện 100nF SMD SL:9 19 Diot 1N4007 SMD SL:2 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46
  64. CHƯƠNG 4. THI CÔNG HỆ THỐNG b. Tiến hành vẽ PCB trên Altium 18 Hình 4.1 PCB lớp trên Board STM điều khiển màn hình BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47
  65. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.2 PCB lớp dưới Board STM điều khiển màn hình Hình 4.3 PCB định vị SMD Board STM điều khiển màn hình BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48
  66. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.4 Mạch mô phỏng đo điện tim 4.2.2 Lắp ráp và kiểm tra a. Lắp ráp module nguồn Tiến hành lắp ráp và hàn các linh kiện của module nguồn. Tiến hành đo và kiểm tra nguồn vào và ra xem đúng sai, cân chỉnh cho đúng đầu vào 5VDC sau mạch giảm áp còn 3.3VDC. b. Tiến hành thực hiện hàn chip dán STM32F4, các linh kiện khác. Sau khi đã hoàn hàn linh kiện lên board. Kiểm tra mạch xem board có bị đứt hay chập mạch không. Nếu có thì tiến hành xử lý. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49
  67. CHƯƠNG 4. THI CÔNG HỆ THỐNG 4.3 ĐÓNG GÓI MÔ HÌNH Hình 4.5 Mạch cảm biến nhịp tim BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50
  68. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.6 Mặt trước màn hình hiển thị kết quả Hình 4.7 Mặt cấp nguồn và nút nhấn reset BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51
  69. CHƯƠNG 4. THI CÔNG HỆ THỐNG 4.4 LẬP TRÌNH HỆ THỐNG 4.4.1 Lưu đồ giải thuật Bắt đầu Kiểm tra thiết bị đã S kết nối wifi chưa Đ Kiếm tra xem S cảm biến có hoạt động hay không Đ Đọc giá trị nhịp tim và spo2 thu được từ cảm biến Lọc giá trị điện tim Thực hiện ghép chuỗi nhịp tim, spo2 Thực hiện ghép chuỗi tín hiệu điện tim Truyền chuỗi dữ liệu ghép được qua chuẩn truyền không dây Kết thúc Hình 4.8 Lưu đồ thuật toán chương trình đọc cảm biến và truyền dữ liệu BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52
  70. CHƯƠNG 4. THI CÔNG HỆ THỐNG - Bắt đầu chương trình là kiểm tra kết nối wifi trên thiết bị, thiết lập giao thức truyền UDP qua địa chỉ IP cố định. Kiểm tra nối dây giữa cảm biến và vi điều khiển. Tiến hành lấy mẫu dữ liệu và tính toán giá trị nhịp tim và spo2. Giá trị thu được từ led hồng ngoại cho đi qua 3 bộ lọc( lọc thông thấp, lọc butterworth, lọc trung vị) để hình thành dạng sóng điện tim.Thực hiện ghép chuỗi dữ liệu và truyền dữ liệu qua wifi. Cuối cùng qua lại thực hiện lại vòng lặp như trên. Bắt đầu Khởi tạo các chuỗi bmp: nhịp tim Spo: nồng độ oxy Drawa: giá trị điện tim S Cảm biến cập nhật dữ liệu mới Đ Ghép chuỗi “ha” + bmp “Sa” + Spo Gửi chuỗi dữ liệu Kết thúc Hình 4.9 Lưu đồ thuật toán chương trình con ghép chuỗi dữ liệu nhịp tim - Bắt đầu khởi tạo các biến bmp là nhip tim theo phút, spo là nồng độ oxy trong máu. Khi dữ liệu trên cảm biến cập nhật về giá trị thực hiện ghép 2 chuỗi “Ha” và “Sa” lần lược cho giá trị nhịp tim và spo2 gửi đi chuỗi dữ liệu. Vòng lặp tiếp tục qua lại chờ giá trị mới cập nhật từ cảm biến. Tương tự cho cảm biến 2 là “Hb” và “Sb”. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53
  71. CHƯƠNG 4. THI CÔNG HỆ THỐNG Bắt đầu Khởi tạo chuỗi Drawdata S Cảm biến cập nhật dữ liệu mới Đ Gán Drawdata cho giá trị sau bộ lọc Giá trị Drawdata lớn hơn 1000 S Đ Giá trị Drawdata Gửi chuỗi “Da0” lớn hơn -1000 Đ S Gửi chuỗi “Da”+ Gửi chuỗi “Da0” Drawdata Kết thúc Hình 4.10 Lưu đồ thuật toán chương trình con ghép chuỗi tín hiệu điện tim - Bắt đầu khởi tạo giá trị Drawdata. Khi cảm biến cập nhật giá trị mới thìgiá trị dữ liệu sau các bộ lọc được gán cho Drawdata. Khi giá trị Drawdata thỏa mãn điều kiện lớn hơn -1000 và bé hơn 1000 tiến hành ghép chuỗi “Da” + Drawdata BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54
  72. CHƯƠNG 4. THI CÔNG HỆ THỐNG và gửi dữ liệu. Ngược lại gửi “Da0”. Vòng lặp lại quay về chờ cảm biến cập nhật giá trị mới. Tiến hành tương tự cho cảm biến 2. Start Kiểm tra wifi S trên thiết bị Đ Đọc chuỗi dữ liệu từ khối nhận dữ liệu Phân tích chuỗi dữ liệu S S S S S S Dữ liệu bắt Dữ liệu bắt Dữ liệu bắt Dữ liệu bắt Dữ liệu bắt Dữ liệu bắt đầu là ”Ha” đầu là ”Hb” đầu là ”Sa” đầu là ”Sb” đầu là ”Da” đầu là ”Db” Đ Đ Đ Đ Đ Đ Nhịp tim cảm Nhịp tim cảm Nồng độ Oxy Nồng độ Oxy Tín hiệu điện Tín hiệu điện biến1 biến 2 cảm biến 1 cảm biến 2 tim cảm biến 1 tim cảm biến 2 Kí tự dữ liệu S thứ 2 là “a” Kenha =a+1 1 Đ Kenha =0 Kênh a <100 và kênh b <100 S Đ Kí tự dữ liệu S thứ 2 là “b” Kenhb =b+1 Xuất giao diện 2 Xuất giao diện 1 Đ kênh kênh Kenhb =0 1 Kết thúc Hình 4.11 Lưu đồ thuật toán nhận dữ liệu và hiển thị BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55
  73. CHƯƠNG 4. THI CÔNG HỆ THỐNG - Bắt đầu kiểm tra wifi trên thiết bị nhận dữ liệu. Tiến hành đọc chuỗi dữ liệu và phân tích dữ liệu. Khi chuỗi dữ liệu bắt đầu bằng kí tự “H” và kí tự tiếp theo sau nó “a” thì đó chính là nhịp tim của cảm biến 1. Tương tự cho các dữ liệu còn lại. Lần lượt ta tách được nhịp tim, nồng độ oxy trong máu và tín hiệu vẽ điện tim của các cảm biến. Tiến hành xuất dữ liệu lên màn hình người dùng. Kiểm tra 100 lần nếu có dữ liệu từ cả 2 kênh a và b thì xuất màn hình cả 2 kênh. Nếu chỉ có tín hiệu 1 kênh thì chỉ hiển thị trên 1 màn hình 1 kênh đang hoạt động. 4.4.2 Phần mềm lập trình cho vi điều khiển a. Phần mềm lập trình ESP8266 Trong đề tài này người thực hiện sử dụng trình biên dịch Arduino IDE vì nó tiện lợi và hỗ trợ tốt hơn cho người sử dụng. Hướng dẫn sử dụng Arduino IDE: - Bước 1: Mở chương trình Arduino IDE có giao diện như hình 4.6 Hình 4.12 Giao diện Aduino IDE mới khởi động BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56
  74. CHƯƠNG 4. THI CÔNG HỆ THỐNG - Bước 2: Tiến hành biên soạn chương trình như hình 4.7: Hình 4.13 Giao diện Aduino IDE lập trình - Bước 3: Lưu chương trình như hình 1.11, khi bạn nhấn Save trình biên dịch Arduino IDE sẽ tự tạo thư mục để lưu code. - Bước 4: Tiến hành tổng hợp code (1) và nạp cho board ESP8266 Node MCU (2). BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57
  75. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.14 Tiến hành tổng hợp và nạp chương trình b. Phần mềm lập trình STM32CubeMX và Keil C V5 Hình 4.15 Giao diện khởi động chương trình STM32CubeMX BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58
  76. CHƯƠNG 4. THI CÔNG HỆ THỐNG Tại giao diện này các bạn có thể: Tạo 1 Project mới: File -> New Project hoặc nhấn vào ACCESS TO MCU SELECTOR nếu bạn lập trình 1 MCU STM32 bất kỳ, hoặc nhấn vào ACCESS TO BOARD SELECTOR nếu bạn lập trình trên 1 board phát triển của hãng STM32. Mở project gần đây: tại mục Recent Opened Project nhấn vào tên project bạn đã mở gần đây. Mở 1 project bất kỳ: tại mục Other Project, bấm vào biểu tượng duyệt thư mục hoặc File -> Load Project. Sau khi nhấn vào File -> New Project thì giao diện chọn vi điều khiển STM32 sẽ hiện ra: . Chọn vi điều khiển: tại mục Part Number Search các bạn nhập vào tên vi điều khiển mà mình muốn cấu hình (ví dụ vi điều khiển STM32F103) . Bắt đầu Project: nhấn vào Start Project Hình 4.16 Tạo 1 Project mới Tiếp theo sau khi tạo project chương trình sẽ dẫn chúng ta đến giao diện cấu hình chip. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59
  77. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.17 Giao diện cấu hình vi điều khiển Tại mục Pinout & Configuration: Cấu hình nạp code: Các bạn chọn System Core -> SYS -> Debug: Serial Wire để vi điều khiển được cấu hình nạp code thông qua mạch nạp ST- Link V2. Cấu hình các ngoại vi: Việc cấu hình các ngoại vi như INPUT, INPUT, External Interrupt, ADC, TIMER, UART có thể được thực hiện bằng cách chuột phải để chọn chân trực tiếp và kích chuột trái vào chân mà mình muốn cài đặt. Ngoài ra, các bạn cũng có thể cấu hình các ngoại vi khác tại các mục: System Core, Analog, Timers, Connectivity Tại mục Clock Configuration: Các bạn cấu hình lựa chọn nguồn tạo dao động và tần số hoạt động cho vi điều khiển (Bộ xử lý trung tâm – CPU và Peripherals – các ngoại vi) thông qua Clock tree. (Kết hợp với cấu hình RCC tại System Core). BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60
  78. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.18 Cấu hình xung clock cho mạch Tại Project Manager các bạn đặt tên Project, nơi lưu trữ (lưu ý không sử dụng Tiếng Việt có dấu), và chọn Toolchain /IDE là MDK-ARM V5 nếu các bạn sử dụng Keil C IDE để code và debug. Sau khi cấu hình xong, các bạn bấm vào GENERATE CODE để sinh code. Sau khi đã sinh code thì sẽ có thông báo các bạn Open Project. Lúc này Project sẽ được mở lên ở phần mềm Keil C với đầy đủ các cấu hình mà bạn đã thực hiện. Hình 4.19 Lưu thông tin project và sinh code Sau khi cấu hình, sinh code từ phần mềm STM32CubeMX và mở Project Keil C, các bạn mở file main.c tại mục Application/User. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61
  79. CHƯƠNG 4. THI CÔNG HỆ THỐNG Các bạn nhấn vào biểu tượng Option for Target hoặc Project -> Option for Target để thực hiện 1 số cấu hình: Hình 4.20 Cấu hình cho mạch nạp Tại cửa sổ Option for Target, các bạn chọn thẻ Debug và tick chọn Use ST- Link Debugger, để nạp chương trình xuống kit (nếu chọn Use Simulator thì sẽ ở chế độ mô phỏng). Nhấn vào Settings tại Use: ST-Link Debugger, cửa sổ Cortex-M Target Driver Setup, các bạn chọn thẻ Flash Download, tại đây nếu tick chọn Reset and Run thì ngay sau khi nạp, chương trình sẽ chạy ngay. Nếu không tick chọn thì các bạn nạp code xong, nhấn vào nút reset trên board mạch thì chương trình mới chạy. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62
  80. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.21 Cấu hình cho mạch reset Cuối cùng có các biểu tượng Build (F7) để compile chương trình và Load (F8) để nạp chương trình. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63
  81. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.22 Tiến hành compile và nạp chương trình 4.4.3 Phần mềm lập trình cho điện thoại Android sử dụng app inventer MIT App Inventor dành cho Android là một ứng dụng web nguồn mở ban đầu được cung cấp bởi Google và hiện tại được duy trì bởi Viện Công nghệ Massachusetts (MIT). Nền tảng cho phép nhà lập trình tạo ra các ứng dụng phần mềm cho hệ điều hành Android (OS). Bằng cách sử dụng giao diện đồ họa, nền tảng cho phép người dùng kéo và thả các khối mã (blocks) để tạo ra các ứng dụng có thể chạy trên thiết bị Android. Đến thời điểm hiện tại 07/2017, phiên bản iOS của nền tảng này đã bắt đầu được đưa vào thử nghiệm bởi Thunkable, là một trong các nhà cung cấp ứng dụng web cho ngôn ngữ này. Mục tiêu cốt lõi của MIT App Inventor là giúp đỡ những người chưa có kiến thức về ngôn ngữ lập trình từ trước có thể tạo ra những ứng dụng có ích trên hệ điều hành Android. Phiên bản mới nhất là MIT App Inventor 2. Ngày nay, MIT đã hoàn thiện App Inventor và nó được chia sẻ ngay trên tài khoản Google. Các lập trình viên mới bắt đầu hoặc bất kỳ ai muốn tạo ra ứng dụng Android chỉ cần vào địa chỉ web của MIT, nhập thông tin tài khoản Google, và từ những mảnh ghép nhỏ, xây dựng những ý tưởng của mình. Bạn BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64
  82. CHƯƠNG 4. THI CÔNG HỆ THỐNG là người mới bắt đầu hoặc chưa biết gì hết về App Inventor? MIT có sẵn một loạt các hướng dẫn cụ thể cho bạn làm quen với chương trình. Để sử dụng được App Inventor, các bạn truy cập vào địa chỉ . Sau đó tiến hành đăng nhập bằng tài khoản Google của bạn để mở trang quản lí các project. Các bước xây dựng ứng dụng android trên app inventer: Bước 1: Tạo project Sau khi đăng nhập, tại cửa sổ chính (My Project), bạn chọn Start new project , sau đó đặt trên cho project bạn muốn tạo. Hình 4.23 Giao diện tạo project MIT INVENTER Bước 2: Thiết kế giao diện Cửa sổ thiết kế gồm 4 khung chức năng chính như hình dưới đây: Đầu tiên, một ứng dụng có thể có nhiều cửa sổ giao diện, trong MIT AI2 gọi là các Screen. Palette: Chứa các thành phần có thể đặt lên trên Screen như: Button, Label, Image, Listview, Video player, . Đến các thanh phần chức năng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65
  83. CHƯƠNG 4. THI CÔNG HỆ THỐNG không nhìn thấy trên Screen như: BLE extension, Notifier, các sensors, . Viewer: Hiển thị giao diện screen. Kéo thả các thành phần từ khung Palette sang đây để thiết kế giao diện cho phần mềm của bạn. Components: Sơ đồ cây thể hiện cấu trúc các thành phần đã được bố trí trên Screen. Properties: Hiển thị thuộc tính của component tương ứng được chọn. Hình 4.24 Thiết kế giao diện người dùng Bước 3: Lập trình cho hệ thống bằng cách kéo thả các block. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66
  84. CHƯƠNG 4. THI CÔNG HỆ THỐNG Hình 4.25 Các lệnh lập trình cơ bản 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC Đầu tiên để mạch hoạt động thì ta phải cấp nguồn sử dụng, ở đây ta sử dụng nguồn 5VDC. Khi thấy màn hình hiển thị và cảm biến sáng đèn led là BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67
  85. CHƯƠNG 4. THI CÔNG HỆ THỐNG mạch sẵn sàng hoạt động. Hình 4.26 Màn hình thiết bị khi cấp nguồn khởi động Đặt tay lên cảm biến cố định tay trên thiết bị. Trong quá trình đo cần hạn chế xê dịch tay làm sai lệch kết quả đo. Hình 4.27 Cách đặt tay trên cảm biến như hình BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68
  86. CHƯƠNG 4. THI CÔNG HỆ THỐNG Tiến hành quan sát dạng sóng trên màn hình hiển thị. Đồ thị dạng sóng cần 10-20 để ổn định. Hình 4.28 Màn hình hiển thị kết quả LCD Kèm theo đó có thể quan sát trực tiếp từ ứng dụng điện thoại. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69
  87. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Chương 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.1 Kết quả Sau một thời gian tìm hiểu, nghiên cứu các tài liệu chuyên ngành tiếng việt cũng như tiếng anh, tìm hiểu thêm qua mạng internet, tổng hợp các kiến thức đã được học suốt 4 năm cũng như được sự giúp đỡ tận tình của giáo viên hướng dẫn, nhóm chúng em đã cơ bản hoàn thành được đồ án tốt nghiệp với đề tài “Thiết kế và thi công thiết bị giám nhịp tim và nồng độ oxy trong máu” và đạt các kết quả như sau: 5.1.1 Giao diện App Android Để thuận tiện hơn trong quá trình sử dụng, nhóm thực hiện đã nghiên cứu và phát triển một ứng dụng trên điện thoại smartphone sử dụng hệ điều hành Android cho ứng dụng đo nhịp tim và đồ thị điện tim. Giao diện App Android như sau: Hình 5.1 Giao diện màn hình khởi động của App BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70
  88. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Sau khi nhấn Start màn hình chuyển qua giao diện chính như sau: Hình 5.2 Giao diện màn hình chính của App App bao gồm 3 chế độ:Đo bệnh nhân 1, Đo bệnh nhân 2,Đo Dual cả 2 bệnh nhân và cuối cùng là thông tin về app. Chế độ thứ nhất là đo dữ liệu nhịp tim, spo2, đồ thị điện tim của người bệnh nhân 1, nhập tên bệnh nhân dễ theo dõi kèm thể hiện cảnh báo ở cuối giúp người thân có thể theo dõi được thể hiện như sau: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71
  89. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.3 Giao diện đo ID1 của App Tương tự với ID2 bệnh nhân 2, với các thông số tương tự trên ta có kết quả như sau: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72
  90. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.4 Giao diện đo ID2 của App Cuối cùng là giao diện đo dual, hiển thị thông tin cả 2 người trên 1 màn hình BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73
  91. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.5 Giao diện đo Dual của App Cuối cùng là thông tin của người thực hiện đề tài. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74
  92. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.6 Giao diện thông tin liên hệ 5.1.2 Mô hình chạy thực tế Khi cấp nguồn hệ thống chưa thực hiện đo có giao diện như sau: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75
  93. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.7 Giao diện khi hệ thống được cấp nguồn Giao diện đo khi chỉ có 1 cảm biến hoạt động: Hình 5.8 Giao diện đo khi chỉ có 1 cảm biến hoạt động BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 76
  94. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Giao diện đo khi cả 2 cảm biến cùng hoặt động cùng lúc: Hình 5.9 Giao diện đo khi cả 2 cảm biến cùng hoạt động 5.1.3 Kết quả so với đồng hồ đo thể thao Fitbit theo dõi sức khỏe hiện nay So sánh kết quả đo thực tế của mạch thi công với thiết bị đo chính xác. Thiết bị được sử dụng để so sánh kết quả trong đề tài này là đồng hồ thể thao Fitbit đo nhịp tim, theo dõi tình trạng sức khỏe. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 77
  95. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.10 Đồng hồ thể thao Fitbit theo dõi tình trạng sức khỏe BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 78
  96. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 5.11 Vị trí đeo đồng hồ ở cổ tay Kết quả thu được như bảng sau: đeo đồng hồ trên cổ tay, và đặt đầu ngón trỏ lên cảm biến đo liên tục không nhấc tay ra khỏi cảm biến. Xem như mỗi lần đo cách nhau 10 giây. Bảng 5.1. Bảnh so sánh mô hình thiết kế với đồng hồ thể thao Lần đo Mô hình sinh viên thiết kế Đồng hồ thể thao trên thị trường (đơn vị nhịp/phút) (đơn vị nhịp/phút) 1 101 92 2 98 95 3 98 95 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 79
  97. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 4 93 93 5 89 96 6 90 92 7 90 94 8 88 89 9 90 91 10 89 90 Đánh giá sau 10 lần đo trung bình ta thấy nhịp tim ổn định ở mức 90 tuy nhiên mức giao động quanh ngưỡng trung bình của đồng hồ thể thao ít hơn so với mạch thế kế. một phần do cơ chế truyền không dây của nhó thế kế cần thời gian khoảng 20 giây để mạch hoạt động ổn định. Nhưng nhìn chung với chất lượng cảm biến với giá thành rẻ khó có thể yêu cầu cao nên nhóm chúng tôi đánh giá cao mạch đã thiết kế được. 5.2 Nhận xét Sau khi hoàn thành mạch đo và lắp ráp màn hình board mạch thành mô hình hoàn chỉnh, kết quả đạt được như sau: Mặt trước hệ thống là màn hình LCD 7 Inch đủ to để người dùng có thể quan sát, cố định chắc chắn trong hộp cách điện mica. Sau khi hoàn thành sản phẩm có mức độ hoàn thiện tốt về tính thẩm mỹ cũng như khả năng vận hành thực tế. Mạch liên tục trong 10h vẫn giữ được sự ổn định. Có khả năng đáp ứng nhanh yêu cầu người dùng. Sau khi thực hiện xong thì sinh viên đã hoàn thành được các công việc mà đề tài đã đề ra: Tạo được giao diện ứng dụng Android trên điện thoại. Màn hình hiển thị thực tế với app Android đồng bộ khá tốt. Sản phẩm hoạt động khá ổn định (tắt mở nguồn 10 lần thì mạch chạy được khoảng 9 lần). BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 80
  98. CHƯƠNG 5. KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Sản phẩm thi công gọn gàng, độ an toàn cao vì đã được cách điện bảo vệ an toàn tuyệt đối cho người sử dụng. 5.3 Đánh giá Sau 16 tuần nghiên cứu và thực hiện đề tài, hệ thống đã đáp ứng được những mục tiêu và yêu cầu thiết kế. a. Ưu điểm - Hệ thống dễ sử dụng, dễ thao tác. - Thiết bị nhỏ gọn, tiện lợi. - Mô hình bền, hoạt động tương đối ổn định trong thời gian dài. - Giá thành rẻ. - Sử dụng được tại nhà, tại giường bệnh nhân, phòng khám tư - Không phụ thuộc và nguồn điện 220V. Nguồn cấp ở thể là sạc dự dòng 5v . Modem wifi có thể thay thế bằng cơ chế phát wifi trên thế bị di động b. Nhược điểm - Hệ thống dữ liệu truyền nhận nội bộ bảo mật chưa tốt, người lạ có thể xâm nhập. - Hệ thống đo còn phụ thuộc rất nhiều vào chất lượng cảm biến.Vì phương pháp đo là hấp thụ quang học hên rất dễ bị nhiễu bởi ánh sáng bên ngoài. - Đồ thị điện tim còn cập nhật hơi chậm vì cần thời gian xử lí. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 81
  99. CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Qua đề tài “THIẾT KẾ VÀ THI CÔNG THIẾT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU” nhóm thực hiện và nghiên cứu được những vấn đề mà mục tiêu đã nhóm đưa ra: - Cấu tạo và nguyên lí hoạt động của nhịp tim. - Phương pháp đo nhịp tim bằng phương pháp hấp thụ quang học. - Giải thuật vẽ tín hiệu điện tim. - Cách đo nhịp tim bằng cảm biến MAX3010 giao tiếp với vi điều khiển ESP8266. - Truyền dữ liệu không dây nội bộ giữa 2 module ESP8266 Node MCU. - Giao tiếp UART giữa ESP8266 Node MCU và STM32F407VET6. - Giao tiếp giữa STM32F407VET6 với màn hình LCD 7 Inch chuẩn giao tiếp song song FSMC. - Hiểu được cách thiết kế giao diện của một ứng dụng Android cơ bản. Tuy nhiên, do thời gian và trình độ còn hạn hẹp nên không tránh khỏi những sai sót, hạn chế trong hệ thống như: - Chưa đảm bảo được sự tiện lợi cho thiết bị vì cả ba thiết bị đo, màn hình và điện thoại cần phải nằm trong vùng wifi đã được truy cập. - Do dạng sóng trong đề tài cần phải cập nhật liên tục với tốc độ cực nhanh vì vậy thiết bị vẫn chưa đạt được sự ổn định và chính xác cao. - Ứng dụng nhóm thiết kế chỉ mới hoạt động trên Android. 6.2 HƯỚNG PHÁT TRIỂN Đề tài “THIẾT KẾ VÀ THI CÔNG THIÊT BỊ GIÁM SÁT NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU” mặc dù còn có nhiều hạn chế tuy nhiên có thể ứng dụng vào việc theo dõi nhịp tim cho người cao tuổi, người có tiền sử bệnh tim, bệnh nhân nhập viện điều trị lâu ngày hoặc cũng có thể ứng dụng vào các phòng khám nhỏ. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 82
  100. CHƯƠNG 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Hệ thống về phần cứng nếu được hỗ trợ các cảm biến mạnh mẽ, chất lượng tốt hơn thì thiết bị có thể chạy chính xác nhiều hơn nữa. Về phần truyền không dây có thể nâng cấp lên điện thoại, cảm biến, màn hình không cần kết nối chung wifi với nhau vẫn có thể đồng bộ chung với nhau được. Về phần mềm, có thể thiết kế 1 trang web lưu lịch sử đo nhịp tim, SpO2 của người dùng, quản lý nhiều hệ thống đo cùng cùng lúc, kết hợp với trí thông minh nhân tạo (AI) để đưa ra chẩn đoán, cảnh báo bệnh một cách kịp thời và chính xác. Về phần ứng dụng trên điện thoại nhóm chỉ mới thiết kế cho Android, nhưng hiện tại số người dung IOS cũng rất lớn nên chú tâm vào viết ứng dụng cho hệ điều hành nà BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 83
  101. TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] Nguyễn Đình Phú, “Giáo trình vi xử lý ”, NXB ĐH Quốc Gia Tp.HCM, 2014 [2] Nguyễn Đình Phú, “Giáo trình Thực hành thiết kế vi mạch số với HDL ”, NXB ĐH Quốc Gia Tp.HCM, 2014 [3] Nguyễn Hữu Phương, “Xử lí tín hiệu số”, NXB ĐH Quốc Gia Tp.HCM, 2015 [4] Khoa Y,“ Kĩ thuật đo và phân tích điện tâm đồ bình thường”, NXB ĐH Quốc Gia Tp.HCM, 2015. [5] Nguyễn Thanh Hoàng, Nguyễn Khoa Nam, “THIẾT KẾ VÀ THI CÔNG VÒNG TAY ĐO NHỊP TIM SỬ DỤNG CÔNG NGHỆ IoTs”, Đồ Án Tốt Nghiệp ĐH, Trường ĐH Sư Phạm Kỹ Thuật Tp.HCM, 2019. [6] Pong P.Chu, “RTL Hardware Design Using VHDL”,2005. [7] Nguyễn Công Danh, Nguyễn Tuấn Minh, “ỨNG DỤNG RASPBERRY PI GIÁM SÁT NHỊP TIM QUA TRANG WEB”, Đồ án thiết kế, Trường ĐHSPKT, Tp.HCM, 2016. [8] Dương Quốc Trung, Trần Thế Vinh “THIẾT KẾ VÀ THI CÔNG MẠCH ĐO NHỊP TIM, NHIỆT ĐỘ VÀ ÁP SUẤT SỬ DỤNG STM32F103C8T6 HIỂN THỊ TRÊN LCD TFT”, Đồ án môn học, Trường ĐHSPKT, Tp.HCM, 2018. [9] Nguyễn Minh Đức, Trần Châu Phong, “BẢNG LED MA TRẬN ĐIỀU KHIỂN BẰNG ỨNG DỤNG ANDROID ”, Đồ án tốt nghiệp, Trường ĐHSPKT, Tp.HCM, 2019. 84
  102. PHỤ LỤC PHỤ LỤC - Chương trình đọc cảm biến và truyền dữ liệu: #include #include #include #include #include "MAX30100_PulseOximeter.h" #define REPORTING_PERIOD_MS 1000 MAX30100 sensor; WiFiUDP udpConnect; float ir_dcFilter; float v[2]; PulseOximeter pox; uint32_t tsLastReport = 0,mslast = 0; uint32_t load; uint32_t lastms = 0; int bmp,bmpsend,sposend, bmpbt = 0, bmpcao = 0,bmpthap, bmpsum = 0,diff, ii = 0,spo2=0, spo2reg=0; int drawdata; uint16_t red,ir; void setup() { Wire.begin(); Serial.begin(115200); Serial.print("Initializing pulse oximeter "); ketnoiwifi(); if (!pox.begin()) { Serial.println("FAILED"); for(;;); } else { Serial.println("SUCCESS"); } udpConnect.begin(50002); } void senddata(String sms) { int len= sms.length()+1; uint8_t a[len]; char smsc[len]; sms.toCharArray(smsc,len); for (int m = 0; m < len; m ++) a[m] = (uint8_t)smsc[m] 85
  103. PHỤ LỤC udpConnect.beginPacket("255.255.255.255",54321); udpConnect.write(a,len); udpConnect.endPacket(); } void loop() { pox.update(); sensor.update(); if (millis() - lastms>100) { senddata("Ha" + String(bmpsend)); senddata("Sa" + String(sposend)); lastms = millis(); } while (sensor.getRawValues(&ir, &red)) { drawdata= fillter(float(ir)); if (drawdata > 1000) { senddata("Da0"); } else { if (drawdata > -1000) { if (drawdata > 0) drawdata = drawdata/2; String data = "Da" + String(drawdata); senddata(data); } else { senddata("Da0"); } } } if (millis() - tsLastReport > REPORTING_PERIOD_MS) { bmp = pox.getHeartRate(); spo2 = pox.getSpO2(); ii ++; if ( bmp > 80 && bmp < 101) { bmpsend=bmp; bmpbt = bmp; } 85
  104. PHỤ LỤC else if (bmp > 100) { bmpcao ++; } else { bmpthap ++; } bmpsum += bmp; if (spo2>92) { if (spo2 > 100)spo2 = 100; spo2reg = spo2; sposend = spo2; } Serial.println(String(bmp)); if (ii >= 20) { if(bmpbt > 0){} else if (bmpcao > 15|| bmpthap > 15) { bmpsend = bmp/20; } if(spo2reg < 90) sposend=0; ii = 0; bmpbt = 0; bmpsum = 0; bmpcao = 0; bmpthap=0; spo2reg = 0; } tsLastReport = millis(); } udpConnect.parsePacket(); while (udpConnect.available()) { Serial.write(udpConnect.read()); } } float fillter(float x) { #define LM_SIZE 15 #define ALPHA 0.95 static int LM[LM_SIZE]; // LastMeasurements static byte index = 0; static long sum = 0; static byte count = 0; static float meanDiff;
  105. PHỤ LỤC static float w; static float result; long avg = 0; ///////// DC remove fillter w = x + ALPHA * ir_dcFilter; result = w - ir_dcFilter; ir_dcFilter = result; ///////// meandiff////////// sum -= LM[index]; LM[index] = ir_dcFilter; sum += LM[index]; index++; index = index % LM_SIZE; if (count #include WiFiUDP udpConnect; void setup() { WiFi.begin("Wifi Day Tro", "Phongtro91/39"); while (WiFi.waitForConnectResult() != WL_CONNECTED) delay(100); Serial.begin(115200); udpConnect.begin(54321); } void loop() { int k = 0; udpConnect.parsePacket();
  106. PHỤ LỤC while (udpConnect.available()) { char data = (char)udpConnect.read(); if (k == 0 ) Serial.println(); Serial.print(data); k ++; } } - Chương trình tách chuỗi dữ liệu và hiển thị: void Drawa(int16_t* datad) { int i = 0; if (*ikenhb > 200) { for (xa = 200; xa 200) { for (xb = 200; xb < 800; xb=xb+6) { yb = *(datad + i); LCD_DrawSquare(xb,80,xb+40,480,0x0000,1); tft_draw_line(xb,yrb+240,xb+6,yb+240,0xe7e0); yrb = yb; i++;
  107. PHỤ LỤC } } else { for (xb = 200; xb 9) { if ( a2 > 9) { a3 = a1; a1 = 0; a2 = 0; } else { a3 = a2; a2 = a1; a1 = 0; } } an = a1*100 + a2*10 + a3; if (an 9) {
  108. PHỤ LỤC if ( a2 > 9) { a3 = a1; a1 = 0; a2 = 0; } else { a3 = a2; a2 = a1; a1 = 0; } } an = a1*100 + a2*10 + a3; if (an 200) { LCD_DrawSquare(70,110,150,140,0x0000,1); if ( Ha != 0 ) { if (Ha < 1000) sprintf(hr,"%d",Ha); tft_puts18x32(110,70,(int8_t *)hr,1,green); } else { tft_puts18x32(110,70,(int8_t *)"00",1,green); } } else { LCD_DrawSquare(70,75,150,105,0x0000,1); if ( Ha != 0 ) { if (Ha < 1000) sprintf(hr,"%d",Ha); tft_puts18x32(75,70,(int8_t *)hr,1,green); } else
  109. PHỤ LỤC { tft_puts18x32(75,70,(int8_t *)"00",1,green); } } } if (*(data+1) == 'b') { Hb = get_value(); if( *ikenha > 200) { LCD_DrawSquare(70,110,150,150,0x0000,1); if ( Hb != 0 ) { if (Hb < 1000) sprintf(hr,"%d",Hb); tft_puts18x32(110,70,(int8_t *)hr,1,green); } else { tft_puts18x32(110,70,(int8_t *)"00",1,green); } } else { LCD_DrawSquare(70,320,150,360,0x0000,1); if ( Hb != 0 ) { if (Hb < 1000) sprintf(hr,"%d",Hb); tft_puts18x32(320,70,(int8_t *)hr,1,green); } else { tft_puts18x32(320,70,(int8_t *)"00",1,green); } } } } } void getdraw() { int16_t Da,Db; if (*(data) == 'D') { if (*(data + 1) == 'a') { kenha = 0; Da = get_value(); esp_ir1 = -Da/1.5; if ( esp_ir1_reg != esp_ir1 || esp_ir1 == 0)
  110. PHỤ LỤC { if(esp_ir1 -100) { if (dinha > 5) { dinha = 0; if (draw_indexa == 0) {for (int i=0; i 99) { Drawa(&datadrawa[0]); draw_indexa = 0; } esp_ir1_reg = esp_ir1; } } if (*(data + 1) == 'b') { kenhb = 0; Db = get_value(); esp_ir2 = -Db/1.5; if ( esp_ir2_reg != esp_ir2 || esp_ir2 == 0) { if(esp_ir2 -100) { if (dinhb > 5) { dinhb = 0; if (draw_indexb == 0) {for (int i=0; i<100; i++) datadrawb[i] = 0;} datadrawb[draw_indexb] = 10;
  111. PHỤ LỤC datadrawb[draw_indexb +1] = -120; datadrawb[draw_indexb +2] = -60; datadrawb[draw_indexb +3] = 0; datadrawb[draw_indexb +4] = 60; datadrawb[draw_indexb +5] = -45; datadrawb[draw_indexb +6] = 20; datadrawb[draw_indexb +7] = 0; draw_indexb = draw_indexb+8; } } else { datadrawb[draw_indexb] = 0; draw_indexb ++; dinhb ++; } if (draw_indexb > 99) { Drawb(&datadrawb[0]); draw_indexb = 0; } esp_ir2_reg = esp_ir2; } } } } void getS() { int16_t Sa,Sb; if (*(data) == 'S') { if (*(data + 1) == 'a') { Sa = get_value(); if(*ikenhb > 200) { LCD_DrawSquare(70,360,150,400,0x0000,1); if ( Sa != 0 ) { if (Sa < 1000) sprintf(spo2,"%d",Sa); tft_puts18x32(360,70,(int8_t*)spo2,1,green); } else { tft_puts18x32(360,70,(int8_t*)"00",1,green); } }
  112. PHỤ LỤC else { LCD_DrawSquare(70,160,150,200,0x0000,1); if ( Sa != 0 ) { if (Sa 200) { LCD_DrawSquare(70,360,150,400,0x0000,1); if ( Sb != 0 ) { if (Sb < 1000) sprintf(spo2,"%d",Sb); tft_puts18x32(360,70,(int8_t *)spo2,1,green); } else { tft_puts18x32(360,70,(int8_t *)"00",1,green); } } else { LCD_DrawSquare(70,395,150,435,0x0000,1); if ( Sb != 0 ) { if (Sb < 1000) sprintf(spo2,"%d",Sb); tft_puts18x32(395,70,(int8_t *)spo2,1,green); } else { tft_puts18x32(395,70,(int8_t *)"00",1,green); } } } } } void getName(uint8_t *len) {
  113. PHỤ LỤC uint8_t l = *len; uint8_t ida[l], idb[l]; if (*(data) == 'N') { if (*ikenhb > 200) { if (*(data + 1) == 'a') { LCD_DrawSquare(270,0,800,80,0x0000,1); for(int i = 0; i 200) { if (*(data + 1) == 'b') { LCD_DrawSquare(270,0,800,80,0x0000,1); for(int i = 0; i < l - 2; i ++) { idb[i] = *(data + i + 2); tft_putchar18x32(270+20*i,20,idb[i],1,0xffff); } } } } }