Tartalomjegyzék:

Arduino hőmérséklet -érzékelője COVID 19: 12 lépésben (képekkel)
Arduino hőmérséklet -érzékelője COVID 19: 12 lépésben (képekkel)

Videó: Arduino hőmérséklet -érzékelője COVID 19: 12 lépésben (képekkel)

Videó: Arduino hőmérséklet -érzékelője COVID 19: 12 lépésben (képekkel)
Videó: Высокая плотность 2022 2024, November
Anonim
Arduino hőmérséklet -érzékelője a COVID 19 -re vonatkozik
Arduino hőmérséklet -érzékelője a COVID 19 -re vonatkozik

Az Arduino hőmérséklet -érzékelője alapvető elem, amikor meg akarjuk mérni az emberi test processzorának hőmérsékletét.

Az Arduino -val rendelkező hőmérséklet -érzékelőnek érintkeznie kell vagy közel kell lennie ahhoz, hogy fogadja és mérje a hőfokot. Így működnek a hőmérők.

Ezeket az eszközöket rendkívül használják a betegek testhőmérsékletének mérésére, mivel a hőmérséklet az egyik első tényező, amely megváltozik az emberi testben, ha rendellenesség vagy betegség van.

Az egyik betegség, amely megváltoztatja az emberi test hőmérsékletét, a COVID 19. Ezért bemutatjuk a fő tüneteket:

Köhögés Fáradtság Légzési nehézség (súlyos esetek) Láz A láz olyan tünet, amelynek fő jellemzője a testhőmérséklet emelkedése. Ebben a betegségben folyamatosan figyelnünk kell ezeket a tüneteket.

Így kidolgozunk egy projektet a hőmérséklet figyelésére, és ezeket az adatokat a memóriakártyán tároljuk egy JLCPCB Datalogger segítségével egy hőmérséklet -érzékelő segítségével Arduino -val.

Ezért ebben a cikkben megtudhatja:

  • Hogyan működik a JLCPCB Datalogger hőmérséklet -érzékelővel az Arduino -val?
  • Hogyan működik a hőmérséklet -érzékelő az Arduino -val.
  • Hogyan működik a DS18B20 hőmérséklet -érzékelő az Arduino -val
  • Használjon több funkcióval rendelkező gombokat.

Ezután megmutatjuk, hogyan fejleszti a JLCPCB Datalogger készüléket az Arduino hőmérséklet -érzékelő segítségével.

Kellékek

Arduino UNO

JLCPCB nyomtatott áramkör

DS18B20 hőmérséklet érzékelő

Arduino Nano R3

Jumpers

LCD kijelző 16 x 2

Nyomógombos kapcsoló

1kR ellenállás

SD kártya modul Arduino számára

1. lépés: A JLCPCB Datalogger építése hőmérséklet -érzékelővel Arduino -val

A JLCPCB Datalogger felépítése hőmérséklet -érzékelővel Arduino -val
A JLCPCB Datalogger felépítése hőmérséklet -érzékelővel Arduino -val

Amint azt korábban említettük, a projekt egy JLCPCB Datalogger létrehozását tartalmazza hőmérséklet -érzékelővel Arduino -val, és ezen adatokon keresztül nyomon követhetjük a kezelt beteg hőmérsékletét.

Így az áramkör a fenti ábrán látható.

Ezért, mint látható, ebben az áramkörben van egy DS18B20 hőmérséklet -érzékelő Arduino -val, amely felelős a beteg hőmérsékletének méréséért.

Ezenkívül az Arduino Nano feladata lesz ezen adatok összegyűjtése és tárolása az SD -kártya modul memóriakártyáján.

Minden információ mentésre kerül a saját idejével, amelyet a DS1307 RTC modul olvas ki.

Így az Arduino -val ellátott hőmérséklet -érzékelő adatainak mentéséhez a felhasználónak végre kell hajtania a folyamatot a Vezérlőmenüben a 16x2 LCD -vel.

2. lépés:

Kép
Kép

Minden gomb felelős egy opció vezérléséért, amint az a 2. ábrán látható 16x2 méretű LCD -képernyőn látható.

