سنسور و ماژول اندازه گیری ضربان قلب Pulse sensor
در برخی از پروژه ها همانند ساخت گجت های پوشیدنی در حوزه سلامت و پزشکی نیاز است تا ضربان قلب فرد را اندازه گیری کنیم. یکی از ساده ترین راه ها برای اندازه گیری ضربان قلب، استفاده از ماژول Pulse sensor است. ماژول Pulse sensor جهت اندازه گیری ضربان قلب طراحی شده است. PCB این ماژول به شکل یک دایره طراحی گردیده و قطر آن کمتر از 2 سانتی متر می باشد.
ولتاژ کاری ماژول اندازه گیری ضربان قلب Pulse sensor پنج ولت است و این سنسور دارای سه پایه خروجی می باشد که دو پایه از آن مربوط به اتصال منبع تغذیه و پایه سوم مربوط به خروجی ماژول Pulse sensor می باشد که دارای خروجی آنالوگ می باشد.
لیست قطعات مورد نیاز
برد آردوینو Arduino UNO R3 مدل DIP | 1 عدد |
LCD کاراکتری مدل 16×2 با Backlighting آبی | 1 عدد |
مقاومت 220 اهم با توان 0.25 وات و تلرانس 1 درصد | 1 عدد |
لامپ LED سبز سایز 5mm میلی متر مدل مات | 1 عدد |
سنسور تشخیص ضربان قلب | 1 عدد |
برد بورد (پروجکت برد) مدل GL | 1 عدد |
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی) | 1 عدد |
تصویر نمای ظاهری و ترتیب پایه های سنسور Pulse sensor
در تصویر زیر نمای ظاهری ماژول اندازه گیری ضربان قلب Pulse sensor از دو نمای روبرو و پشت قرار داده شده است، همچنین در این تصویر، ترتیب پایه های ماژول و مکان قرار گیری انگشت دست و یا لاله گوش جهت اندازه گیری میزان ضربان قلب بر روی آن اشاره شده است.
نقشه شماتیک پروژه اندازه گیری ضربان قلب با آردوینو
در این پروژه آردوینو از مبحث آموزش آردوینو می خواهیم شما را با نحوه برنامه نویسی و ساخت یک دستگاه اندازه گیری ضربان قلب با ماژول Pulse Sensor و برد Arduino Uno آشنا کنیم. همانطور که در نقشه شماتیک مشاهده می کنید در طراحی این پروژه برای نمایش اطلاعات از یک LCD کاراکتری 16*2 استفاده شده است. برد آردوینو پس از دریافت میزان ضربان قلب اندازه گیری شده توسط سنسور ماژول Pulse Sensor، اطلاعات دریافتی را بر روی ال سی دی کاراکتری نمایش می دهد. همچنین در این پروژه از یک لامپ LED جهت نمایش ضربان قلب استفاده شده است که عملکرد آن به اینگونه است که با هر بار شناسایی یک تپش قلب، لامپ ال.ای.دی یکبار روشن می شود.
برنامه راه اندازی ماژول اندازه گیری ضربان قلب Pulse sensor با نرم افزار آردوینو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include <LiquidCrystal.h> #define USE_ARDUINO_INTERRUPTS true #include <PulseSensorPlayground.h> //*********************************************Config Pulse_Sensor PulseSensorPlayground pulseSensor; //*********************************************Config Pin_Pulse_Sensor const int PulseWire = A0; const int LED = 13; //*********************************************Setup LCD const int contrast_display = 80; const int backlight_display = 255; //*********************************************Config Pin_LCD const int LCD_Pin_contrast = 3; const int LCD_Pin_RS = 8; const int LCD_Pin_RW = 9; const int LCD_Pin_E = 10; const int LCD_Pin_D4 = 4; const int LCD_Pin_D5 = 5; const int LCD_Pin_D6 = 6; const int LCD_Pin_D7 = 7; const int LCD_Pin_backlight = 11; LiquidCrystal lcd(LCD_Pin_RS, LCD_Pin_RW, LCD_Pin_E, LCD_Pin_D4, LCD_Pin_D5, LCD_Pin_D6, LCD_Pin_D7); //*********************************************Config Value int Threshold = 550; int HeartBeat; int Signal; byte heart[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; //*********************************************Subprogram setup() void setup() { pulseSensor.analogInput(PulseWire); pulseSensor.blinkOnPulse(LED); pulseSensor.setThreshold(Threshold); analogWrite(LCD_Pin_contrast, contrast_display); analogWrite(LCD_Pin_backlight, backlight_display); pulseSensor.begin(); lcd.begin(16, 2); lcd.createChar(0, heart); lcd.clear(); lcd.setCursor(0, 0); lcd.print("*electronics 98*"); lcd.setCursor (0, 1); lcd.print(">Arduino Project"); delay(3000); lcd.clear(); } //*********************************************Subprogram loop() void loop() { Signal = analogRead(PulseWire); lcd.setCursor(0, 0); lcd.print("ADC Signal: "); lcd.print(Signal); lcd.print(" "); HeartBeat = pulseSensor.getBeatsPerMinute(); if (pulseSensor.sawStartOfBeat()) { lcd.setCursor (0, 1); lcd.write(byte(0)); lcd.print("BPM"); lcd.write(byte(0)); lcd.print(": "); lcd.print(HeartBeat); lcd.print(" "); } delay(20); } |
معرفی کتابخانه PulseSensorPlayground.h
کتابخانه PulseSensorPlayground.h یکی از کتابخانه های بسیار کامل و البته بهینه برای آردوینو جهت راه اندازی ماژول اندازه گیری ضربان قلب Pulse sensor می باشد. با استفاده از کتابخانه PulseSensorPlayground.h شما می توانید بدون اینکه خودتان را درگیر برنامه نویسی جهت برقراری ارتباط با ماژول Pulse sensor کنید به راحتی می توانید با نوشتن یک خط دستور مقدار ضربان قلب اندازه گیری شده توسط ماژول Pulse sensor را بدست آورید.
فراخوانی کتابخانه PulseSensorPlayground.h
برای استفاده از کتابخانه PulseSensorPlayground.h ابتدا باید آنرا از انتهای همین مطلب دانلود کنید و سپس کتابخانه را در قسمت libraries نزم افزار آردوینو خود اضافه کنید. برای این منظور می توانید مسیر زیر را از طریق منوی نوار ابزار در نرم افزار آردوینو طی کنید و سپس در پنجره نهایی فایل کتابخانه PulseSensor_Playground را که دانلود کرده اید، جهت افزودن انتخاب کنید.
Sketch > Include Library > Add .ZIP Library…
پس از افزودن کتابخانه PulseSensorPlayground.h به نرم افزار آردوینو، حال می توانید جهت استفاده از امکانات آن در برنامه خود از طریق کد دستوری زیر کتابخانه را در برنامه خود فراخوانی کنید.
1 |
#include <PulseSensorPlayground.h> |
توجه : جهت استفاده از کتابخانه PulseSensorPlayground.h در آردوینو، حتما باید قبل از فراخوانی کتابخانه، قابلیت وقفه (INTERRUPTS) را در هنگام برنامه نویسی برای آردوینو، طبق کد دستوری زیر فعال نمائید.
1 2 |
#define USE_ARDUINO_INTERRUPTS true #include <PulseSensorPlayground.h> |
تعریف آبجکت
پس از فراخوانی کتابخانه PulseSensorPlayground.h جهت ارتباط با آن و خواندن مقدار ضربان قلب نیاز به تعریف یک آبجکت با نام دلخواه داریم، تا در طول برنامه با آن نام آبجکت را فراخوانی کنیم. برای این منظور می توانیم از دستور زیر استفاده کنیم.
توجه : دستور زیر حتما باید قبل از زیر برنامه setup() نوشته شود.
1 |
PulseSensorPlayground pulseSensor; |
pulseSensor : در صورت تمایل به جای این کلمه می توانید از نام دلخواه مورد نظر خود استفاده کنید.
فعال سازی ارتباط آردوینو با ماژول Pulse sensor
با استفاده از دستور زیر می توانیم ارتباط بین برد آردوینو و ماژول Pulse Sensor را فعال کنیم.
توجه : دستور زیر حتما باید در زیر برنامه setup() نوشته شود.
1 |
pulseSensor.begin(); |
تعریف پایه خروجی ماژول Pulse Sensor
توسط دستور زیر برای کتابخانه PulseSensorPlayground.h تعریف می کنیم که پایه خروجی ماژول Pulse Sensor به کدام یک از پایه های آنالوگ برد آردوینو متصل شده است.
توجه : دستور زیر حتما باید در زیر برنامه setup() نوشته شود.
1 |
pulseSensor.analogInput(A0) |
A0 : در صورت تمایل به جای این پایه می توانید نام پایه آنالوگ مورد نظر خود را که خروجی ماژول Pulse Sensor را بر روی برد آردوینو به آن متصل کرده اید وارد کنید.
تعریف پایه لامپ LED نمایش دهنده تپش قلب
یکی از قابلیت های کتابخانه PulseSensorPlayground.h آشکار سازی هر تپش قلب با High کردن خروجی یکی از پایه های دیجیتال آردوینو است. شما می توانید با استفاده از دستور زیر این پایه را بر روی برد آردوینو خود مشخص کنید و با اتصال یک لامپ LED به آن پایه، با هر بار تپش قلب شاهد چشمک زدن لامپ LED باشید.
توجه : دستور زیر حتما باید در زیر برنامه setup() نوشته شود.
1 |
pulseSensor.blinkOnPulse(13) |
13 : در صورت تمایل به جای این پایه می توانید نام پایه دیجیتال مورد نظر خود را که لامپ LED را بر روی برد آردوینو به آن متصل کرده اید وارد کنید.
کالیبره کردن سنسور ضربان قلب
همانطور که قبلتر گفته شد خروجی ماژول Pulse Sensor آنالوگ است و ما برای اینکه بتوانیم هر بار تپش قلب را آشکار کنیم باید به صورت مداوم این خروجی را بخوانیم. این خروجی در آردوینو می تواند بین 0 الی 1023 باشد و زمانیکه این خروجی بیشتر از یک حد تعریف شده که در اینجا به صورت پیش فرض توسط کتابخانه 550 در نظر گرفته شده است بالاتر برود این به آن معنا است که یک تپش توسط قلب صورت گرفته است. در برخی موارد مانند محیط های دارای نویز زیاد لازم است این مقدار را بنا به شرایط آن محیط تغییر دهیم، که این تغییر توسط دستور زیر قابل تعریف است.
توجه : دستور زیر حتما باید در زیر برنامه setup() نوشته شود.
1 |
pulseSensor.setThreshold(550); |
550 : به جای این مقدار می توانید یک عدد بین 0 الی 1023 درج کنید، البته پیشنهاد می کنیم این مقدار را تغییر ندهید مگر در مواردی که محیط مورد استفاده از سنسور ایجاب می کند آنرا تغییر دهید.
برگرداندن مقدار ضربان قلب
برای این منظور ابتدا یک متغیر از جنس int تعریف می کنیم و سپس همانند دستور زیر مقدار متغیر را با مقدار ضربان قلب اندازه گیری شده مقدار دهی می کنیم :
1 |
int HeartBeat = pulseSensor.getBeatsPerMinute(); |
HeartBeat : با اجرا شدن دستور بالا مقدار ضربان قلب بر روی این متغیر ریخته می شود و شما می توانید برای نمایش میزان ضربان قلب این متغیر را در محیط سریال، بر روی LCD و یا بر روی سون سگمنت ها چاپ کنید. همچنین لازم به ذکر است این نام اختیاری است و شما می توانید هر نام مجاز دیگری برای این متغیر به صورت دلخواه انتخاب کنید.
با سلام
میشه لطف کنید بفرمایید، برای شبیه سازی این شماتیک در پروتئوس، چه طوری کتابخانه ی سنسور ضربان رو به پروتئوس اضافه کنیم؟
باتشکر
سلام ممنون میشم پاسخ بدین
سلام دوست عزیز
تا جایی که اطلاع دارم کتابخانه ای برای شبیه سازی این سنسور در نرم افزار Proteus در سطح اینترنت وجود ندارد، اما باز هم برای اطمینان می توانید در گوگل کمی جستجو کنید.