Obsah:

Teplotní senzor pro Arduino aplikován na COVID 19: 12 kroků (s obrázky)
Teplotní senzor pro Arduino aplikován na COVID 19: 12 kroků (s obrázky)

Video: Teplotní senzor pro Arduino aplikován na COVID 19: 12 kroků (s obrázky)

Video: Teplotní senzor pro Arduino aplikován na COVID 19: 12 kroků (s obrázky)
Video: Mezinárodní kongres zdraví 2021 Praha - 11. 9. 2021 2024, Listopad
Anonim
Teplotní senzor pro Arduino aplikován na COVID 19
Teplotní senzor pro Arduino aplikován na COVID 19

Teplotní senzor pro Arduino je základním prvkem, když chceme měřit teplotu procesoru lidského těla.

Teplotní čidlo s Arduinem musí být v kontaktu nebo blízko, aby mohlo přijímat a měřit úroveň tepla. Tak fungují teploměry.

Tato zařízení se extrémně používají k měření tělesné teploty nemocných lidí, protože teplota je jedním z prvních faktorů, které se v lidském těle při abnormalitě nebo nemoci mění.

Jednou z nemocí, které mění teplotu lidského těla, je COVID 19. Proto uvádíme hlavní příznaky:

Kašel Únava Obtížné dýchání (Závažné případy) Horečka Horečka je symptom, jehož hlavní charakteristikou je zvýšení tělesné teploty. U této nemoci musíme tyto příznaky neustále sledovat.

Proto vyvineme projekt pro monitorování teploty a uložení těchto dat na paměťovou kartu prostřednictvím JLCPCB Datalogger pomocí teplotního čidla s Arduino.

Proto se v tomto článku dozvíte:

  • Jak funguje datalogger JLCPCB s teplotním čidlem s Arduinem?
  • Jak funguje teplotní senzor s Arduino.
  • Jak funguje teplotní senzor DS18B20 s Arduino
  • Použijte tlačítka s více funkcemi.

Dále vám ukážeme, jak budete vyvíjet svůj JLCPCB Datalogger pomocí teplotního čidla Arduino.

Zásoby

Arduino UNO

Deska s plošnými spoji JLCPCB

Snímač teploty DS18B20

Arduino Nano R3

Svetry

LCD displej 16 x 2

Tlačítkový spínač

Rezistor 1kR

Modul karty SD pro Arduino

Krok 1: Konstrukce dataloggeru JLCPCB se snímačem teploty s Arduinem

Konstrukce dataloggeru JLCPCB se snímačem teploty s Arduino
Konstrukce dataloggeru JLCPCB se snímačem teploty s Arduino

Jak již bylo zmíněno, projekt spočívá ve vytvoření JLCPCB Dataloggeru s teplotním senzorem s Arduinem a prostřednictvím těchto dat můžeme sledovat teplotu léčeného pacienta.

Obvod je tedy znázorněn na obrázku výše.

Proto, jak vidíte, má tento obvod teplotní senzor DS18B20 s Arduinem, který je zodpovědný za měření teploty pacienta.

Arduino Nano bude navíc zodpovědný za shromažďování těchto dat a jejich ukládání na paměťovou kartu modulu SD Card.

Každá informace bude uložena s příslušným časem, který bude načten z modulu RTC DS1307.

Aby tedy mohla být uložena data teplotního senzoru s Arduinem, musí uživatel provést proces prostřednictvím ovládací nabídky s LCD displejem 16x2.

Krok 2:

obraz
obraz

Každé tlačítko je zodpovědné za ovládání možnosti, jak je znázorněno na obrazovce LCD 16x2 na obrázku 2.

Každá možnost je zodpovědná za provádění funkce v systému, jak je uvedeno níže.

  • Možnost M je zodpovědná za zahájení měření a zaznamenávání dat na paměťovou kartu.
  • Možnost H je zodpovědná za úpravu systémových hodin.
  • Možnost O/P slouží k potvrzení zadávání dat do systému nebo k pozastavení zápisu dat na paměťovou kartu.

Abychom porozuměli procesu řízení systému, poskytneme níže uvedený kód a prodiskutujeme krok za krokem řídicí systém JLCPCB Datalogger se snímačem teploty s Arduino.

