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

مستشعر درجة حرارة Arduino المطبق لـ COVID 19: 12 خطوة (مع صور)
مستشعر درجة حرارة Arduino المطبق لـ COVID 19: 12 خطوة (مع صور)

فيديو: مستشعر درجة حرارة Arduino المطبق لـ COVID 19: 12 خطوة (مع صور)

فيديو: مستشعر درجة حرارة Arduino المطبق لـ COVID 19: 12 خطوة (مع صور)
فيديو: Бесконтактный термометр инфракрасный датчик MLX90614 с ЖК-дисплеем 2024, شهر نوفمبر
Anonim
مستشعر درجة حرارة اردوينو مطبق لـ COVID 19
مستشعر درجة حرارة اردوينو مطبق لـ COVID 19

يعد مستشعر درجة حرارة Arduino عنصرًا أساسيًا عندما نريد قياس درجة حرارة معالج جسم الإنسان.

يجب أن يكون مستشعر درجة الحرارة مع Arduino على اتصال أو قريبًا لاستقبال وقياس مستوى الحرارة. هذه هي الطريقة التي تعمل بها موازين الحرارة.

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

مرض كوفيد 19 هو أحد الأمراض التي تغير درجة حرارة جسم الإنسان ، لذا فإننا نقدم الأعراض الرئيسية:

السعال ، التعب ، صعوبة التنفس (الحالات الشديدة) الحمى هي أحد الأعراض التي تتميز بارتفاع درجة حرارة الجسم. في هذا المرض ، نحتاج إلى مراقبة هذه الأعراض باستمرار.

وبالتالي ، سنقوم بتطوير مشروع لمراقبة درجة الحرارة وتخزين هذه البيانات على بطاقة ذاكرة من خلال JLCPCB Datalogger باستخدام مستشعر درجة الحرارة مع Arduino.

لذلك ، في هذه المقالة سوف تتعلم:

  • كيف يمكن لـ JLCPCB Datalogger مع مستشعر درجة الحرارة مع Arduino؟
  • كيف يعمل حساس درجة الحرارة مع اردوينو.
  • كيف يعمل مستشعر درجة الحرارة DS18B20 مع Arduino
  • استخدم الأزرار بوظائف متعددة.

بعد ذلك ، سنوضح لك كيف ستطور JLCPCB Datalogger باستخدام مستشعر درجة حرارة Arduino.

اللوازم

اردوينو UNO

لوحة الدوائر المطبوعة JLCPCB

DS18B20 مستشعر درجة الحرارة

اردوينو نانو R3

صداري

شاشة عرض LCD مقاس 16 × 2

مفتاح الضغط

المقاوم 1kR

وحدة بطاقة SD لاردوينو

الخطوة 1: بناء داتالوجير JLCPCB مع مستشعر درجة الحرارة مع Arduino

بناء JLCPCB Datalogger مع مستشعر درجة الحرارة مع Arduino
بناء JLCPCB Datalogger مع مستشعر درجة الحرارة مع Arduino

كما ذكرنا سابقًا ، يتكون المشروع من إنشاء JLCPCB Datalogger مع مستشعر درجة الحرارة باستخدام Arduino ، ومن خلال هذه البيانات ، يمكننا مراقبة درجة حرارة المريض الذي يتم علاجه.

وهكذا ، تظهر الدائرة في الشكل أعلاه.

لذلك ، كما ترى ، تحتوي هذه الدائرة على مستشعر درجة حرارة DS18B20 مع Arduino ، وهو المسؤول عن قياس قراءة درجة حرارة المريض.

بالإضافة إلى ذلك ، سيكون Arduino Nano مسؤولاً عن جمع هذه البيانات وتخزينها على بطاقة ذاكرة وحدة بطاقة SD.

سيتم حفظ كل معلومات مع الوقت الخاص بها ، والذي سيتم قراءته من وحدة RTC Module DS1307.

وبالتالي ، من أجل حفظ بيانات مستشعر درجة الحرارة مع Arduino ، يجب على المستخدم تنفيذ العملية من خلال قائمة التحكم باستخدام شاشة LCD مقاس 16 × 2.

الخطوة 2:

صورة
صورة

كل زر مسؤول عن التحكم في أحد الخيارات ، كما هو موضح على شاشة LCD 16x2 في الشكل 2.

كل خيار مسؤول عن أداء وظيفة في النظام ، كما هو موضح أدناه.

  • يعد الخيار M مسؤولاً عن بدء قياس البيانات وتسجيلها على بطاقة الذاكرة.
  • الخيار H مسؤول عن ضبط ساعات النظام.
  • يُستخدم الخيار O / P لتأكيد إدخال البيانات في النظام أو لإيقاف كتابة البيانات إلى بطاقة الذاكرة.

لفهم عملية التحكم في النظام ، سنقدم الكود أدناه ونناقش نظام التحكم خطوة بخطوة لـ JLCPCB Datalogger مع مستشعر درجة الحرارة مع Arduino.

# تضمين // مكتبة مع جميع وظائف مستشعر DS18B20

# تتضمن # تتضمن // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include LiquidCrystal_I2C lcd (0x27، 16، 2) ؛ // Configurando o endereco do LCD 16x2 para 0x27 # تعريف ONE_WIRE_BUS 8 // Digital Pin لتوصيل مستشعر DS18B20 // تحديد uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS) ؛ مستشعرات دالاس درجة الحرارة (وسلك واحد) ؛ جهاز استشعار عنوان الجهاز 1 ؛ ملف myFile ؛ #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 قياس منطقي = 0 ، ضبط الساعة = 0 ، موافق = 0 ؛ قياس منطقي = 0 ، Adjusthour_state = 0 ، ok_state = 0 ؛ قياس_عملية قياس منطقية = 0 ، عملية الضبط = 0 ؛ البايت الفعلي Min = 0 ، previousMin = 0 ؛ البايت الفعلي الساعة = 0 ، الساعة السابقة = 0 ؛ البايت minUpdate = 0 ؛ int pinoSS = 10 ؛ // Pin 53 para Mega / Pin 10 para UNO int DataTime [7] ؛ void updateHour () {DS1307.getDate (DataTime) ، if (DataTime [5]! = minUpdate) {sprintf (times، "٪ 02d:٪ 02d"، DataTime [4]، DataTime [5])؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("") ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ minUpdate = DataTime [5] ، }} void updateTemp () {DS1307.getDate (DataTime) ، if (DataTime [5]! = minUpdate) {sprintf (times، "٪ 02d:٪ 02d"، DataTime [4]، DataTime [5])؛ lcd.clear () ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("درجة الحرارة:") ؛ lcd.setCursor (14 ، 1) ؛ مجسات.طلب درجات الحرارة () ؛ تعويم TempSensor = sensors.getTempCByIndex (0) ، lcd.print (مستشعر درجة الحرارة) ؛ minUpdate = DataTime [5] ، }} void setup () {Serial.begin (9600)؛ DS1307.begin () ، أجهزة الاستشعار. beegin () ؛ pinMode (pinoSS ، الإخراج) ؛ // Declara pinoSS como saída Wire.begin () ؛ // Inicializacao da Comunicacao I2C lcd.init () ؛ // Inicializacao do LCD lcd.backlight () ؛ lcd.setCursor (3 ، 0) ؛ lcd.print ("نظام درجة الحرارة") ؛ lcd.setCursor (3 ، 1) ؛ lcd.print ("Datalogger") ؛ تأخير (2000) ؛ // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…") ؛ Serial.print ("تعريب المستشعر بنجاح!") ؛ Serial.print (sensors.getDeviceCount () ، DEC) ؛ Serial.println ("Sensor") ؛ if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso.") ؛ // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card.") ؛ إرجاع؛ } DS1307.getDate (DataTime) ، lcd.clear () ؛ sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("1-M 2-H 3-O / P") ؛ } void loop () {updateHour ()؛ // حالات زر القراءة القياس = digitalRead (Buttonmeasure) ؛ Adjusthour = digitalRead (Buttonadjusthour) ؛ طيب = ديجيتال ريد (باتونوك) ؛ إذا (التدبير == 0 && Meas_state == 1) {Meas_state = 0 ؛ } إذا (التدبير == 1 && Meas_state == 0 && Meas_process == 0) {Meas_process = 1 ؛ قياس_حالة = 1 ؛ if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!") ؛ SD.remove ("temp.txt") ؛ myFile = SD.open ("temp.txt"، FILE_WRITE) ، // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!") ؛ } else {Serial.println ("Criou o arquivo!")؛ myFile = SD.open ("temp.txt"، FILE_WRITE) ، // Cria / Abre arquivo.txt myFile.close () ؛ } تأخير (500)؛ myFile.print ("الساعة:") ؛ myFile.println ("درجة الحرارة") ؛ DS1307.getDate (DataTime) ، realMin = previousMin = DataTime [5] ، sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.clear () ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("درجة الحرارة:") ؛ lcd.setCursor (14 ، 1) ؛ مجسات.طلب درجات الحرارة () ؛ تعويم TempSensor = sensors.getTempCByIndex (0) ، lcd.print (مستشعر درجة الحرارة) ؛ } إذا (Adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0؛ } if (} // ----------------------------------------------- - عملية القياس --------------------------------------------- -------------- if (Meas_process == 1) {updateTemp ()؛ البايت contMin = 0 ، contHour = 0 ؛ DS1307.getDate (DataTime) ، realMin = DataTime [5] ، // ------------------------------------------------ --------- عد الدقائق --------------------------------------- ------------------- إذا (realMin! = previousMin) {contMin ++؛ previousMin = الفعليMin ؛ } if (contMin == 5) {sprintf (times، "٪ 02d:٪ 02d"، DataTime [4]، DataTime [5])؛ مجسات.طلب درجات الحرارة () ؛ تعويم TempSensor = sensors.getTempCByIndex (0) ، myFile.print (مرات) ؛ myFile.println (TempSensor) ؛ contMin = 0 ؛ } // ----------------------------------------------- ------------ عدد الساعات ------------------------------------ ---------------------- إذا (realHour! = previousHour) {contHour ++؛ PreviousHour = ساعة فعلية ؛ } إذا (contHour == 5) {myFile.close () ؛ lcd.clear () ؛ lcd.setCursor (5 ، 0) ؛ lcd.print ("انتهى") ؛ lcd.setCursor (5 ، 1) ؛ lcd.print ("عملية") ؛ عملية القياس = 0 ؛ كونتور = 0 ؛ } //----------------------------------------------شرط لإيقاف الدلوجر ---------------------------------------------- ---- إذا (موافق == 1) {myFile.close () ؛ lcd.clear () ؛ lcd.setCursor (6 ، 0) ؛ lcd.print ("موقوفة") ؛ lcd.setCursor (5 ، 1) ؛ lcd.print ("عملية") ؛ عملية القياس = 0 ؛ تأخير (2000) ؛ lcd.clear () ؛ DS1307.getDate (DataTime) ، sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("1-M 2-H 3-O / P") ؛ }} // ---------------------------------------------- ------- ضبط الساعات ----------------------------------------- ---------------------- // Adjust Hour if (adjust_process == 1) {lcd.clear ()؛ DS1307.getDate (DataTime) ، lcd.setCursor (0 ، 0) ؛ lcd.print ("ضبط الساعة:") ؛ sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ // ساعة Adjust do {Meas = digitalRead (Buttonmeasure) ؛ Adjusthour = digitalRead (Buttonadjusthour) ؛ طيب = ديجيتال ريد (باتونوك) ؛ إذا (التدبير == 0 && Meas_state == 1) {Meas_state = 0 ؛ } إذا (التدبير == 1 && Meas_state == 0) {DataTime [4] ++؛ إذا (DataTime [4]> 23) {DataTime [4] = 0 ؛ } Meas_state = 1 ؛ sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ DS1307.setDate (DataTime [0] ، DataTime [1] ، DataTime [2] ، DataTime [3] ، DataTime [4] ، DataTime [5] ، 00) ؛ } إذا (Adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0؛ } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++؛ إذا (DataTime [5]> 59) {DataTime [5] = 0 ؛ } sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ DS1307.setDate (DataTime [0] ، DataTime [1] ، DataTime [2] ، DataTime [3] ، DataTime [4] ، DataTime [5] ، 00) ؛ Adjusthour_state = 1 ؛ } إذا (موافق == 1) {lcd.clear () ؛ DS1307.getDate (DataTime) ، sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("1-M 2-H 3-O") ؛ عملية الضبط = 0 ؛ }} بينما (طيب! = 1) ؛ } // ----------------------------------------------- ------- نهاية ضبط الساعة ---------------------------------------- -------------------}

أولاً ، نحدد جميع المكتبات للتحكم في الوحدات النمطية وإعلان المتغيرات المستخدمة عند برمجة JLCPCB Datalogger باستخدام مستشعر درجة حرارة Arduino. يظهر رمز كتلة أدناه.

الخطوه 3:

# تضمين // مكتبة مع جميع وظائف مستشعر DS18B20

# تتضمن # تتضمن // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include LiquidCrystal_I2C lcd (0x27، 16، 2) ؛ // Configurando o endereco do LCD 16x2 para 0x27 # تعريف ONE_WIRE_BUS 8 // Digital Pin لتوصيل مستشعر DS18B20 // تحديد uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS) ؛ مستشعرات دالاس درجة الحرارة (وسلك واحد) ؛ جهاز استشعار عنوان الجهاز 1 ؛ ملف myFile ؛ #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 قياس منطقي = 0 ، ضبط الساعة = 0 ، موافق = 0 ؛ قياس منطقي = 0 ، Adjusthour_state = 0 ، ok_state = 0 ؛ قياس_عملية قياس منطقية = 0 ، عملية الضبط = 0 ؛ البايت الفعلي Min = 0 ، previousMin = 0 ؛ البايت الفعلي الساعة = 0 ، الساعة السابقة = 0 ؛ بايت minUpdate = 0 ؛ int pinoSS = 10 ؛ // Pin 53 para Mega / Pin 10 para UNO int DataTime [7] ؛

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

الإعداد باطل()

{Serial.begin (9600) ، DS1307.begin () ، أجهزة الاستشعار. beegin () ؛ pinMode (pinoSS ، الإخراج) ؛ // Declara pinoSS como saída Wire.begin () ؛ // Inicializacao da Comunicacao I2C lcd.init () ؛ // Inicializacao do LCD lcd.backlight () ؛ lcd.setCursor (3 ، 0) ؛ lcd.print ("نظام درجة الحرارة") ؛ lcd.setCursor (3 ، 1) ؛ lcd.print ("Datalogger") ؛ تأخير (2000) ؛ // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…") ؛ Serial.print ("تعريب المستشعر بنجاح!") ؛ Serial.print (sensors.getDeviceCount () ، DEC) ؛ Serial.println ("Sensor") ؛ if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso.") ؛ // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card.") ؛ إرجاع؛ } DS1307.getDate (DataTime) ، lcd.clear () ؛ sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("1-M 2-H 3-O / P") ؛ }

أولاً ، تم بدء الاتصال التسلسلي وساعة الوقت الفعلي ومستشعر درجة الحرارة لـ Arduino DS18B20. بعد تهيئة الأجهزة واختبارها ، تمت طباعة الرسالة مع خيارات القائمة على شاشة LCD مقاس 16 × 2. تظهر هذه الشاشة في الشكل 1.

الخطوة الرابعة:

بعد ذلك ، يقوم النظام بقراءة الساعات وتحديث القيمة عن طريق استدعاء وظيفة updateHour. وبالتالي ، فإن الغرض من هذه الوظيفة هو تقديم قيمة الساعة كل دقيقة. يتم عرض كتلة رمز الوظيفة أدناه.

تحديث باطل ساعة ()

{DS1307.getDate (DataTime) ، if (DataTime [5]! = minUpdate) {sprintf (times، "٪ 02d:٪ 02d"، DataTime [4]، DataTime [5])؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("") ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ minUpdate = DataTime [5] ، }}

الخطوة الخامسة:

صورة
صورة

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

الخطوة 6: قائمة التحكم JLCPCB Datalogger

قائمة التحكم JLCPCB Datalogger
قائمة التحكم JLCPCB Datalogger

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

عند الضغط على الزر ، يجب أن تظهر الشاشة التالية الموضحة في الشكل أعلاه.

الخطوة السابعة:

صورة
صورة

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

يتم عرض جزء الكود للتحكم في الساعات أدناه.

إذا (Adjusthour == 0 && Adjusthour_state == 1)

{Adjusthour_state = 0 ، } if (}

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

// ------------------------------------------------ ----- ضبط الساعات ------------------------------------------- --------------------

// Adjust Hour if (adjust_process == 1) {lcd.clear () ؛ DS1307.getDate (DataTime) ، lcd.setCursor (0 ، 0) ؛ lcd.print ("ضبط الساعة:") ؛ sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ // ساعة Adjust do {Meas = digitalRead (Buttonmeasure) ؛ Adjusthour = digitalRead (Buttonadjusthour) ؛ طيب = ديجيتال ريد (باتونوك) ؛ إذا (التدبير == 0 && Meas_state == 1) {Meas_state = 0 ؛ } إذا (التدبير == 1 && Meas_state == 0) {DataTime [4] ++؛ إذا (DataTime [4]> 23) {DataTime [4] = 0 ؛ } Meas_state = 1 ؛ sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ DS1307.setDate (DataTime [0] ، DataTime [1] ، DataTime [2] ، DataTime [3] ، DataTime [4] ، DataTime [5] ، 00) ؛ } إذا (Adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0؛ } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++؛ إذا (DataTime [5]> 59) {DataTime [5] = 0 ؛ } sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ DS1307.setDate (DataTime [0] ، DataTime [1] ، DataTime [2] ، DataTime [3] ، DataTime [4] ، DataTime [5] ، 00) ؛ Adjusthour_state = 1 ؛ } إذا (موافق == 1) {lcd.clear () ؛ DS1307.getDate (DataTime) ، sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("1-M 2-H 3-O") ؛ عملية الضبط = 0 ؛ }} بينما (طيب! = 1) ؛ }

في هذه الحالة ، سيعرض النظام الرسالة الموضحة في الشكل 4 ثم انتظر حتى يتم ضبط القيم داخليًا في حلقة while. عند ضبط الساعات ، تغيرت وظائف هذه الأزرار ، أي أنها متعددة الوظائف.

يتيح لك ذلك استخدام زر لأكثر من وظيفة وتقليل تعقيد النظام.

وبهذه الطريقة يقوم المستخدم بضبط قيمة الساعات والدقائق ثم حفظ البيانات في النظام عند الضغط على زر Ok.

كما ترى ، سيقرأ النظام الأزرار الثلاثة ، كما هو موضح أدناه.

قياس = digitalRead (Buttonmeasure) ؛

Adjusthour = digitalRead (Buttonadjusthour) ؛ طيب = ديجيتال ريد (باتونوك) ؛

لاحظ أن زر القياس (Buttonmeasure) قد غيّر وظيفته. سيتم استخدامه الآن لضبط قيم الساعة ، كما هو موضح أدناه ، والشرطان التاليان متشابهان ويتم استخدامهما لضبط الساعات والدقائق ، كما هو موضح أعلاه.

إذا (القياس == 0 && Meas_state == 1)

{Meas_state = 0 ؛ } إذا (التدبير == 1 && Meas_state == 0) {DataTime [4] ++؛ إذا (DataTime [4]> 23) {DataTime [4] = 0 ؛ } Meas_state = 1 ؛ sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ DS1307.setDate (DataTime [0] ، DataTime [1] ، DataTime [2] ، DataTime [3] ، DataTime [4] ، DataTime [5] ، 00) ؛ } إذا (Adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0؛ } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++؛ إذا (DataTime [5]> 59) {DataTime [5] = 0 ؛ } sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 1) ؛ lcd.print (مرات) ؛ DS1307.setDate (DataTime [0] ، DataTime [1] ، DataTime [2] ، DataTime [3] ، DataTime [4] ، DataTime [5] ، 00) ؛ Adjusthour_state = 1 ؛ }

لذلك ، في كل مرة يتم فيها الضغط على أحد الزرين ، سيتم تغيير قيمة الموضعين 4 و 5 لمتجه DataTime وثانيًا ، سيتم حفظ هذه القيم في ذاكرة DS1307.

بعد إجراء التعديلات ، يجب على المستخدم النقر فوق الزر "موافق" ، لإنهاء العملية. عند حدوث هذا الحدث ، سيقوم النظام بتنفيذ سطور التعليمات البرمجية التالية.

إذا (موافق == 1)

{lcd.clear () ، DS1307.getDate (DataTime) ، sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (0 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("1-M 2-H 3-O") ؛ عملية الضبط = 0 ؛ }

سيدخل الشرط أعلاه ويقدم رسالة الساعة وقائمة الخيارات للمستخدم.

أخيرًا ، يجب على المستخدم بدء عملية مراقبة المريض من خلال مستشعر درجة الحرارة باستخدام Arduino JLCPCB Datalogger.

للقيام بذلك ، يجب على المستخدم الضغط على زر القياس ، المتصل بالرقم الرقمي 2.

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

الخطوة الثامنة:

صورة
صورة

لذلك ، عند الضغط على الزر ، سيتم تنفيذ الجزء التالي من التعليمات البرمجية.

إذا (القياس == 0 && Meas_state == 1)

{Meas_state = 0 ؛ } إذا (التدبير == 1 && Meas_state == 0 && Meas_process == 0) {Meas_process = 1 ؛ قياس_حالة = 1 ؛ if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!") ؛ SD.remove ("temp.txt") ؛ myFile = SD.open ("temp.txt"، FILE_WRITE) ، // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!") ؛ } else {Serial.println ("Criou o arquivo!")؛ myFile = SD.open ("temp.txt"، FILE_WRITE) ، // Cria / Abre arquivo.txt myFile.close () ؛ } تأخير (500)؛ myFile.print ("الساعة:") ؛ myFile.println ("درجة الحرارة") ؛ DS1307.getDate (DataTime) ، realMin = previousMin = DataTime [5] ، sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.clear () ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("درجة الحرارة:") ؛ lcd.setCursor (14 ، 1) ؛ مجسات.طلب درجات الحرارة () ؛ تعويم TempSensor = sensors.getTempCByIndex (0) ، lcd.print (مستشعر درجة الحرارة) ؛ }

في جزء الكود أعلاه ، سيقوم النظام بتعيين قيمة 1 لمتغير Meas_process. وهي مسؤولة عن السماح بحفظ البيانات على بطاقة SD.

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

بعد ذلك ، سيتم إنشاء عمودين: أحدهما للساعات والآخر لدرجة الحرارة داخل الملف النصي.

بعد ذلك ، سيعرض الساعات ودرجة الحرارة على شاشة LCD ، كما هو موضح في الشكل أعلاه.

بعد ذلك ، سيقوم تدفق التعليمات البرمجية بتنفيذ كتلة البرنامج التالية.

إذا (إجراء القياس == 1)

{updateTemp () ، البايت contMin = 0 ، contHour = 0 ؛ DS1307.getDate (DataTime) ، realMin = DataTime [5] ، // ------------------------------------------------ --------- عد الدقائق --------------------------------------- ------------------- إذا (realMin! = previousMin) {contMin ++؛ previousMin = الفعليMin ؛ } if (contMin == 5) {sprintf (times، "٪ 02d:٪ 02d"، DataTime [4]، DataTime [5])؛ مجسات.طلب درجات الحرارة () ؛ تعويم TempSensor = sensors.getTempCByIndex (0) ، myFile.print (مرات) ؛ myFile.println (TempSensor) ؛ contMin = 0 ؛ } // ----------------------------------------------- ------------ عدد الساعات ------------------------------------ ---------------------- إذا (realHour! = previousHour) {contHour ++؛ PreviousHour = ساعة فعلية ؛ } إذا (contHour == 5) {myFile.close () ؛ lcd.clear () ؛ lcd.setCursor (5 ، 0) ؛ lcd.print ("انتهى") ؛ lcd.setCursor (5 ، 1) ؛ lcd.print ("عملية") ؛ عملية القياس = 0 ؛ كونتور = 0 ؛ } //----------------------------------------------شرط لإيقاف الدالوجر -----

أولاً ، سيتم تنفيذ وظيفة updateTemp (). تشبه وظيفة updateHour () ؛ ومع ذلك ، فإنه يعرض درجة الحرارة كل 1 دقيقة.

بعد ذلك ، سيقوم النظام بجمع بيانات الوقت من Real-Time Clock وتخزين قيمة الدقيقة الحالية في متغير CurrentMin.

بعد ذلك ، سيتحقق مما إذا كان المتغير min قد تم تغييره ، وفقًا للحالة المعروضة أدناه

إذا (الدنيا! = الحد السابق)

{contMin ++ ؛ previousMin = الفعليMin ؛ }

لذلك ، إذا كان متغير الدقيقة الحالي مختلفًا عن القيمة السابقة ، فهذا يعني حدوث تغيير في القيمة ، وبهذه الطريقة يكون الشرط صحيحًا وستزيد قيمة عدد الدقائق (تابع) والقيمة الحالية سيتم تعيين المتغير السابق Min ، لتخزين قيمته السابقة.

لذلك ، عندما تكون قيمة هذا العدد تساوي 5 ، فهذا يعني أن 5 دقائق قد مرت ويجب على النظام إجراء قراءة جديدة لدرجة الحرارة وحفظ قيمة الساعة ودرجة الحرارة في ملف سجل بطاقة SD.

إذا (تابع == 5)

{sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ مجسات.طلب درجات الحرارة () ؛ تعويم TempSensor = sensors.getTempCByIndex (0) ، myFile.print (مرات) ؛ myFile.println (TempSensor) ؛ contMin = 0 ؛ }

بهذه الطريقة ، ستتكرر هذه العملية حتى الوصول إلى قيمة 5 ساعات من مراقبة درجة حرارة المريض باستخدام مستشعر درجة الحرارة باستخدام Arduino.

يتم عرض جزء الرمز أدناه وهو مشابه لعدد الدقائق الذي تم تقديمه أعلاه.

// ------------------------------------------------ ----------- عد الساعات ------------------------------------- ---------------------

if (activeHour! = previousHour) {contHour ++؛ PreviousHour = ساعة فعلية ؛ } إذا (contHour == 5) {myFile.close () ؛ lcd.clear () ؛ lcd.setCursor (5 ، 0) ؛ lcd.print ("انتهى") ؛ lcd.setCursor (5 ، 1) ؛ lcd.print ("عملية") ؛ عملية القياس = 0 ؛ كونتور = 0 ؛ }

بعد مرور 5 ساعات من المراقبة ، سيقوم النظام بإغلاق ملف السجل وتقديم رسالة "تم الانتهاء" للمستخدم.

بالإضافة إلى ذلك ، يمكن للمستخدم الضغط على زر Ok / Pause لإيقاف تسجيل البيانات. عند حدوث ذلك ، سيتم تنفيذ كتلة التعليمات البرمجية التالية.

// ---------------------------------------------- الشرط أوقف الدلوجر ----------------------------------------------- -

إذا (موافق == 1) {myFile.close () ؛ lcd.clear () ؛ lcd.setCursor (6 ، 0) ؛ lcd.print ("موقوفة") ؛ lcd.setCursor (5 ، 1) ؛ lcd.print ("عملية") ؛ عملية القياس = 0 ؛ تأخير (2000) ؛ lcd.clear () ؛ DS1307.getDate (DataTime) ، sprintf (مرات ، "٪ 02d:٪ 02d" ، DataTime [4] ، DataTime [5]) ؛ lcd.setCursor (5 ، 0) ؛ lcd.print (مرات) ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("1-M 2-H 3-O / P") ؛ }

الخطوة 9:

صورة
صورة

بعد ذلك ، يقوم النظام بإغلاق الملف وتقديم الرسالة "Stoped Process" كما هو موضح في الشكل 8.

الخطوة 10:

صورة
صورة

بعد ذلك ، سيقوم النظام بطباعة شاشة الوقت وخيارات القائمة ، كما هو موضح في الشكل 9.

الخطوة 11: الوصول إلى بيانات وحدة بطاقة SD باستخدام Arduino

الوصول إلى بيانات وحدة بطاقة SD باستخدام Arduino
الوصول إلى بيانات وحدة بطاقة SD باستخدام Arduino

بعد عملية مراقبة JLCPCB Datalogger باستخدام مستشعر درجة الحرارة باستخدام Arduino ، من الضروري إزالة بطاقة الذاكرة والوصول إلى البيانات الموجودة على الكمبيوتر.

لعرض البيانات وتحليلها بجودة أفضل ، قم بتصدير / نسخ جميع معلومات الملف النصي إلى Excel ، وبعد ذلك يمكنك رسم الرسوم البيانية وتحليل النتائج التي تم الحصول عليها.

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

يسمح لنا Datalogger JLCPCB المزود بمستشعر درجة الحرارة مع Arduino ، بالإضافة إلى قياس درجة الحرارة ، بتسجيل المعلومات حول سلوك درجة حرارة المريض على مدار فترة زمنية.

باستخدام هذه البيانات المخزنة ، من الممكن تحليل وفهم سلوك درجة حرارة المريض المصاب بفيروس COVID 19.

بالإضافة إلى ذلك ، من الممكن تقييم مستوى درجة الحرارة وربط قيمتها بتطبيق نوع من الأدوية.

لذلك ، من خلال هذه البيانات ، يهدف Datalogger JLCPCB المزود بمستشعر درجة الحرارة لـ Arduino إلى مساعدة الأطباء والممرضات في دراسة سلوك المرضى.

أخيرًا ، نشكر شركة JLCPCB على دعمها لتطوير المشروع ونأمل أن تتمكن من استخدامه

يمكن تنزيل جميع الملفات واستخدامها بحرية من قبل أي مستخدم.

موصى به: