Đồ án đo lường và điều khiển trong bộ môn của trường đại học Công nghiệp Hà Nội. Hi vọng có thể giúp đỡ các bạn trong việc làm đồ án môn. Đồ án xây dựng hệ thống đo nhịp tim và SPO2 trong máu sử dụng Kit wifi ESP8266 và cảm biến Max30100
1 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CƠ KHÍ - ĐỒ ÁN ĐO LƯỜNG VÀ ĐIỀU KHIỂN TÊN ĐỀ TÀI: THIẾT KẾ MÁY ĐO NHỊP TIM VÀ NỒNG ĐỘ OXY TRONG MÁU CBHD: ThS LƯU VŨ HẢI Sinh viên thực hiện: Đặng Thế Khanh-2019604389 Giang Hải Minh-2019604369 Nguyễn Bá Ngọc-2019605377 Lớp: Cơ điện tử - k14 Hà Nội – 2021 LỜI NÓI ĐẦU Dấu hiệu sinh tồn sống bao gồm dấu hiệu: mạch, nhiệt độ, huyết áp, nhịp thở Trong ca cấp cứu khần cấp người ta luôn phải đo thông số để theo dõi bệnh nhân Ngày nay, khoa học phát triển người ta đưa thêm vào dấu hiệu sinh tồn thứ nồng độ bão hòa Oxy máu Trong trường hợp đặc biệt bệnh nhân bị ngộ độc khí thở máy đo nồng độ Oxy máu quan trọng Máy theo dõi bệnh nhân lượng Oxy người thấp tiêu chuẩn cho phép phải cho bệnh nhân thở máy thở Qua dẫn chứng thấy tầm quan trọng máy đo nồng độ bão hòa Oxy máu Đồ án nhằm nghiên cứu phương pháp đo nồng độ bão hòa Oxy máu nhịp tim phương pháp hấp thụ quang học, từ chế tạo mơ hình máy đo nồng độ bão hòa Oxy máu nhịp tim Sau thời gian học tập, tìm tịi học hỏi Được bảo hướng dẫn thầy Lưu Vũ Hải giúp đỡ bạn Đến nhiệm vụ giao thực đồ án môn Đồ án mơn học điện tử chúng em hồn thành Tuy nhiên thời gian có hạn nên đồ án em cịn nhiều thiếu xót Em mong giúp đỡ thầy cô bạn bè Em xin chân thành cảm ơn thầy Lưu Vũ Hải giúp đỡ chúng em làm đồ án Hà Nội, ngày / / 2021 Nhóm sinh viên thực Đặng Thế Khanh Giang Hải Minh Nguyễn Bá Ngọc Mục lục Danh mục hình ảnh Hình LED LDR dùng cảm biến Hình 2: Mặt trước cảm biến đo Oxy spO2 Max30100 Hình 3: Sơ đồ mạch cảm biến Max30100 Hình 4: Mặt trước Modunle NodeMCU IOT ESP8266 Hình 5: Mặt sau Modunle NodeMCU IOT ESP8266 Hình 6: Sơ đồ kết nối toàn mạch Danh mục bảng biểu CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG 1.1 Giới thiệu chung - SpO2 gì? Chỉ số SpO2 cụm từ Saturation of peripheral oxygen, độ bão hoà oxy máu ngoại vi Hiện tượng giải thích sau: Hemoglobin (viết tắt Hb) thành phần quan trọng máu Khi phân tử Hb máu liên kết với phân tử oxy tạo thành HbO2 giúp cho máu đưa oxy nuôi dưỡng tất quan thể Mỗi phân tử Hb có nguyên tử sắt, nguyên tử sắt liên kết với phân tử oxy tạo liên kết HbO2 Hiện tượng bão hoà oxy máu tức có đủ phân tử oxy gắn vào Hb, tượng gọi tắt với tên SpO2 Hình 1: HbO2 giúp thúc đẩy q trình máu đưa oxy ni dưỡng thể - Lịch sử phát triển: • Năm 1935: Thiết bị đo SpO2 đầu tiên, không xâm lấn, cách cho ánh sáng màu chiếu xuyên qua thể với đầu dò tai Bộ điều khiển Cảm biến đo Màn Hình hiển thị Tín hiệu cảnh báo - ESP8266 Max30100 Oled 0.96 inch Cịi, đèn led • • Năm 1972: Aoyagi tập đồn Nihon Kohden thức cho • đời máy đo oxy dựa vào mạch đập (Pulse oximetry) Năm 1987: Máy đo SpO2 dựa vào mạch đập sử dụng rộng rãi • phòng gây mê Mỹ Từ năm 1990s-nay: Máy đo SpO2 sử dụng phổ biến khắp giới Máy đo SpO2 nhịp tim thiết bị đo độ bão hịa ơ-xy máu, kết hợp đo nhịp tim thơng qua đầu ngón tay Thiết bị nhỏ gọn hỗ trợ theo dõi kiểm tra số sức khỏe, giúp bệnh nhân COVID-19 nhanh chóng phát - tình trạng thiếu ơ-xy máu thể bình thường Chúng em tạo thiết bị đo oxy máu nhịp tim cách sử dụng MAX30100 Pulse Oximeter &Esp8266 Nồng độ oxy máu gọi SpO2 đo tỷ lệ phần trăm Nhịp tim / Nhịp đập đo BPM MAX30100 giải pháp cảm biến pulse oximetry nhịp tim Chúng em hiển thị giá trị SpO2 BPM hình OLED 0,96 inch Với nhịp, giá trị hình thay đổi hình OLED 1.2 Các yêu cầu - Đo nhịp tim spo2 Hiển thị thơng số lên hình Oled Cảnh báo cịi đèn led ngồi mức cho phép Độ xác: Nhịp tim (±2bpm), SpO2 (±2%) Thang đo số SpO2 tiêu chuẩn:[9] • SpO2 từ 97-99%: Chỉ số oxy máu tốt • SpO2 từ 94-96%: Chỉ số oxy máu trung bình, cần thở them oxy • SpO2 từ 90-93%: Chỉ số oxy máu thấp, cần xin ý kiến bác sĩ • SpO2 92% khơng thở oxy 95% có thở oxy: Dấu hiệu suy • hơ hấp SpO2 90%: Biểu ca cấp cứu lâm sang Bảng 1: Cấu trúc thiết bị 1.3 Phương pháp, phạm vi giới hạn nghiên cứu - Phương pháp nghiên cứu • Tìm hiểu nhu cầu, cấp thiết thực tế, khảo sát giải pháp có nay, so sánh, đánh giá giải pháp đưa nhận xét cho giải - • pháp Thu thập tài liệu, tìm hiểu nghiên cứu phương pháp đo nhịp tim nống • • • độ oxy phương pháp không xâm lấn Xử lý liệu đưa từ cảm biến, truyền liệu qua giao tiếp Bluetooth Xây dựng phần mềm hệ điều hành Android Dựa vào kiến thức học, tìm hiểu qua internet, sách tham • khảo ý kiến bạn bè, thầy Tìm hiểu hệ thống đo thực tế phổ biến để học hỏi cách làm thiết • kế, cấu tạo tối ưu Tìm hiểu phương pháp xây dựng hệ thống điều khiển chương trình điều khiển • Tìm hiểu phần mềm lập trình để hỗ trợ như: Proteus, Arduino IDE Phạm vi nghiên cứu • Đề tài tập trung chủ yếu vào nghiên cứu phương pháp đo nhịp tim nồng độ oxy máu không xâm lấn sử dụng kỹ thuật truyền xuyên • - qua Giới hạn mơ hình máy đo thơng số nhịp tim, SpO2 dùng vi điều khiển tiêu thụ công suất thấp Giới hạn nghiên cứu thực nghiệm • Thực hoàn thiện thành phần hệ thống: phận cảm biến, phận hiển thị số liệu đo, hiển thị đèn cảnh báo giới hạn, phận • vi điều khiển Mơ hình hóa, tính tốn thiết kế mơ hình cho hệ thống đảm bảo độ xác độ bền cần đáp ứng nhu cầu hệ thống 1.4 Ý nghĩa thực tiễn Các phương pháp đo trước sử dụng xâm lấn, nghĩa tác động đến thể bệnh nhân, ví dụ dùng phương pháp đo khí máu (lấy mẫu máu bệnh nhân đem phân tích) Điều làm bệnh nhân cảm thấy khó chịu khó sử dụng để theo dõi liên tục Đề tài đề xuất phương pháp đo nhịp tim nồng độ oxy máu (SpO2) phương pháp không xâm lấn Đây sản phẩm hữu ích cần thiết việc theo dõi sức khỏe cho gia đình có vai trị đặc biệt quan trọng ca gây mê phẫu thuật, giúp bác sĩ đánh giá xác tình trạng bệnh nhân để đưa giải pháp phù hợp hiệu Đề tài nhằm đáp ứng nhu cầu thực tế thiết bị di động đo nhịp tim, SpO2 bệnh nhân lúc, nơi theo dõi bệnh nhân liên tục Với giá thành chấp nhận được, đề tài giải pháp hữu ích cho hộ gia đình, bệnh nhân, trường học việc chăm sóc theo dõi bệnh nhân 10 CHƯƠNG 2: XÂY DỰNG MƠ HÌNH HỆ THỐNG 2.1 Thiết kế sơ đồ khối hệ thống Khối cảnh báo (còi, led ) thị Khối hiển Khối điều khiển Khối cảm biến (Oled 0.92inch) Modul ESP8266 Max30100 Khối nguồn - 9VDC(máy tính) Chức khối: • Khối cảm biến: Sử dụng modun cảm biến đo nhịp tim nồng độ Oxy • máu có nhiệm vụ đo đưa tín hiệu khối xử lý Khối xử lý: Sử dụng điều khiển dùng để giao tiếp với khối cảm • biến đưa thơng tin tới khối phát tín hiệu Khối phát tín hiệu: Sử dụng cịi đèn có nhiệm vụ báo động thơng • số đo vượt mức cho phép Khối nguồn: Sử dụng nguồn điện DC có điện áp 9V để cung cấp cho • hoạt động mạch Khối hiển thị: Sử dụng hình Oled hiển thị giá trị đo Hoạt động hệ thống: Tín hiệu nhịp tim thu thập xử lý để tính tốn giá trị heart rate (HR) nồng độ oxy máu (SpO2) thông qua hai khối khối cảm biến nhịp tim khối điều khiển Giá trị HR, SpO2 sau tính tốn hiển thị hình Nếu giá trị HR, SpO2 nằm khoảng cho phép cảnh báo qua khối cảnh báo 2.2 Phân tích lựa chọn cảm biến - Chip: MAX30100 Đo nhịp tim nồng độ Oxy máu Điện áp module cảm biến MAX30100: 1.8~5.5VDC 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 Lưu ý: Đèn led module cảm biến sáng giao tiếp thành cơng với vi điều khiển 12 Hình 2: Mặt trước cảm biến đo Oxy spO2 Max30100 Hình 3: Sơ đồ mạch cảm biến Max30100 13 MAX30100 tích hợp trình điều khiển LED đỏ IR để điều chỉnh xung LED cho phép đo SpO2 heart rate(HR) Dịng LED lập trình từ đến 50mA với điện áp cung cấp phù hợp Độ rộng xung LED lập trình từ 69us đến 411us phép thuật toán tối ưu hóa độ xác SpO2 HR mức tiêu thụ điện dựa trường hợp sử dụng.[2] 2.3 Phân tích lựa chọn điều khiển - Module Kit nodemcu IOT ESP8266 V12 Mini CP2102 MODULE thu phát wifi IOT ESP8266 module phát triển dựa nên chip ESP8266 với thiết kế sử dụng dễ dàng Đặc biệt sử dụng trực tiếp với trình biên dịch Arduino để lập trình nạp code Đây lợi sản phẩm việc sử dụng lập trình ứng dụng ESP8266 cách đơn giản Được dùng cho ứng dụng cần kết nối, thu thập liệu điều khiển sóng qua Wifi, đặc biệt ứng dụng liên quan đến IoT (Internet of Things) Đặc trưng: • Mã nguồn mở • Tương tác • Lập trình • Giá thấp • Đơn giản • Thơng minh • Kết nối Wi-fi - Thông số kĩ thuật:[8] • Hỗ trợ Arduino IDE Arduino ESP8266 • Sử dụng module wifi ESP – 12E • Nguồn vào: Cấp nguồn 5V chương trình thơng qua cổng USB • Kích thước: 49 x 24.5 x 13mm • IC chính: ESP8266 Wifi SoC • Phiên firmware: Node MCU • Chip nạp giao tiếp UART: CP2102 • GPIO tương thích hồn tồn với firmware - Node MCU • Cấp nguồn: 5VDC MicroUSB Vin • GIPO giao tiếp mức 3.3VDC • Tích hợp Led báo trạng thái, nút Reset, Flash 14 • Tương thích hồn tồn với trình biên dịch Arduino Hình 4: Mặt trước Modunle NodeMCU IOT ESP8266 Hình 5: Mặt sau Modunle NodeMCU IOT ESP8266 2.4 Thiết kế mạch đo xử lý tín hiệu 15 Hình 6: Sơ đồ kết nối toàn mạch Module ESP8266 Oled 0.93inch 3.3V VCC GND GND D1 SCL D2 SDA Bảng 1: Các chân kết nối vi điều khiể với hình Oled Module ESP8266 Cảm biến Max30100 3.3V VIN D1 SCL D2 SDA D0 INT GND GND Bảng 2: Các chân kết nối vi điều khiển với cảm biến 16 Module ESP8266 Led D7 Anode GND Cathode Bảng 3: : Các chân kết nối vi điều khiển với led Module ESP8266 Còi D6 Anode GND Cathode Bảng 4: Các chân kết nối vi điều khiển với cịi báo 17 CHƯƠNG 3: MƠ HÌNH HĨA VÀ MƠ PHỎNG HỆ THỐNG 3.1 Mơ hình hóa mơ hệ thống khí - Sử dụng bìa fomex để làm khung hình hộp cho mơ hình Tấm bìa mơ hình fomex foam PVC làm bột nhựa ép kỹ thuật cao không thấm nước, không mối mọt, nhẹ, bền dùng quảng cáo làm mơ hình thiết bị, làm bảng, biển vật dụng Hình 1: Mơ vị trí phận đo 18 3.2 Mơ hình hóa mơ hệ thống điều khiển • Mơ hình hóa Hình Mạch mơ hệ thống • Mơ thực tế Hình 3 Mơ hình trước đo 19 Hình Mơ hình sau đo • STT Đánh giá kết mơ hình SpO2 Nhịp tim (%) (số nhịp/phút) L1 L2 L3 L1 L2 L3 Người 96 97 83 85 80 82 Người 97 94 96 63 72 75 Người 97 95 97 70 75 72 Bảng 1: Kết đo SpO2 nhịp tim người bình thường Người SpO2 Nhịp tim (%) (số nhịp/phút) L1 L2 L3 L1 L2 L3 Người 96 95 97 120 122 120 Người 98 99 97 60 65 62 Người 97 94 97 110 113 111 Bảng 2: Kết đo SpO2 nhịp tim người vừa tập thể dục STT Người 20 Như vậy, theo kết đo phần cảm biến thực theo nguyên lý hoạt động đạt mục tiêu đề ra, tín hiệu thu chuẩn nhiên có sai số phần nhịp tim (So sánh với số đo theo lý thuyết[7]) 3.3 Xây dụng chương trình điều khiển 3.3.1 Lưu đồ thuật tốn Hình 5: Lưu đồ thuật tốn chương trình Ban đầu khai báo biến sử dụng chương trình khai báo hình oled, sau thị giao diện Tiếp theo khối cảm biến thu thập liệu xử lý tín hiệu nhịp tim nồng độ oxi máu để hiển thị thơng số lên hình 3.3.2 Code lập trình arduino Source Code/Program: Sau thiết lập phần cứng thực xong , cần viết code nạp chương trình sử dụng ứng dụng Arduino IDE: #include 21 #include #include #include Adafruit_SSD1306 display(128, 64, &Wire, -1); #include "MAX30100_PulseOximeter.h" PulseOximeter pox; uint32_t tsLastReport = 0; void onBeatDetected(){ Serial.println("Beat!"); } void setup(){ Serial.begin(115200); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) // thiết lập hình với địa 0x3C { Serial.println("SSD1306 allocation failed"); for(;;); } pinMode(7,OUTPUT); pinMode(6,OUTPUT); display.setFont(&FreeSerif9pt7b); // cài đặt phơng chữ display.clearDisplay(); // xóa tồn hình display.setTextSize(1); 22 // setTextSize(s) Chỉnh size chữ, mặc định khơng dùng lệnh s=1 display.setTextColor(WHITE); // setTextColor(c); c màu chữ, WHITE(1) BLACK(0) display.setCursor(20,15); // setCursor(x,y); Đưa điểm bắt đầu vẽ lên hình tới x,y display.println("Welcome to"); // thi lên hình dịng chữ display.setCursor(0,40); display.println("Nhom "); display.display(); display.setTextSize(1); delay(2000); Serial.print("Initializing pulse oximeter "); if (!pox.begin()) { // bắt đầu khởi chạy với cảm biến Serial.println("FAILED"); for(;;); } else { Serial.println("SUCCESS"); } pox.setOnBeatDetectedCallback(onBeatDetected); } void loop(){ pox.update(); if (millis() - tsLastReport > 1000) { 23 Serial.print("Heart rate:"); Serial.print(pox.getHeartRate()); Serial.print("bpm / SpO2:"); Serial.print(pox.getSpO2()); Serial.println("%"); display.clearDisplay(); display.setCursor(10,12); display.print("Wait… "); display.setCursor(0,35); display.print("HeartR:"); display.setCursor(62,35); display.print(pox.getHeartRate(),0); display.println(" bpm"); display.setCursor(0,59); display.print("SpO2 : "); display.setCursor(62,59); display.print(pox.getSpO2()); display.println(" %"); display.display(); tsLastReport = millis(); if(pox.getSpO2()=90) // nồng độ SpO2 vượt mức cho phép đèn sáng {for(int i=0;i