#include // Knihovna se všemi funkcemi senzoru 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); // Konfigurace nebo připojení 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Digitální pin pro připojení senzoru DS18B20 // Definujte více instancí do oneWire para comunicacao com o senzor OneWire oneWire (ONE_WIRE_BUS); Senzory teploty Dallas (& oneWire); DeviceAddress senzor1; Soubor myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool opatření = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool opatření_proces = 0, upravit_proces = 0; byte actualMin = 0, previousMin = 0; byte actualHour = 0, previousHour = 0; byte 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 (časy); 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 (časy); lcd.setCursor (0, 1); lcd.print ("Teplota:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); float TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} neplatné nastavení () {Serial.begin (9600); DS1307.begin (); sensor.begin (); pinMode (pinoSS, OUTPUT); // Deklarace 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 ("Datalogger"); zpoždění (2000); // Lokalizace a většina enderecos dos senzorů Serial.println ("Lokalizační senzory DS18B20 …"); Serial.print („Lokalizace senzoru úspěšně!“); Serial.print (sensor.getDeviceCount (), DEC); Serial.println („senzor“); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD karta pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); vrátit se; } DS1307.getDate (DataTime); lcd.clear (); sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Čtení stavů tlačítek opatření = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (opatření == 0 && opatření_stát == 1) {opatření_stát = 0; } if (opatření == 1 && opatření_stát == 0 && opatření_proces == 0) {opatření_proces = 1; opatření_stát = 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 (); } zpoždění (500); myFile.print ("Hodina:"); myFile.println ("teplota"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("Teplota:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); float TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && opatření_proces == 0) {adjust_process = 1; } // ----------------------------------------------- --- Proces měření --------------------------------------------- -------------- if (opatření_proces == 1) {updateTemp (); bajt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Počet minut --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); float TempSensor = sensor.getTempCByIndex (0); myFile.print (časy); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Počet hodin ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print („Dokončeno“); lcd.setCursor (5, 1); lcd.print („proces“); opatření_procesu = 0; contHour = 0; } // ---------------------------------------------- Podmínka zastavit záznamník dat ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Zastaveno"); lcd.setCursor (5, 1); lcd.print („proces“); opatření_procesu = 0; zpoždění (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Upravit hodiny ----------------------------------------- ---------------------- // Upravit hodinu if (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Upravit hodinu:"); sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); // Hodinová úprava do {opatření = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (opatření == 0 && opatření_stát == 1) {opatření_stát = 0; } if (opatření == 1 && opatření_stát == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } opatření_stát = 1; sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); 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] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); 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 (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); upravit_proces = 0; }} while (ok! = 1); } // ----------------------------------------------- ------- Konec úpravy hodiny ---------------------------------------- -------------------}

Nejprve definujeme všechny knihovny pro ovládání modulů a deklarování proměnných používaných při programování JLCPCB Datalogger s teplotním čidlem pro Arduino. Blok kódu je zobrazen níže.

Krok 3:

#include // Knihovna se všemi funkcemi senzoru 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); // Konfigurace nebo připojení 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Digitální pin pro připojení senzoru DS18B20 // Definujte více instancí do oneWire para comunicacao com o senzor OneWire oneWire (ONE_WIRE_BUS); Senzory teploty Dallas (& oneWire); DeviceAddress senzor1; Soubor myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool opatření = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool opatření_proces = 0, upravit_proces = 0; byte actualMin = 0, previousMin = 0; byte actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7];

Dále máme funkci nastavení prázdnoty. Tato funkce slouží ke konfiguraci kolíků a inicializaci zařízení, jak je znázorněno níže.

neplatné nastavení ()

{Serial.begin (9600); DS1307.begin (); sensor.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 ("Datalogger"); zpoždění (2000); // Lokalizace a většina enderecos dos senzorů Serial.println ("Lokalizační senzory DS18B20 …"); Serial.print („Lokalizace senzoru úspěšně!“); Serial.print (sensor.getDeviceCount (), DEC); Serial.println ("senzor"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD karta pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); vrátit se; } DS1307.getDate (DataTime); lcd.clear (); sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Nejprve byla zahájena sériová komunikace, hodiny v reálném čase a teplotní senzor pro Arduino DS18B20. Po inicializaci a testování zařízení byla zpráva s možnostmi nabídky vytištěna na LCD obrazovce 16x2. Tato obrazovka je znázorněna na obrázku 1.

Krok 4:

Poté systém načte hodiny a aktualizuje hodnotu voláním funkce updateHour. Účelem této funkce je tedy prezentovat hodinovou hodnotu každou minutu. Blok funkčního kódu je zobrazen níže.

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 (časy); minUpdate = DataTime [5]; }}

Krok 5:

obraz
obraz

Kromě aktualizace hodin si uživatel může vybrat jedno ze tří tlačítek pro sledování pacienta pomocí teplotního čidla s Arduinem. Obvod je znázorněn na obrázku výše.

Krok 6: Nabídka ovládání Dataloggeru JLCPCB

Nabídka ovládání Dataloggeru JLCPCB
Nabídka ovládání Dataloggeru JLCPCB

Nejprve musí uživatel zkontrolovat a upravit systémové hodiny. Tento proces se provádí po stisknutí druhého tlačítka.

Po stisknutí tlačítka by se měla zobrazit následující obrazovka, která je znázorněna na obrázku výše.

Krok 7:

obraz
obraz

Z této obrazovky bude moci uživatel zadat hodiny a minuty z tlačítek připojených k digitálním pinům 2 a 3 Arduina. Tlačítka jsou zobrazena na obrázku výše.

Část kódu pro ovládání hodin je uvedena níže.

if (adjusthour == 0 && adjusthour_state == 1)

{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && opatření_proces == 0) {adjust_process = 1; }

Když je stisknuto tlačítko hodin a proměnná měřicí_proces je nastavena na 0, podmínka bude pravdivá a proměnná nastavovací_proces bude nastavena na 1. Proměnná měřicí_proces se používá k signalizaci, že systém monitoruje teplotu. Když je jeho hodnota 0, systém umožní uživateli vstoupit do nabídky nastavení času. Poté, co proměnná adjust_process obdrží hodnotu 1, systém zadá podmínku úpravy času. Tento blok kódu je zobrazen níže.

// ------------------------------------------------ ----- Upravit hodiny ------------------------------------------- --------------------

// Upravit hodinu if (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Upravit hodinu:"); sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); // Hodinová úprava do {opatření = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (opatření == 0 && opatření_stát == 1) {opatření_stát = 0; } if (opatření == 1 && opatření_stát == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } opatření_stát = 1; sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); 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] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); 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 (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); upravit_proces = 0; }} while (ok! = 1); }

V tomto stavu systém zobrazí zprávu podle obrázku 4 a poté počká, až se hodnoty interně upraví ve smyčce while. Při nastavování hodin mají tato tlačítka změněné funkce, to znamená, že jsou multifunkční.

To vám umožní použít tlačítko pro více než jednu funkci a snížit složitost systému.

Tímto způsobem uživatel upraví hodnotu hodin a minut a poté uloží data do systému po stisknutí tlačítka Ok.

Jak vidíte, systém načte 3 tlačítka, jak je znázorněno níže.

opatření = digitalRead (Buttonmeasure);

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

Tlačítko měření (Buttonmeasure) změnilo svou funkci. Nyní budou použity k nastavení hodnot hodin, jak je uvedeno níže. Následující dvě podmínky jsou podobné a slouží k úpravě hodin a minut, jak je uvedeno výše.

if (opatření == 0 && opatření_stát == 1)

{opatření_stát = 0; } if (opatření == 1 && opatření_stát == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } opatření_stát = 1; sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); 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] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časy); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; }

Proto při každém stisknutí jednoho z těchto dvou tlačítek se změní hodnota pozic 4 a 5 vektoru DataTime a zadruhé se tyto hodnoty uloží do paměti DS1307.

Po dokončení úprav musí uživatel kliknout na tlačítko Ok, aby se proces dokončil. Když k této události dojde, systém spustí následující řádky kódu.

pokud (ok == 1)

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

Vstoupí do výše uvedené podmínky a zobrazí uživateli hodinovou zprávu a nabídku Možnosti.

Nakonec musí uživatel zahájit proces monitorování pacienta pomocí teplotního senzoru s Dataloggerem Arduino JLCPCB.

K tomu musí uživatel stisknout tlačítko měření, které je připojeno k digitálnímu pinu 2.

Poté systém provede čtení pomocí teplotního senzoru pro Arduino a uloží jej na paměťovou kartu. Oblast obvodu je znázorněna na obrázku výše.

Krok 8:

obraz
obraz

Proto při stisknutí tlačítka bude spuštěna následující část kódu.

if (opatření == 0 && opatření_stát == 1)

{opatření_stát = 0; } if (opatření == 1 && opatření_stát == 0 && opatření_proces == 0) {opatření_proces = 1; opatření_stát = 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 (); } zpoždění (500); myFile.print ("Hodina:"); myFile.println ("teplota"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("Teplota:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); float TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); }

V části kódu výše systém přiřadí hodnotu 1 proměnné Measure_process. Je zodpovědný za umožnění ukládání dat na SD kartu.

Kromě toho systém zkontroluje, zda textový soubor s datovým protokolem existuje nebo ne. Pokud existuje soubor, systém odstraní a vytvoří nový pro uložení dat.

Poté vytvoří dva sloupce: jeden pro hodiny a jeden pro teplotu uvnitř textového souboru.

Poté se na LCD obrazovce zobrazí hodiny a teplota, jak je znázorněno na obrázku výše.

Poté tok kódu spustí následující programový blok.

if (opatření_proces == 1)

{updateTemp (); bajt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Počet minut --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); float TempSensor = sensor.getTempCByIndex (0); myFile.print (časy); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Počet hodin ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print („Dokončeno“); lcd.setCursor (5, 1); lcd.print („proces“); opatření_procesu = 0; contHour = 0; } // ---------------------------------------------- Podmínka zastavit záznamník dat -----

Nejprve bude spuštěna funkce updateTemp (). Je to podobné funkci updateHour (); zobrazuje však teplotu každou 1 minutu.

Poté systém shromáždí časové údaje z hodin reálného času a uloží aktuální minutovou hodnotu do proměnné currentMin.

Poté zkontroluje, zda byla změněna minimální proměnná podle níže uvedeného stavu

if (actualMin! = previousMin)

{contMin ++; previousMin = actualMin; }

Pokud se tedy aktuální minutová proměnná liší od předchozí hodnoty, znamená to, že došlo ke změně hodnoty. Tímto způsobem bude podmínka splněna a hodnota počtu minut se zvýší (contMin) a aktuální hodnota bude přiřazena k proměnné previousMin, aby uložila její předchozí hodnotu.

Když se tedy hodnota tohoto počtu rovná 5, znamená to, že uplynulo 5 minut a systém musí provést nové čtení teploty a uložit hodnotu hodiny a teploty do souboru protokolu SD karty.

if (contMin == 5)

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

Tímto způsobem se bude tento proces opakovat až do dosažení hodnoty 5 hodin sledování teploty pacienta pomocí teplotního čidla s Arduinem.

Část kódu je zobrazena níže a je podobná počtu minut, který byl uveden výše.

// ------------------------------------------------ ----------- Počet hodin ------------------------------------- ---------------------

if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print („Dokončeno“); lcd.setCursor (5, 1); lcd.print („proces“); opatření_procesu = 0; contHour = 0; }

Po dosažení 5 hodin sledování systém zavře soubor protokolu a zobrazí uživateli zprávu „Dokončený proces“.

Kromě toho může uživatel stisknutím tlačítka Ok/Pause zastavit nahrávání dat. Když k tomu dojde, bude spuštěn následující blok kódu.

// ---------------------------------------------- Podmínka k zastavit záznamník dat ----------------------------------------------- ---

if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Zastaveno"); lcd.setCursor (5, 1); lcd.print („proces“); opatření_procesu = 0; zpoždění (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (časy, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (časy); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Krok 9:

obraz
obraz

Poté systém soubor zavře a zobrazí zprávu „Zastavený proces“, jak ukazuje obrázek 8.

Krok 10:

obraz
obraz

Poté systém vytiskne časovou obrazovku a možnosti nabídky, jak ukazuje obrázek 9.

Krok 11: Přístup k datům modulu SD karty pomocí Arduina

Přístup k datům modulu SD karty pomocí Arduina
Přístup k datům modulu SD karty pomocí Arduina

Po procesu sledování JLCPCB Dataloggeru pomocí teplotního čidla s Arduinem je nutné vyjmout paměťovou kartu a přistupovat k datům v počítači.

Chcete -li data zobrazit a analyzovat s lepší kvalitou, exportujte / zkopírujte všechny informace z textového souboru do aplikace Excel. Poté můžete vykreslovat grafy a analyzovat získané výsledky.

Krok 12: Závěr

Datalogger JLCPCB s teplotním čidlem s Arduinem nám kromě měření teploty umožňuje zaznamenávat informace o teplotním chování pacienta za určité časové období.

S těmito uloženými daty je možné analyzovat a pochopit, jak se chová teplota pacienta nakaženého COVID 19.

Kromě toho je možné vyhodnotit teplotní hladinu a spojit její hodnotu s aplikací nějakého druhu léků.

Datalogger JLCPCB s teplotním senzorem pro Arduino má proto prostřednictvím těchto údajů za cíl pomáhat lékařům a sestrám při studiu chování pacientů.

Nakonec děkujeme společnosti JLCPCB za podporu při vývoji projektu a doufáme, že ji můžete využít

Všechny soubory lze libovolně stahovat a používat.

Doporučuje: