اندازه گیری پارامترهای بیومتریک با ترکیبی از آردوینو و برنامه نویسی یکی از جذاب ترین پروژه های الکترونیکی قابل اجرا است. در آموزش کیت ecg آردوینو کیت کامل ضربان قلب ECG با ماژول AD8232 را بررسی و تحلیل خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ماژول ضربان قلب AD8232
کیت کامل ضربان قلب با تراشه AD8232 دارای برد AD8232، دارای کابل ECG, دارای سه پد سنسور بیومدیکال است. ماژول AD8232 به صورت تک منظوره همراه با جک ۳٫۵ میلی متری برای اتصال کابل ecg است. ماژول AD8232 قابلیت اندازه گیری ضربان قلب Heart Rate است. ولتاژ کاری ماژول AD8232 برابر با ۳٫۳ ولت DC است و با تمامی بردهای میکروکنترلر که دارای ورودی ولتاژ ۳٫۳ ولتاژ هستند، قابلیت تست و راه اندازی دارد. توسط این ماژول و الکترودیود های موجود در پکیج میتوانید توسط کابل های ECG ضربان قلب را اندازه گیری کنید. توسط کابل های ECG که با علامت های چپ LEFT , راست RIGHT بر روی آن مشخص است در دو طرف نواحی بدن قرار گرفته شده و کابل COM را میتوانید بر روی زانوی سمت راست و یا پهلوی سمت راست قرار دهید.
- ولتاژ کاری ۳٫۳ ولت که از طریق پایه ی VCC = 3.3V آردوینو قابل تامین است.
- دارای خروجی آنالوگ Analog
- دارای ال ای دی داخلی بر روی برد
- دارای جک ۳٫۵ میلی متر ECG
- CMRR: 80dB (DC to 60Hz)
- دارای فیلتر داخلی RFI
- دارای خروجی Rail-to-rail
کیت ecg آردوینو توسط تغذیه ۳٫۳ ولت ولتاژ کافی برای راه اندازی آن تامین میشود. توسط سه پد الکترود و ورودی جک ۳٫۵ میلی متری بر روی ماژول توسط مجموعه ای از سیم ها اتصال انجام داده میشود. سه حسگر در بازوی سمت راست، سمت چپ و پای راست مطابق طرح و رنگ نشان داده شده در تصویر است. دیتای دریافت شده از طریق پدهای الکترود به عنوان یک سیگنال آنالوگ در پین OUTPUT ماژول AD8232 نمایش داده میشوند. این سیگنال آنالوگ را می توان در پین ورودی آنالوگ میکروکنترلر برای پردازش بیشتر یا تجسم بصورت نمودار استفاده کرد. پایه های LO- و LO+ به پین های ورودی دیجیتالی میکروکنترلر متصل هستند تا بررسی کنند که آیا یک سنسور وصل است یا خیر. همچنین پایه ی SDN به پین خروجی دیجیتال میکروکنترلر متصل است تا حالت کم مصرف ماژول AD8232 را فعال کند. برای استفاده از کیت ECG به دو روش میتوان اقدام کرد. منظور از لید Lead این است که از چه زاویه ای به قلب نگاه میکنیم. در کیت ECG تغییر ولتاژ شناسایی میشود و بسته به اینکه اختلاف پتانسیل بین کدام دو نقطه را چک میکنیم، جهت نگاه به قلب فرق خواهد کرد.
- Red: RA (Right Arm)
- Yellow: LA (Left Arm)
- Green: RL (Right Leg)
- رنگ قرمز که با RA مشخص شده است، مربوط به دست راست است.
- رنگ زرد که با LA مشخص شده است، مربوط به دست چپ است.
- رنگ سبز که با RL مشخص شده است، مربوط به پای راست است.
ECG شبیه به یک کاغذ و ثبت دیجیتال برای دریافت سیگنال های الکترونیکی از قلب است. به جای ECG به آن الکترودیاگرام و یا EKG هم گفته میشود. از ECG برای اندازه گیری ضربان قلب، بررسی ریتم ضربان قلب و دیگر شرایط ضربان قلب استفاده میشود. نوار قلب ECG برای کمک به تشخیص حملات قلبی ، عملکرد ضربان ساز و نارسایی قلبی استفاده می شود. توسط موج مربعی ایجاد شده میتوانیم ضربان قلب را آنالیز کنیم. برای اتصال پدها به بدن، از حروف RA,LA, RL استفاده شده است که به ترتیب بر روی دست راست، دست چپ و پای راست قرار میگیرد. در تصویری که مربوط به بدن انسان است، دو روش برای اتصال پدها به بدن درج شده است که با رعایت قطب مثبت و منفی میتوانید اتصال را انجام دهید. پدها دارای روکش چسبی است. برای اتصال به بدن ابتدا روکش های چسبی را جدا کرده و سپس بر روی بدن خود قرار دهید.
نوار قلب را می توان با مطالعه اجزای شکل موج تجزیه و تحلیل کرد. این اجزا نشان دهنده فعالیت الکتریکی قلب است. شکل زیر شکل موج یک سیگنال قلب را نشان می دهد:
قلب انسان دارای چهار حفره در دو قسمت است شامل دهلیز و بطن. دهلیز و بطن ها مستقلا منبسط و منقبض میشوند. در موج P نمودار قسمتی است که دهلیزها منقبض میشوند. در QRS بطن ها منقبض میشوند و چون بزرگ هستند یک موج بلند ایجاد میکنند که در نمودار مشخص شده است. در موج P فعالیت الکتریکی دهلیزها نمایش داده شده و حد فاصله ابتدای QRS تا انتهای T فعالیت موج بطن ها را شناسایی میکنیم. ارتباط داشتن این موج ها با یکدیگر بسیار مهم است. اگر قبل از هر موج QRS یک موج P داشته باشیم به این معنی است که قلب ضربان منظمی دارد و اگر قبل از موج QRS موج P نداشته باشیم به معنی نامنظم بودن ضربان قلب خواهد بود. به عبارتی موج P نشان دهنده ی عملکرد الکتریکی دهلیزها است و موج QRS شروع عملکرد الکتریکی بطن و موج T پایان آن را نمایش میدهد.
ماژول ضربان قلب AD8232
ماژول ضربان قلب AD8232 مقرون به صرفه با در نظر گرفتن اجرای پروژه های بیومتریک مهندسی پزشکی و ترکیب آن با آردوینو و سایر بردهای امبدد طراحی شده است. از این سنسور برای اندازه گیری فعالیت الکتریکی قلب و کنترل شرایط قلب و الکترودیاگرام استفاده کرد.
روش اتصال AD8232 به آردوینو ARDUINO
برای اتصال ماژول AD8232 به آردوینو شش پایه روی برد را لحیم کاری کرده و طبق جدول زیر به آردوینو متصل کنید.
کدنویسی ضربان قلب با آردوینو
برای کدنویسی سنسور ضربان قلب با آردوینو از برد آردوینو UNO استفاده میکنیم. طبق جدول بالا اتصالات را انجام دهید. برای اتصال سنسور به برد آردوینو از دو پایه های LO – و LO + استفاده میکنیم. توسط این پایه ها سیگنال آنالوگ فیلتر شده و در خروجی دیتای فعالیت قلب را نمایش میدهد.
- LO- = Lead is Off – Left Arm
- LO+ = Lead is Off – Right Arm
برای فراخوانی این دو پایه از دستورات برنامه نویسی PinMode برای تعریف کردن پایه های ورودی استفاده میکنیم.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
از سریال مانیتور برای نمایش دیتای دریافتی از سنسور استفاده میکنیم. بادریت را به صورت پیشفرض بر روی ۹۶۰۰ تنظیم میکنیم. سپس دیتای دریافتی از پایه ی A0 را با دستورات سریال دریافت و مشاهده میکنیم. روش دیگر استفاده از ارتباط سریال، استفاده از سریال پلاتر است.
مقادیر دریافتی از سنسور در بازه ی ۶۶۹ تا ۶۷۲ متغیر است که با اتصال پدهای سنسور AD8232 به بدن ضربان قلب دریافت شده و در سریال پلاتر نمایش داده میشود. همچنین میتوانید دیتا را به صورت عددی از سریال مانیتور دریافت کنید.
استفاده از نمایشگر برای ضربان قلب
برای نمایش دیتای دریافتی از سنسور ضربان قلب AD8232 از نمایشگر ال سی دی کاراکتری استفاده میکنیم. نمایشگر ال سی دی کاراکتری انتخابی ارزان و اتصالات با کابل و ساده است. طبق جدول زیر اتصالات ال سی دی کاراکتری به آردوینو را انجام دهید.
کد آردوینو یا ال سی دی کاراکتری
در این پروژه از ال سی دی کاراکتری ۲*۱۶ برای نمایش دیتای دریافتی از سنسور ضربان قلب استفاده میکنیم. روش کدنویسی بدین صورت است. در ابتدا برای ارتباط با ال سی دی به کتابخانه Liquidcrystal نیاز داریم. کتابخانه را از مسیر Arduino / Tools / Manage Libraries نصب و دانلود کنید.
#include <LiquidCrystal.h>
پایه های ال سی دی کاراکتری از چپ به راست به صورت زیر است:
- VSS = زمین GND
- VCC = تغذیه ۵ ولت
- (VO (Display Contrast Pin = تنظیم شدت نور صفحه
- (RS (Register Select = انتخاب رجیستر
- (RW (Read/Write = پایه Read و Write
- E = پایه Enable
- D0 – D7 = پایه های دیتا
- A = پایه Anode
- K = پایه Cathode
برای اتصال پایههای ال سی دی LCD به پایه های دیجیتال Digital آردوینو، توجه به یک نکته اهمیت دارد. هر یک از پایههایی که انتخاب میکنید باید در کد برنامه معرفی شود. به عنوان مثال اگر از پایههای ۱۲,۱۱,۵,۴,۳,۲ آردوینو استفاده میکنید، باید به صورت زیر در کد آردوینو تعریف شود:
const int rs = 12, en = 13, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
با توجه به اینکه عده ای از کاربران پس از انجام اتصالات و آپلود برنامه با کادرهای مربعی در ال سی دی مواجه شده اند، جهت برطرف شدن مشکل نیاز به اتصال مقاومت به پایه V0 داریم. جهت تنظیم شدت نور صفحه یا همان کنتراست از پایه V0 در ال سی دی استفاده میشود. برای اتصال پایه V0 به برد آردوینو به یک مقاومت ۱۰ کیلو نیاز داریم. یک سر مقاومت را به پایه V0 وصل کرده و به GND برد آردوینو اتصال دهید. سر دیگر مقاومت ۱۰ کیلو بدون اتصال باشد.پیشنهاد میشود.
قبل از شروع نوشتن کدهای ال سی دی نیاز به معرفی ال سی دی LCD و مشخص کردن ابعاد مورد استفاده دارید. از اینرو سطر Begin اهمیت خاصی دارد. دستور معرفی ال سی دی همانند زیر است. cols جهت مشخص کردن تعداد ستون و row برای مشخص کردن تعداد سطر میباشد.
lcd.begin(16, 2);
توسط تابع clear صفحه نمایش ال سی دی پاک شده و به صورت زیر در کد تعریف میشود. پس از تابع begin نیاز به تعریف تابع clear خواهیم داشت. تابع clear به صورت زیر در برنامه فراخوانی میشود.
lcd.clear(); // توسط این دستور به صورت پیشفرض صفحه نمایش پاک میشود
توسط تابع setcursor یک موقعیت خاص در ال سی دی برای مکان نما انتخاب میکنیم. سپس در تابع سطر row و ستون cols مورد نظر را وارد میکنیم. تابع cursor به صورت زیر در برنامه فراخوانی میشود.
lcd.setCursor(0, 0); // انتخاب مکان نما
از تابع print برای نمایش کاراکتر در ال سی دی LCD اسنفاده میشود. تابع print به صورت زیر در برنامه فراخوانی میشود.
lcd.print(analogRead(A0));
کد کامل برنامه ضربان قلب با ال سی دی کاراکتری
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام خوب هستید خسته نباشید
این سیگنالی که دریافت کردید اشتباه هست اگر ممکنه ی نگاهی دباره بیندازید ممنونم
با سلام
ecg صحیح است و وابسته به دیتای دریافتی از سنسور است که بین ۴۰۰ تا ۸۰۰ بایستی متغیر باشد. در تست انجام شده برای بنده عدد دریافتی ۷۰۰ بوده است و موج دریافتی ثابت شده است.
این کد در تمامی آموزش های منتشر شده برای این سنسور یکسان است و ایرادی در کد برنامه وجود ندارد.
جهت دریافت مانیتور دقیق پیشنهاد میشود از پروسسینگ استفاده کنید.
سلام
بنده همه اتصالات را درست انجام دادم ولی وقتی لیدها را به بدن میچسبانم و برنامه را روی برد ران میکنم روی ال سی دی اعداد مدام تغییر میکنند و بالا و پایین میشوند
از ۱۵۰ تا ۶۰۰ و عددی ثابت نشان نمیدهد
مشکل از کجاس؟
با سلام دقت داشته باشید برای ماژول های بیومتریک که وابسته به فرکانس هستند، نیاز به فیلتر بالاگذر در مدار هستیم. اما این ماژول فقط برای تست است و نمیتوانید دیتای فوق دقیق از آن دریافت کنید.
جهت بهبود دیتا پیشنهاد میشود، تغذیه را به صورت جداگانه بدون استفاده از کابل usb تامین کنید تا نویز در مدار کاهش یابد. همچنین بادریت را بیشتر از ۹۶۰۰ قرار دهید تا سرعت انتقال دیتا بیشتر باشد.
سلام
وقتتون بخیر
من سیگنالی که دریافت میکنم درست نیست
اعداد که روی lcd نشان داده میشود از ۱۵۰ تا ۵۰۰ مدام تغییر میکند
مشکل از کجا هست؟
راهنمایی کنید لطفا
با سلام دقت داشته باشید برای ماژول های بیومتریک که وابسته به فرکانس هستند، نیاز به فیلتر بالاگذر در مدار هستیم. اما این ماژول فقط برای تست است و نمیتوانید دیتای فوق دقیق از آن دریافت کنید.
جهت بهبود دیتا پیشنهاد میشود، تغذیه را به صورت جداگانه بدون استفاده از کابل usb تامین کنید تا نویز در مدار کاهش یابد. همچنین بادریت را بیشتر از ۹۶۰۰ قرار دهید تا سرعت انتقال دیتا بیشتر باشد.
با سلام دقت داشته باشید برای ماژول های بیومتریک که وابسته به فرکانس هستند، نیاز به فیلتر بالاگذر در مدار هستیم. اما این ماژول فقط برای تست است و نمیتوانید دیتای فوق دقیق از آن دریافت کنید.
جهت بهبود دیتا پیشنهاد میشود، تغذیه را به صورت جداگانه بدون استفاده از کابل usb تامین کنید تا نویز در مدار کاهش یابد. همچنین بادریت را بیشتر از ۹۶۰۰ قرار دهید تا سرعت انتقال دیتا بیشتر باشد.
سلام
امکان هست بجای استفاده از سه لید از ده عدد لید استفاده کنیم؟
با سلام
کاربر گرامی ورودی این ماژول به صورت آنالوگ است و اگر از میکروکنترلری استفاده میکنید که امکان استفاده از ۱۰ پایه آنالوگ را دارد، محدودیتی ندارد.
سلام مهندس
عددهای که من در خروجی دریافت میکنم خیلی دقیق نیست لطفا راهنمایی کنید تا حل کنم
با سلام
عدد بادریت را برای دریافت دیتا افزایش دهید.
سلام
آیا از برد nodemcu esp8266 هم میشه استفاده کنم؟ لطفا سریع پاسخ دهید
با سلام
بله میتوانید از همین کد برای برد ESP استفاده کنید.
سلام وقتتون بخیر عذر می خوام من دانشجوی مهندسی پزشکی هستم برای پروژه کارشناسیم می خواستم دستگاه قند خون درست کنم اما کد اردوینو مربوط به دستگاه رو پیدا نمی کنم .ممنون می شم اگه راهنماییم کنید
با سلام
این مورد توسط بنده تست نشده است و ماژولی برای این مورد در حال حاضر نمیشناسم.