- المكونات المطلوبة
- MAX30205 مع Arduino - مخطط الدائرة
- واجهة اردوينو مع مستشعر درجة حرارة الجسم MAX30205
- برمجة MAX30205 مع اردوينو
- جهاز قياس درجة حرارة الجسم اردوينو - اختبار
بالنسبة للتطبيقات الطبية أو السريرية ، يعد قياس درجة حرارة جسم الإنسان معلمة مهمة لتحديد الحالة الصحية لأي فرد. ومع ذلك ، هناك الكثير من الطرق لاستشعار درجة الحرارة ولكن ليس كل شيء لديه الدقة لتلبية مواصفات قياس الحرارة السريرية. تم تصميم مستشعر درجة الحرارة MAX30205 خصيصًا لهذا التطبيق. لاحظ أن هذا المستشعر ليس مستشعرًا لدرجة الحرارة بدون تلامس ، إذا كنت تبحث عن قياس درجة حرارة الأشعة تحت الحمراء بدون تلامس ، تحقق من مقياس الحرارة MLX90614 الذي صممناه سابقًا.
في هذا المشروع ، سنقوم بتوصيل مستشعر درجة حرارة جسم الإنسان MAX30205 الذي يمكن توصيله بسهولة بسوار لياقة أو يمكن استخدامه للأغراض الطبية. سنستخدم Arduino Nano كوحدة تحكم صغيرة رئيسية ونستخدم أيضًا شاشات 7-Segment لإظهار درجة الحرارة المحسوسة بالفهرنهايت. بمجرد معرفة كيفية استخدام المستشعر ، يمكنك استخدامه في أي تطبيق تفضله ، كما يمكنك التحقق من مشروع Arduino Smartwatch هذا والذي يمكن استخدامه مع MAX30205 لمراقبة درجة حرارة الأفراد.
المكونات المطلوبة
- اردوينو نانو
- 7-Seg يعرض الكاثود المشترك - 3 قطعة
- 74HC595 - 3 قطع
- مقاوم 680R - 24 قطعة
- MAX30205 لوحة وحدة
- 5V امدادات الطاقة
- اللوح
- الكثير من الأسلاك التوصيل
- اردوينو IDE
- كابل micro-USB
MAX30205 مع Arduino - مخطط الدائرة
يظهر أدناه مخطط الدائرة الكامل لتوصيل Arduino بمستشعر درجة حرارة الجسم MAX30205. الدائرة بسيطة للغاية ، ولكن نظرًا لاستخدامنا لشاشات العرض المكونة من 7 أجزاء ، فإنها تبدو معقدة بعض الشيء. تعد شاشات العرض المكونة من 7 أجزاء مع Arduino طريقة رائعة لعرض قيمتك الكبيرة والمشرقة بتكلفة منخفضة جدًا. ولكن يمكنك أيضًا عرض هذه القيم على شاشة OLED أو LCD إذا كنت ترغب في ذلك.
اردوينو نانو متصل بثلاثة 74HC595. يتم تجميع ثلاثة 74HC595 معًا لتوفير دبابيس إخراج إضافية من Arduino Nano لتوصيل ثلاث شاشات 7-Seg. لقد استخدمنا سابقًا 74HC595 مع Arduino في العديد من المشاريع الأخرى مثل Arduino Clock و LED Board Display ولعبة Arduino snake وغيرها على سبيل المثال لا الحصر.
تتطلب لوحة الوحدة النمطية MAX30205 مقاومات سحب إضافية نظرًا لأنها تتصل ببروتوكول I2C. ومع ذلك ، فإن عددًا قليلاً من لوحات الوحدة النمطية لا تتطلب سحبًا إضافيًا لأن مقاومات السحب موجودة بالفعل داخل الوحدة. لذلك ، يحتاج المرء إلى تأكيد ما إذا كانت لوحة الوحدة بها مقاومات سحب داخلية أم أنها تتطلب سحبًا خارجيًا إضافيًا. تحتوي اللوحة المستخدمة في هذا المشروع بالفعل على مقاومات سحب داخلية داخل لوحة الوحدة النمطية.
واجهة اردوينو مع مستشعر درجة حرارة الجسم MAX30205
المستشعر المستخدم هنا هو MAX30205 من مكسيم متكامل. يقيس مستشعر درجة الحرارة MAX30205 بدقة درجة الحرارة بدقة 0.1 درجة مئوية (37 درجة مئوية إلى 39 درجة مئوية). يعمل المستشعر مع بروتوكول I2C.
يمكن أن تعمل لوحة الوحدة مع 5 أو 3.3 فولت. ومع ذلك ، فقد تم تكوين اللوحة لتستخدم بجهد تشغيل 5 فولت. كما يتضمن أيضًا ناقلًا للمستوى المنطقي ، نظرًا لأن المستشعر نفسه يدعم بحد أقصى 3.3 فولت كأغراض متعلقة بالطاقة أو اتصال البيانات.
في الإخراج ، يتم استخدام ثلاثة سجلات تحويل 74HC595 ، 8 بت لربط ثلاث شاشات من 7 أجزاء مع Arduino NANO. يمكن إظهار مخطط الدبوس في الصورة أدناه-
يمكن رؤية وصف دبوس 74HC595 في الجدول أدناه-
QA to QH هي دبابيس إخراج البيانات المتصلة بشاشات 7-Seg. نظرًا لأن ثلاثة 74HC595 متتالية معًا ، فسيتم توصيل دبوس إدخال البيانات (PIN14) الخاص بسجل التحول الأول بـ Arduino NANO وسيوفر دبوس إخراج البيانات التسلسلية البيانات إلى سجل التحول التالي. سيستمر اتصال البيانات التسلسلي هذا حتى 74HC595 الثالث.
برمجة MAX30205 مع اردوينو
يمكن العثور على البرنامج الكامل لهذا البرنامج التعليمي في أسفل هذه الصفحة. شرح هذا الرمز كما يلي. أولاً ، نقوم بتضمين ملف رأس مكتبة Arduino I2C القياسي.
#تضمن
سيتضمن السطر أعلاه مكتبة Arduino المساهمة من مركزية. تحتوي هذه المكتبة على وظائف مهمة للتواصل مع مستشعر MAX30205. المكتبة مأخوذة من رابط GitHub أدناه-
https://github.com/protocentral/ProtoCentral_MAX30205
بعد استيراد المكتبة ، نحدد MAX30205 بيانات الكائن كما هو موضح أدناه-
# تضمين "Protocentral_MAX30205.h" MAX30205 tempSensor ؛
الخطان التاليان مهمان لتعيين المعلمات. سيوفر السطر أدناه درجة الحرارة بالفهرنهايت إذا تم ضبطها على صواب. لإظهار النتيجة بالدرجة المئوية ، يجب تعيين الخط على "خطأ".
const منطقية fahrenheittemp = صحيح ؛ // أعرض درجة الحرارة بالفهرنهايت ، إذا كنت تريد إظهار درجة الحرارة بالدرجة المئوية ، اجعل هذا المتغير خطأ.
يجب تكوين السطر أدناه في حالة استخدام شاشات العرض ذات 7 مقاطع من نوع الكاثود الشائع في الجهاز. اجعلها خطأ إذا تم استخدام الأنود الشائع.
const منطقية commonCathode = صحيح ؛ // أنا أستخدم مقطعًا كاثودًا 7 مشتركًا إذا كنت تستخدم Anode مشتركًا ، فقم بتغيير القيمة إلى false. const بايت digit_pattern = {// 74HC595 Outpin Connection with 7segment display. // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 // abcdefg DP 0b11111100، // 0 0b01100000، // 1 0b11011010، // 2 0b11110010، // 3 0b01100110، // 4 0b10110110، // 5 0b10111110، // 6 0b11100000 ، // 7 0b11111110، // 8 0b11110110، // 9 0b11101110، // A 0b00111110، // b 0b00011010، // C 0b01111010، // d 0b10011110، // E 0b10001110، // F 0b00000001 //. } ؛
يتم استخدام المصفوفة أعلاه لتخزين نمط الأرقام لشاشات 7-Segment.
في وظيفة الإعداد ، بعد ضبط أوضاع الدبوس الخاصة بدبابيس 74HC595 ، يتم تهيئة بروتوكول I2C وقراءة مستشعر درجة الحرارة.
إعداد باطل () {// ضع كود الإعداد هنا ، للتشغيل مرة واحدة: // اضبط المنفذ التسلسلي على 9600 Serial.begin (9600) ؛ تأخير (1000) ؛ // قم بتعيين دبوس التحكم 74HC595 كإخراج pinMode (latchPin ، OUTPUT) ؛ // ST_CP لـ 74HC595 pinMode (clkPin ، الإخراج) ؛ // SH_CP لـ 74HC595 pinMode (dtPin ، OUTPUT) ؛ // DS of 74HC595 // تهيئة I2C Libs Wire.begin () ؛ // بدء قراءة درجة الحرارة MAX30205 في الوضع المستمر ، الوضع النشط tempSensor.begin () ؛ }
في الحلقة ، يتم قراءة درجة الحرارة بواسطة الوظيفة tempSensor.getTemperature () وتخزينها في متغير عائم يسمى temp . بعد ذلك ، إذا تم تحديد وضع درجة حرارة فهرنهايت ، يتم تحويل البيانات من الدرجة المئوية إلى فهرنهايت. بعد ذلك ، يتم فصل ثلاثة أرقام من بيانات درجة الحرارة المحولة إلى ثلاثة أرقام فردية. للقيام بذلك ، يتم استخدام أسطر الرموز أدناه-
// saperate 3 أرقام من درجة الحرارة الحالية (مثل إذا كانت درجة الحرارة = 31.23c ،) int dispDigit1 = (int) temp / 10 ؛ // digit1 3 int dispDigit2 = (int) temp٪ 10 ؛ // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10) ؛ // digit3 2
الآن ، يتم إرسال الأرقام الثلاثة المنفصلة إلى شاشات العرض المكونة من 7 أجزاء باستخدام سجلات التحول 74HC595. منذ أن ظهر LSB لأول مرة في العرض الثالث المكون من 7 أجزاء عبر 74HC595 الثالث ، يتم إرسال الرقم الثالث أولاً. للقيام بذلك ، يتم سحب الدبوس المغلق إلى مستوى منخفض وإرسال البيانات إلى 74HC595 بواسطة الوظيفة shiftOut () ؛
بنفس الطريقة ، يتم أيضًا إرسال الأرقام الثانية والأولى المتبقية إلى 74HC595 المعني ، وبالتالي تبقى شاشتان من 7 أجزاء. بعد إرسال جميع البيانات ، يتم تحرير دبوس المزلاج وسحبه عالياً لتأكيد نهاية نقل البيانات. يمكن رؤية الرموز الخاصة أدناه -
// عرض الأرقام في عرض 3 ، 7 قطع. digitalWrite (latchPin ، منخفض) ؛ if (commonCathode == true) {shiftOut (dtPin ، clkPin ، LSBFIRST ، digit_pattern) ؛ shiftOut (dtPin ، clkPin ، LSBFIRST ، digit_pattern-digit_pattern) ؛ // 1. (Digit + DP) shiftOut (dtPin ، clkPin ، LSBFIRST ، digit_pattern) ؛ } else {shiftOut (dtPin، clkPin، LSBFIRST، ~ (digit_pattern)) ؛ shiftOut (dtPin ، clkPin ، LSBFIRST ، ~ (digit_pattern-digit_pattern)) ؛ // 1. (Digit + DP) shiftOut (dtPin ، clkPin ، LSBFIRST ، ~ (digit_pattern)) ؛ } digitalWrite (latchPin، HIGH) ؛
جهاز قياس درجة حرارة الجسم اردوينو - اختبار
تتكون الدائرة من مجموعتين من ألواح التجارب كما ترون أدناه. عندما نضع الإصبع على المستشعر ، يتم استشعار درجة الحرارة ويظهر الإخراج في شاشة عرض 7 أجزاء ، وهنا القيمة 92.1 * F.
يمكن العثور على العمل الكامل للمشروع في الفيديو المرتبط أدناه. أتمنى أن تكون قد استمتعت ببناء المشروع وتعلمت شيئًا مفيدًا. إذا كانت لديك أي أسئلة ، فاتركها في قسم التعليقات أدناه أو استخدم منتدياتنا.