Bƣớc 3: Sau khi đã chọn chế độ đo, màn hình sẽ hiển thị giao diện của chế độ đó. Ta tiến hành nhấn vào mục “Chƣa kết nối” để thực hiện kết nối Bluetooth (hình 4.30a). Sau khi đã chọn kết nối, trạng thái bluetooth sẽ đổi thành “Đã kết nối”. (hình 4.30b).
Hình 4. 30 Trạng thái hiển thị Bluetooth trước và sau khi kết nối
Bƣớc 4: Sau khi bật kết nối Bluetooth, kết quả đo sẽ hiển thị trên App. Muốn chuyển chế độ đo ta nhấn nút “trở về” ở cuối giao diện đo và thực hiện tƣơng tự nhƣ bƣớc 3
Bƣớc 5: Để xem file kết quả đã lƣu ta vào tệp quản lý dữ liệu của điện thoại tìm file text có tên lần lƣợt nhƣ hình 4.31 để xem kết quả.
70
Hình 4. 31 File lưu kết quả đo trên App điện thoại
4.7.2 Quy trình thao tác
Nhằm giúp ngƣời vận hành dễ thao tác với nút sau đây sẽ là quy trình khi
nhấn nút Chọn chế độ đo nhiệt độ:
Chọn chế độ đo nhịp tim và Sp02:
Ban đầu khi nút nhấn đƣợc bật vi điều khiển cấp nguồn cho cảm biến họat động. Sau đó kết quả đo sẽ đc hiển thị trên oled và App. Dữ liệu mỗi lần đo sẽ lƣu thành file dữ liệu. Lƣu ý: Nút nhấn có khi bị nhảy hoặc không ăn ngƣời dùng nhấn lại để đo.
71
Hình 4. 33 Quy trình thao tác cho thiết bị đo
CHƢƠNG 5: THI CƠNG
5.1 Thi cơng phần cứng
Phần cứng của thiết bị gồm hộp đựng bộ điều khiển, hộp đặt cảm biến Max30100 và tay cầm đo nhiệt độ. Bên trong hộp đựng bộ điều khiển là board mạch điều khiển và nguồn Pin. Bên ngồi hộp là màn hình đƣợc cắt từ mica đen, các mặt của hộp đƣợc cố định bằng trụ đồng giúp hộp đƣợc cố định chắc chắn. Board mạch đƣợc cố định với mặt dƣới tấm mica bằng 4 lỗ khoan bắt vít. Các dây bus đƣợc nối với nhau gọn gàng giúp hạn chế sự chạm mạch, đứt dây khi mở nắp thiết bị. Chi tiết thiết kế bộ điều khiển bên trong thiết bị đƣợc thể hiện rõ trong hình 5.1 bên dƣới.
Sau khi đã đóng gói đƣợc bộ điều khiển, ta tiến hành thiết kế vỏ ngồi của thiết bị với màn hình hiển thị Oled LCD và 2 nút nhấn. Bên ngoài thiết bị đƣợc dán giấy Decal xanh dƣơng giúp hạn chế trầy xƣớc. Mặt trên hộp là tên thiết bị và hình logo của
72
trƣờng, khoa. Các nút nhấn đƣợc chú thích rõ ràng chức năng. Hộp đựng cảm biến Max30100 đƣợc in 3D và có khe đặt ngón tay đƣợc gắn phía dƣới bên phải hộp thiết bị. Tay cầm đo nhiệt độ đƣợc gắn phía trên bên phải hộp đựng.
Hình 5. 1 Chi tiết bên trong thiết bị
5.2 Thi công phần mềm
Ứng dụng App đƣợc viết bằng cơng cụ lập trình Mit App Inventor. App có 3 màn hình làm việc với chức năng là nhận và hiển thị giá trị nhịp tim, Spo2 và nhiệt độ đồng thời lƣu trữ dữ liệu trên file text để thuận tiện cho việc chia sẻ. Khi mở App sẽ hiển thị giao diện chính là tên thiết bị và 2 nút nhấn chọn chế độ đo nhƣ hình 5.2 bên dƣới.
73
Hình 5. 2 Màn hình chính của App
Khi chọn chế độ đo nhiệt độ và nhấn chọn kết nối Bluetooth, màn hình sẽ chuyển thành giao diện đo nhiệt độ và hiển thị kết quả nhận đƣợc nhƣ hình 5.3
Hình 5. 3 Hình 5.3 Giao diện hiển thị kết quả đo nhiệt độ
Khi nhấn nút trở về màn hình sẽ chuyển sang giao diện đo nhịp tim, Spo2. Nhấn kết nối Bluetooth để nhận kết quả từ thiết bị chi tiết nhƣ hình 5.4 bên dƣới.
74
Hình 5. 4 Giao diện hiển thị kết quả đo nhịp tim, Spo2
Kết quả đo đƣợc từ thiết bị sẽ gửi lên App qua kết nối Bluetooth và sẽ đƣợc lƣu lại dƣới dạng file text. Flie lƣu gồm kết quả các thông số đo kèm theo thời gian nhƣ
hình 5.5, tiện ích này giúp ngƣời dùng dễ dàng chia sẻ thông tin phục vụ cho việc tƣ
vấn sức khỏe từ xa.
Hình 5. 5 Kết quả lưu trên file text
5.3 Kết quả chạy thực tế trên thiết bị
Khi bật nguồn thiết bị, màn hình Oled sẽ sáng và hiển thị giao diện chính gồm tên thiết bị và biểu tƣợng nhiệt kế và nhịp tim nhƣ hình 5.6 bên dƣới.
75
Hình 5. 6 Giao diện khi thiết bị được cấp nguồn
Khi nhấn nút màu xanh để đo nhịp tim và Spo2 hoặc bật công tắc để đo nhiệt độ trên tay cầm, bộ điều khiển sẽ xử lý tín hiệu nhận đƣợc và điều khiển led xanh sáng báo hiệu đang trong quá trình đo và hiển thị kết quả lên Oled nhƣ hình 5.8 bên dƣới.
(a) Đo nhiệt độ (b) Đo nhiệt tim và SPO2
76
Hình 5.7 cho ta thấy giá trị nhiệt độ đo đƣợc là 36.6 0C đây là giá trị nhiệt độ
cơ thể ở ngƣời bình thƣờng. Trong hình 5.8b ta thấy giá trị nhịp tim là 62 bpm nghĩa là nhịp tim của ngƣời đo là 62 nhịp / phút. Nồng độ Oxy trong máu là 97 % nghĩa là tỷ lệ phần trăm hemoglobine của máu kết hợp với Oxy là 97 %. Thiết bị đo đƣợc giá trị nhịp tim và Spo2 đều nằm trong ngƣỡng giá trị của ngƣời bình thƣờng.
So sánh kết quả của thiết bị so với một số máy trên thị trƣờng: - Đo nhiệt độ
Để biết độ chính xác của giá trị nhiệt độ thu đƣợc từ thiết bị, nhóm thực hiện việc so sánh thiết bị với nhiệt kế hồng ngoại đo trán Omron MC – 720. Nhiệt kế này đo cách trán 1 - 3 cm cho kết quả sau 1s và có độ chính xác cao, chênh lệch chỉ ± 0,2 0C so với thân nhiệt thực tế, ít ảnh hƣởng bởi mơi trƣờng. Nhóm thực hiện việc so sánh kết quả 2 thiết bị trên 6 ngƣời khác nhau ở nhiệt độ môi trƣờng 30 0C. Chi tiết kết quả so sánh mô tả ở bảng 5.1 bên dƣới.
77
Bảng 5. 1 Bảng so sánh thiết bị với nhiệt kế hồng ngoại
STT Giá trị nhiệt
kế điện tử ( 0C )
Giá trị thiết bị đo Giá trị thiết bị đo ( 0 C ) Sai số ( % ) 1 37 36.9 0.27 2 36.7 36.5 0.54 3 36.6 36.6 0 4 36.9 36.5 1.08 5 36.4 36.2 0.82 6 36.9 36.1 1.9
Sai số trung bình của thiết bị: 0.92% ứng với 0.34 0C
Thiết bị đã đo đƣợc giá trị nhiệt độ nhƣng vì đo trên bề mặt trán nên chịu ảnh hƣởng của nhiệt độ mơi trƣờng, vì vậy tính chính xác cịn hạn chế.
Đo nhịp tim, nồng độ Oxy trong máu:
Để so sánh kết quả nhịp tim và SPO2 nhóm thực hiện đo trên máy theo dõi sức khỏe MONITOR COMEN. Máy này theo dõi các thông số sức khỏe là nhịp tim, SPO2, nhiệt độ, điện tim, huyết áp. Máy có các bộ lọc giúp giảm nhiễu cho ra kết quả và các dạng sóng chính xác. Để thực hiện so sánh, nhóm thực hiện đo trên 5 ngƣời ở hai trƣờng hợp là khi thƣ giãn ở trạng thái bình thƣờng và khi vừa tập thể dục. Ngón tay trái ngƣời đo đƣợc kết nối với máy theo dõi, ngón tay phải đƣợc đặt ở khe để ngón tay trên thiết bị của nhóm. Ngƣời đo ngồi ở trên ghế trong tƣ thế thoải mái thả lỏng. Kết quả so sánh chi tiết ở bảng 5.2.
78
Nhóm thực hiện đo đồng thời cùng lúc giá trị nhịp tim và SPO2 ở máy theo dõi sức khỏe và thiết bị của nhóm. Ta có giá trị nhịp tim và Spo2 đo đƣợc ở máy theo dõi sức khỏe lần lƣợt là 67 bpm và 99 %. Trong khi đó giá trị đo đƣợc ở thiết bị của nhóm là 66 bpm và 98%. Ta thấy có sai số ở 2 thiết bị.
Bảng 5. 2 Bảng so sánh giá trị nhịp tim, SPO2 đo được trên máy theo dõi monitor comen và thiết bị khi người đo ở trạng thái bình thường comen và thiết bị khi người đo ở trạng thái bình thường
S TT 1 2 3 4 5 Sp02 (%) Nhịp tim (số nhịp/phút)
Máy theo dõi monitor comen
Thiết bị đo
Sai số (%) Máy theo dõi monitor comen Thiết bị đo Sai số (%) 98 94 4.08 7 70 9.09 98 96 2.04 0 65 7.14 100 96 4.08 5 92 8.24 99 98 1.01 8 3 81 2.41 98 97 1.02 5 69 6.15
+ Sai số trung bình của thiết bị khi đo giá trị Spo2: 2.45 % ứng với giá trị Spo2 sai lệch 2.40 %
+ Sai số trung bình của thiết bị khi đo giá trị nhịp tim: 6.61 % ứng với giá trị nhịp tim lệch 5 nhịp / phút.
+ Thiết bị đã đo đƣợc giá trị nhịp tim, Spo2 nhƣng kết quả đo đƣợc sai số còn lớn.
79
Bảng 5. 3 Bảng so sánh giá trị nhịp tim, Spo2 đo được trên máy theo dõi monitor comen và thiết bị khi người đo vừa tập thể dục comen và thiết bị khi người đo vừa tập thể dục
S TT 1 2 3 Sp02 (%) Nhịp tim (số nhịp/phút) Máy theo dõi monitor comen Thiết bị đo Sai số (%) Máy theo dõi monitor comen Thiết bị đo Sai số (%) 99 110 1.1 100 95 5 98 99 0.2 99 110 11.11 100 98 2 98 100 2.04
+ Sai số trung bình của thiết bị khi đo giá trị Spo2: 3.43 % ứng với giá trị Spo2 sai lệch 3.4 %
+ Sai số trung bình của thiết bị khi đo giá trị nhịp tim: 9.226 % ứng với giá trị nhịp tim lệch 9 nhịp / phút.
+ Ở trạng thái vừa tập thể dục xong giá trị nhịp tim và Spo2 đều có sai số lớn hơn khi ở trạng thái bình thƣờng. Đặc biệt là giá trị nhịp tim có sai số lớn.
80
CHƢƠNG 6: ĐÁNH GIÁ VÀ BÀN LUẬN KẾT QUẢ THU ĐƢỢC 6.1 Tổng quan kết quả đạt đƣợc. 6.1 Tổng quan kết quả đạt đƣợc.
Sau hơn 21 tuần nghiên cứu và thực hiện đồ án, nhờ sự giúp đỡ của giảng viên hƣớng dẫn cùng với kiến thức học tập trong 4 năm và tìm hiểu tài liệu từ mạng Internet nhóm đã hồn thành đồ án “Máy theo dõi bệnh nhân 3 thông số: Nhịp tim, SPO2, Nhiệt độ”. Trải qua quá trình làm đồ án nhóm đã đạt đƣợc nhiều kết quả cụ thể nhƣ sau:
- Biết đƣợc cách lập trình và sử dụng phần mềm IDE giao tiếp với Arduino Mega. - Tìm hiểu hoạt động của cảm biến Max30100 và MLX90614, cách xử lý lấy dữ
liệu từ cảm biến.
- Hiển thị dữ liệu từ cảm biến lên màn hình Oled thơng qua giao tiếp I2C. - Dùng module bluetooth HC - 05 gửi dữ liệu lên App điện thoại
- Xây dựng App trên điện thoại Android thông qua việc lắp ráp các thẻ lệnh để diễn đạt chức năng của phần mềm.
- Thiết kế mơ hình hộp đựng trên phần mềm Solidworks.
6.2 Hƣớng phát triển của đề tài
Để tăng tính thực tế và hiệu quả của hệ thống khi áp dụng lên ngƣời thì hƣớng phát triển nhóm đề ra nhƣ sau:
- Thay màn hình lớn giúp phần hiển thị có kích thƣớc rộng hơn, hiện thị rõ ràng hơn,
- App trên điện thoại: thêm chức năng lƣu trữ dữ liệu, thông tin các nhân của ngƣời dùng để ngƣời thân, bác sĩ có thể theo dõi tình trạng sức khỏe của ngƣời dùng dễ dàng. Ngƣời dùng có thể sử dụng, truy cập dữ liệu App ở mọi nơi.
6.3 Những tồn tại của đề tài
Vì kiến thức, thời gian cũng nhƣ kinh phí ít nên thiết bị còn một số hạn chế nhƣ: Dữ liệu sau khi đo đƣợc gửi lên ứng dụng chỉ một lần một ngƣời. Giao diện ngƣời dùng
81
còn đơn giản, tính thẩm mỹ chƣa cao (mơ hình to chƣa đƣợc gia công tỉ mỉ), thông tin gửi nhận dữ liệu cịn có thời gian trễ, độ bảo mật thấp. Ngồi ra trong trƣờng hợp hết pin, hệ thống sẽ ngừng hoạt động vì chƣa có nguồn dự phịng.
6.4 Kết luận
Sau 24 tuần thực hiện đề tài, tìm hiểu và đọc các tài liệu chun ngành có liên quan ở các trang mạng, diễn đàn, cộng đồng trong nƣớc và quốc tế thông qua mạng Internet, tổng hợp các kiến thức đã đƣợc học xuyên suốt 4 năm cũng nhƣ đƣợc sự hƣớng dẫn tận tình của thầy GVHD Th.Sĩ Trần Duy Cƣờng, nhóm đã hồn thành đƣợc đề tài “Máy theo dõi bệnh nhân 3 thống số: Nhịp tim, SPO2, Nhiệt độ.”.
Với mục tiêu đề tài đã đề ra, đề tài đã hoàn thành đƣợc những yêu cầu ban đầu là đã đo đƣợc Nhịp tim, SPO2 và nhiệt độ. Cảnh báo về mức vƣợt ngƣỡng nhịp tim, nồng độ SPO2 và nhiệt độ bằng còi buzzer. Kết quả đo nhịp tim, nồng độ SPO2 và nhiệt độ hiển thị đƣợc trên oled giúp cho ngƣời dùng thấy kết quả đo đƣợc một cách trực quan hơn. Dữ liệu mỗi lần đo sẽ đƣợc lƣu lại thông qua ứng dụng trên điện thoại. Các cảm biến đã hoạt động tƣơng đối ổn định. Oled hiển thị đƣợc các thông số đo thông qua giao thức truyền I2C.
82
TÀI LIỆU THAM KHẢO
[1] N. Xuân, "Các chỉ số sức khỏe bạn cần biết", 01/03/2020. <VnExpress.com>. [2] Nguyễn Văn Ngọc “Nghiên cứu thiết kế mơ hình máy đo nhịp tim và nồng
độ oxy trong máu”. Luận Văn Thạc Sĩ Kỹ Thuật, Đại Học Đà Nẵng, 2013,
01/03/2020.
[3] A. K. sinha, "Smart Blood Oxygen And Heart Rate Monitor With
Automatic Data Saving System", 05/03/2020. <Electronicsforu.com>. [4] K. Dimitrov, "A 5 Minutes Contactless OLED Thermometer With
Arduino",
07/03/2020. <Arduino.com>.
[5] Lê Mỹ Hà, Phạm Quang Huy, " Lập trình IOT với Arduino", nhà xuất bản thanh niên, 07/03/2020.
[6] “cach-do-nhip-tim-don-gian”, 03/05/2020. <roiloannhiptim.com>.
[7] “pulse-oximeter-spo2”, 03/05/2020. <slideshare.net>.
[8] “Các thang đo nhiệt độ và lịch sử”, 05/05/2020. <dethi.violet.vn>.
[9] “Cảm Biến Nhịp Tim và Oxy Trong Máu MAX30100”, 03/05/2020. <wiki.chipfc.com>.
[10] “Melexis MLX90614 infrared thermometer”, 03/05/2020.< www.mouser.vn>
[11] Trịnh Minh Phƣơng, “Nghiên cứu ứng dụng công nghệ IOT cho giám sát môi trƣờng”, trƣờng Đh Công Nghệ, Hà Nội, 15/05/2020.
83
[13] “man-hinh-oled-1-3-inch-giao-tiep-i2c-blue”, 05/2020. <nshopvn.com15>.
[14] vietdung126, “Giới thiệu về ngôn ngữ Drag and Drop của MIT App Inventor”, 15/05/2020. <http://tinhte.vn/>.
84 PHỤ LỤC #include <Wire.h> #include "MAX30100_PulseOximeter.h" #include "Adafruit_GFX.h" #include <Adafruit_MLX90614.h> #include <Adafruit_SH1106.h> #define OLED_RESET 4 #define REPORTING_PERIOD_MS 5000 #define REPORTING_PERIOD_MS1 6000 Adafruit_SH1106 display(OLED_RESET); Adafruit_MLX90614 mlx = Adafruit_MLX90614();
const unsigned char bitmap [] PROGMEM { 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc1, 0xfc, 0x00, 0x3f, 0xe3, 0xfe, 0x00, 0x7f, 0xf7, 0xff, 0x00, 0x7f, 0xf7, 0xff, 0x00, 0x7f, 0xf7, 0xff, 0x00, 0xff, 0xf5, 0xff, 0x80, 0xff, 0xea, 0xff, 0x80, 0x44, 0x0a, 0x07, 0x00, 0x7b, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xfe, 0x00, 0x1f, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x01, 0xff, 0xc0, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
85 { 0x07, 0x03, 0x80, 0x3f, 0xff, 0xf8, 0x3f, 0xff, 0xf8, 0x7f, 0xff, 0xf8, 0x7f, 0xff, 0xf8, 0x1f, 0xff, 0xe0, 0x03, 0xff, 0x00, 0x03, 0xff, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char PROGMEM logo2_bmp[] = { 0x00, 0x00, 0x08, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x80, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x01, 0x80, 0x88, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0x02, 0xc1, 0x04, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0x36, 0x43, 0x06, 0x6c, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0xb3, 0x7c, 0x7e, 0x02, 0xf8, 0x5c, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x11 0xe4, 0x36, 0x03, 0x98, 0x7b, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x01, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 }; int buttonState1 = 0; const int buttonPin1
86 = 2; int buttonState2 = 0; const int buttonPin2 = 3; double temp = 0; double temp1; double temp2; double temp3; int Nhip_tim; int Spo2; uint32_t tsLastReport = 0; int led = 6 ; int buzzer = 9; const int Laser_Pin=5; PulseOximeter pox; void onBeatDetected() { display.drawBitmap( 60, 20, bitmap, 25, 19, 1); display.display(); } void DO_MAX30100() { onBeatDetecte d(); pox.update() ;
87 digitalWrite(5,LOW);
if (millis() - tsLastReport > REPORTING_PERIOD_MS) { Nhip_tim = pox.getHeartRate(); Spo2 = pox.getSpO2(); Serial.print(Nhip_tim); Serial.print("|"); Serial.print(Spo2);
if (( 0 < Nhip_tim )&& ( 0 < Spo2 ) ) {
if ( Nhip_tim < 60 || Nhip_tim > 100 || Spo2 < 93) { digitalWrite(9,HIGH); } else { digitalWrite(9,LOW);