תוכן עניינים:
- אספקה
- שלב 1: בניית ה- JLCPCB Datalogger עם חיישן טמפרטורה עם Arduino
- שלב 2:
- שלב 3:
- שלב 4:
- שלב 5:
- שלב 6: תפריט הבקרה של JLCPCB Datalogger
- שלב 7:
- שלב 8:
- שלב 9:
- שלב 10:
- שלב 11: גישה לנתוני מודול כרטיס SD באמצעות Arduino
- שלב 12: סיכום
וִידֵאוֹ: חיישן טמפרטורה עבור Arduino מיושם עבור COVID 19: 12 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
חיישן הטמפרטורה עבור Arduino הוא מרכיב בסיסי כאשר אנו רוצים למדוד את הטמפרטורה של מעבד של גוף האדם.
חיישן הטמפרטורה עם Arduino חייב להיות במגע או קרוב כדי לקבל ולמדוד את רמת החום. כך פועלים מדחומים.
מכשירים אלה משמשים במיוחד למדידת טמפרטורת הגוף של אנשים חולים, שכן הטמפרטורה היא אחד הגורמים הראשונים המשתנים בגוף האדם כאשר יש חריגה או מחלה.
אחת המחלות שמשנות את הטמפרטורה של גוף האדם היא COVID 19. לכן, אנו מציגים את הסימפטומים העיקריים:
עייפות בשיעול קשיי נשימה (מקרים חמורים) חום חום הוא סימפטום שהמאפיין העיקרי שלו הוא עלייה בטמפרטורת הגוף. במחלה זו, עלינו לעקוב כל הזמן אחר הסימפטומים הללו.
לפיכך, נפתח פרויקט לניטור הטמפרטורה ושמירה של נתונים אלה בכרטיס זיכרון באמצעות JLCPCB Datalogger באמצעות חיישן טמפרטורה עם Arduino.
לכן, במאמר זה תלמד:
- כיצד פועל JLCPCB Datalogger עם חיישן טמפרטורה עם Arduino?
- איך עובד חיישן הטמפרטורה עם Arduino.
- כיצד עובד חיישן הטמפרטורה DS18B20 עם Arduino
- השתמש בלחצנים עם מספר פונקציות.
לאחר מכן, נראה לך כיצד תפתח את JLCPCB Datalogger שלך באמצעות חיישן הטמפרטורה של Arduino.
אספקה
ארדואינו UNO
מעגל מודפס JLCPCB
חיישן טמפרטורה DS18B20
Arduino Nano R3
מגשרים
תצוגת LCD 16 x 2
לחץ על כפתור המתג
התנגדות 1kR
מודול כרטיס SD עבור Arduino
שלב 1: בניית ה- JLCPCB Datalogger עם חיישן טמפרטורה עם Arduino
כפי שצוין לעיל, הפרויקט מורכב מיצירת מאגר נתונים של JLCPCB עם חיישן טמפרטורה עם Arduino, ובאמצעות נתונים אלה נוכל לעקוב אחר הטמפרטורה של המטופל המטופל.
לפיכך, המעגל מוצג באיור לעיל.
לכן, כפי שאתה יכול לראות, במעגל זה יש חיישן טמפרטורה DS18B20 עם Arduino, האחראי למדידת קריאת הטמפרטורה של המטופל.
בנוסף, ה- Arduino Nano יהיה אחראי על איסוף נתונים אלה ושמירתם בכרטיס הזיכרון של מודול כרטיס ה- SD.
כל מידע יישמר בזמן המתאים לו, שייקרא מתוך מודול RTC DS1307.
לפיכך, על מנת לשמור את נתוני חיישן הטמפרטורה עם Arduino, על המשתמש לבצע את התהליך באמצעות תפריט הבקרה עם מסך 16x2.
שלב 2:
כל כפתור אחראי לשליטה באופציה, כפי שמוצג במסך LCD 16x2 באיור 2.
כל אופציה אחראית לביצוע פונקציה במערכת, כפי שמוצג להלן.
- אפשרות M אחראית על התחלת המדידה והקלטת הנתונים בכרטיס הזיכרון.
- אופציה H אחראית על התאמת שעות המערכת.
- אפשרות O/P משמשת לאישור הזנת הנתונים במערכת או להשהיית כתיבת הנתונים לכרטיס הזיכרון.
כדי להבין את תהליך בקרת המערכת, נספק את הקוד שלהלן ונדון במערכת הבקרה שלב אחר שלב של ה- JLCPCB Datalogger עם חיישן טמפרטורה עם Arduino.
#include // ספרייה עם כל הפונקציות של חיישן DS18B20
#include #include // Biblioteca I2C לעשות LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire ספריית חיישן DS18B20 #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // תצורת אוזניות ל- LCD 16x2 עבור 0x27 #define ONE_WIRE_BUS 8 // סיכה דיגיטלית לחיבור חיישן DS18B20 // הגדר את מצב ההפעלה של OneWire עבור חיישן OneWire oneWire (ONE_WIRE_BUS); חיישני טמפרטורה של Dallas (& oneWire); חיישן DeviceAddress1; קובץ myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool measure = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool Measure_process = 0, Adjust_process = 0; בתים actualMin = 0, previousMin = 0; בתים actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // פין 53 עבור מגה / פין 10 עבור UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (פעמים, "%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 (פעמים, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (פעמים); lcd.setCursor (0, 1); lcd.print ("טמפרטורה:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} הגדרת void () {Serial.begin (9600); DS1307.begin (); חיישנים.התחל (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao לעשות 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 ("חיישן"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("כרטיס SD pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD SD."); לַחֲזוֹר; } 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"); } לולאת חלל () {updateHour (); // מצבי כפתור קריאה מדידה = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); אם (Measure == 0 && Measure_state == 1) {measure_state = 0; } if (measure == 1 && measure_state == 0 && measure_process == 0) {measure_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!"); } אחר {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); actualMin = 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); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } אם (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } אם (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; } // ----------------------------------------------- --- תהליך מדידה -------------------------------------------- -------------- if (measure_process == 1) {updateTemp (); בתים contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- דקות ספירה --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (פעמים, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (פעמים); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ שעות ספירה ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("סיים"); lcd.setCursor (5, 1); lcd.print ("תהליך"); Measure_process = 0; contHour = 0; } // ---------------------------------------------- מצב לעצור את מאגר הנתונים ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("עצור"); lcd.setCursor (5, 1); lcd.print ("תהליך"); Measure_process = 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_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 (פעמים); // התאמת שעות לעשות {measure = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); אם (Measure == 0 && Measure_state == 1) {measure_state = 0; } if (measure == 1 && measure_state == 0) {DataTime [4] ++; אם (DataTime [4]> 23) {DataTime [4] = 0; } מדידה_מדינה = 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"); adjust_process = 0; }} בעוד (בסדר! = 1); } // ----------------------------------------------- ------- סיום התאמת שעות ---------------------------------------- -------------------}
ראשית, אנו מגדירים את כל הספריות לשליטה במודולים ולהצהרת משתנים המשמשים בעת תכנות ה- JLCPCB Datalogger עם חיישן טמפרטורה עבור Arduino. בלוק הקוד מוצג להלן.
שלב 3:
#include // ספרייה עם כל הפונקציות של חיישן DS18B20
#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // תצורת אוזניות ל- LCD 16x2 עבור 0x27 #define ONE_WIRE_BUS 8 // סיכה דיגיטלית לחיבור חיישן DS18B20 // הגדר את מצב ההפעלה של OneWire עבור חיישן OneWire oneWire (ONE_WIRE_BUS); חיישני טמפרטורה של Dallas (& oneWire); חיישן DeviceAddress1; קובץ myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool measure = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool Measure_process = 0, Adjust_process = 0; בתים actualMin = 0, previousMin = 0; בתים actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // פין 53 עבור מגה / פין 10 עבור UNO int DataTime [7];
להלן, יש לנו את פונקציית הגדרת הריק. פונקציה זו משמשת להגדרת הסיכות ואתחול ההתקן, כפי שמוצג להלן.
הגדרת חלל ()
{Serial.begin (9600); DS1307.begin (); חיישנים.התחל (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao לעשות 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 ("חיישן"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("כרטיס SD pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do Card SD."); לַחֲזוֹר; } 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 בגודל 16x2. מסך זה מוצג באיור 1.
שלב 4:
לאחר מכן, המערכת קוראת את השעות ומעדכנת את הערך על ידי קריאה לפונקציית updateHour. לפיכך, פונקציה זו נועדה להציג את הערך השעתי בכל דקה. בלוק קוד הפונקציה מוצג להלן.
void updateHour ()
{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (פעמים, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (פעמים); minUpdate = DataTime [5]; }}
שלב 5:
בנוסף לעדכון השעות, המשתמש יכול לבחור באחד משלושת הכפתורים כדי לעקוב אחר המטופל באמצעות חיישן טמפרטורה עם Arduino. המעגל מוצג באיור למעלה.
שלב 6: תפריט הבקרה של JLCPCB Datalogger
ראשית, על המשתמש לבדוק ולשנות את שעות המערכת. תהליך זה מתבצע בלחיצה על הכפתור השני.
כאשר לוחצים על הכפתור, יופיע המסך הבא שמוצג באיור למעלה.
שלב 7:
ממסך זה, המשתמש יוכל להזין את ערכי השעה והדקה מהכפתורים המחוברים לפינים הדיגיטליים 2 ו -3 של ה- Arduino. הכפתורים מוצגים באיור למעלה.
חלק הקוד לשליטה בשעות מוצג להלן.
אם (adjusthour == 0 && adjusthour_state == 1)
{adjusthour_state = 0; } אם (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; }
כאשר לוחצים על כפתור השעות והמשתנה Measure_process מוגדר ל- 0, המצב יהיה נכון והמשתנה adjust_process יוגדר ל- 1. משתנה Measure_process משמש לאותת שהמערכת עוקבת אחר הטמפרטורה. כאשר הערך שלה הוא 0, המערכת תאפשר למשתמש להיכנס לתפריט הגדרת הזמן. לכן, לאחר שהמשתנה adjust_process יקבל ערך של 1, המערכת תיכנס למצב התאמת הזמן. בלוק קוד זה מוצג להלן.
// ------------------------------------------------ ----- התאמת שעות ------------------------------------------- --------------------
// כוונן את השעה אם (just_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 (פעמים); // התאמת שעות לעשות {measure = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); אם (Measure == 0 && Measure_state == 1) {measure_state = 0; } if (measure == 1 && measure_state == 0) {DataTime [4] ++; אם (DataTime [4]> 23) {DataTime [4] = 0; } מדידה_מדינה = 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"); adjust_process = 0; }} בעוד (בסדר! = 1); }
במצב זה, המערכת תציג את ההודעה המוצגת באיור 4 ולאחר מכן תחכה עד שהערכים יתאימו פנימית בלולאת ה- while. בעת התאמת השעות, הלחצנים האלה משנים את הפונקציות שלהם, כלומר הם רב תכליתיים.
זה מאפשר לך להשתמש בכפתור ליותר מפונקציה אחת ולהפחית את מורכבות המערכת.
בדרך זו, המשתמש יתאים את ערך השעות והדקות ולאחר מכן ישמור את הנתונים במערכת בעת לחיצה על כפתור OK.
כפי שאתה יכול לראות, המערכת תקרא את 3 הכפתורים, כפי שמוצג להלן.
measure = digitalRead (Buttonmeasure);
adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
שים לב שכפתור המדידה (Buttonmeasure) שינה את הפונקציה שלו. כעת הוא ישמש להתאמת ערכי השעה, כפי שמוצג להלן. שני התנאים הבאים דומים ומשמשים להתאמת השעות והדקות, כפי שמוצג למעלה.
אם (Measure == 0 && Measure_state == 1)
{מדינת_מצב = 0; } if (measure == 1 && measure_state == 0) {DataTime [4] ++; אם (DataTime [4]> 23) {DataTime [4] = 0; } מדידה_מדינה = 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.
לאחר ההתאמות, על המשתמש ללחוץ על הלחצן Ok כדי לסיים את התהליך. כאשר אירוע זה מתרחש, המערכת תבצע את שורות הקוד הבאות.
אם (בסדר == 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"); adjust_process = 0; }
הוא יזין את המצב הנ ל ויציג בפני המשתמש את הודעת השעה ותפריט האפשרויות.
לבסוף, על המשתמש להתחיל את תהליך ניטור המטופל באמצעות חיישן הטמפרטורה עם Arduino JLCPCB Datalogger.
לשם כך על המשתמש ללחוץ על כפתור המדידה המחובר לסיכה דיגיטלית 2.
לאחר מכן, המערכת תבצע את הקריאה עם חיישן הטמפרטורה עבור Arduino ותשמור אותה על כרטיס הזיכרון. אזור המעגל מוצג באיור למעלה.
שלב 8:
לכן, כאשר לוחצים על הכפתור, החלק הבא של הקוד יבוצע.
אם (Measure == 0 && Measure_state == 1)
{מדינת_מצב = 0; } if (measure == 1 && measure_state == 0 && measure_process == 0) {measure_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!"); } אחר {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); actualMin = 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); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
בחלק הקוד שלמעלה, המערכת תקצה ערך 1 למשתנה Measure_process. היא אחראית לאפשר שמירת הנתונים בכרטיס ה- SD.
בנוסף, המערכת תבדוק אם קיים קובץ טקסט עם יומן נתונים או לא. אם יש קובץ, המערכת תמחק ותיצור קובץ חדש לאחסון הנתונים.
לאחר מכן הוא ייצור שתי עמודות: אחת לשעות ואחת לטמפרטורה בתוך קובץ הטקסט.
לאחר מכן, הוא יציג את השעות והטמפרטורה על מסך ה- LCD, כפי שמוצג באיור למעלה.
לאחר מכן, זרימת הקוד תבצע את חסימת התוכנית הבאה.
אם (Measure_process == 1)
{updateTemp (); בתים contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- דקות ספירה --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (פעמים, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (פעמים); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ שעות ספירה ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("סיים"); lcd.setCursor (5, 1); lcd.print ("תהליך"); Measure_process = 0; contHour = 0; } // ---------------------------------------------- מצב כדי לעצור את מאגר הנתונים -----
ראשית, הפונקציה updateTemp () תבוצע. הוא דומה לפונקציה updateHour (); עם זאת, הוא מציג את הטמפרטורה כל דקה.
לאחר מכן, המערכת תאסוף את נתוני הזמן מהשעון בזמן אמת ותשמור את ערך הדקה הנוכחי במשתנה currentMin.
לאחר מכן, הוא יבדוק אם משתנה המינימום השתנה, בהתאם למצב המוצג להלן
אם (actualMin! = previousMin)
{contMin ++; previousMin = actualMin; }
לכן, אם משתנה הדקה הנוכחי שונה מהערך הקודם, המשמעות היא שחל שינוי בערך. כך המצב יהיה נכון והערך של ספירת הדקות יעלה (contMin) והערך הנוכחי יוקצה למשתנה previousMin, כדי לאחסן את הערך הקודם שלו.
לכן, כאשר הערך של ספירה זו שווה ל -5, פירוש הדבר שחלפו 5 דקות ועל המערכת לבצע קריאת טמפרטורה חדשה ולשמור את ערך השעה והטמפרטורה בקובץ יומן כרטיס ה- SD.
אם (contMin == 5)
{sprintf (פעמים, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (פעמים); myFile.println (TempSensor); contMin = 0; }
בדרך זו, תהליך זה יחזור על עצמו עד להגעה לערך של 5 שעות של ניטור הטמפרטורה של המטופל באמצעות חיישן הטמפרטורה עם Arduino.
חלק הקוד מוצג להלן ודומה לספירת הדקות שהוצגה למעלה.
// ------------------------------------------------ ----------- שעות ספירה ------------------------------------- ---------------------
אם (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("סיים"); lcd.setCursor (5, 1); lcd.print ("תהליך"); Measure_process = 0; contHour = 0; }
לאחר שהגיעה ל -5 שעות של ניטור, המערכת תסגור את קובץ היומן ותציג בפני המשתמש את ההודעה "תהליך סיים".
בנוסף, המשתמש יכול ללחוץ על הלחצן Ok/Pause על מנת להפסיק את הקלטת הנתונים. כאשר זה קורה, בלוק הקוד הבא יבוצע.
// ---------------------------------------------- תנאי ל עצור את מאגר הנתונים ----------------------------------------------- ---
if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("עצור"); lcd.setCursor (5, 1); lcd.print ("תהליך"); Measure_process = 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:
לאחר מכן, המערכת תסגור את הקובץ ותציג את ההודעה "תהליך שהופסק", כפי שמוצג באיור 8.
שלב 10:
לאחר מכן, המערכת תדפיס את מסך הזמן ואת אפשרויות התפריט, כפי שמוצג באיור 9.
שלב 11: גישה לנתוני מודול כרטיס SD באמצעות Arduino
לאחר תהליך הניטור של JLCPCB Datalogger עם חיישן הטמפרטורה עם Arduino, יש צורך להסיר את כרטיס הזיכרון ולגשת לנתונים במחשב.
כדי להציג ולנתח את הנתונים באיכות טובה יותר, ייצא / העתק את כל המידע של קובץ הטקסט ל- Excel. לאחר מכן תוכל לשרטט גרפים ולנתח את התוצאות שהתקבלו.
שלב 12: סיכום
ה- JLCPCB Datalogger עם חיישן טמפרטורה עם Arduino מאפשר לנו, בנוסף למדידת הטמפרטורה, לרשום מידע על התנהגות הטמפרטורה של המטופל לאורך זמן.
בעזרת נתונים מאוחסנים אלה ניתן לנתח ולהבין כיצד מתנהגת הטמפרטורה של החולה הנגוע ב- COVID 19.
בנוסף, ניתן להעריך את רמת הטמפרטורה ולשייך את ערכה ליישום סוג כלשהו של תרופות.
לכן, באמצעות נתונים אלה, ה- JLCPCB Datalogger עם חיישן טמפרטורה עבור Arduino נועד לסייע לרופאים ואחיות בחקר התנהגות החולים.
לבסוף, אנו מודים לחברת JLCPCB על התמיכה בפיתוח הפרויקט ומקווים שתוכלו להשתמש בו
כל משתמש יכול להוריד את כל הקבצים ולהשתמש בהם באופן חופשי.
מוּמלָץ:
מסנן Low Pass פעיל מיושם בפרויקטים עם Arduino: 4 שלבים
מסנן Low Pass פעיל מיושם בפרויקטים עם Arduino: מסנן ה- low pass הוא מעגלים אלקטרוניים מצוינים לסינון אותות טפילים מהפרויקטים שלך. בעיה נפוצה בפרויקטים עם Arduino ומערכות עם חיישנים הפועלים קרוב למעגלי חשמל היא הימצאותם של אותות "טפילים"
Raspberry Pi - TMP100 חיישן טמפרטורה חיישן Java הדרכה: 4 שלבים
Raspberry Pi-חיישן טמפרטורה TMP100 מדריך Java: TMP100 חיישן טמפרטורה דיגיטלי I2C MINI בעל דיוק גבוה, הספק נמוך. TMP100 אידיאלי למדידת טמפרטורה ממושכת. מכשיר זה מציע דיוק של ± 1 ° C ללא צורך בכיול או מיזוג אות רכיב חיצוני. הוא
קריאת טמפרטורה באמצעות חיישן טמפרטורה LM35 עם Arduino Uno: 4 שלבים
קריאת טמפרטורה באמצעות חיישן טמפרטורה LM35 עם Arduino Uno: היי חברים במדריך זה נלמד כיצד להשתמש ב- LM35 עם Arduino. Lm35 הוא חיישן טמפרטורה שיכול לקרוא ערכי טמפרטורה מ -55 ° C עד 150 ° C. זהו מכשיר בעל 3 מסופים המספק מתח אנלוגי ביחס לטמפרטורה. היג
נקודת גישה ESP8266 NodeMCU (שרת אינטרנט) עבור שרת אינטרנט עם חיישן טמפרטורה DT11 והדפסת טמפרטורה ולחות בדפדפן: 5 שלבים
נקודת גישה ESP8266 NodeMCU (AP) עבור שרת אינטרנט עם חיישן טמפרטורה DT11 וטמפרטורת הדפסה ולחות בדפדפן: שלום חברים ברוב הפרויקטים בהם אנו משתמשים ב- ESP8266 וברוב הפרויקטים אנו משתמשים ב- ESP8266 כשרת אינטרנט כך שניתן יהיה לגשת לנתונים ב כל מכשיר באמצעות wifi על ידי גישה לשרת האינטרנט המתארח על ידי ESP8266 אך הבעיה היחידה היא שאנחנו צריכים נתב עובד עבור
Raspberry Pi - TMP100 חיישן טמפרטורה חיישן פייתון הדרכה: 4 שלבים
Raspberry Pi-TMP100 חיישן טמפרטורה חיישן פייתון הדרכה: TMP100 חיישן טמפרטורה דיגיטלי I2C MINI בעל דיוק גבוה, הספק נמוך. TMP100 אידיאלי למדידת טמפרטורה ממושכת. מכשיר זה מציע דיוק של ± 1 ° C ללא צורך בכיול או מיזוג אות רכיב חיצוני. הוא