ساخت اکسی متر با آردوینو (اندازه گیری اکسیژن خون و ضربان قلب)
انواع مختلف حسگر های پالس اکسی متر برای اهداف پزشکی در بازار موجود است. در این پروژه با استفاده از یک سنسور MAX30100 و یک صفحه نمایش OLED یک پالس اوکسی متر خواهیم ساخت که اکسیژن محلول خون و ضربان قلب را اندازه گیری میکند و با گرافیک جذاب در نمایشگر نشان میدهد. برای کنترل این پروژه از برد آردوینو نانو استفاده میشود. ما نهایت تلاش خود را کرده ایم تا پالس اکسی متر ما از لحاظ ابعاد و وزن بسیار فشرده باشد.
این پروژه مبتنی بر سنسور Pulse-Oximeter همانند دستگاه های پزشکی موجود است اما این پروژه برای اهداف پزشکی نیست. لطفاً برای ارزیابی وضعیت بیمار از این موارد استفاده نکنید و همیشه از یک دستگاه مناسب پزشکی استفاده کنید. این دستگاه فقط برای سرگرمی و اهداف یادگیری در نظر گرفته شده است.
پروژه های قبلی ما در مورد ضربان قلب را مشاهده کنید:
- پروژه مشاهده ضربان قلب در اینترنت با آردوینو IoT
- پروژه اندازه گیری ضربان قلب با PIC (شمارش نبض)
- پروژه شمارش ضربان قلب با آردوینو (مانیتورینگ ضربان قلب)
شماتیک مدار اکسی متر با آردوینو
این یک مدار بسیار ساده است. پایه های A5 و A4 برد آردوینو نانو به سنسور پالس اکسیمتر 30100 و نمایشگر OLED متصل می شوند. هر دو پایه از مقاومت پول آپ با ارزش 4.7 کیلو اهم استفاده می کنند.
ما از صفحه نمایش OLED استفاده می کنیم زیرا همه دستگاه های پالس اکسی متر موجود در بازار از صفحه نمایش OLED استفاده می کنند. برای این پروژه ، ما از صفحه نمایش OLED مبتنی بر I2C با اندازه 1.3 اینچ استفاده می کنیم. این نمایشگر دارای رزولوشن 128×64 و تراشه کنترل SSD1306 است.
قطعات مورد نیاز
- آردوینو نانو
- مقاومت 4.7 کیلو اهم برای پول آپ خطوط I2C
- سنسور MAX30100
- صفحه نمایش OLED با وضوح 128×32 مبتنی بر SSD1306
- منبع تغذیه 5 ولت با حداقل جریان 300mA
سنسور MAX30100
قبل از ورود به پروژه ، بیایید مولفه اصلی یعنی سنسور MAX30100 را معرفی کنیم. این یک ماژول ساده است که با میکروکنترلر از طریق ارتباط I2C ارتباط برقرار می کند و اطلاعات SpO2 و Pulse را به میکروکنترلر ارائه می کند. به زبان ساده ، این سنسور می تواند اکسیژن را شناسایی کند و ضربان قلب را حس کند.
ماژول سنسور فوق با دامنه 1.8 ولت تا 5.5 ولت کار می کند. مقاومت های پول آپ برای پایه های I2C در این ماژول گنجانده شده است.
کد اوکسی متر مبتنی بر آردوینو
این کد از کتابخانه های بسیاری استفاده می کند و همه مهم هستند. کد کامل در انتهای صفحه در فایل دانلودی قرار گرفته است. این کتابخانه ها در ابتدای کد فراخوانی شده اند.
#include <Wire.h> #include "MAX30100_PulseOximeter.h" #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Fonts/FreeSerif9pt7b.h>
از ENABLE_MAX30100 برای تنظیم بیت فعال MAX30100 به عنوان 1 استفاده می شود. بعد ، SCREEN_WIDTH و SCREEN_HEIGHT را داریم که باید مقدار دقیق وضوح صفحه نمایش OLED باشند.
#define ENABLE_MAX30100 1 #define SCREEN_WIDTH 128 // طول نمایشگر OLED #define SCREEN_HEIGHT 64 //عرض نمایشگر OLED
وقتی پالس به عنوان عملکرد داده شده در دسترس است، عملکرد برگشتی تعریف می شود.
void onBeatDetected() { Serial.println("Beat!"); heart_beat(&xPos); }
در void setup موارد زیر انجام شده است:
- فعال کردن درایور نمایشگر I2C
- پاک کردن صفحه نمایش ، تنظیم اندازه متن ، رنگ متن و تنظیم موقعیت مکان نما
- چاپ Pulse Oximeter
- تنظیم مکان انیمیشن Heartbeat
- راه اندازی MAX30100
- تنظیم موقعیت مکان نما برای اطلاعات ضربان قلب و spo2.
فعال کردن درایور نمایشگر I2C:
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { Serial.println(F("SSD1306 allocation failed")); for (;;); // Don't proceed, loop forever }
پاک کردن صفحه نمایش ، تنظیم اندازه متن ، رنگ متن و تنظیم موقعیت مکان نما:
display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(20, 18);
چاپ متن پالس اکسی متر بر روی صفحه نمایش OLED:
display.print("Pulse OxiMeter");
تنظیم مکان انیمیشن Heartbeat:
int temp1 = 0; int temp2 = 40; int temp3 = 80; heart_beat(&temp1); heart_beat(&temp2); heart_beat(&temp3); xPos = 0;
راه اندازی MAX30100:
if (!pox.begin()) { Serial.println("FAILED"); for (;;); } else { Serial.println("SUCCESS"); }
تنظیم جریان MAX30100 LED و ثبت عملکرد برگشت تشخیص ضربان:
pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA); // بازخورد تشخیص ضربان قلب pox.setOnBeatDetectedCallback(onBeatDetected);
با فراخوانی دو عملکرد ، مقدار BPM و SPO2 را دریافت کنید:
با فراخوانی این عملکرد در قسمت void loop ، می توانیم مقدار جدید را از حسگر دریافت کنیم.
pox.getHeartRate(); and pox.getSpO2();
موارد موجود در فایل : سورس کامل