جدول المحتويات:

مراقب معدل ضربات القلب IOT (ESP8266 وتطبيق Android): 5 خطوات
مراقب معدل ضربات القلب IOT (ESP8266 وتطبيق Android): 5 خطوات

فيديو: مراقب معدل ضربات القلب IOT (ESP8266 وتطبيق Android): 5 خطوات

فيديو: مراقب معدل ضربات القلب IOT (ESP8266 وتطبيق Android): 5 خطوات
فيديو: Heart Rate Monitor (with Stable Readings) Using Arduino Nano IOT 33 board and MAX30100 Sensor kit 2024, شهر نوفمبر
Anonim
Image
Image

كجزء من مشروعي في السنة الأخيرة ، أردت تصميم جهاز يراقب معدل ضربات قلبك ، ويخزن بياناتك على خادم ويبلغك عبر إشعار عندما يكون معدل ضربات قلبك غير طبيعي. جاءت الفكرة وراء هذا المشروع عندما حاولت إنشاء تطبيق fit-bit الذي يُعلم المستخدم عندما يواجه مشكلة في القلب ، لكنني لم أتمكن من اكتشاف طريقة لاستخدام المعلومات في الوقت الفعلي. يتكون المشروع من أربعة أجزاء رئيسية بما في ذلك الدائرة المادية لقياس ضربات القلب ، ووحدة ESP8266 Wi-Fi مع رمز معالجة الإشارة ، وخادم لتخزين الرمز وتطبيق Android لعرض معدل ضربات القلب.

يمكن رؤية مقطع فيديو يوضح بالتفصيل الدائرة المادية أعلاه. يمكن العثور على كل الكود الخاص بالمشروع على جيثب الخاص بي.

الخطوة 1: الدائرة

الدائرة
الدائرة

هناك طريقتان رئيسيتان لقياس دقات القلب ، لكن في هذا المشروع قررت استخدام التصوير الضوئي (PPG) الذي يستخدم مصدر ضوء أحمر أو الأشعة تحت الحمراء الذي ينكسر خلال الطبقات القليلة الأولى من الجلد. يستخدم مستشعر الصور لقياس التغير في شدة الضوء (عندما يتدفق الدم عبر وعاء). إشارات PPG صاخبة بشكل لا يصدق لذلك استخدمت مرشح تمرير النطاق لتصفية الترددات المحددة المطلوبة. ينبض قلب الإنسان بين تردد 1 و 1.6 هرتز. كان جهاز op-amp الذي استخدمته هو lm324 الذي كان لديه أفضل إزاحة للجهد من بين جميع أجهزة op-amp التي كانت متاحة لي. إذا كنت تعيد إنشاء هذا المشروع ، فسيكون جهاز op-amp الدقيق خيارًا أفضل بكثير.

تم استخدام مكسب اثنين فقط لأن الحد الأقصى لتحمل الجهد على ESP8266 هو 3.3 فولت ولم أرغب في إتلاف لوحي!

اتبع الدائرة أعلاه وحاول تشغيلها على لوح الخبز. إذا لم يكن لديك منظار الذبذبات في المنزل ، فيمكنك توصيل الإخراج في Arduino ورسمه ولكن تأكد من أن الجهد ليس أعلى من تحمل اردوينو أو متحكم دقيق.

تم اختبار الدائرة على لوح الخبز ولوحظ تغيير في الخرج عندما تم وضع إصبع عبر الترانزستور LED والصورة. ثم قررت بعد ذلك لحام اللوحة معًا والتي لم تظهر في الفيديو.

الخطوة 2: رمز معالجة الإشارة واتصالات الخادم

Image
Image
رمز معالجة الإشارة واتصالات الخادم
رمز معالجة الإشارة واتصالات الخادم

قررت استخدام Arduino IDE على ESP8266 لأنه سهل الاستخدام. عندما تم رسم الإشارة كانت لا تزال صاخبة جدًا لذا قررت تنظيفها باستخدام مرشح متوسط متحرك FIR مع عينة من رقم عشرة. لقد قمت بتعديل مثال لبرنامج Arduino يسمى "smoothing" للقيام بذلك ، وجربت قليلاً من أجل إيجاد طريقة لقياس تردد الإشارة. كانت النبضات متفاوتة الطول والسعة بسبب وجود أربعة أنواع مختلفة من النبضات في القلب وخصائص إشارات PPG. اخترت قيمة متوسطة معروفة تتقاطع معها الإشارة دائمًا كنقطة مرجعية لكل نبضة. لقد استخدمت مخزنًا مؤقتًا للحلقة لتحديد متى كان ميل الإشارة موجبًا أم سالبًا. سمح الجمع بين هذين الأمرين بحساب الفترة بين النبضات عندما كانت الإشارة موجبة وكانت مساوية لقيمة معينة.

أنتج البرنامج BPM غير دقيق إلى حد ما لا يمكن استخدامه في الواقع. مع التكرارات الإضافية ، يمكن تصميم برنامج أفضل ولكن نظرًا لضيق الوقت ، لم يكن هذا خيارًا متاحًا. يمكن العثور على الرمز في الرابط أدناه.

برنامج ESP8266

الخطوة 3: الخادم واتصالات البيانات

الخادم واتصالات البيانات
الخادم واتصالات البيانات

قررت استخدام Firebase لتخزين البيانات لأنها خدمة مجانية وسهلة الاستخدام للغاية مع تطبيقات الأجهزة المحمولة. لا توجد واجهة برمجة تطبيقات رسمية لـ Firebase مع ESP8266 لكنني وجدت أن مكتبة Arduino تعمل جيدًا.

يوجد مثال لبرنامج يمكن العثور عليه في مكتبة ESP8266WiFi.h والذي يسمح لك بالاتصال بجهاز توجيه باستخدام SSID وكلمة المرور. تم استخدام هذا لتوصيل اللوحة بالإنترنت بحيث يمكن إرسال البيانات.

على الرغم من سهولة تخزين البيانات ، لا يزال هناك عدد من المشكلات المتعلقة بإرسال إشعارات الدفع عبر طلب HTTP POST. لقد وجدت تعليقًا على Github والذي استخدم طريقة قديمة للقيام بذلك عبر المراسلة السحابية من Google ومكتبة HTTP لـ ESP8266. يمكن رؤية هذه الطريقة في الكود الموجود على جيثب الخاص بي.

في Firebase ، أنشأت مشروعًا واستخدمت واجهة برمجة التطبيقات ومفاتيح التسجيل في البرنامج. تم استخدام المراسلة السحابية لـ firebase مع التطبيق لإرسال إشعارات الدفع إلى المستخدم. عندما تم اختبار الاتصالات ، يمكن رؤية البيانات في قاعدة البيانات أثناء تشغيل ESP8266.

الخطوة 4: تطبيق Android

تطبيق Android
تطبيق Android

تم تصميم تطبيق Android أساسي جدًا من خلال نشاطين. سجل النشاط الأول دخول المستخدم أو سجله باستخدام Firebase API. لقد بحثت في ورقة البيانات ووجدت العديد من البرامج التعليمية حول كيفية استخدام Firebase مع تطبيق جوال. النشاط الرئيسي الذي عرض مستخدم بيانات المستخدم مستمعًا للحدث في الوقت الفعلي لذلك لم يكن هناك تأخير ملحوظ في التغييرات التي تم إجراؤها على BPM الخاص بالمستخدم. تم تنفيذ الإشعارات الفورية باستخدام المراسلة السحابية Firebase التي تم ذكرها سابقًا. هناك الكثير من المعلومات المفيدة في ورقة بيانات Firebase حول كيفية تنفيذ ذلك ويمكن اختبار التطبيق من خلال إرسال إشعارات من لوحة القيادة على موقع Firebase الإلكتروني.

يمكن العثور على جميع التعليمات البرمجية للأنشطة وطرق المراسلة السحابية في مستودع Github الخاص بي.

الخطوة 5: الخاتمة

كانت هناك بعض المشكلات الرئيسية المتعلقة بقياس BPM للمستخدم. اختلفت القيم بشكل كبير ولم تكن قابلة للاستخدام لتحديد صحة المستخدم. تم اختصار هذا إلى رمز معالجة الإشارة الذي تم تنفيذه على ESP8266. بعد بحث إضافي ، اكتشفت أن القلب يحتوي على أربع نبضات مختلفة بفترات متفاوتة ، لذلك لا عجب في أن البرنامج غير دقيق. تتمثل إحدى طرق مكافحة هذا في أخذ متوسط النبضات الأربعة في مصفوفة وحساب فترة القلب على تلك النبضات الأربعة.

كان باقي النظام يعمل ولكن هذا جهاز تجريبي للغاية أردت بناءه لمعرفة ما إذا كان الكائن ممكنًا. سيكون الرمز القديم الذي تم استخدامه لإرسال إشعارات الدفع غير قابل للاستخدام قريبًا ، لذا إذا كنت تقرأ هذا في أواخر عام 2018 أو في وقت متأخر ، فستكون هناك حاجة إلى طريقة مختلفة. تحدث هذه المشكلة فقط مع ESP على الرغم من ذلك ، إذا كنت ترغب في تنفيذ ذلك على Arduino قادر على WiFi ، فلن تكون هناك مشكلة.

إذا كانت لديك أي أسئلة أو مشكلات ، فلا تتردد في مراسلتي على Instructables.

موصى به: