راه اندازی سنسور پالس با آردوینو (ضربان قلب 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); // ایجاد تاخیر کوتاه }
به این ترتیب کد تمام میشود و میتواند در فیلم زیر نحوه عملکرد این کد را مشاهده کنید. گیف زیر مدار عملی سنسور پالس با آردوینو را نشان می دهد. میتوانید مشاهده کنید که انگشت روی سنسور قرار گرفته است و با هر ضربان قلب، عدد ضربان قلب در سریال مانیتور نرم افزار آردوینو نمایش داده میشود.
موارد موجود در فایل : فایل سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام وقت شما بخیر
عذر میخوام دستمو ک روی سنسور ضربان قلب میزارم پالس نمیندازه رو مانیتور درصورتی که بصورتی لحظه ای اگ قرار بدم دستمو؛ پالس مشاهده میکنم
میشه بفرمایین مشکل چی هستش؟
ممنون میشم
سلام عزیز
در لحظه اول پالس مشاهده میکنید بعد از اون چه مقداری روی سریال مانیتور نمایش داده میشه؟
ممنون بابت پاسخگویی؛
ببینین با توجه به کدم؛ اعدادی تو رنج 500 مشاهده میکنم
اما خب برای نمایش BPM انگشتم رو که به صورت لحظه ای قرار بدم و بردارم نمایش داده میشه ولی بصورت مداوم خیر.
ممکنه بخاطر حساسیت سنسور باشه؟
مجددا تعویضش کنم!
سلام و وقت بخیر؛
عذر میخوام فایل کتابخونه سنسور ضربان قلب رو ممکنه قرار بدین؟ (برای نرم افزار پروتئوس)
سلام جناب رحیمی خسته نباشید میشه با همین کد سنسور پالس را با هدر برد stm32f103 راه اندازی کرد با همان اردینو ide
سلام عزیز
من تست نکردم شاید نیاز باشه کد رو تغییر بدید خودتون امتحان کنید
سلام جناب رحیمی در این پروژه چه مدت زمان باید پالس سنسور روی پوست قرار بگیرد تا ضربان قلب یا نبض را به صورت دقیق محاسبه کند
سلام عزیز
بعد از حدود 5-10 ثانیه دقت تقریبا مناسبی داره
ممنونم از شما جناب رحیمی
خواهش میکنم