ماژول تشخیص ضربان قلب با سنسور اثرانگشت

(Finger Heartbeat/PPG Sensor)

ماژول مانیتورینگ ضربان قلب و اکسیژن خون

ماژول تشخیص ضربان قلب با سنسور اثرانگشت: سیستم پایش سلامت غیرتهاجمی برای پروژه‌های پزشکی و ورزشی

ماژول تشخیص ضربان قلب با سنسور اثرانگشت یک حسگر اپتیکال پیشرفته است که از فتوپلتیسموگرافی (PPG) برای اندازه‌گیری ضربان قلب (Heart Rate) و سطح اکسیژن خون (SpO2) از طریق نوک انگشت استفاده می‌کند. این ماژول برای پروژه‌های سلامتی، دستگاه‌های ورزشی، مانیتورینگ پزشکی خانگی و تحقیقات بیومتریک ایده‌آل است.


اصول کار فناوری PPG

  • فرستنده: دو LED با طول موج‌های مختلف (معمولاً قرمز ~660nm و مادون قرمز ~880nm)

  • گیرنده: فتودیود حساس به نور

  • مکانیزم: نور از طریق بافت انگشت تابیده شده، بخشی جذب خون (متناسب با حجم خون) و بخشی بازتاب می‌یابد. تغییرات حجم خون در هر ضربان، باعث تغییرات شدت نور دریافتی می‌شود.


ویژگی‌های حرفه‌ای و پارامترهای اندازه‌گیری

  • اندازه‌گیری دوگانه:

    • ضربان قلب (HR): تعداد ضربان در دقیقه (BPM)

    • اشباع اکسیژن خون (SpO2): درصد (معمولاً در مدل‌های پیشرفته)

  • خروجی سیگنال خام: دسترسی به سیگنال موج PPG برای تحلیل پیشرفته.

  • الگوریتم پردازش داخلی: در برخی مدل‌ها، محاسبه خودکار BPM روی تراشه.

  • نشانگر وضعیت: LEDهای نمایش وضعیت انگشت و اندازه‌گیری.


مشخصات فنی (مدل MAX30100/MAX30102 رایج)

پارامتر MAX30100 MAX30102
ولتاژ کاری ۱.۸V تا ۳.۳V (ولتاژ منطق: ۱.۸V) ۱.۸V تا ۳.۳V (ولتاژ منطق: ۱.۸V تا ۵V)
جریان مصرف LED ۰.۰ تا ۵۰mA (قابل تنظیم) ۰.۰ تا ۵۰mA (قابل تنظیم)
طول موج LEDها قرمز (660nm)، مادون قرمز (880nm) قرمز (660nm)، مادون قرمز (880nm) + سبز (اختیاری)
رابط ارتباطی I2C (آدرس ۰x۵۷) I2C (آدرس ۰x۵۷)
نرخ نمونه‌برداری تا ۳۲۰۰ نمونه بر ثانیه تا ۳۲۰۰ نمونه بر ثانیه
اندازه‌گیری ضربان قلب (HR)، SpO2 ضربان قلب (HR)، SpO2 (دقت بالاتر)
مبدل آنالوگ به دیجیتال ۱۸ بیت ۱۸ بیت
سایر ویژگی‌ها FIFO 32 نمونه، سنسور دمای داخلی

⚠️ توجه: این تراشه‌ها سطح منطق ۱.۸V دارند. ماژول‌های آماده معمولاً مبدل سطح ولتاژ داخلی دارند.


پین‌های ماژول (نسخه آماده)

پین ماژول عملکرد اتصال به آردوینو
VIN / 5V تغذیه (۵V) 5V
3.3V خروجی ۳.۳V – (یا برای تغذیه قطعات دیگر)
GND زمین GND
SCL کلاک I2C A5 (UNO) یا پین SCL
SDA داده I2C A4 (UNO) یا پین SDA
INT وقفه (اختیاری) پین دیجیتال با قابلیت وقفه (مثلاً D2)

کد نمونه: خواندن ضربان قلب با کتابخانه MAX3010x

// کتابخانه SparkFun MAX3010x - نصب از Library Manager
#include <Wire.h>
#include "MAX30105.h" // برای MAX30102
#include "heartRate.h" // الگوریتم محاسبه ضربان

MAX30105 particleSensor;

const byte RATE_SIZE = 4; // میانگین‌گیری از 4 نمونه
byte rates[RATE_SIZE];
byte rateSpot = 0;
long lastBeat = 0;
float beatsPerMinute;
int beatAvg;

void setup() {
  Serial.begin(115200);
  Serial.println("راه‌اندازی سنسور ضربان قلب...");

  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
    Serial.println("سنسور MAX30102 یافت نشد. اتصالات را بررسی کنید.");
    while (1);
  }
  
  // تنظیمات سنسور
  particleSensor.setup();
  particleSensor.setPulseAmplitudeRed(0x0A); // روشنایی LED قرمز
  particleSensor.setPulseAmplitudeIR(0x0A);  // روشنایی LED مادون قرمز
  particleSensor.enableDIETEMPRDY(); // فعال‌سازی سنسور دما (اگر موجود باشد)

  Serial.println("لطفا نوک انگشت خود را روی سنسور قرار دهید.");
}

void loop() {
  long irValue = particleSensor.getIR(); // خواندن مقدار IR
  
  // بررسی قرارگیری صحیح انگشت
  if (irValue > 50000) {
    Serial.print("انگشت تشخیص داده شد. IR=");
    Serial.println(irValue);
    
    // تشخیص ضربان
    if (checkForBeat(irValue) == true) {
      long delta = millis() - lastBeat;
      lastBeat = millis();
      
      beatsPerMinute = 60 / (delta / 1000.0);
      
      if (beatsPerMinute < 255 && beatsPerMinute > 20) {
        rates[rateSpot++] = (byte)beatsPerMinute;
        rateSpot %= RATE_SIZE;
        
        // محاسبه میانگین
        beatAvg = 0;
        for (byte x = 0; x < RATE_SIZE; x++)
          beatAvg += rates[x];
        beatAvg /= RATE_SIZE;
        
        Serial.print("ضربان قلب: ");
        Serial.print(beatsPerMinute);
        Serial.print(" BPM | میانگین: ");
        Serial.print(beatAvg);
        Serial.println(" BPM");
      }
    }
  } else {
    Serial.println("انگشت یافت نشد. لطفا انگشت خود را روی سنسور بگذارید.");
    beatAvg = 0;
  }
  
  delay(20); // تاخیر کوتاه
}

کاربردهای اصلی

  1. دستگاه‌های پایش سلامت شخصی: ساخت گوشی پزشکی دیجیتال، ساعت هوشمند.

  2. تجهیزات ورزشی: مانیتور ضربان قلب برای دوچرخه ثابت، تردمیل.

  3. پروژه‌های تحقیقاتی پزشکی: مطالعات قلبی-عروقی، خواب.

  4. سیستم‌های بیومتریک: احراز هویت بر اساس الگوی ضربان قلب.

  5. پروژه‌های استرس و مدیتیشن: پایش تغییرات ضربان در پاسخ به استرس.

  6. دستگاه‌های نوزاد: مانیتورینگ وضعیت نوزادان.


نکات حیاتی برای دقت اندازه‌گیری

⚠️ قرارگیری صحیح انگشت: انگشت باید کاملاً روی سنسور قرار گیرد و نور محیط نشت نکند.
🔧 ثبات موقعیت: در طول اندازه‌گیری انگشت و دست باید ثابت باشند. حرکت باعث نویز شدید می‌شود.
💡 نور محیط: در نور شدید محیط (به ویژه نور خورشید) اندازه‌گیری ممکن است مختل شود.
🔌 تغذیه پایدار: از منبع تغذیه با نویز پایین (باتری یا آداپتور باکیفیت) استفاده کنید.
📊 میانگین‌گیری: برای خواندن دقیق، میانگین چندین اندازه‌گیری را گزارش دهید (مانند کد بالا).


پروژه عملی: مانیتور ضربان قلب با نمایشگر OLED

قطعات:

  • آردوینو نانو/UNO

  • ماژول سنسور ضربان قلب MAX30102

  • نمایشگر OLED 0.96 اینچ I2C

  • بازر (برای هشدار افزایش ضربان)

  • باتری لیتیوم ۳.۷V (برای پرتابل شدن)

خروجی: نمایش ضربان لحظه‌ای، میانگین، نمودار موج PPG روی OLED. هشدار صوتی در صورت خارج شدن از محدوده نرمال.


مقایسه با روش‌های دیگر اندازه‌گیری ضربان

روش سنسور PPG (انگشتی) سنسور ECG/ایک‌گ سنسور فشارخون سنسور نوری مچی
دقت ⭐⭐⭐⭐ (خوب) ⭐⭐⭐⭐⭐ (عالی) ⭐⭐⭐ (متوسط) ⭐⭐⭐ (متوسط)
سهولت ⭐⭐⭐⭐⭐ (بسیار ساده) ⭐⭐ (پیچیده) ⭐⭐⭐ (متوسط) ⭐⭐⭐⭐ (ساده)
قیمت ⭐⭐⭐⭐ (مناسب) ⭐ (بسیار گران) ⭐⭐ (گران) ⭐⭐⭐ (متوسط)
سرعت ⭐⭐⭐⭐ (سریع) ⭐⭐⭐⭐⭐ (بسیار سریع) ⭐⭐ (کند) ⭐⭐⭐⭐ (سریع)
کاربرد عمومی، ورزش پزشکی، تشخیصی فشارخون پوشیدنی‌ها

سوالات متداول (FAQ)

✅ آیا این ماژول SpO2 (اکسیژن خون) هم اندازه می‌گیرد؟
بله، مدل‌های MAX30100/MAX30102 قابلیت اندازه‌گیری SpO2 را دارند اما نیاز به الگوریتم پردازش پیچیده‌تر و کالیبراسیون دارند.

✅ چرا مقدار نمایش داده شده نوسان زیادی دارد؟
۱. حرکت دست یا انگشت. ۲. قرارگیری نادرست انگشت. ۳. نور محیطی قوی. ۴. جریان خون ضعیف (سرما).

✅ آیا برای افراد با پوست تیره کار می‌کند؟
عملکرد ممکن است کاهش یابد زیرا ملانین بیشتر جذب نور بیشتری دارد. نیاز به تنظیم شدت LED دارد.

✅ آیا می‌توان از نقاط دیگر بدن استفاده کرد؟
بله، لاله گوش، مچ دست، پیشانی اما نیاز به طراحی مکانیکی مناسب برای فشردگی و جلوگیری از نور محیط دارد.

✅ تفاوت MAX30100 با MAX30102 چیست؟
MAX30102 دارای FIFO داخلی، سنسور دمای مجتمع و سازگاری ولتاژ منطقی بهتر است. MAX30102 به‌روزتر و توصیه‌شده‌تر است.

✅ آیا این ماژول برای تشخیص پزشکی تأیید شده است؟
خیر. این یک ماژول آموزشی/تحقیقاتی/نمونه اولیه است. برای مصارف تشخیص پزشکی باید از دستگاه‌های تأییدشده FDA/CE استفاده شود.

✅ طول عمر LEDها چقدر است؟
در جریان کاری نرمال (کمتر از ۲۰mA)، ده‌ها هزار ساعت. کاهش روشنایی LEDها با زمان طبیعی است.


چرا این ماژول را از ما بخرید؟

✅ ماژول با کیفیت: استفاده از تراشه اصلی Maxim Integrated MAX30102.
✅ مبدل سطح ولتاژ داخلی: سازگاری کامل با آردوینو ۵V بدون نیاز به مبدل خارجی.
✅ کالیبراسیون اولیه: تست عملکرد با افراد مختلف و تنظیمات بهینه.
✅ پشتیبانی فنی: ارائه کدهای کامل، کتابخانه فارسی و الگوریتم‌های پردازش سیگنال.


پکیج پیشنهادی برای پروژه سلامت دیجیتال

  1. ماژول سنسور ضربان قلب MAX30102 (با کیفیت بالا)

  2. آردوینو نانو با کابل USB

  3. نمایشگر OLED 0.96 اینچ I2C

  4. باتری لیتیوم ۱۸۶۵۰ با هولدر و شارژر

  5. جعبه پلاستیکی مناسب برای نصب

  6. بند چسبی یا نگهدارنده انگشت


نحوه انتخاب و راه‌اندازی

  1. انتخاب تراشه: MAX30102 را به دلیل امکانات بیشتر انتخاب کنید.

  2. تغذیه: برای دقت بالا، از باتری به جای آداپتور سوئیچینگ پرنویز استفاده کنید.

  3. نرم‌افزار: از کتابخانه‌های معتبر (مانند SparkFun) استفاده کنید.

  4. کالیبراسیون: در کد، آستانه تشخیص انگشت (مقدار IR) را متناسب با کاربر تنظیم کنید.