آموزش راه اندازی ماژول سنسور ضربان قلب با آردوینو

آموزش راه اندازی ماژول سنسور ضربان قلب با آردوینو

مسلما مشاهده ضربان قلب برای برخی افراد کاربردی و برای برخی دیگر از جذابیت‌های خاصی برخوردار است. اگر شما هم جز این دسته از افراد هستید، به جای درستی آمده‌اید، زیرا در این مقاله نحوه راه اندازی ماژول سنسور ضربان قلب با آردوینو را به شما آموزش خواهیم داد.

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

داستانی جالب در مورد این سنسور

پیش از پرداختن به موضوع اصلی مقاله، شاید بد نباشد مروری بر داستان شکل‌‎گیری شرکت این سنسور و موفقیت آن داشته باشیم:

ماژول سنسور ضربان قلب یک ابزار اپن سورس است که توسط شرکت PluseSensor ساخته شده است. این شرکت در سال 2011 کار خود را با یک پروژه ساده در شرکت کیک استارتر آغاز کرد. این شرکت حامی ایده‌های خلاقانه است و در همین راستا به افراد خلاق کمک می‌کند تا برای پروژه‌های خود سرمایه‌گذار پیدا کنند. شرکت PluseSensor نیز در سال 2011 موفق شد، 491 سرمایه‌گذار جذب کند. این سرمایه‌گذاران متعهد شدند، مبلغ 18،418 دلار را با هدف کمک به انجام این پروژه در اختیار آن‌ها قرار دهند!

اما اکنون به موضوع اصلی بر می‌گردیم.

مرور سخت افزار

همان‌طور که در تصویر زیر مشاهده می‌کنید، روی سنسور در واقع قسمتی است که دارای لوگوی قلب است. اینجا همان جایی است که باید انگشت خود را روی آن قرار دهید. در اين بخش از سنسور يک سوراخ گرد و كوچک وجود دارد که یک LED سبز رنگ به شکل معكوس در آن قرار گرفته شده است. درست در پایین LED یک سنسور نور (photo sensor) مدل APDS-9008  قرار دارد. این سنسور مشابه چیزی است که در موبایل، تبلت و لپ تاپ برای تنظیم نور پس زمینه متناسب با نور محیط استفاده می‌شود.

اجزای روی ماژول سنسور ضربان قلب که شامل led و یک سنسور نور مدل APDS-9008 می شود.

در تصویر زیر که قسمت پشتی سنسور را نشان می‌دهد، می‌توانید بقيه المان‌های سنسور را مشاهده کنید. این المان‌ها عبارت اند از: تراشه آپ-امپMCP6001 ، تعدادی خازن‌ و مقاومت‌ كه يک شبكه فيلتر RC را تشكيل داده‌اند. علاوه بر این، يک ديود حفاظتی در پشت این سنسور وجود دارد تا در صورتی‌که به اشتباه تغذیه را وصل کردید، از آسیب رساندن به مدار جلوگیری کند.

اجزای پشتی ماژول سنسور سریال قلب که شامل دیود محافظتی و تراشه آپ-امپMCP6001  است.

ولتاژ كاری این سنسور از 3.3 تا 5 ولت DC و جريان كاری آن كمتر از 4 ميلی آمپر است. سایر مشخصات فنی سنسور را می‌توانید در جدول زیر مشاهده کنید:

مشخصات الکترونیکی ولتاژ تغذيه Vcc 3.0-5.5V
ماكزيمم جريان 4mA>
رنج ولتاژ خروجی 0.3V to Vcc
طول موج خروجی LED 565nm
ورودی سنسور 525nm
ابعاد PCB 15.8mm (0.625″)
طول سيم 20cm (7.8″)

سنسور ضربان قلب چگونه كار می‌كند؟

برای راه اندازی ماژول سنسور ضربان قلب با آردوینو ، بهتر است با عملکرد آن به خوبی آشنا شوید. در اینجا به شما نشان می‌دهیم که این سنسور چگونه کار می‌کند.

همان‌طور که در تصویر زیر مشاهده می‌کنید، نحوه عملکرد يک سنسور ضربان قلب يا هر سنسور پالسی به اين صورت است كه يک نور سبز رنگ (با طول موج 550 نانومتر) را به انگشت می‌تاباند و مقدار بازتاب نور را به‌وسيله يک سنسور نوری اندازه‌گيری می‌كند.

نور سبز رنگی که توسط ماژول سنسور ضربان قلب به دست تابش می‌شود، توسط خون جذب می‌شود.

اين روش آشكارسازی ضربان قلب توسط نور، اصطلاحا Photoplethysmogram یا PPG ناميده می‌شود.

با جذب نور توسط هموگلوبين‌ها سیگنال کمتری در شکل موج ایجاد می‌شود و با بازتاب نور بیشتر، سیگنال نمایشی در نمودار بیشتر می‌شود.

زمانی که نور سبز رنگ به انگشت دست برخورد می‌کند، هموگلوبين اكسيژن‌دار موجود در خون، آن را جذب می‌کند. هرچقدر خون قرمزتر و تعداد هموگلوبين آن بيشتر باشد، نور سبز بيشتری جذب می‌شود. با هر بار تپش قلب، خون به سمت رگ‌‌های موجود در نوک انگشتان دست پمپاژ می‌شود و مقدار نور سبز بازتاب شده نیز تغيير پیدا می‌کند. در نتیجه متناسب با ضربان قلب، يک شكل موج در خروجی سنسور نوری ايجاد می‌شود.

اگر به تاباندن نور سبز و دریافت خروجی سنسور نوری ادامه دهید و سنسور را بخوانید، به‌سرعت می‌توانید سیگنال ضربان قلب را دریافت کنید. البته سيگنال خروجی سنسور نوری معمولا ضعيف است و نويز دارد. به همین دلیل ابتدا این سیگنال از يک شبكه فيلتر RC عبور می‌کند و سپس توسط آپ امپ تقويت می‌شود تا سيگنالی قوی‌تر، تمیز‌تر و البته قابل آشکار‌سازی ایجاد کند.

پين‌‌های ماژول سنسور ضربان قلب

ماژول سنسور ضربان قلب ‌همراه با يک كابل فلت 24” با سه پین هدر نری است که در شکل زیر می‌توانید این پین‌ها را مشاهده کنید:

پین‌های ماژول سنسور ضربان قلب

signal : سيگنال خروجی سنسور است كه به ورودی آنالوگ آردوينو متصل می‌شود.

VCC (+) : پين تغذيه ماژول است كه به 3.3 يا 5 ولت وصل می‌شود.

GND (-) : پين زمين ماژول است.

نکته:

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

راه اندازی ماژول سنسور ضربان قلب با آردوینو

پس از اینکه به طور کامل با این سنسور آشنا شدید، زمان راه اندازی آن است. برای راه اندازی این سنسور شما به قطعات زیر نیاز خواهید داشت:

راه اندازی ماژول سنسور ضربان قلب با آردوینو بسیار ساده است. تنها باید سه سیم را متصل کنید: دو سیم برای تغذیه و یک سیم برای خواندن مقدار سنسور.

این ماژول با ولتاژ 3.3 تا 5 ولت كار می‌كند. ولتاژ مثبت منبع تغذيه را به ‘+’ و ولتاژ منفی آن را به ‘-’ آردوینو متصل كنيد. در نهایت، سيم S را که سيگنال آنالوگ خروجی سنسور است، به ورودی آنالوگ A0 آردوينو وصل کنید. در تصویر زیر می‌توانید نتیجه نهایی این کار را مشاهده کنید:

نحوه سیم کشی و راه اندازی ماژول سنسور ضربان قلب با آردوینو

نصب كتابخانه

برای انجام اين پروژه به كتابخانه PulseSensor Playground نیاز دارید. برای نصب اين كتابخانه از مسیر Sketch > Include Library > Manage Libraries  لیست کتابخانه ها را باز کنید و با جستجو عبارت PulseSensor، کتابخانه مورد نظر را پیدا و نصب کنید.

مسیر Sketch > Include Library > Manage Libraries برای نصب کتابخانه PulseSensor Playground در نرم افزار آردوینو
جستجو کتابخانه pulsesensor در library manger و نصب آن

مثالی از كد ماژول سنسور ضربان قلب

كتابخانه PulseSensor دارای مثال‌های زیادی است كه ما در اینجا برخی از آن‌‌ها را مرور می‌كنيم. اما شما می‌توانيد از اين مثال‌ها به عنوان مبنايی برای پروژه‌‌های شخصی خود استفاده كنيد. برای دسترسی به مثال‌های كتابخانه به بخش File > Examples > PulseSensor Playground   بروید و يكی از آن‌ها را انتخاب كنيد تا در نرم افزار آردوینو بارگذاری شود. در اینجا ابتدا با پروژه GettingStartedProject  شروع می‌كنيم.

مسیر File > Examples > PulseSensor Playground  و انتخاب مثال GettingStartedProject  از کتابخانه PulseSensor

كد پايه‌ای آردوينو-LED چشمک زن براساس ضربان قلب

برای این مثال، ابتدا برنامه GettingStartedProject را داخل نرم افزار آردوينو باز كنيد. سپس آن را بر روی برد آردوينو بارگذاری كنيد و سنسور ضربان قلب را بر روی نوک انگشت خود قرار دهيد. با این کار LED آردوينو متناسب با ضربان قلب شما شروع به چشمک زدن می‌كند!

int const PULSE_SENSOR_PIN = 0;   // 'S' Signal pin connected to A0

int Signal;                // Store incoming ADC data. Value can range from 0-1024
int Threshold = 550;       // Determine which Signal to "count as a beat" and which to ignore.

void setup() {
	pinMode(LED_BUILTIN,OUTPUT);  // Built-in LED will blink to your heartbeat
	Serial.begin(9600);           // Set comm speed for serial plotter window
}

void loop() {

	Signal = analogRead(PULSE_SENSOR_PIN); // Read the sensor value

	Serial.println(Signal);                // Send the signal value to serial plotter

	if(Signal > Threshold){                // If the signal is above threshold, turn on the LED
		digitalWrite(LED_BUILTIN,HIGH);
	} else {
		digitalWrite(LED_BUILTIN,LOW);     // Else turn off the LED
	}
	delay(10);
}

توضيح كد

اين نمونه کد بسيار ساده است. در ابتدا شماره پین‌هایی را تعریف می‌کند که برای اتصال به سنسور ضربان قلب مورد استفاده قرار می‌گیرند. علاوه بر این، دو متغیر نیز توسط این سنسور تعریف می‌شود:

متغير Signal  كه ديتای دريافتی مبدل آنالوگ به ديجيتال (ADC) را نگه می‌دارد و متغير حد آستانه Threshold  كه مشخص می‌کند کدام سیگنال به عنوان ضربان قلب شمارش شود و کدام سیگنال در‌نظر گرفته نشود.

int const PULSE_SENSOR_PIN = 0;

int Signal;
int Threshold = 550;

در تابع setup، پين LEDای را که روی برد آردوينو قرار دارد (پين شماره 13)، به عنوان خروجی تعريف کنید و سریال مانیتور را نیز پیکربندی کنید:

void setup() {
	pinMode(LED_BUILTIN,OUTPUT);
	Serial.begin(9600);
}

در تابع loop، سيگنال آنالوگ را از سنسور ضربان قلب بخوانید و هنگامی‌كه مقدار سيگنال از حد آستانه بيشتر شد، LED را روشن کنید.

void loop() {
	Signal = analogRead(PULSE_SENSOR_PIN); // Read the sensor value

	if(Signal > Threshold){                // If the signal is above threshold, turn on the LED
		digitalWrite(LED_BUILTIN,HIGH);
	} else {
		digitalWrite(LED_BUILTIN,LOW);     // Else turn off the LED
	}
	delay(10);
}

مشکلات احتمالی هنگام راه اندازی ماژول سنسور ضربان قلب با آردوینو

اگر قادر به مشاهده پالس ضربان قلب نيستيد، در اینجا چند نکته را به شما آموزش می‌دهیم که با رعایت آن می‌توانید این مشکل را حل کنید:

  • سنسور را نه خیلی محکم بگیرید و نه بدون هیچ فشاری! اگر سنسور را محكم بگيريد، خون كافی در انگشت شما برای تشخیص سنسور جریان نخواهد داشت. از طرف ديگر، اگر سنسور را بدون هیچ فشاری در انگشت خود بگیرید، با نور محیط و حرکت دست خود باعث به‌وجود آمدن نویز در خروجی سنسور می‌شوید. اما با فشار ملایم بر روی سنسور، می‌توانید یک سیگنال خوب و تمیز در خروجی سنسور دریافت کنید.
  • سنسور را با باند لاستیکی به انگشت متصل کنید! متغیر بودن فشاری که با انگشت خود به سنسور وارد می‌کنید، باعث می‌شود جریان خون در انگشت کم و زیاد و در نتیجه خروجی سنسور نامنظم و نادرست شود. به همین دلیل بهتر است که سنسور را با وسیله‌ای مانند باند لاستیکی به انگشت خود متصل کنید تا فشار ثابتی به انگشت وارد شود.
  • سنسور باید به بافت مویرگی متصل شود! سنسور را به قسمت هایی از بدن که دارای بافت مویرگی است مانند نوک انگشت، لاله گوش یا لب پایین، متصل كنيد.
  • حد آستانه را درست تنظیم کنید! حد آستانه برای سنسور مشخص كننده پالس‌‌های معتبر ضربان قلب است. مقدار حد آستانه می‌تواند هر عددی بين 0 تا 1023 باشد اما سعی كنيد آن را در 5 يا 10 گام تنظيم كنيد. كاهش حد آستانه حساسیت سنسور را افزایش می‌دهد و افزایش آن، حسایت سنسور را کم می‌کند. بنابراین بهتر است بهترین رنج حد آستانه را متناسب با انگشت دست خود پیدا کنید.

كد آردوينو- نمايش ضربان قلب

نمونه کد قبلی یعنی  GettingStartedProject از ابزار Arduino Serial Plotter برای ترسیم سیگنال ضربان قلب استفاده می‌کند. اين ابزار که متعلق به نرم افزار آردوینو است، ابزاری بسیار عالی برای رسم سیگنال‌های آنالوگ لحظه‌ای (real-time) است. زمانی كه برنامه در حال اجرا است و برد آردوينو از طريق USB به كامپيوتر شما متصل است، بر روی Tools > Serial Plotter  كليک كنيد تا این ابزار در اختیار شما قرار گیرد.

پس از مدت کوتاهی، می‌توانید سیگنال ضربان قلب را به شکل زیر مشاهده کنید:

نمایش سیگنال ضربان قلب با ابزار Arduino Serial Plotter


اگر هم‌زمان نبض مچ دست خود را بگیرید، می‌بینید که این سیگنال به خوبی با نبض شما منطبق است!

كد آردوينو- اندازه‌گيری ضربان قلب

در مثال دوم می‌خواهيم تعداد ضربان قلب در دقیقه (BPM) را محاسبه کنیم. برای این کار، از منوی مثال‌های كتابخانه PulseSensor Playground مثال Getting_BPM_to_Monitor  را انتخاب و باز کنید.

انتخاب مثال Getting_BPM_to_Monitor  از منوی مثال‌های کتابخانه PulseSensor Playground

اين كد با محاسبه زمان بین پالس‌ها، مقدار ضربان قلب را اندازه می‌گیرد و آن را در سریال مانیتور نمایش می‌دهد.

هشدار!

اين مثال، ضربان قلب را با یک فرآیند نوری تشخیص می‌دهد. بنابراین، اين روش ممكن است با خطا همراه باشد. پس لطفا از آن برای تشخیص‌ بیماری استفاده نکنید!

#define USE_ARDUINO_INTERRUPTS true    // Set-up low-level interrupts for most acurate BPM math
#include <PulseSensorPlayground.h>     // Includes the PulseSensorPlayground Library

const int PulseWire = 0;       // 'S' Signal pin connected to A0
const int LED13 = 13;          // The on-board Arduino LED
int Threshold = 550;           // Determine which Signal to "count as a beat" and which to ignore
                               
PulseSensorPlayground pulseSensor;  // Creates an object

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

	// Configure the PulseSensor object, by assigning our variables to it
	pulseSensor.analogInput(PulseWire);   
	pulseSensor.blinkOnPulse(LED13);       // Blink on-board LED with heartbeat
	pulseSensor.setThreshold(Threshold);   

	// Double-check the "pulseSensor" object was created and began seeing a signal
	if (pulseSensor.begin()) {
		Serial.println("PulseSensor object created!");
	}
}

void loop() {
	int myBPM = pulseSensor.getBeatsPerMinute();      // Calculates BPM

	if (pulseSensor.sawStartOfBeat()) {               // Constantly test to see if a beat happened
		Serial.println("♥  A HeartBeat Happened ! "); // If true, print a message
		Serial.print("BPM: ");
		Serial.println(myBPM);                        // Print the BPM value
		}

	delay(20);
}


پس از بارگذاری کد بر روی آردوينو، انگشت خود را تا حد ممکن بر روی سنسور به صورت ثابت نگه دارید و چند ثانیه صبر کنید. در نهایت نتیجه‌ای همانند تصویر زیر مشاهده خواهید کرد:

خروجی سریال مانیتور پس از بارگذاری کد بر روی آردوینو

نرم افزار Processing Visualizer

سازندگان سنسور ضربان قلب برای نمايش خروجی اين سنسور بر روی كامپيوتر، نرم افزار Processing Visualizer را ارائه کرده اند. اين نرم افزار به زبان Processing نوشته شده است و می‌تواند همه داده‌هایی را كه آردوينو از ماژول سنسور ضربان قلب دريافت می‌كند، نمايش دهد. به علاوه، این سنسور، ضربان قلب كاربر را به‌صورت لحظه‌ای (real-time) رسم می‌کند. یکی دیگر از قابلیت‌های این نرم افزار، رسم نمودار تعداد ضربان قلب در دقيقه (BPM) و رسم نمودار فاصله زمانی بين پالس‌ها (IBI) در طول زمان است.

شاید جالب باشد که بدانید اين برنامه هيچ محاسبه‌ای انجام نمی‌دهد! تمامی محاسبات توسط برد آردوينو انجام می‌شود. بنابراين برای استفاده از این نرم افزار باید كدPulseSensor_BPM  را روی آردوینو بارگذاری کنید. در واقع اين نرم افزار تنها پورت سريال را می‌خواند و داده‌ دريافتی را رسم می‌كند.

خروجی ماژول سنسور ضربان قلب بر روی نرم افزار Processing Visualizer

بارگذاری كد PulseSensor_BPM 

برای بارگذاری کد PulseSensor_BPM ، در منوی File > Examples > PulseSensor Playground   آن را پيدا و در نرم افزار آردوینو باز کنید.

مسیر File > Examples > PulseSensor Playground برای انتخاب کد PulseSensor_BPM در نرم افزار آردوینو

برای ايجاد امكان ارتباط برد آردوينو با Processing Visualizer لازم است پیش از اجرای کد PulseSensor_BPM، متغير outputType را در كد آردوينو تغيير دهيد. این متغیر به‌صورت پیش فرض SERIAL_PLOTTER تنظيم شده است. اما شما باید آن را به PROCESSING_VISUALIZER  تغيير دهید.

تخصیص مقدار PROCESSING_VISUALIZER به متغیر  outputType در نمونه کد PulseSensor_BPM

سپس، کد آردوینو را بارگذاری کنید. پس از انجام این کار، برد آردوينو آماده است تا داده را به‌همان شکلی که Processing Visualizer می‌خواهد، برایش ارسال کند!

نصب نرم افزار Processing Visualizer

  • در ابتدا از طریق لینک processing.org/download نرم افزار Processing Visualizer را دانلود کنید.
  • در مرحله بعد كد Processing را از github دانلود كنيد، آن را از حالت فشرده خارج کنید و پوشه PulseSensorAmpd_Processing_Visualizer را در پوشه processing که با نصب نرم افزار در پوشه Document کامیپوتر شما ایجاد می شود، قرار دهید.
  • سپس برای دسترسی به کد، نرم افزار Processing  را باز کنید و از مسير File > Sketchbook، گزینه PulseSensorAmped_Processing_Visualizer را انتخاب كنيد.
مسیر  File > Sketchbook برای دسترسی به کد PulseSensorAmped_Processing_Visualizer در نرم افزار processing

تنظيمات نرم افزار Processing Visualizer

پس از نصب نرم افزار Processing Visualizer، باید پورت USB را كه آردوينو به آن متصل است، انتخاب كنيد. در صورت عدم مشاهده پورت مربوط به آردوينو، از گزينه Refresh Serial Ports  برای به‌روزرسانی ليست پورت‌ها استفاده كنيد.

پورت‌های USB در نرم افزار Processing Visualizer

به‌محض انتخاب پورت صحيح، داده ضربان قلب را خواهید دید!

چند قابلیت جالب نرم افزار Processing Visualizer

هنگام اجرای کد در نرم افزار Processing Visualizer، می‌توانید از دو قابلیت جالب آن استفاده کنید:

  • با فشردن دکمه ‘s’ می توانید از صفحه نمایشگر عکس بگیرید. این تصویر به صورت یک فایل .jpg در پوشه برنامه ذخیره می‌شود.
  • با فشردن دکمه ‘r’ نیز می توانید پنجره های داده را ریست کنید.

در آخر باید گفت که راه اندازی ماژول سنسور ضربان قلب با آردوینو بسیار ساده است. اما اگر قبلا با این سنسور کار نکرده باشید، ممکن است کمی برای شما دشوار تر باشد. اما نگران نباشید! همیشه می‌توانید سوالات خود را از طریق کامنت به اطلاع ما برسانید و در اسرع وقت جواب سوالات خود را بگیرید. امیدواریم که بتوانید با این مقاله بدون هیچ مشکلی این سنسور را راه اندازی کنید.

مقالات مشابه

۲ دیدگاه. Leave new

  • سلام وقت بخیر؛
    من برنامم رو ران کردم تمامی اتصالات درسته منتهی انگشتمو که روی سنسور میزارم تشخیص نمیده
    در صورتی که در نرم افزار پروتئوس کار میکنه

    پاسخ
    • سلام محمد عزیز،
      وقت شما هم بخیر،
      لطفا اتصالات رو با مولتی متر بررسی کن.
      رنگ و ترتیب سیم‌ها رو هم از پشت برد سنسور چک کن و حتما قسمت مشکلات احتمالی مقاله رو مطالعه کن.

      پاسخ

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

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

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات