مسلما مشاهده ضربان قلب برای برخی افراد کاربردی و برای برخی دیگر از جذابیتهای خاصی برخوردار است. اگر شما هم جز این دسته از افراد هستید، به جای درستی آمدهاید، زیرا در این مقاله نحوه راه اندازی ماژول سنسور ضربان قلب با آردوینو را به شما آموزش خواهیم داد.
از میان ویژگیهای این سنسور، میتوانیم به کم مصرف بودن آن اشاره کنیم. اما شاید بهترین ویژگی این سنسور، این است که شما می توانید آن را به آردوینو متصل کنید و بهراحتی آن را بر روی لاله گوش یا انگشت دست خود قرار دهید. این ویژگی دقیقا موضوع بحث این مقاله است که در ادامه به آن می پردازیم.
داستانی جالب در مورد این سنسور
پیش از پرداختن به موضوع اصلی مقاله، شاید بد نباشد مروری بر داستان شکلگیری شرکت این سنسور و موفقیت آن داشته باشیم:
ماژول سنسور ضربان قلب یک ابزار اپن سورس است که توسط شرکت PluseSensor ساخته شده است. این شرکت در سال 2011 کار خود را با یک پروژه ساده در شرکت کیک استارتر آغاز کرد. این شرکت حامی ایدههای خلاقانه است و در همین راستا به افراد خلاق کمک میکند تا برای پروژههای خود سرمایهگذار پیدا کنند. شرکت PluseSensor نیز در سال 2011 موفق شد، 491 سرمایهگذار جذب کند. این سرمایهگذاران متعهد شدند، مبلغ 18،418 دلار را با هدف کمک به انجام این پروژه در اختیار آنها قرار دهند!
اما اکنون به موضوع اصلی بر میگردیم.
مرور سخت افزار
همانطور که در تصویر زیر مشاهده میکنید، روی سنسور در واقع قسمتی است که دارای لوگوی قلب است. اینجا همان جایی است که باید انگشت خود را روی آن قرار دهید. در اين بخش از سنسور يک سوراخ گرد و كوچک وجود دارد که یک LED سبز رنگ به شکل معكوس در آن قرار گرفته شده است. درست در پایین LED یک سنسور نور (photo sensor) مدل APDS-9008 قرار دارد. این سنسور مشابه چیزی است که در موبایل، تبلت و لپ تاپ برای تنظیم نور پس زمینه متناسب با نور محیط استفاده میشود.
در تصویر زیر که قسمت پشتی سنسور را نشان میدهد، میتوانید بقيه المانهای سنسور را مشاهده کنید. این المانها عبارت اند از: تراشه آپ-امپMCP6001 ، تعدادی خازن و مقاومت كه يک شبكه فيلتر RC را تشكيل دادهاند. علاوه بر این، يک ديود حفاظتی در پشت این سنسور وجود دارد تا در صورتیکه به اشتباه تغذیه را وصل کردید، از آسیب رساندن به مدار جلوگیری کند.
ولتاژ كاری این سنسور از 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، کتابخانه مورد نظر را پیدا و نصب کنید.
مثالی از كد ماژول سنسور ضربان قلب
كتابخانه PulseSensor دارای مثالهای زیادی است كه ما در اینجا برخی از آنها را مرور میكنيم. اما شما میتوانيد از اين مثالها به عنوان مبنايی برای پروژههای شخصی خود استفاده كنيد. برای دسترسی به مثالهای كتابخانه به بخش File > Examples > PulseSensor Playground بروید و يكی از آنها را انتخاب كنيد تا در نرم افزار آردوینو بارگذاری شود. در اینجا ابتدا با پروژه GettingStartedProject شروع میكنيم.
كد پايهای آردوينو-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 كليک كنيد تا این ابزار در اختیار شما قرار گیرد.
پس از مدت کوتاهی، میتوانید سیگنال ضربان قلب را به شکل زیر مشاهده کنید:
اگر همزمان نبض مچ دست خود را بگیرید، میبینید که این سیگنال به خوبی با نبض شما منطبق است!
كد آردوينو- اندازهگيری ضربان قلب
در مثال دوم میخواهيم تعداد ضربان قلب در دقیقه (BPM) را محاسبه کنیم. برای این کار، از منوی مثالهای كتابخانه PulseSensor Playground مثال Getting_BPM_to_Monitor را انتخاب و باز کنید.
اين كد با محاسبه زمان بین پالسها، مقدار ضربان قلب را اندازه میگیرد و آن را در سریال مانیتور نمایش میدهد.
هشدار!
#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 را روی آردوینو بارگذاری کنید. در واقع اين نرم افزار تنها پورت سريال را میخواند و داده دريافتی را رسم میكند.
بارگذاری كد PulseSensor_BPM
برای بارگذاری کد PulseSensor_BPM ، در منوی File > Examples > PulseSensor Playground آن را پيدا و در نرم افزار آردوینو باز کنید.
برای ايجاد امكان ارتباط برد آردوينو با Processing Visualizer لازم است پیش از اجرای کد PulseSensor_BPM، متغير outputType را در كد آردوينو تغيير دهيد. این متغیر بهصورت پیش فرض SERIAL_PLOTTER تنظيم شده است. اما شما باید آن را به PROCESSING_VISUALIZER تغيير دهید.
سپس، کد آردوینو را بارگذاری کنید. پس از انجام این کار، برد آردوينو آماده است تا داده را بههمان شکلی که Processing Visualizer میخواهد، برایش ارسال کند!
نصب نرم افزار Processing Visualizer
- در ابتدا از طریق لینک processing.org/download نرم افزار Processing Visualizer را دانلود کنید.
- در مرحله بعد كد Processing را از github دانلود كنيد، آن را از حالت فشرده خارج کنید و پوشه PulseSensorAmpd_Processing_Visualizer را در پوشه processing که با نصب نرم افزار در پوشه Document کامیپوتر شما ایجاد می شود، قرار دهید.
- سپس برای دسترسی به کد، نرم افزار Processing را باز کنید و از مسير File > Sketchbook، گزینه PulseSensorAmped_Processing_Visualizer را انتخاب كنيد.
تنظيمات نرم افزار Processing Visualizer
پس از نصب نرم افزار Processing Visualizer، باید پورت USB را كه آردوينو به آن متصل است، انتخاب كنيد. در صورت عدم مشاهده پورت مربوط به آردوينو، از گزينه Refresh Serial Ports برای بهروزرسانی ليست پورتها استفاده كنيد.
بهمحض انتخاب پورت صحيح، داده ضربان قلب را خواهید دید!
چند قابلیت جالب نرم افزار Processing Visualizer
هنگام اجرای کد در نرم افزار Processing Visualizer، میتوانید از دو قابلیت جالب آن استفاده کنید:
- با فشردن دکمه ‘s’ می توانید از صفحه نمایشگر عکس بگیرید. این تصویر به صورت یک فایل .jpg در پوشه برنامه ذخیره میشود.
- با فشردن دکمه ‘r’ نیز می توانید پنجره های داده را ریست کنید.
در آخر باید گفت که راه اندازی ماژول سنسور ضربان قلب با آردوینو بسیار ساده است. اما اگر قبلا با این سنسور کار نکرده باشید، ممکن است کمی برای شما دشوار تر باشد. اما نگران نباشید! همیشه میتوانید سوالات خود را از طریق کامنت به اطلاع ما برسانید و در اسرع وقت جواب سوالات خود را بگیرید. امیدواریم که بتوانید با این مقاله بدون هیچ مشکلی این سنسور را راه اندازی کنید.
۲ دیدگاه. Leave new
سلام وقت بخیر؛
من برنامم رو ران کردم تمامی اتصالات درسته منتهی انگشتمو که روی سنسور میزارم تشخیص نمیده
در صورتی که در نرم افزار پروتئوس کار میکنه
سلام محمد عزیز،
وقت شما هم بخیر،
لطفا اتصالات رو با مولتی متر بررسی کن.
رنگ و ترتیب سیمها رو هم از پشت برد سنسور چک کن و حتما قسمت مشکلات احتمالی مقاله رو مطالعه کن.