Tartalomjegyzék:
- Kellékek
- 1. lépés: A JLCPCB Datalogger építése hőmérséklet -érzékelővel Arduino -val
- 2. lépés:
- 3. lépés:
- 4. lépés:
- 5. lépés:
- 6. lépés: JLCPCB Datalogger Control Menu
- 7. lépés:
- 8. lépés:
- 9. lépés:
- 10. lépés:
- 11. lépés: Hozzáférés az SD kártya modul adataihoz az Arduino segítségével
- 12. lépés: Következtetés
Videó: Arduino hőmérséklet -érzékelője COVID 19: 12 lépésben (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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:
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:
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
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:
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:
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:
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:
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
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:
Arcfelismerés a Raspberry Pi 4B készüléken 3 lépésben: 3 lépésben
Arcfelismerés a Raspberry Pi 4B készüléken 3 lépésben: Ebben az utasításban az arcfelismerést fogjuk elvégezni a Raspberry Pi 4 rendszeren Shunya O/S alkalmazással a Shunyaface Library segítségével. A Shunyaface egy arcfelismerő/felismerő könyvtár. A projekt célja a leggyorsabb észlelési és felismerési sebesség elérése a
Pontos hőmérséklet -szabályozás a Raspberry Pi -n 4: 3 lépésben
Pontos hőmérsékletszabályozás a Raspberry Pi 4 készüléken: A Pimoroni ventilátor tárcsa kiváló megoldás a Pi hőmérsékletének csökkentésére forró állapotban. A gyártók olyan szoftvereket is biztosítanak, amelyek bekapcsolják a ventilátort, amikor a CPU hőmérséklete egy bizonyos küszöbérték (pl. 65 fok) fölé emelkedik. A hőmérséklet q
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával Arduino Uno segítségével: 4 lépés
Hőmérséklet leolvasása az LM35 hőmérséklet -érzékelő használatával az Arduino Uno segítségével: Sziasztok, srácok, ebben az útmutatóban megtanuljuk, hogyan kell használni az LM35 -öt az Arduino -val. Az Lm35 egy hőmérséklet -érzékelő, amely -55 ° C és 150 ° C közötti hőmérséklet -értékeket képes leolvasni. Ez egy 3 kivezetésű eszköz, amely analóg feszültséget biztosít a hőmérséklettel arányosan. Hig
ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: 7 lépés (képekkel)
ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással: Még mindig úton van egy "közelgő projekt" befejezéséhez, "ESP32 NTP hőmérséklet szonda főzési hőmérő Steinhart-Hart korrekcióval és hőmérséklet riasztással" egy utasítás, amely bemutatja, hogyan adhatok hozzá NTP hőmérséklet -szondát, piezo b
A NODEMcu USB port nem működik? Töltse fel a kódot USB használatával TTL (FTDI) modulba mindössze 2 lépésben: 3 lépésben
A NODEMcu USB port nem működik? Töltse fel a kódot az USB to TTL (FTDI) modul használatával mindössze 2 lépésben: Elege van abból, hogy sok vezetéket csatlakoztat USB -ről TTL modulra a NODEMcu -hoz, kövesse ezt az utasítást, és csak két lépésben töltse fel a kódot. Ha a A NODEMcu nem működik, akkor ne essen pánikba. Csak az USB -illesztőprogram -chip vagy az USB -csatlakozó