Mindegyik opció felelős a rendszer valamely funkciójának végrehajtásáért, az alábbiak szerint.

  • Az M opció felelős a memóriakártyán lévő adatok mérésének és rögzítésének megkezdéséért.
  • A H opció felelős a rendszer óráinak beállításáért.
  • Az O/P opciót a rendszerbe történő adatbevitel megerősítésére vagy a memóriakártyára történő írás szüneteltetésére használják.

A rendszervezérlési folyamat megértéséhez az alábbi kódot adjuk meg, és megvitatjuk a JLCPCB Datalogger with Temperature Sensor és Arduino lépésenkénti vezérlőrendszerét.

#include // Könyvtár a DS18B20 érzékelő összes funkciójával

#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 konfigurálása 0x27 #define ONE_WIRE_BUS 8 // Digitális PIN -kód a DS18B20 érzékelő csatlakoztatásához // Definiálja az uma instancia do oneWire para comunicacao com vagy érzékelő OneWire oneWire (ONE_WIRE_BUS); DallasHőmérséklet -érzékelők (& oneWire); DeviceAddress sensor1; File myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool intézkedés = 0, Adjusthour = 0, ok = 0; bool mérték_állapota = 0, korrekciós óra_állapot = 0, ok_állapot = 0; bool mérték_process = 0, Adjust_process = 0; bájt ténylegesMin = 0, előzőMin = 0; bájt ténylegesóra = 0, előzőóra = 0; bájt minUpdate = 0; int pinoSS = 10; // 53. pin Mega / 10. pin 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 (idő); minUpdate = Adatidő [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 (idő); lcd.setCursor (0, 1); lcd.print ("Hőmérséklet:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = Adatidő [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); szenzorok.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Adatgyűjtő"); késleltetés (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Az érzékelő lokalizálása sikeresen!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Érzékelő"); 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."); Visszatérés; } DS1307.getDate (DataTime); lcd.clear (); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Olvasógomb állapotok intézkedés = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mérték == 0 && mérési_állapot == 1) {mérték_állapot = 0; } if (intézkedés == 1 && intézkedés_állapot == 0 && mérési_folyamat == 0) {mérték_folyamat = 1; mérték_állapot = 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 (); } késleltetés (500); myFile.print ("Óra:"); myFile.println ("Hőmérséklet"); DS1307.getDate (DataTime); ténylegesMin = előzőMin = Adatidő [5]; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("Hőmérséklet:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_process == 0) {Adjust_process = 1; } // ----------------------------------------------- --- Mérési folyamat --------------------------------------------- -------------- if (intézkedés_folyamat == 1) {updateTemp (); bájt contMin = 0, contHour = 0; DS1307.getDate (DataTime); ténylegesMin = Adatidő [5]; // ------------------------------------------------ --------- Percek számolása --------------------------------------- ------------------- if (ténylegesMin! = előzőMin) {contMin ++; előzőMin = ténylegesMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (idő); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Óraszám ------------------------------------ ---------------------- if (ténylegesóra! = előzőóra) {contHour ++; előzőóra = ténylegesóra; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Kész"); lcd.setCursor (5, 1); lcd.print ("Folyamat"); intézkedés_folyamat = 0; contHour = 0; } //----------------------------------------------Állapot az adatgyűjtő leállítása ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Leállítva"); lcd.setCursor (5, 1); lcd.print ("Folyamat"); intézkedés_folyamat = 0; késleltetés (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Állítsa be az órákat ----------------------------------------- ---------------------- // Az óra beállítása if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Állítsa be az órát:"); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); // Óra beállítás do {intézkedés = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mérték == 0 && mérési_állapot == 1) {mérték_állapot = 0; } if (intézkedés == 1 && intézkedés_állapot == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mérési_állapot = 1; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; ha (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }} while (ok! = 1); } // ----------------------------------------------- ------- Beállítási óra vége ---------------------------------------- -------------------}

Először is definiáljuk az összes könyvtárat a modulok vezérlésére és a változók deklarálására, amikor a JLCPCB Datalogger programozását végzik az Arduino hőmérséklet -érzékelőjével. A kódblokk alább látható.

3. lépés:

#include // Könyvtár a DS18B20 érzékelő összes funkciójával

#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 konfigurálása 0x27 #define ONE_WIRE_BUS 8 // Digitális PIN -kód a DS18B20 érzékelő csatlakoztatásához // Definiálja az uma instancia do oneWire para comunicacao com vagy érzékelő OneWire oneWire (ONE_WIRE_BUS); DallasHőmérséklet -érzékelők (& oneWire); DeviceAddress sensor1; File myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool intézkedés = 0, Adjusthour = 0, ok = 0; bool mérték_állapota = 0, korrekciós óra_állapot = 0, ok_állapot = 0; bool mérték_process = 0, Adjust_process = 0; bájt ténylegesMin = 0, előzőMin = 0; bájt ténylegesóra = 0, előzőóra = 0; bájt minUpdate = 0; int pinoSS = 10; // 53. pin Mega / 10. pin UNO int DataTime [7];

A továbbiakban az üresség beállítási funkcióval rendelkezünk. Ezzel a funkcióval konfigurálhatók a csapok és az eszköz inicializálása, az alábbiak szerint.

üres beállítás ()

{Serial.begin (9600); DS1307.begin (); szenzorok.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Adatgyűjtő"); késleltetés (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Az érzékelő lokalizálása sikeresen!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Érzékelő"); 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."); Visszatérés; } DS1307.getDate (DataTime); lcd.clear (); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Először elindították az Arduino DS18B20 soros kommunikációját, a valós idejű órát és a hőmérséklet-érzékelőt. Az eszközök inicializálása és tesztelése után a menüopciókat tartalmazó üzenet kinyomtatásra került a 16x2 méretű LCD-képernyőn. Ez a képernyő az 1. ábrán látható.

4. lépés:

Ezt követően a rendszer leolvassa az órákat, és frissíti az értéket az updateHour függvény meghívásával. Ennek a funkciónak tehát az a célja, hogy minden percben megjelenítse az órai értéket. A funkciókód blokk alább látható.

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 (idő); minUpdate = Adatidő [5]; }}

5. lépés:

Kép
Kép

Az órák frissítése mellett a felhasználó kiválaszthatja a három gomb egyikét, hogy Arduino -val ellátott hőmérséklet -érzékelővel figyelje a beteget. Az áramkör a fenti ábrán látható.

6. lépés: JLCPCB Datalogger Control Menu

JLCPCB Datalogger Control menü
JLCPCB Datalogger Control menü

Először a felhasználónak ellenőriznie kell és be kell állítania a rendszer óráit. Ezt a folyamatot a második gomb megnyomásakor hajtják végre.

A gomb megnyomásakor a következő képernyő jelenik meg, amelyet a fenti ábra mutat.

7. lépés:

Kép
Kép

Ezen a képernyőn a felhasználó megadhatja az óra és a perc értékét az Arduino 2. és 3. digitális csapjához csatlakoztatott gombokról. A gombok a fenti ábrán láthatók.

Az óravezérlés kódrésze az alábbiakban látható.

ha (Adjusthour == 0 && Adjusthour_state == 1)

{Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_process == 0) {Adjust_process = 1; }

Ha megnyomja az óra gombot, és a meter_process változót 0 -ra állítja, akkor a feltétel igaz lesz, és az Adjust_process változó értéke 1 lesz. A meter_process változó jelzi, hogy a rendszer figyeli a hőmérsékletet. Ha értéke 0, a rendszer lehetővé teszi a felhasználó számára, hogy belépjen az időbeállítási menübe. Ezért, miután az Adjust_process változó 1 -es értéket kapott, a rendszer belép az időbeállítási feltételbe. Ez a kódblokk az alábbiakban látható.

// ------------------------------------------------ ----- Állítsa be az órákat ------------------------------------------- --------------------

// Az óra beállítása if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Állítsa be az órát:"); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); // Óra beállítás do {intézkedés = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mérték == 0 && mérési_állapot == 1) {mérték_állapota = 0; } if (intézkedés == 1 && intézkedés_állapot == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mérési_állapot = 1; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; ha (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }} while (ok! = 1); }

Ebben az állapotban a rendszer megjeleníti a 4. ábrán látható üzenetet, majd megvárja, amíg az értékek belsőleg beállnak a while ciklusban. Az órák beállításakor ezeknek a gomboknak a funkciói megváltoztak, azaz többfunkciósak.

Ez lehetővé teszi, hogy egy gombot több funkcióhoz használjon, és csökkentse a rendszer összetettségét.

Ily módon a felhasználó beállítja az órák és percek értékét, majd az OK gomb megnyomásakor elmenti az adatokat a rendszerbe.

Amint láthatja, a rendszer leolvassa a 3 gombot, az alábbiak szerint.

intézkedés = digitalRead (Buttonmeasure);

Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);

Vegye figyelembe, hogy a mérőgomb (Buttonmeasure) megváltoztatta funkcióját. Most az óraértékek beállítására fogják használni, az alábbiak szerint. A következő két feltétel hasonló, és az órák és percek beállítására szolgál a fentiek szerint.

ha (mérés == 0 && mérési_állapot == 1)

{mérték_állapot = 0; } if (intézkedés == 1 && intézkedés_állapot == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mérési_állapot = 1; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; ha (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (idő); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; }

Ezért a két gomb egyikének megnyomásakor a DataTime vektor 4. és 5. pozíciójának értéke megváltozik, másodsorban ezeket az értékeket a DS1307 memóriába menti.

A beállítások befejezése után a felhasználónak az Ok gombra kell kattintania a folyamat befejezéséhez. Amikor ez az esemény bekövetkezik, a rendszer a következő kódsorokat hajtja végre.

ha (rendben == 1)

{lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }

Ez belép a fenti állapotba, és bemutatja a felhasználónak az óraüzenetet és az Opciók menüt.

Végül a felhasználónak el kell indítania a betegfigyelési folyamatot a hőmérséklet -érzékelőn keresztül az Arduino JLCPCB Datalogger segítségével.

Ehhez a felhasználónak meg kell nyomnia a mérőgombot, amely a 2 -es digitális tűhöz van csatlakoztatva.

Ezután a rendszer elvégzi a leolvasást az Arduino hőmérséklet -érzékelőjével, és elmenti a memóriakártyára. Az áramkör régiója a fenti ábrán látható.

8. lépés:

Kép
Kép

Ezért a gomb megnyomásakor a kód következő része kerül végrehajtásra.

ha (mérés == 0 && mérési_állapot == 1)

{mérték_állapota = 0; } if (intézkedés == 1 && intézkedés_állapot == 0 && mérési_folyamat == 0) {mérték_folyamat = 1; mérték_állapot = 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 (); } késleltetés (500); myFile.print ("Óra:"); myFile.println ("Hőmérséklet"); DS1307.getDate (DataTime); ténylegesMin = előzőMin = Adatidő [5]; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("Hőmérséklet:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }

A fenti kódrészben a rendszer 1 -es értéket rendel a meet_process változóhoz. Felelős az adatok SD kártyára történő mentésének engedélyezéséért.

Ezenkívül a rendszer ellenőrzi, hogy létezik -e adatnaplóval rendelkező szöveges fájl, vagy sem. Ha van fájl, a rendszer törli és újat hoz létre az adatok tárolására.

Ezt követően két oszlopot hoz létre: egyet az órákra, egyet a szövegfájl hőmérsékletére.

Ezután megjeleníti az órákat és a hőmérsékletet az LCD -képernyőn, a fenti ábra szerint.

Ezt követően a kódfolyam végrehajtja a következő programblokkot.

ha (intézkedés_folyamat == 1)

{updateTemp (); bájt contMin = 0, contHour = 0; DS1307.getDate (DataTime); ténylegesMin = Adatidő [5]; // ------------------------------------------------ --------- Percek számolása --------------------------------------- ------------------- if (ténylegesMin! = előzőMin) {contMin ++; előzőMin = ténylegesMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (idő); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Óraszám ------------------------------------ ---------------------- if (ténylegesóra! = előzőóra) {contHour ++; előzőóra = ténylegesóra; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Kész"); lcd.setCursor (5, 1); lcd.print ("Folyamat"); intézkedés_folyamat = 0; contHour = 0; } //----------------------------------------------Állapot leállítani az adatgyűjtőt -----

Először az updateTemp () függvény kerül végrehajtásra. Hasonló az updateHour () függvényhez; azonban 1 percenként megjeleníti a hőmérsékletet.

Ezt követően a rendszer összegyűjti az időadatokat a valós idejű órából, és tárolja az aktuális percértéket a currentMin változóban.

Ezután az alábbi feltételnek megfelelően ellenőrzi, hogy a min változó megváltozott -e

if (ténylegesMin! = előzőMin)

{contMin ++; előzőMin = ténylegesMin; }

Ezért ha az aktuális percváltozó eltér az előző értéktől, az azt jelenti, hogy az érték megváltozott. Így a feltétel igaz lesz, és a percszám értéke növekszik (contMin) és az aktuális érték az előzőMin változóhoz lesz rendelve, hogy tárolja az előző értékét.

Ezért, ha ennek a számnak az értéke 5, akkor 5 perc telt el, és a rendszernek új hőmérséklet -leolvasást kell végeznie, és el kell mentenie az órát és a hőmérsékletet az SD -kártya naplófájljában.

ha (contMin == 5)

{sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (idő); myFile.println (TempSensor); contMin = 0; }

Ily módon ezt a folyamatot meg kell ismételni, amíg el nem éri az 5 órás értéket, amikor Arduino -val a hőmérséklet -érzékelőt figyeli a beteg hőmérsékletéről.

A kódrész az alábbiakban látható, és hasonló a fentiekben bemutatott percszámláláshoz.

// ------------------------------------------------ ----------- Óraszám ------------------------------------- ---------------------

if (ténylegesóra! = előzőóra) {contHour ++; előzőóra = ténylegesóra; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Kész"); lcd.setCursor (5, 1); lcd.print ("Folyamat"); intézkedés_folyamat = 0; contHour = 0; }

Miután elérte az 5 órás megfigyelést, a rendszer bezárja a naplófájlt, és megjeleníti a "Kész folyamat" üzenetet a felhasználónak.

Ezenkívül a felhasználó lenyomhatja az Ok/Szünet gombot az adatok rögzítésének leállításához. Amikor ez megtörténik, a következő kódblokk kerül végrehajtásra.

// ----------------------------------------------- Feltétel állítsa le az adatgyűjtőt ----------------------------------------------- ---

if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Leállítva"); lcd.setCursor (5, 1); lcd.print ("Folyamat"); intézkedés_folyamat = 0; késleltetés (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (idő); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

9. lépés:

Kép
Kép

Ezután a rendszer bezárja a fájlt, és megjeleníti a "Leállított folyamat" üzenetet, amint az a 8. ábrán látható.

10. lépés:

Kép
Kép

Ezt követően a rendszer kinyomtatja az időképernyőt és a menüopciókat, amint az a 9. ábrán látható.

11. lépés: Hozzáférés az SD kártya modul adataihoz az Arduino segítségével

Hozzáférés az SD kártya modul adataihoz az Arduino segítségével
Hozzáférés az SD kártya modul adataihoz az Arduino segítségével

A JLCPCB Datalogger Arduino -val végzett hőmérséklet -érzékelővel történő felügyelete után el kell távolítani a memóriakártyát, és hozzá kell férni a számítógépen lévő adatokhoz.

Az adatok jobb minőségű megtekintéséhez és elemzéséhez exportálja / másolja a szöveges fájl összes információját az Excelbe. Ezt követően grafikonokat rajzolhat és elemezheti a kapott eredményeket.

12. lépés: Következtetés

A JLCPCB Datalogger Arduino -val ellátott hőmérséklet -érzékelővel lehetővé teszi számunkra, hogy a hőmérséklet mérésén kívül rögzítsünk információkat a páciens hőmérséklet -viselkedéséről egy bizonyos idő alatt.

Ezekkel a tárolt adatokkal elemezhető és megérthető, hogyan viselkedik a COVID 19 -vel fertőzött beteg hőmérséklete.

Ezenkívül lehetőség van a hőmérsékleti szint értékelésére és értékének társítására bizonyos típusú gyógyszerek alkalmazásával.

Ezért ezeken az adatokon keresztül az Arduino hőmérséklet -érzékelővel ellátott JLCPCB Datalogger célja, hogy segítse az orvosokat és a nővéreket a betegek viselkedésének vizsgálatában.

Végül köszönjük a JLCPCB vállalatnak, hogy támogatja a projekt fejlesztését, és reméljük, hogy használni tudja azt

Az összes fájlt bármely felhasználó szabadon letöltheti és használhatja.

Ajánlott: