Home » فروشگاه » ماژول ضربان قلب و پالس اکسیمتر GebraBit MAX30101
محصول اوریجینال جبرابیت
تست شده
کیفیت مهندسی
مهندسی پزشکی

ماژول ضربان قلب و پالس اکسیمتر GebraBit MAX30101

3.000.000 ریال

در انبار موجود نمی باشد

این محصول در حال حاضر موجود نمیباشد اگر به این محصول نیاز دارید اطلاعات زیر را تکمیل کنید

نوع ماژول

ماژول پایش ضربان قلب و پالس اکسیمتر

ولتاژ تغذیه

3V3, 5V

نوع خروجی

I2C, Digital

محدوده طول موج

IR: 870nm to 900nm RED: 650nm to 670 Green: 530nm to 545nm

پیک طول موج

IR: 880nm RED: 660nm Green: 537nm

رزولوشن ADC

18 Bit

LED sayısı

3

دمای کاری

-40 to +85 °C

ابعاد

Gebra small(36.29mm x 32.72mm)

توجه!

ماژول‌های جبرابیت، پیش از ورود به فروش، با قطعات اصلی و تحت فرایندهای تست عملکرد و پایداری بررسی می‌شوند. این موضوع باعث می‌شود محصول نهایی از نظر کیفیت، دقت و دوام در سطح استانداردهای مهندسی قرار گیرد.
در بازار ممکن است محصولات مشابه با قیمت پایین‌تر دیده شوند، اما بسیاری از آن‌ها بدون کنترل کیفیت و با قطعات غیرمعتبر عرضه می‌شوند که در پروژه‌های حساس موجب خطا، ناپایداری یا آسیب به سیستم می‌شود.
هدف ما ارائه محصولی است که نه‌تنها به‌درستی کار کند، بلکه در بلندمدت اعتماد و کارایی واقعی به همراه داشته باشد. این کیفیت، نتیجه استفاده از قطعات اصل و انجام تست‌های دقیق پیش از ارسال است.

مروری بر سنسور MAX30101

MAX30101 یک سنسور پالس اکسیمتری و مانیتورینگ ضربان قلب است که شامل LED های داخلی، فوتودیود ، عناصر نوری و لوازم الکترونیکی کم نویز میباشد.

سنسور MAX30101 با ولتاژ 1.8 ولتی کار کرده و ولتاژ LED های داخلی آن توسط یک منبع جداگانه 5 ولتی تامین می شود. ارتباط آن از طریق پروتکل I2C بوده و برای صرفه جویی در مصرف انرژی می توان به صورت نرم افزاری سنسور را خاموش کرد.

 از این سنسور میتوان در ساخت دستگاه‌های نظارت بر تناسب اندام، گوشی‌های هوشمند، تبلت‌ها

و دستگاه‌های پوشیدنی بهره برد.

مشخصات فنی

  • Output Type: Digital – I2C
  • Wavelength Range: IR: 870nm to 900nm RED: 650nm to 670 Green: 530nm to 545nm
  • Wavelength Peak: IR: 880nm RED: 660nm Green: 537nm
  • ADC Resolution: 18 Bit
  • Number of  LEDs: 3
  • Number of  PDs: 1

کاربردها

  • Wearable Devices
  • Fitness Assistant Devices
  • Smartphones

ماژول ضربان قلب و پالس اکسیمتر GebraBit MAX30101

GebraBit MAX3010 Module
  • با توجه به اینکه دسترسی به پایه‌های سنسور دشوار است، کاربران برای توسعه سخت‌افزاری و نرم‌افزاری این سنسور به یک برد ابتدایی (starter board) و درایور نیاز دارند. برای راحتی کاربران، GebraMS برد ماژول ضربان قلب و پالس اکسیمتر GebraBit MAX30101 را طراحی کرده است. کاربران می‌توانند به کمک این برد، به مهم‌ترین پایه‌های سنسور به‌راحتی دسترسی پیدا کنند.
  • کافی است برد ماژول ضربان قلب و پالس اکسیمتر GebraBit MAX30101 را روی برد (Breadboard) قرار دهید و سپس با یکی از بردهای Arduino، Raspberry Pi یا Discovery و با اعمال ولتاژ مناسب، آن را راه‌اندازی کنید.
  • ما به‌ویژه استفاده از Gebra STM32F303 را توصیه می‌کنیم؛ چرا که این برد دارای رگولاتور داخلی ۳.۳ ولت است و ترتیب پایه‌های آن با تمامی ماژول‌های Gebra هماهنگ است (استاندارد GEBRABUS)، بنابراین می‌توانید برد ماژول ضربان قلب و پالس اکسیمتر GebraBit MAX30101 را مستقیماً به سوکت مربوطه متصل کرده و بدون نیاز به سیم‌کشی، برنامه‌نویسی را آغاز کنید.

Gebra MAX30101، یک ماژول Pulse Oximeter و Heart Rate Monitoring یکپارچه است. این ماژول به‌لطف رگولاتور داخلی “1V8”، سنسور MAX30101 را در وضعیت ON قرار می‌دهد.

کاربران می‌توانند برای دریافت داده‌ها و پیکربندی سنسور، از طریق I2C protocol با Gebra MAX30101 ارتباط برقرار کنند.

ویژگی‌های ماژول GebraBit MAX30101

  • User-selectable module logic level voltage
  • User-selectable MAX30101 LED Anode Supply Voltage
  • 1V8 Voltage Regulator
  • 1V8 Output Voltage
  • On Board, ON/OFF LED indicator
  • Pin Compatible with GEBRABUS
  • I2C protocol to get data and configure the sensor
  • It can be used as a daughter board of GEBRABIT MCU Modules
  • Featuring Castellated pad (Assembled as SMD Part)
  • Separatable screw parts to reduce the size of the board
  • Package: GebraBit small (36.29mm x 32.72mm)

معرفی بخش های ماژول

سنسور MAX30101

ای سی اصلی این ماژول بوده که در بالای ماژول قرار گرفته و مدار ان طراحی شده است.

جامپرVIO SEL

با توجه به وضعیت مقاومت  0R این جامپر ، سطح منطق (Logic Level) ارتباط دیجیتالI2C  سنسور و سایر پین‌های دیجیتال از بین 5V و 3V3 انتخاب می شود.

جامپر سلکتور ولتاژ LED (VLED SEL)

با توجه به وضعیت مقاومت‌ 0R  جامپر “VLED SEL” ولتاژ تغذیه آند LED بین “5V” یا “3V3” تعیین می‌شود.

رگولاتور 1.8V XC6206P182MR-G

سنسور MAX30101 ماژول GebraBit MAX30101 ، توسط رگولاتور 1.8 ولتی XC6206P182MR-G تغذیه میشود. خروجی این رگولاتور از طریق پین 1V8 در دسترس است.

تغذیهLED

با توجه به وضعیت جامپرها و اعمال ولتاژ به ماژول توسط پین مربوطه، LED ماژول روشن می شود.

پین های ماژول

پین های تغذیه

  • 5V و 3V3 و 1V8 : این پین‌ها می توانند با توجه به وضعیت Jumper Selector های VDIO و VLED، تغذیه اصلی سنسور و LED ها را تامین کنند.
  • GND : این پین زمین مشترک برای تغذیه ماژول است.

پین‌های I2C

  • SDA : این پین، پین دیتای ارتباط I2C می باشد، که به پین دیتای متناظر در میکروکنترلر(پردازنده) ، متصل می شود.با توجه به وضعیت جامپر VIO SEL ، می‌توانید از سطح منطق(Logic Level) با ولتاژ 1V8 یا 3V3  استفاده کنید.این پین با یک مقاومت  پول آپ (Pull Up) شده است.
  • SCL : این پین، پین کلاک ارتباط I2C می باشد، که به پین کلاک متناظر در میکروکنترلر(پردازنده) ، متصل می شود.با توجه به وضعیت جامپر VIO SEL، می‌توانید از سطح منطق(Logic Level) با ولتاژ 1V8 یا 3V3 استفاده کنید.این پین با یک مقاومت  پول آپ (Pull Up) شده است.

دیگر پین ها

  • INT : پین وقفه سنسورMAX30101 بوده که active-low میباشد و توسط یک مقاومت pull-up به یک ولتاژ خارجی وصل شده و با توجه به دیتاشیت سنسور، کاربر می تواند شرایط وقوع وقفه،حالات و روش های وقوع وقفه و … را تنظیم کند.

اتصال به پردازنده

اتصال I2C با GebraBit STM32F303

برای اتصال I2C ماژول GebraBit MAX30101 به ماژول میکروکنترلرGebraBit STM32F303 بعد از تعریف کردن SDA و SCL رو پین های PB9 و PB8 (برای راحتی کار در STMCUBEMX)مراحل زیر را دنبال کنید:

  • پین 3V3 ماژول MAX30101 را به پین 3V3 خروجی ماژول میکروکنترلر متصل کنید.(سیم قرمز)
  • پین GND ماژول MAX30101 را به پین GND ماژول میکروکنترلر متصل کنید.(سیم سیاه)
  • پین SCL ماژول MAX30101 را به پین PB8 ماژول میکروکنترلر (SCL) متصل کنید.(سیم آبی)
  • پین SDA ماژول MAX30101 را به پین PB9 ماژول میکروکنترلر (SDA) متصل کنید.(سیم زرد)

توجه: با توجه به اینکه پین PA14 ماژول میکروکنترلرGebraBit STM32F303 برای پروگرام کردن میکروکنترلر استفاده میشود،تنظیم I2C بر روی پین های PA14 و PA15 در این ورژن مقدور نمی باشد،لذا در اتصال I2C به ماژول میکروکنترلرGebraBit STM32F303 در این ورژن ، ماژول GebraBit MAX30101 نمی تواند به صورت Pin to Pin بر روی آن قرار گیرد.

اتصال I2C با GebraBit ATMEGA32A

با توجه به اینکه پین های I2C میکروکنترلر ATMEGA32A بر اساس استاندارد GEBRABUS متناظر با پین های I2C  دیگر ماژول های GEBRABIT می باشد،  ماژول GebraBit MAX30101 را به صورت Pin to Pin به راحتی بر روی ماژول GebraBit ATMEGA32A قرار داده و  با ماژول GebraBit MAX30101 از طریق I2C ارتباط برقرار کنید:

توجه: در صورت استفاده از ماژول‌های میکروکنترلری GebraBit توجه داشته باشید که جامپر سلکتورهای تغذیه ماژول GebraBit  MAX30101 روی 3V3 باشد تا راحت تر بتوانید ولتاژ3V3 را از ماژول میکروکنترلری گرفته و ماژول را فعال کنید.

اتصال I2C با ARDUINO UNO

ابتدا اطمینان حاصل کنید که پروتکل I2C با استفاده از جامپر های روی برد انتخاب شده است، سپس برای اتصال I2C ماژول GebraBit MAX30101 به ARDUINO UNO مراحل زیر را دنبال کنید:

  • پین 3V3 ماژول MAX30101 را به پین 3V3 خروجی برد ARDUINO UNO متصل کنید.(سیم قرمز)
  • پین GND ماژول MAX30101 را به پین GND برد ARDUINO UNO متصل کنید.(سیم سیاه)
  • پین SCL ماژول MAX30101 را به پین A5 برد ARDUINO UNOمتصل کنید.(سیم آبی)
  • پین SDA ماژول MAX30101 را به پین A4 برد ARDUINO UNOمتصل کنید.(سیم نارنجی)
نوع ماژول

ماژول پایش ضربان قلب و پالس اکسیمتر

ولتاژ تغذیه

3V3, 5V

نوع خروجی

I2C, Digital

محدوده طول موج

IR: 870nm to 900nm RED: 650nm to 670 Green: 530nm to 545nm

پیک طول موج

IR: 880nm RED: 660nm Green: 537nm

رزولوشن ADC

18 Bit

LED sayısı

3

دمای کاری

-40 to +85 °C

ابعاد

Gebra small(36.29mm x 32.72mm)

هدف ما از انجام این پروژه چیست؟

هدف این پروژه، راه‌اندازی و استفاده از ماژول بیوپتانسیل و ضربان قلب GebraBit MAX30101 با استفاده از برد Arduino UNO (یا بردهای سازگار) است. در این پروژه یاد می‌گیریم چگونه سنسور اپتیکال MAX30101 با تابش نور LEDهای قرمز/مادون قرمز به بافت بدن، تغییرات جریان خون را تشخیص داده و آن را به سیگنال الکتریکی قابل اندازه‌گیری تبدیل می‌کند.

با استفاده از کتابخانه‌ی MAX30100_PulseOximeter (یا نسخه‌ی اصلاح‌شده برای MAX30101) ضربان قلب (Heart Rate) و سطح اکسیژن خون (SpO2) در هر دقیقه محاسبه شده و به صورت عددی در Serial Monitor نمایش داده می‌شود. همچنین در طی این پروژه، مفاهیم مهمی مثل رابط I²C، نرخ نمونه‌برداری، تنظیم جریان LED، تشخیص ضربان (Beat Detection)  را مرور می‌کنیم.

در این آموزش چه چیزهایی یاد میگیریم؟  

در این پروژه با مفاهیم و مهارت‌های زیر آشنا می‌شویم:

  • آشنایی با نحوه کار سنسور اپتیکال MAX30101 و اصول اندازه‌گیری ضربان قلب و SpO2 با استفاده از نور بازتابی از پوست.
  • نحوه‌ی اتصال ماژول GebraBit MAX30101 به Arduino از طریق رابط I²C (پین‌های SDA و SCL).
  • استفاده از کتابخانه‌ی MAX30100.h و کلاس PulseOximeter برای راه‌اندازی سریع سنسور و محاسبه‌ی خودکار HR و SpO2.
  • تنظیم جریان LED مادون قرمز (IR LED Current) از طریق تابع setIRLedCurrent() برای رسیدن به سیگنال مناسب متناسب با نوع بافت و فاصله‌ی سنسور تا پوست.
  • استفاده از یک کال‌بک (Callback) برای تشخیص هر ضربان قلب و چاپ پیام “♥ Beat!” در لحظه‌ی تشخیص.
  • خواندن و نمایش ضربان قلب (bpm) و درصد اکسیژن خون (%SpO2) در یک بازه‌ی زمانی مشخص (هر ۱ ثانیه) با استفاده از تابع millis().
  • آشنایی با مفاهیم پردازش سیگنال در سطح کتابخانه مثل:
    • حذف مولفه‌ی DC سیگنال با DCRemover
    • فیلتر پایین‌گذر با FilterBuLp1
    • تشخیص ضربان با MAX30100_BeatDetector
    • تخمین SpO2 با MAX30100_SpO2Calculator

برای شروع این پروژه به چه چیزهایی نیاز داریم؟  

برای اجرای این پروژه به سخت‌افزار و نرم‌افزار نیاز داریم. عناوین این سخت‌افزارها و نرم‌افزارها در جدول زیر به شما ارائه شده است و می‌توانید با کلیک بر روی هر یک، آن را تهیه/دانلود کرده و برای شروع آماده شوید.

سخت‌افزارهای مورد نیاز نرم‌افزارهای مورد نیاز
برد Arduino UNO (یا Nano / Mega سازگار) Arduino IDE
ماژول بیوپتانسیل و ضربان قلب GebraBit MAX30101 درایور USB برد آردوینو (CH340 یا مشابه)
کابل USB Type-A به Type-B یا Micro/Type-C کتابخانه MAX30100 / PulseOximeter برای Arduino
سیم جامپر (M–F) یا بردبورد برای اتصال I²C

ابتدا مانند تصویر زیر ماژول ضربان قلب GebraBit MAX30101  را به صورت زیر به آردوینو متصل می کنیم:

پس از اتصال آردوینو به ماژول  ، کتابخانه  MAX30101  دانلود و به نرم افزار آردوینو اضافه و برنامه پیوست را اجرا کنید.

سورس کد     

توضیح فایل MAX30100_PulseOximeter.h

ثابت‌های تنظیمات

 #define SAMPLING_FREQUENCY                  100
#define CURRENT_ADJUSTMENT_PERIOD_MS        500
#define DEFAULT_IR_LED_CURRENT              MAX30100_LED_CURR_50MA
#define RED_LED_CURRENT_START               MAX30100_LED_CURR_27_1MA
#define DC_REMOVER_ALPHA                    0.95

 SAMPLING_FREQUENCY: فرکانس نمونه‌برداری داخلی سنسور (به Hz).

 CURRENT_ADJUSTMENT_PERIOD_MS: هر چند میلی‌ثانیه یک‌بار جریان LED برای رسیدن به سیگنال مناسب تنظیم شود.

 DEFAULT_IR_LED_CURRENT: جریان پیش‌فرض LED مادون قرمز.

 RED_LED_CURRENT_START: جریان شروع برای LED قرمز.

 DC_REMOVER_ALPHA: ضریب فیلتر برای حذف مولفه‌ی DC سیگنال (نزدیک ۱ یعنی فیلتر نرم و کند).

کتابخانه‌های وابسته

 #include "MAX30100.h"
#include "MAX30100_BeatDetector.h"
#include "MAX30100_Filters.h"
#include "MAX30100_SpO2Calculator.h"

این فایل‌ها کلاس‌های زیر را فراهم می‌کنند:

  • MAX30100: برای ارتباط مستقیم با رجیسترهای سخت‌افزار سنسور.
  • MAX30100_BeatDetector: برای تشخیص قله‌ها و فواصل زمانی بین ضربان‌ها.
  • MAX30100_Filters: برای اعمال فیلترهای سیگنال روی داده‌ی خام نوری.
  • MAX30100_SpO2Calculator: برای محاسبه‌ی SpO2 بر اساس نسبت سیگنال‌های قرمز و IR.

حالت‌های کاری و دیباگ

 typedef enum PulseOximeterState {
    PULSEOXIMETER_STATE_INIT,
    PULSEOXIMETER_STATE_IDLE,
    PULSEOXIMETER_STATE_DETECTING
} PulseOximeterState;

  • INIT: سنسور در حال مقداردهی اولیه است.
  • IDLE: سنسور آماده است ولی هنوز ضربان معناداری تشخیص نداده.
  • DETECTING: در حال تشخیص و پیگیری ضربان‌های متوالی.

typedef enum PulseOximeterDebuggingMode {
    PULSEOXIMETER_DEBUGGINGMODE_NONE,
    PULSEOXIMETER_DEBUGGINGMODE_RAW_VALUES,
    PULSEOXIMETER_DEBUGGINGMODE_AC_VALUES,
    PULSEOXIMETER_DEBUGGINGMODE_PULSEDETECT
} PulseOximeterDebuggingMode;

امکان انتخاب مدهای دیباگ برای چاپ داده‌ی خام، داده‌ی AC، یا اطلاعات تشخیص ضربان.

رابط عمومی کلاس PulseOximeter

 
class PulseOximeter {
public:
    PulseOximeter();

    bool begin(PulseOximeterDebuggingMode debuggingMode_=PULSEOXIMETER_DEBUGGINGMODE_NONE);
    void update();
    float getHeartRate();
    uint8_t getSpO2();
    uint8_t getRedLedCurrentBias();
    void setOnBeatDetectedCallback(void (*cb)());
    void setIRLedCurrent(LEDCurrent irLedCurrent);
    void shutdown();
    void resume();

  • begin(): راه‌اندازی سنسور، چک کردن ID و تنظیم رجیسترها.
  • update(): خواندن نمونه‌ی جدید، اعمال فیلتر و به‌روزرسانی HR/SpO2، تشخیص ضربان.
  • getHeartRate(): دریافت مقدار HR.
  • getSpO2(): دریافت مقدار SpO2.
  • getRedLedCurrentBias(): مقدار بایاس جریان LED قرمز را برمی‌گرداند.
  • setOnBeatDetectedCallback(): ثبت تابع کال‌بک برای تشخیص ضربان.
  • setIRLedCurrent(): تنظیم جریان LED IR (همان تابعی که در setup() استفاده کردیم).
  • shutdown() / resume(): خاموش و روشن کردن سنسور برای کاهش مصرف توان.

بخش private شامل متغیرهایی است که برای نگهداری وضعیت، زمان‌بندی ضربان‌ها، فیلترهای DC و پایین‌گذر و شیء MAX30100 hrm; استفاده می‌شود و معمولاً نیازی به تغییر توسط کاربر ندارند.

فایل برنامه‌ی اصلی آردوینو (Sketch)

تعریف کتابخانه‌ها و ثابت‌ها

#include <Wire.h>
#include "MAX30100_PulseOximeter.h"

#define REPORTING_PERIOD_MS     1000 

Wire.h: کتابخانه‌ی استاندارد آردوینو برای برقراری ارتباط I²C است که برای صحبت‌کردن با MAX30101 استفاده می‌شود.

“MAX30100_PulseOximeter.h”: هدر کتابخانه‌ی پالس‌اکسی‌متر که کلاس PulseOximeter را در اختیار ما قرار می‌دهد.

REPORTING_PERIOD_MS: بازه‌ی زمانی گزارش‌گیری از مقادیر ضربان قلب و SpO2 است. مقدار 1000 یعنی هر ۱ ثانیه یک بار مقادیر جدید چاپ شوند.

ایجاد شیء PulseOximeter و متغیرهای زمانی

 PulseOximeter pox;
uint32_t tsLastReport = 0;

    PulseOximeter pox;: یک شیء از کلاس PulseOximeter می‌سازیم که تمام کارهای راه‌اندازی، خواندن سنسور، فیلتر، تشخیص ضربان و محاسبه HR/SpO2 را انجام می‌دهد.

   tsLastReport: زمان آخرین باری که مقادیر چاپ شده‌اند، برای مقایسه با millis() استفاده می‌شود تا هر ثانیه یک بار خروجی بدهیم.

تابع کال‌بک تشخیص ضربان

 # void onBeatDetected() {
    Serial.println("♥ Beat!");
}

   این تابع هر بار که کتابخانه تشخیص دهد یک ضربان قلب کامل اتفاق افتاده، توسط سنسور فراخوانی می‌شود.

   تنها کاری که انجام می‌دهد چاپ رشته‌ی “♥ Beat!” روی Serial Monitor است تا کاربر در همان لحظه‌ی ضربان، آن را ببیند.

   این تابع به‌عنوان callback بعداً به سنسور معرفی می‌شود:

pox.setOnBeatDetectedCallback(onBeatDetected);

تابع setup() – راه‌اندازی اولیه

 void setup() {
    Serial.begin(9600);

    Serial.print("Initializing pulse oximeter.."); #define BH1790_PRM_CTRL2_CUR    (4U)

Serial.begin(9600);: راه‌اندازی ارتباط سریال با سرعت 9600 بیت بر ثانیه برای نمایش متن و داده‌ها.

چاپ پیام اولیه برای اطلاع کاربر از شروع پروسه‌ی راه‌اندازی.

     if (!pox.begin()) {
        Serial.println("FAILED");
        for(;;);
    } else {
        Serial.println("SUCCESS");
    }

   pox.begin(): تلاش برای راه‌اندازی سنسور از طریق I²C، چک کردن اینکه سنسور در باس I²C وجود دارد و تنظیم رجیسترهای اولیه.

   اگر begin() مقدار false برگرداند، یعنی سنسور پیدا نشده یا خطای راه‌اندازی وجود دارد؛ در این صورت “FAILED” چاپ می‌شود و برنامه در یک حلقه‌ی بی‌نهایت (for(;;);) متوقف می‌شود تا کاربر مشکل سخت‌افزاری را برطرف کند.

   در صورت موفقیت “SUCCESS” چاپ می‌شود.

 // Configure sensor to use 7.6mA for LED drive
    pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);

   با setIRLedCurrent() جریان LED مادون قرمز تنظیم می‌شود؛ مقدار MAX30100_LED_CURR_7_6MA یعنی حدود ۷٫۶ میلی‌آمپر.

   این پارامتر روی شدت سیگنال اپتیکال و در نتیجه کیفیت سیگنال ضربان تأثیر مستقیم دارد (بسته به ضخامت پوست، فاصله سنسور و مصرف توان ممکن است این مقدار نیاز به تنظیم داشته باشد).

    // Register a callback routine
    pox.setOnBeatDetectedCallback(onBeatDetected);
}

   این خط تابع onBeatDetected را به‌عنوان کال‌بک تشخیص ضربان ثبت می‌کند.

   از این لحظه به بعد، هر زمان کتابخانه ضربان را تشخیص دهد، به‌طور خودکار onBeatDetected() را صدا می‌زند.

تابع loop() – خواندن مداوم از سنسور

 void loop() {
    // Read from the sensor
    pox.update();

در هر بار اجرای loop() باید تابع pox.update() فراخوانی شود تا کتابخانه:

  • داده‌های جدید را از MAX30101 بخواند،
  • فیلترها را اعمال کند،
  • ضربان‌ها را تشخیص دهد،
  • HR و SpO2 را به‌روز کند.

 // Grab the updated heart rate and SpO2 levels
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
        Serial.print("Heart rate:");
        Serial.print(pox.getHeartRate());
        Serial.print("bpm / SpO2:");
        Serial.print(pox.getSpO2());
        Serial.println("%");

        tsLastReport = millis();
    }
}

جمع‌بندی کاربردی

  • با استفاده از millis() چک می‌شود اگر بیش از REPORTING_PERIOD_MS (یعنی 1000ms = 1s) از آخرین گزارش گذشته باشد، زمان چاپ مقادیر جدید رسیده است.
  • pox.getHeartRate(): مقدار ضربان قلب را برحسب ضربه در دقیقه (bpm) برمی‌گرداند.
  • pox.getSpO2(): مقدار سطح اکسیژن خون را بر حسب درصد (%) محاسبه و برمی‌گرداند.
  • در پایان، tsLastReport به زمان فعلی millis() به‌روزرسانی می‌شود تا یک ثانیه‌ی جدید شمرده شود.

اجرای کد     

آردوینو خود را به کامپیوتر متصل کنید و مدل و پورت آردوینو خود را انتخاب کنید. سپس نمونه کد را ابتدا Verify و سپس Upload کنید . بعد از Upload کردن کد Serial Monitor را باز کرده و می توانید خروجی های سنسور را مشاهده کنید .

1. MAX30101 چگونه ضربان قلب را اندازه‌گیری می‌کند؟

سنسور MAX30101 با استفاده از LEDهای قرمز و مادون قرمز (IR) و فوتودیودها نور را به پوست تابانده و میزان بازتاب نور ناشی از جریان خون را اندازه‌گیری می‌کند. داده‌های بازتابی توسط ADC داخلی تبدیل به مقادیر دیجیتال می‌شوند و می‌توان با الگوریتم‌های نرم‌افزاری Heart Rate را محاسبه کرد. این سنسور برای کاربردهای Wearable و پایش سلامت طراحی شده و حساسیت بالایی دارد.
🔗 Reference: MAX30101 Datasheet


2. محدوده ولتاژ تغذیه MAX30101 چقدر است؟

MAX30101 از ولتاژ 1.8 V تا 3.3 V برای بخش دیجیتال و 1.8 V تا 3.6 V برای LED پشتیبانی می‌کند. این محدوده ولتاژ باعث می‌شود که سنسور برای دستگاه‌های باتری‌دار و گجت‌های پوشیدنی مناسب باشد. منبع تغذیه با نویز کم برای حفظ دقت و SNR اهمیت دارد و باید خطوط تغذیه کوتاه و با خازن دکوپلینگ مناسب طراحی شوند.
🔗 Reference: MAX30101 Datasheet


3. MAX30101 چه طول موج LED استفاده می‌کند؟

MAX30101 دارای LEDهای قرمز (Red ~660nm) و مادون قرمز (IR ~880nm) است. این طول موج‌ها برای تشخیص تغییرات جریان خون و اندازه‌گیری Heart Rate و SpO2 بهینه هستند. ترکیب این LEDها با فوتودیود داخلی دقت بالا و حساسیت مطلوب را فراهم می‌کند.
🔗 Reference: MAX30101 Datasheet


4. MAX30101 چگونه داده‌ها را از طریق I²C منتقل می‌کند؟

MAX30101 از رابط I²C برای انتقال داده‌ها به میکروکنترلرها استفاده می‌کند. می‌توان رجیسترهای کنترلی را تنظیم کرد و داده‌های نمونه‌برداری شده را از FIFO داخلی خواند. Pull-up مقاومتی روی SDA و SCL ضروری است و انتخاب آدرس I²C مناسب برای استفاده چند سنسور روی یک باس مهم است.
🔗 Reference: MAX30101 Datasheet


5. چگونه جریان LED در MAX30101 تنظیم می‌شود؟

MAX30101 امکان تنظیم جریان LED بین 0 تا 50 mA را از طریق رجیسترهای I²C فراهم می‌کند. جریان LED بالا حساسیت بیشتری ایجاد می‌کند ولی مصرف انرژی را افزایش می‌دهد، در حالی که جریان پایین مصرف انرژی را کاهش می‌دهد ولی SNR کمتر است. برای دقت مطلوب باید جریان LED با duty cycle مناسب تنظیم شود.
🔗 Reference: MAX30101 Datasheet


6. MAX30101 چه نرخ نمونه‌برداری دارد؟

MAX30101 از 50 Hz تا 400 Hz برای نمونه‌برداری پشتیبانی می‌کند. نرخ بالاتر دقت بیشتری در تشخیص Heart Rate و SpO2 فراهم می‌کند اما مصرف انرژی افزایش می‌یابد. انتخاب نرخ مناسب به کاربرد، عمر باتری و نیاز به وضوح زمانی بستگی دارد.
🔗 Reference: MAX30101 Datasheet


7. MAX30101 چگونه با STM32 راه‌اندازی می‌شود؟

برای STM32 با HAL Library، ابتدا I²C را فعال کرده و رجیسترهای کنترل MAX30101 را تنظیم می‌کنیم. سپس داده‌ها از FIFO خوانده شده و توسط الگوریتم نرم‌افزاری Heart Rate و SpO2 محاسبه می‌شوند. استفاده از DMA برای خواندن داده‌ها بدون اشغال CPU توصیه می‌شود تا پاسخگویی سیستم بهینه باشد.
🔗 Reference: MAX30101 Datasheet


8. چگونه دقت (accuracy) اندازه‌گیری MAX30101 افزایش می‌یابد؟

برای افزایش دقت در MAX30101 باید LED current و duty cycle بهینه شوند، داده‌ها با فیلتر پایین‌گذر پردازش شوند و حرکت دست به حداقل برسد. تماس مناسب با پوست و الگوریتم‌های نرم‌افزاری برای تشخیص پالس، نقش حیاتی در accuracy دارند. استفاده از میانگین‌گیری چند ثانیه‌ای و حذف نویز محیط باعث کاهش خطا می‌شود.
🔗 Reference: MAX30101 Datasheet


9. MAX30101 هنگام حرکت دست چه مشکلاتی دارد؟

حرکت دست باعث ایجاد motion artifact می‌شود که سیگنال بازتابی را مخدوش می‌کند. برای کاهش اثر آن، از الگوریتم‌های motion compensation و فیلتر نرم‌افزاری استفاده می‌شود. همچنین تماس محکم سنسور با پوست ضروری است تا میزان dropout سیگنال کاهش یابد و accuracy حفظ شود.
🔗 Reference: MAX30101 Datasheet


10. MAX30101 چه کاربردهایی دارد؟

MAX30101 عمدتاً در Wearable Health Devices مانند دستبندهای سلامتی و ساعت‌های هوشمند برای پایش Heart Rate و SpO2 کاربرد دارد. همچنین در ورزش و پایش فعالیت روزانه و برخی دستگاه‌های پزشکی غیرتهاجمی استفاده می‌شود. ویژگی‌های کم‌مصرف و اندازه کوچک آن باعث تطبیق‌پذیری در گجت‌های پوشیدنی شده است.
🔗 Reference: MAX30101 Product Page


11. MAX30101 چگونه داده‌های SpO2 را اندازه‌گیری می‌کند؟

MAX30101 با تاباندن نور قرمز و مادون قرمز به پوست و اندازه‌گیری نسبت جذب آن‌ها توسط خون، سطح اشباع اکسیژن (SpO2) را محاسبه می‌کند. الگوریتم‌های نرم‌افزاری روی داده‌های ADC داخلی اعمال می‌شوند تا تغییرات ضربان قلب و جذب نور خون استخراج شود. دقت اندازه‌گیری به کیفیت تماس سنسور با پوست و میزان نویز محیط وابسته است.
🔗 Reference: MAX30101 Datasheet


12. MAX30101 چگونه نویز ناشی از نور محیط را کاهش می‌دهد؟

برای کاهش اثر نور محیط، MAX30101 از LED modulation و فیلتر دیجیتال استفاده می‌کند. الگوریتم‌های نرم‌افزاری همچنین با تشخیص تغییرات غیرپریودیک و میانگین‌گیری سیگنال کمک می‌کنند تا SNR حفظ شود. طراحی PCB و پوشش سنسور برای جلوگیری از نور مستقیم خورشید یا لامپ‌های پرنور نیز مؤثر است.
🔗 Reference: MAX30101 Datasheet


13. MAX30101 چگونه با Arduino Library راه‌اندازی می‌شود؟

کتابخانه‌های Arduino برای MAX30101 امکان خواندن رجیسترها، تنظیم LED current و نمونه‌برداری و پردازش Heart Rate و SpO2 را فراهم می‌کنند. کافی است I²C فعال و پین‌ها متصل باشند، سپس از توابع آماده برای شروع acquisition داده‌ها استفاده شود. مثال‌های نرم‌افزاری کتابخانه‌ها برای شروع سریع توسعه بسیار مفید هستند.
🔗 Reference: MAX30101 Datasheet


14. MAX30101 چگونه در STM32 با DMA استفاده می‌شود؟

با استفاده از DMA، داده‌های FIFO MAX30101 بدون اشغال CPU منتقل می‌شوند. این روش باعث کاهش تاخیر و مصرف انرژی در MCU می‌شود. رجیسترهای FIFO و آدرس I²C باید قبل از فعال‌سازی DMA به درستی تنظیم شوند تا داده‌ها پایدار و سریع منتقل شوند.
🔗 Reference: MAX30101 Datasheet


15. مشکلات رایج MAX30101 چیست؟

مشکلات رایج شامل motion artifact، نور محیط زیاد، signal dropout، تماس نامناسب با پوست و تنظیم نامناسب LED current هستند. برای رفع آن‌ها، از الگوریتم‌های نرم‌افزاری، فیلتر میانگین متحرک، تنظیم LED current و duty cycle مناسب و طراحی محفظه یا بند مناسب استفاده می‌شود. رعایت این نکات باعث افزایش reliability و accuracy می‌شود.
🔗 Reference: MAX30101 Datasheet


16. MAX30101 در چه دماهایی قابل استفاده است؟

محدوده عملیاتی MAX30101 بین -40°C تا +85°C است. خارج از این محدوده ممکن است عملکرد سنسور کاهش یابد یا داده‌ها ناپایدار شوند. طراحی دستگاه باید اطمینان دهد که سنسور در محدوده دمایی مشخص کار می‌کند تا accuracy و reliability حفظ شود.
🔗 Reference: MAX30101 Datasheet


17. MAX30101 چه مصرف جریانی دارد؟

مصرف جریان MAX30101 به وضعیت LED و نمونه‌برداری بستگی دارد. در حالت Idle جریان کمتر از 1 mA و در حالت Active با LED روشن بین 600 µA تا 6 mA متغیر است. تنظیم LED current و duty cycle مناسب برای کاهش مصرف انرژی در دستگاه‌های پوشیدنی ضروری است.
🔗 Reference: MAX30101 Datasheet


18. MAX30101 چگونه خطای اندازه‌گیری ناشی از حرکت را کاهش می‌دهد؟

خطای ناشی از motion artifact با الگوریتم‌های نرم‌افزاری تشخیص و حذف می‌شود. استفاده از فیلتر دیجیتال، میانگین‌گیری و تحلیل تغییرات ناگهانی سیگنال، خطای اندازه‌گیری ضربان قلب و SpO2 را کاهش می‌دهد. طراحی مناسب بند یا محفظه برای تماس محکم با پوست نیز مؤثر است.
🔗 Reference: MAX30101 Datasheet


19. MAX30101 چگونه با پوست تیره کار می‌کند؟

پوست تیره باعث کاهش بازتاب نور می‌شود و SNR را پایین می‌آورد. برای جبران، LED current افزایش یافته و الگوریتم‌های نرم‌افزاری برای استخراج پالس‌های قلب بهینه می‌شوند. تماس مناسب سنسور با پوست و جلوگیری از نور محیط نیز در افزایش دقت مؤثر است.
🔗 Reference: MAX30101 Datasheet


20. MAX30101 در نور مستقیم خورشید چگونه عمل می‌کند؟

نور مستقیم خورشید باعث افزایش نویز و کاهش دقت اندازه‌گیری می‌شود. MAX30101 از LED modulation و فیلتر دیجیتال استفاده می‌کند، اما شرایط نوری شدید همچنان می‌تواند accuracy را کاهش دهد. پوشش محافظ و طراحی مناسب بند برای جلوگیری از نور محیط توصیه می‌شود.
🔗 Reference: MAX30101 Datasheet


21. MAX30101 چگونه برای پایش طولانی مدت تنظیم می‌شود؟

برای پایش طولانی مدت، LED current و duty cycle کاهش یافته و Sleep Mode بین نمونه‌برداری‌ها فعال می‌شود. داده‌ها توسط MCU پردازش و ذخیره می‌شوند تا مصرف انرژی کاهش یابد و دقت اندازه‌گیری حفظ شود. این روش مناسب ساعت‌ها یا روزها پایش مداوم ضربان قلب است.
🔗 Reference: MAX30101 Datasheet


22. MAX30101 چه الگوریتم‌های نرم‌افزاری نیاز دارد؟

برای استخراج Heart Rate و SpO2 از MAX30101، نیاز به الگوریتم‌هایی شامل فیلتر پایین‌گذر، تشخیص پیک، میانگین‌گیری و motion compensation داریم. الگوریتم‌ها روی داده‌های ADC خوانده شده از FIFO اجرا می‌شوند و دقت اندازه‌گیری و کاهش نویز را تضمین می‌کنند.
🔗 Reference: MAX30101 Datasheet


23. MAX30101 چگونه با BLE یا Bluetooth هماهنگ می‌شود؟

MAX30101 داده‌ها را از طریق I²C به MCU منتقل می‌کند و MCU آن‌ها را از طریق BLE یا Bluetooth به گوشی یا سرور ارسال می‌کند. سنسور خود wireless ندارد و فقط بخشی از زنجیره acquisition و wireless communication است. تنظیم duty cycle مناسب باعث کاهش مصرف انرژی در ارتباط بی‌سیم می‌شود.
🔗 Reference: MAX30101 Datasheet


24. MAX30101 چگونه مصرف انرژی را بهینه می‌کند؟

با کاهش LED current، کاهش duty cycle و فعال کردن Sleep Mode بین نمونه‌برداری‌ها، مصرف انرژی بهینه می‌شود. همچنین پردازش داده‌ها با الگوریتم‌های نرم‌افزاری کم‌مصرف و استفاده از DMA باعث کاهش بار روی MCU و کاهش مصرف انرژی کلی می‌شود.
🔗 Reference: MAX30101 Datasheet


25. MAX30101 چه محدودیت‌هایی دارد؟

محدودیت‌ها شامل حساسیت کمتر در پوست تیره، اثر نور محیط شدید، motion artifact و محدودیت نرخ نمونه‌برداری تا 400 Hz هستند. همچنین برای اندازه‌گیری SpO2 دقیق پزشکی نیاز به الگوریتم‌های تخصصی و ممکن است سنسورهای اختصاصی بهتر عمل کنند.
🔗 Reference: MAX30101 Datasheet


26. MAX30101 چه کاربردهای غیرپزشکی دارد؟

علاوه بر Fitness Tracker و Smartwatch، MAX30101 در گجت‌های ورزشی، Gaming Wearable و Smart Clothing برای پایش فعالیت و ضربان قلب استفاده می‌شود. ویژگی‌های کم‌مصرف و اندازه کوچک آن باعث تطبیق‌پذیری بالا در گجت‌های پوشیدنی شده است.
🔗 Reference: MAX30101 Product Page


27. MAX30101 چگونه با سایر سنسورها مقایسه می‌شود؟

با سنسورهایی مانند MAX30102 و MAX86150 قابل مقایسه است. مزیت MAX30101 مصرف پایین و اندازه کوچک است، اما برای پایش چند کاناله SpO2 یا ECG، سنسورهای پیشرفته‌تر گزینه بهتری هستند. انتخاب سنسور بسته به کاربرد و نیاز دقت انجام می‌شود.
🔗 Reference: MAX30101 Datasheet


28. MAX30101 در چه شرایط نوری بهترین عملکرد را دارد؟

بهترین عملکرد در نور محیط متوسط و بدون تابش مستقیم خورشید است. تابش مستقیم یا نور شدید باعث کاهش SNR و اختلال در اندازه‌گیری می‌شود. استفاده از پوشش محافظ یا طراحی محفظه مناسب برای جلوگیری از نور محیط توصیه می‌شود.
🔗 Reference: MAX30101 Datasheet


29. MAX30101 چگونه در تماس با پوست مرطوب عمل می‌کند؟

تماس با عرق یا رطوبت زیاد می‌تواند باعث کاهش accuracy یا signal dropout شود. استفاده از پوشش محافظ یا طراحی محفظه مناسب برای جلوگیری از تماس مستقیم با رطوبت توصیه می‌شود تا عملکرد پایدار حفظ شود.
🔗 Reference: MAX30101 Datasheet


30. MAX30101 چگونه خطای ناشی از تماس نامناسب با پوست را کاهش می‌دهد؟

برای کاهش این خطا، سنسور باید به طور محکم و صاف روی پوست قرار گیرد و بند یا محفظه بهینه طراحی شود. الگوریتم‌های نرم‌افزاری نیز با فیلتر و تشخیص پیک‌ها سعی می‌کنند اختلالات ناشی از تماس نامناسب را اصلاح کنند.
🔗 Reference: MAX30101 Datasheet


31. MAX30101 چگونه داده‌ها را ذخیره و پردازش می‌کند؟

MAX30101 دارای FIFO داخلی است که داده‌های ADC را ذخیره می‌کند. MCU می‌تواند داده‌ها را به صورت block یا پیوسته بخواند و با الگوریتم‌های نرم‌افزاری پردازش کند. این ساختار باعث کاهش خطا و افزایش سرعت پردازش می‌شود.
🔗 Reference: MAX30101 Datasheet


32. MAX30101 چه نرخ نمونه‌برداری برای ورزش‌های سریع پیشنهاد می‌شود؟

برای فعالیت‌های ورزشی سریع، نرخ نمونه‌برداری 100–400 Hz مناسب است تا ضربان قلب با جزئیات کافی ثبت شود. نرخ بالاتر مصرف انرژی بیشتری دارد اما وضوح و دقت بیشتر برای الگوریتم‌های Heart Rate و SpO2 فراهم می‌کند.
🔗 Reference: MAX30101 Datasheet


33. MAX30101 چگونه با MCUهای کم‌مصرف هماهنگ می‌شود؟

با تنظیم LED current، duty cycle و فعال کردن Sleep Mode، MAX30101 برای MCUهای کم‌مصرف مناسب می‌شود. استفاده از DMA و الگوریتم‌های نرم‌افزاری کم‌مصرف کمک می‌کند تا بار روی MCU کاهش یابد و مصرف انرژی بهینه شود.
🔗 Reference: MAX30101 Datasheet


34. MAX30101 چگونه در برنامه‌های پزشکی غیرتهاجمی استفاده می‌شود؟

MAX30101 می‌تواند Heart Rate و SpO2 را به صورت غیرتهاجمی اندازه‌گیری کند، اما برای تشخیص‌های پزشکی دقیق باید الگوریتم‌های تخصصی و تست‌های بالینی تکمیل شود. استفاده در بیمارستان یا پایش پزشکی خانگی با احتیاط و بررسی داده‌ها توصیه می‌شود.
🔗 Reference: MAX30101 Datasheet


35. منابع رسمی MAX30101 از کجا قابل دریافت هستند؟

می‌توانید از صفحه رسمی Maxim Integrated شامل Datasheet، Application Note و EVK برای اطلاعات کامل و نرم‌افزارهای نمونه استفاده کنید. این منابع برای راه‌اندازی و توسعه سریع با MAX30101 ضروری هستند.
🔗 Reference: MAX30101 Product Page

برای اطلاع دقیق از مقادیر کاری و حداکثر مقادیر مجاز آی‌سی‌ها، کاربران باید به دیتاشیت اصلی و رسمی آن قطعات مراجعه کنند

اگر هر یک از اسناد فنی ناقص یا اشتباه است، لطفاً به ما اطلاع دهید

با نظرات خود به تیم جبرا در بهبود کیفیت کمک کنید

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

توجه!

محصولات ما صرفاً برای اهداف تحقیقاتی و توسعه طراحی شده‌اند. جبرابیت صراحتاً اعلام می‌کند که در صورت استفاده کاربران از این محصولات در کاربردهای حساس و دقیق از جمله امور مالی یا مواردی که به جان و مال انسان آسیب می‌زنند، هیچ‌گونه مسئولیتی را نمی‌پذیرد.

برای اطلاع دقیق از مقادیر کاری و حداکثر مقادیر مجاز آی‌سی‌ها (IC)، کاربران باید حتماً به دیتاشیت اصلی و رسمی آن قطعات مراجعه کنند.

سبد خرید
پیمایش به بالا