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

راه اندازی سنسور پالس با آردوینو (ضربان قلب Pulse Sensor)

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

سنسور پالس ضربان قلب

سنسور پالس دارای کابل نواری تخت با سه کانکتور است. پین اوت سنسور پالس در زیر آورده شده است:

سنسور پالس

  • Signal پایه خروجی آنالوگ ماژول حسگر است.
  • VCC پایه تغذیه سنسور است. آن را به پایه 5 ولت آردوینو وصل کنید.
  • GND پایه زمین سنسور است. آن را به پایه GND آردوینو وصل کنید.

ماژول سنسور پالس چگونه کار می کند؟

نحوه کار سنسور ضربان قلب نوری بسیار ساده و قابل درک است. یک سنسور پالس نور سبز با طول موج 550 نانومتر را به پوست می تابد و نور منعکس شده را اندازه گیری می کند. این روش تشخیص پالس فوتوپلتیسموگرام نامیده می شود.

نحوه کار سنسور ضربان قلب

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

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

مدار اتصال سنسور پالس قلب به آردوینو

اکنون که کاملاً درک می کنیم که سنسور پالس چگونه کار می کند، می توانیم تمام سیم های مورد نیاز را به برد آردوینو UNO وصل کنیم.

مدار اتصال سنسور پالس قلب به آردوینو

قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

مدار سنسور پالس آردوینو در شکل بالا نشان داده شده است. ما از پین A0 آردوینو برای پردازش داده های خروجی از سنسور استفاده می کنیم. پایه های پاور سنسور به پایه های 5V و GND آردوینو متصل می شوند.

کد آردوینو برای راه اندازی سنسور تپش قلب

کد سنسور پالس آردوینو ساده و قابل درک است و بیشتر قسمت های سخت آن توسط کتابخانه PulseSensorPlayground.h انجام می شود. این کتابخانه به صورت پیشفرض در آردوینو قرار نگرفته است و باید از روش های نصب کتابخانه در آردوینو استفاده کرد. برای انجام این کار، کافیست pulsessensor را در پنجره Library Manager جستجو کنید و PulseSensor Playground که توسط Joel Murphy، Yury Gitman تهیه شده است را نصب کنید.

کتابخانه آردوینو سنسور پالس

بخش های اصلی کد ما ساده هستند. کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. اینجا قسمت های مهم کد را بررسی میکنیم. ما کد خود را با گنجاندن تمام کتابخانه ها و متغیرهای مورد نیاز برای پردازش داده های خارج از حسگر شروع می کنیم.

#define USE_ARDUINO_INTERRUPTS true    // استفاده از وقفه
#include <PulseSensorPlayground.h>     // فراخوانی کتابخوانه  
//  Variables
const int PulseWire = 0;       // پین متصل به خروجی سنسور
const int LED13 = 13;          // تعیین پایه ال ای دی روی برد
int Threshold = 550;           // تعیین محاسبه حداقل زمان برای شمارش پالس

در مرحله بعد، یک نمونه از PulseSensorPlayground به نام “pulseSensor” ایجاد می کنیم که با این نمونه می توانیم به تمام متدهای کلاس اصلی دسترسی پیدا کنیم.

PulseSensorPlayground pulseSensor;  // ایجاد یک نمونه از کتابخانه

سپس در تابع setup، ارتباط سریال را برای اشکال زدایی آغاز می کنیم.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

سپس نمونه PulseSensor را با تخصیص متغیرهای خود به آن پیکربندی می کنیم. سپس، متغیر LED13 را به تابع pulseSensor.blinkOnPulse می‌دهیم تا ال ای دی روی برد آردوینو با هر ضربان قلب چشمک بزند. سپس با کمک متغیر pulseSensor.setThreshold آستانه سنسور را تعیین می کنیم. در نهایت یک نمونه pulseSensor ایجاد کردیم و تابع راه اندازی خود را پایان دادیم.

void setup() {  
  Serial.begin(9600);          // راه اندازی سریال مانیتور
  // پیکربندی سنسور ضربان قلب
  pulseSensor.analogInput(PulseWire);  
  pulseSensor.blinkOnPulse(LED13);       //چشمک زدن ال ای دی با هر ضربان
  pulseSensor.setThreshold(Threshold);  
  // تعیین حد آستانه سنسور
   if (pulseSensor.begin()) {
    Serial.println("We created a pulseSensor Object !");  
  }
}

در تابع loop، تابعی را در نمونه pulseSensor خود فراخوانی می کنیم که BPM را به عنوان یک عدد صحیح برمی گرداند و آن را روی متغیر myBPM نگه می داریم. اکنون ما به طور مداوم بررسی می کنیم که آیا ضربان اتفاق افتاده است یا خیر. اگر اتفاق افتاده باشد، نتیجه را در پنجره سریال مانیتور چاپ می کنیم.

void loop() {
 int myBPM = pulseSensor.getBeatsPerMinute();  // ذخیره ضربان قلب در متغیر
                                               // "myBPM" متغیر عدد ضربان قلب را ذخیره میکند
if (pulseSensor.sawStartOfBeat()) {            // هر بار که ضربان قلب رخ بدهد
 Serial.println("♥  A HeartBeat Happened ! "); // این متن در سریال مانیتور چاپ میشود
 Serial.print("BPM: ");                        // کلمه bpm چاپ میشود
 Serial.println(myBPM);                        // در نهایت عدد ضربان قلب چاپ میشود
}
  delay(20);                    // ایجاد تاخیر کوتاه
}

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

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

3.4 (5 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

11 نظر

  1. سلام خسته نباشید من میخوام رو lcd نشون بده بجای کامپیتر هرچی کد میزنم نمیشه میشه راهنمایی کنید ممنون🥰

  2. سلام وقت شما بخیر
    عذر میخوام دستمو ک روی سنسور ضربان قلب میزارم پالس نمیندازه رو مانیتور درصورتی که بصورتی لحظه ای اگ قرار بدم دستمو؛ پالس مشاهده میکنم
    میشه بفرمایین مشکل چی هستش؟
    ممنون میشم

    1. سلام عزیز
      در لحظه اول پالس مشاهده میکنید بعد از اون چه مقداری روی سریال مانیتور نمایش داده میشه؟

    2. ممنون بابت پاسخگویی؛
      ببینین با توجه به کدم؛ اعدادی تو رنج 500 مشاهده میکنم
      اما خب برای نمایش BPM انگشتم رو که به صورت لحظه ای قرار بدم و بردارم نمایش داده میشه ولی بصورت مداوم خیر.
      ممکنه بخاطر حساسیت سنسور باشه؟
      مجددا تعویضش کنم!

  3. سلام و وقت بخیر؛
    عذر میخوام فایل کتابخونه سنسور ضربان قلب رو ممکنه قرار بدین؟ (برای نرم افزار پروتئوس)

  4. سلام جناب رحیمی خسته نباشید میشه با همین کد سنسور پالس را با هدر برد stm32f103 راه اندازی کرد با همان اردینو ide

    1. سلام عزیز
      من تست نکردم شاید نیاز باشه کد رو تغییر بدید خودتون امتحان کنید

  5. سلام جناب رحیمی در این پروژه چه مدت زمان باید پالس سنسور روی پوست قرار بگیرد تا ضربان قلب یا نبض را به صورت دقیق محاسبه کند

    1. سلام عزیز
      بعد از حدود 5-10 ثانیه دقت تقریبا مناسبی داره

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

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