آموزش آردوینوپروژه های آردوینو

ساخت اکسی متر با آردوینو (اندازه گیری اکسیژن خون و ضربان قلب)

انواع مختلف حسگر های پالس اکسی متر برای اهداف پزشکی در بازار موجود است. در این پروژه با استفاده از یک سنسور MAX30100 و یک صفحه نمایش OLED یک پالس اوکسی متر خواهیم ساخت که اکسیژن محلول خون و ضربان قلب را اندازه گیری میکند و با گرافیک جذاب در نمایشگر نشان میدهد. برای کنترل این پروژه از برد آردوینو نانو استفاده میشود. ما نهایت تلاش خود را کرده ایم تا پالس اکسی متر ما از لحاظ ابعاد و وزن بسیار فشرده باشد.

این پروژه مبتنی بر سنسور Pulse-Oximeter همانند دستگاه های پزشکی موجود است اما این پروژه برای اهداف پزشکی نیست. لطفاً برای ارزیابی وضعیت بیمار از این موارد استفاده نکنید و همیشه از یک دستگاه مناسب پزشکی استفاده کنید. این دستگاه فقط برای سرگرمی و اهداف یادگیری در نظر گرفته شده است.

پروژه های قبلی ما در مورد ضربان قلب را مشاهده کنید:

شماتیک مدار اکسی متر با آردوینو

این یک مدار بسیار ساده است. پایه های 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 را به  میکروکنترلر ارائه می کند. به زبان ساده ، این سنسور می تواند  اکسیژن را شناسایی کند و ضربان قلب را حس کند.

سنسور اکسی متر MAX30100

ماژول سنسور فوق با دامنه 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 موارد زیر انجام شده است:

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
  1. فعال کردن درایور نمایشگر I2C
  2. پاک کردن صفحه نمایش ، تنظیم اندازه متن ، رنگ متن و تنظیم موقعیت مکان نما
  3. چاپ Pulse Oximeter
  4. تنظیم مکان انیمیشن Heartbeat
  5. راه اندازی MAX30100
  6. تنظیم موقعیت مکان نما برای اطلاعات ضربان قلب و 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();

موارد موجود در فایل : سورس کامل

دانلود فایل های پروژه

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *