فهرست مطالب:

مانیتور ضربان قلب IOT (ESP8266 و برنامه Android): 5 مرحله
مانیتور ضربان قلب IOT (ESP8266 و برنامه Android): 5 مرحله

تصویری: مانیتور ضربان قلب IOT (ESP8266 و برنامه Android): 5 مرحله

تصویری: مانیتور ضربان قلب IOT (ESP8266 و برنامه Android): 5 مرحله
تصویری: پروژه مانیتورینگ میزان ضربه، زاویه و ضربان قلب توسط ماژول ESP و اپلیکیشن اندرویدی اختصاصی 2024, جولای
Anonim
Image
Image

به عنوان بخشی از پروژه سال آخر ، می خواستم دستگاهی طراحی کنم که ضربان قلب شما را کنترل کند ، داده های شما را روی سرور ذخیره کند و هنگامی که ضربان قلب شما غیرطبیعی بود از طریق اعلان به شما اطلاع دهد. ایده پشت این پروژه زمانی ایجاد شد که من سعی کردم یک برنامه متناسب با بیت ایجاد کنم که در صورت داشتن مشکل قلبی به کاربر اطلاع می دهد اما راهی برای استفاده از اطلاعات زمان واقعی پیدا نکردم. این پروژه دارای چهار قسمت اصلی است شامل مدار فیزیکی برای اندازه گیری ضربان قلب ، یک ماژول Wi-Fi ESP8266 با کد پردازش سیگنال ، سرور برای ذخیره کد و یک برنامه Android برای نمایش ضربان قلب.

ویدئویی با جزئیات مدار فیزیکی در بالا قابل مشاهده است. تمام کد پروژه را می توانید در Github من پیدا کنید.

مرحله 1: مدار

مدار
مدار

دو روش اصلی برای اندازه گیری ضربان قلب وجود دارد اما برای این پروژه تصمیم گرفتم از فوتوپلیتیسموگرافی (PPG) استفاده کنم که از منبع نور مادون قرمز یا قرمز استفاده می کند که در چند لایه اول پوست منعکس می شود. یک سنسور عکس برای اندازه گیری تغییر شدت نور (هنگامی که خون در یک رگ جریان دارد) استفاده می شود. سیگنالهای PPG بسیار سر و صدا دارند ، بنابراین من از فیلتر عبور باند برای فیلتر کردن فرکانسهای خاص مورد نیاز استفاده کردم. ضربان قلب انسان بین فرکانس 1 تا 1.6 هرتز است. آمپر آمپری که استفاده کردم lm324 بود که بهترین ولتاژ را از بین تمام آمپرهایی که در دسترس من بود ، داشت. اگر در حال بازآفرینی این پروژه هستید ، یک amp-amp دقیق انتخاب بسیار بهتری خواهد بود.

فقط دو افزایش استفاده شد زیرا حداکثر تحمل ولتاژ در ESP8266 3.3 ولت است و من نمی خواستم به برد خود آسیب برسانم!

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

هنگامی که یک انگشت روی LED و ترانزیستور عکس قرار می گیرد ، مدار روی یک تخته نان آزمایش می شود و تغییر خروجی مشاهده می شود. سپس تصمیم گرفتم تخته ای را که در ویدئو نشان داده نشده است ، به هم بچسبانم.

مرحله 2: کد پردازش سیگنال و ارتباطات سرور

Image
Image
کد پردازش سیگنال و ارتباطات سرور
کد پردازش سیگنال و ارتباطات سرور

من تصمیم گرفتم از Arduino IDE در ESP8266 استفاده کنم زیرا استفاده از آن بسیار آسان است. هنگامی که سیگنال ترسیم شد هنوز بسیار پر سر و صدا بود ، بنابراین تصمیم گرفتم آن را با یک فیلتر میانگین متحرک FIR با تعداد نمونه 10 تمیز کنم. برای انجام این کار ، یک برنامه آردوینو به نام "smoothing" را تغییر دادم. من کمی آزمایش کردم تا راهی برای اندازه گیری فرکانس سیگنال پیدا کنم. طول و دامنه پالس ها متفاوت بود زیرا قلب دارای چهار نوع مختلف پالس و ویژگی های سیگنال های PPG بود. من یک مقدار متوسط شناخته شده را انتخاب کردم که سیگنال همیشه به عنوان نقطه مرجع برای هر پالس از آن عبور می کرد. از یک بافر حلقه برای تعیین زمان مثبت یا منفی بودن شیب سیگنال استفاده کردم. ترکیبی از این دو به من اجازه داد تا فاصله بین پالس ها را که سیگنال مثبت بود و برابر یک مقدار خاص بود ، محاسبه کنم.

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

نرم افزار ESP8266

مرحله 3: سرور و ارتباطات داده

سرور و ارتباطات داده
سرور و ارتباطات داده

من تصمیم گرفتم از Firebase برای ذخیره داده ها استفاده کنم زیرا این یک سرویس رایگان است و استفاده از آن برای برنامه های تلفن همراه بسیار آسان است. هیچ API رسمی برای Firebase با ESP8266 وجود ندارد ، اما من دریافتم که کتابخانه Arduino بسیار خوب کار می کند.

یک برنامه مثال وجود دارد که می توانید در کتابخانه ESP8266WiFi.h پیدا کنید که به شما امکان می دهد با SSID و رمز عبور به روتر متصل شوید. این برای اتصال برد به اینترنت استفاده می شود تا داده ها ارسال شوند.

اگرچه ذخیره داده ها به راحتی انجام می شد ، هنوز تعدادی از مسائل مربوط به ارسال اعلانات فشار از طریق درخواست HTTP POST وجود دارد. من نظری در مورد Github پیدا کردم که از روش قدیمی این کار از طریق پیام های ابری Google و کتابخانه HTTP برای ESP8266 استفاده می کرد. این روش را می توان در کد موجود در Github من مشاهده کرد.

در Firebase یک پروژه ایجاد کردم و از API و کلیدهای ثبت در نرم افزار استفاده کردم. پیام های ابری firebase با برنامه به منظور ارسال اعلانات فشار به کاربر استفاده شد. هنگامی که ارتباطات مورد آزمایش قرار گرفت ، داده ها در پایگاه داده در حالی که ESP8266 در حال اجرا بود قابل مشاهده بودند.

مرحله 4: برنامه Android

برنامه اندروید
برنامه اندروید

یک برنامه بسیار اساسی Android با دو فعالیت طراحی شد. اولین فعالیت کاربر را وارد سیستم کرد یا با استفاده از Firebase API ثبت نام کرد. من بر روی دیتاشیت تحقیق کردم و آموزش های مختلفی در مورد نحوه استفاده از Firebase با یک برنامه تلفن همراه پیدا کردم. فعالیت اصلی که کاربر داده های کاربر را یک شنونده رویداد در زمان واقعی نشان می داد ، بنابراین هیچ تاخیری در تغییرات BPM کاربر ایجاد نشد. اعلان های فشار با استفاده از پیام های ابری Firebase که قبلاً ذکر شد انجام شد. اطلاعات مفید زیادی در مورد برگه اطلاعات Firebase در مورد نحوه پیاده سازی این برنامه وجود دارد و می توان برنامه را برای ارسال اعلانات از داشبورد در وب سایت Firebase آزمایش کرد.

همه کد فعالیتها و روشهای پیام رسانی ابری را می توانید در مخزن Github من پیدا کنید.

مرحله 5: نتیجه گیری

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

بقیه سیستم عملکردی داشت اما این یک دستگاه بسیار آزمایشی است که می خواستم بسازم تا ببینم آیا جسم امکان پذیر است یا خیر. کد قدیمی که برای ارسال اعلان های فشار استفاده می شد ، به زودی غیر قابل استفاده خواهد بود ، بنابراین اگر این مقاله را در اواخر سال 2018 یا اواخر می خوانید ، روش متفاوتی مورد نیاز است. این مشکل فقط با ESP اتفاق می افتد هرچند اگر بخواهید این را روی آردوینو با قابلیت WiFi اجرا کنید مشکلی نخواهد بود.

اگر س questionsال یا مشکلی دارید ، لطفاً در Instructables به من پیام دهید.

توصیه شده: