Sadržaj:

Senzor temperature za Arduino Primijenjen za COVID 19: 12 koraka (sa slikama)
Senzor temperature za Arduino Primijenjen za COVID 19: 12 koraka (sa slikama)

Video: Senzor temperature za Arduino Primijenjen za COVID 19: 12 koraka (sa slikama)

Video: Senzor temperature za Arduino Primijenjen za COVID 19: 12 koraka (sa slikama)
Video: CS50 2015 - Week 4 2024, Prosinac
Anonim
Senzor temperature za Arduino Primjenjuje se za COVID 19
Senzor temperature za Arduino Primjenjuje se za COVID 19

Senzor temperature za Arduino temeljni je element kada želimo mjeriti temperaturu procesora ljudskog tijela.

Senzor temperature s Arduinom mora biti u kontaktu ili blizu da primi i izmjeri razinu topline. Tako rade termometri.

Ovi uređaji iznimno se koriste za mjerenje tjelesne temperature bolesnih ljudi, jer je temperatura jedan od prvih čimbenika koji se mijenjaju u ljudskom tijelu kada dođe do abnormalnosti ili bolesti.

Jedna od bolesti koja mijenja temperaturu ljudskog tijela je COVID 19. Stoga predstavljamo glavne simptome:

Kašalj Umor Poteškoće s disanjem (Teški slučajevi) Groznica Groznica je simptom čija je glavna karakteristika povećanje tjelesne temperature. Kod ove bolesti moramo stalno pratiti te simptome.

Stoga ćemo razviti projekt za praćenje temperature i pohraniti te podatke na memorijsku karticu putem JLCPCB Dataloggera pomoću senzora temperature s Arduinom.

Stoga ćete u ovom članku naučiti:

  • Kako JLCPCB zapisnik podataka s temperaturnim senzorom radi s Arduinom?
  • Kako radi senzor temperature s Arduinom.
  • Kako radi senzor temperature DS18B20 s Arduinom
  • Koristite gumbe s više funkcija.

Zatim ćemo vam pokazati kako ćete razviti svoj JLCPCB zapisnik podataka pomoću Arduino osjetnika temperature.

Pribor

Arduino UNO

Tiskana ploča JLCPCB

Senzor temperature DS18B20

Arduino Nano R3

Džemperi

LCD zaslon 16 x 2

Prekidač na gumb

Otpornik 1kR

Modul SD kartice za Arduino

Korak 1: Konstrukcija JLCPCB Dataloggera s temperaturnim senzorom s Arduinom

Konstrukcija JLCPCB Dataloggera s temperaturnim senzorom s Arduinom
Konstrukcija JLCPCB Dataloggera s temperaturnim senzorom s Arduinom

Kao što je već spomenuto, projekt se sastoji od stvaranja JLCPCB Dataloggera s temperaturnim senzorom s Arduinom, a putem tih podataka možemo pratiti temperaturu pacijenta koji se liječi.

Dakle, krug je prikazan na gornjoj slici.

Stoga, kao što vidite, ovaj krug ima senzor temperature DS18B20 s Arduinom, koji je odgovoran za mjerenje očitanja temperature pacijenta.

Osim toga, Arduino Nano bit će odgovoran za prikupljanje ovih podataka i njihovo spremanje na memorijsku karticu modula SD kartice.

Svaka informacija bit će spremljena s pripadajućim vremenom, koje će se očitati iz RTC modula DS1307.

Dakle, kako bi se podaci temperaturnog osjetnika s Arduinom spremili, korisnik mora izvršiti postupak putem upravljačkog izbornika s LCD -om 16x2.

Korak 2:

Slika
Slika

Svaki gumb odgovoran je za kontrolu opcije, kako je prikazano na LCD zaslonu 16x2 na slici 2.

Svaka je opcija odgovorna za obavljanje funkcije u sustavu, kao što je prikazano u nastavku.

  • Opcija M je odgovorna za početak mjerenja i snimanje podataka na memorijsku karticu.
  • Opcija H je odgovorna za podešavanje radnog vremena sustava.
  • Opcija O/P koristi se za potvrdu unosa podataka u sustav ili za pauziranje upisivanja podataka na memorijsku karticu.

Kako bismo razumjeli proces upravljanja sustavom, dat ćemo donji kôd i raspraviti korak po korak sustav upravljanja JLCPCB Dataloggera s temperaturnim senzorom s Arduinom.

#include // Knjižnica sa svim funkcijama senzora DS18B20

#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // Knjižnica OneWire za senzor DS18B20 #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Konfiguriranje ili dodavanje LCD -a 16x2 za 0x27 #define ONE_WIRE_BUS 8 // Digitalni pin za povezivanje senzora DS18B20 // Definiranje uma instancia do oneWire para comunicacao com o senzora OneWire oneWire (ONE_WIRE_BUS); Senzori temperature Dallas (& oneWire); Senzor DeviceAddress1; Datoteka myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool mjera = 0, Adjusthour = 0, ok = 0; bool mjera_stata = 0, prilagodi stanje_stata = 0, ok_stato = 0; bool mjera_proces = 0, prilagodi_proces = 0; bajt actualMin = 0, previousMin = 0; bajt actualHour = 0, previousHour = 0; bajt minUpdate = 0; int pinoSS = 10; // Pin 53 za Mega / Pin 10 za UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (puta); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); senzori.requestTemperatures (); plutajući TempSensor = senzori.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); senzori.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"); odgoda (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Lokalizacija senzora uspješno!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Senzor"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD kartica pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD kartice."); povratak; } DS1307.getDate (DataTime); lcd.clear (); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Gumb za čitanje prikazuje mjeru = digitalRead (Buttonmeasure); Adjustour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mjera == 0 && mjera_stata == 1) {mjera_stata = 0; } if (mjera == 1 && mjera_stata == 0 && mjera_proces == 0) {mjera_proces = 1; mjera_stata = 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 (); } kašnjenje (500); myFile.print ("Sat:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); senzori.requestTemperatures (); plutajući TempSensor = senzori.getTempCByIndex (0); lcd.print (TempSensor); } if (podesite sat == 0 && prilagodi stanje_država == 1) {prilagodi sat_statu = 0; } if (Adjusthour == 1 && Adjustourour_state == 0 && mjera_proces == 0) {prilagodi_proces = 1; } // ----------------------------------------------- --- Proces mjerenja --------------------------------------------- -------------- if (mjera_proces == 1) {updateTemp (); bajt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Brojanje minuta --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = stvarniMin; } if (contMin == 5) {sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); senzori.requestTemperatures (); plutajući TempSensor = senzori.getTempCByIndex (0); myFile.print (puta); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Brojanje sati ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = stvarni sat; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Završeno"); lcd.setCursor (5, 1); lcd.print ("Proces"); mjera_proces = 0; contHour = 0; } // ---------------------------------------------- Stanje da biste zaustavili zapisnik podataka ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Zaustavljeno"); lcd.setCursor (5, 1); lcd.print ("Proces"); mjera_proces = 0; odgoda (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Podešavanje sati ----------------------------------------- ---------------------- // Prilagodi sat ako (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Prilagodi sat:"); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); // Prilagodba sata do {mjera = digitalRead (Buttonmeasure); Adjustour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mjera == 0 && mjera_stata == 1) {mjera_stata = 0; } if (mjera == 1 && mjera_stata == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mjera_stanja = 1; sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (podesite sat == 0 && prilagodi stanje_država == 1) {prilagodi sat_statu = 0; } if (Adjustour == 1 && Adjustour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); prilagodi stanje_stata = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); prilagodi_proces = 0; }} while (ok! = 1); } // ----------------------------------------------- ------- Kraj sata prilagođavanja ---------------------------------------- -------------------}

Prvo definiramo sve knjižnice za upravljanje modulima i deklariranje varijabli koje se koriste pri programiranju JLCPCB Dataloggera s temperaturnim senzorom za Arduino. Blok koda prikazan je dolje.

3. korak:

#include // Knjižnica sa svim funkcijama senzora DS18B20

#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // Knjižnica OneWire za senzor DS18B20 #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Konfiguriranje ili dodavanje LCD -a 16x2 za 0x27 #define ONE_WIRE_BUS 8 // Digitalni pin za povezivanje senzora DS18B20 // Definiranje uma instancia do oneWire para comunicacao com o senzora OneWire oneWire (ONE_WIRE_BUS); Senzori temperature Dallas (& oneWire); Senzor DeviceAddress1; Datoteka myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool mjera = 0, Adjusthour = 0, ok = 0; bool mjera_stata = 0, prilagodi stanje_stata = 0, ok_stato = 0; bool mjera_proces = 0, prilagodi_proces = 0; bajt actualMin = 0, previousMin = 0; bajt actualHour = 0, previousHour = 0; bajt minUpdate = 0; int pinoSS = 10; // Pin 53 za Mega / Pin 10 za UNO int DataTime [7];

U nastavku imamo funkciju postavljanja void. Ova se funkcija koristi za konfiguriranje pinova i inicijalizacije uređaja, kao što je prikazano u nastavku.

void setup ()

{Serial.begin (9600); DS1307.begin (); senzori.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"); odgoda (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Lokalizacija senzora uspješno!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Senzor"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD kartica pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD kartice."); povratak; } DS1307.getDate (DataTime); lcd.clear (); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Prvo je pokrenuta serijska komunikacija, sat u stvarnom vremenu i temperaturni senzor za Arduino DS18B20. Nakon inicijalizacije i testiranja uređaja, poruka s opcijama izbornika ispisana je na 16x2 LCD zaslonu. Ovaj je zaslon prikazan na slici 1.

Korak 4:

Nakon toga sustav čita sate i ažurira vrijednost pozivanjem funkcije updateHour. Dakle, ova funkcija ima svrhu prikazati satnu vrijednost svake minute. Blok kodova funkcija prikazan je dolje.

void updateHour ()

{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (puta); minUpdate = DataTime [5]; }}

5. korak:

Slika
Slika

Osim ažuriranja sati, korisnik može izabrati jedan od tri gumba za nadzor pacijenta pomoću senzora temperature s Arduinom. Krug je prikazan na gornjoj slici.

Korak 6: Kontrolni izbornik JLCPCB zapisnika podataka

Kontrolni izbornik JLCPCB zapisnika podataka
Kontrolni izbornik JLCPCB zapisnika podataka

Prvo, korisnik mora provjeriti i prilagoditi radno vrijeme sustava. Ovaj se postupak izvodi kada se pritisne druga tipka.

Kada pritisnete gumb, trebao bi se pojaviti sljedeći zaslon, koji je prikazan na gornjoj slici.

Korak 7:

Slika
Slika

S ovog zaslona korisnik će moći unijeti vrijednosti sata i minuta pomoću gumba spojenih na digitalne pinove 2 i 3 Arduina. Gumbi su prikazani na gornjoj slici.

Kodni dio za upravljanje satima prikazan je dolje.

if (podesite sat == 0 && prilagodite sat_stanje == 1)

{Adjuhour_state = 0; } if (Adjusthour == 1 && Adjustourour_state == 0 && mjera_proces == 0) {prilagodi_proces = 1; }

Kada se pritisne gumb sati i kada je varijabla mjera_procesa postavljena na 0, uvjet će biti istinit, a varijabla prilagoditi_proces će biti postavljena na 1. Varijabla mjera_proces koristi se za signalizaciju da sustav prati temperaturu. Kad je njegova vrijednost 0, sustav će omogućiti korisniku da uđe u izbornik za podešavanje vremena. Stoga, nakon što varijabla Adjust_process primi vrijednost 1, sustav će unijeti uvjet prilagodbe vremena. Ovaj kodni blok prikazan je dolje.

// ------------------------------------------------ ----- Podešavanje sati ------------------------------------------- --------------------

// Prilagođavanje sata if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Prilagodi sat:"); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); // Prilagodba sata do {mjera = digitalRead (Buttonmeasure); Adjustour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mjera == 0 && mjera_stata == 1) {mjera_stata = 0; } if (mjera == 1 && mjera_stata == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mjera_stanja = 1; sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (podesite sat == 0 && prilagodi stanje_država == 1) {prilagodi sat_statu = 0; } if (Adjustour == 1 && Adjustour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); prilagodi stanje_stata = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); prilagodi_proces = 0; }} while (ok! = 1); }

U tom stanju sustav će prikazati poruku prikazanu na slici 4, a zatim pričekati da se vrijednosti interno prilagode u while petlji. Prilikom podešavanja sati, ovim gumbima se mijenjaju funkcije, odnosno višenamjenske su.

To vam omogućuje korištenje gumba za više funkcija i smanjenje složenosti sustava.

Na ovaj način korisnik će prilagoditi vrijednost sati i minuta, a zatim će podatke pritisnuti u redu spremiti u sustav.

Kao što vidite, sustav će pročitati 3 gumba, kao što je prikazano u nastavku.

mjera = digitalno čitanje (Mjerenje gumba);

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

Imajte na umu da je gumb za mjerenje (Buttonmeasure) promijenio svoju funkciju. Sada će se koristiti za podešavanje sati, kao što je prikazano u nastavku. Sljedeća dva uvjeta su slična i koriste se za podešavanje sati i minuta, kao što je prikazano gore.

if (mjera == 0 && mjera_stata == 1)

{mjera_stata = 0; } if (mjera == 1 && mjera_stata == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mjera_stanja = 1; sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (podesite sat == 0 && prilagodi stanje_država == 1) {prilagodi sat_statu = 0; } if (Adjustour == 1 && Adjustour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (puta); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); prilagodi stanje_stata = 1; }

Stoga će se svaki put kad se pritisne jedan od dva gumba promijeniti vrijednost položaja 4 i 5 vektora DataTime, a zatim će se te vrijednosti spremiti u memoriju DS1307.

Nakon prilagodbi, korisnik mora kliknuti gumb U redu, kako bi dovršio postupak. Kad se dogodi ovaj događaj, sustav će izvršiti sljedeće retke koda.

ako (ok == 1)

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

Upisat će gornji uvjet i prikazati korisniku poruku o satu i izbornik Opcije.

Konačno, korisnik mora započeti proces praćenja pacijenta putem senzora temperature s Arduino JLCPCB Dataloggerom.

Da bi to učinio, korisnik mora pritisnuti gumb za mjerenje koji je spojen na digitalni pin 2.

Zatim će sustav očitati senzor temperature za Arduino i spremiti ga na memorijsku karticu. Područje kruga prikazano je na gornjoj slici.

Korak 8:

Slika
Slika

Stoga će se, kada se pritisne gumb, izvršiti sljedeći dio koda.

if (mjera == 0 && mjera_stata == 1)

{mjera_stata = 0; } if (mjera == 1 && mjera_stata == 0 && mjera_proces == 0) {mjera_proces = 1; mjera_stata = 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 (); } kašnjenje (500); myFile.print ("Sat:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); senzori.requestTemperatures (); plutajući TempSensor = senzori.getTempCByIndex (0); lcd.print (TempSensor); }

U gornjem dijelu koda, sustav će dodijeliti vrijednost 1 varijabli mjera_proces. Odgovoran je za dopuštanje spremanja podataka na SD karticu.

Osim toga, sustav će provjeriti postoji li tekstualna datoteka s zapisnikom podataka ili ne. Ako postoji datoteka, sustav će izbrisati i stvoriti novu za pohranu podataka.

Nakon toga će stvoriti dva stupca: jedan za sate i jedan za temperaturu unutar tekstualne datoteke.

Nakon toga prikazat će sate i temperaturu na LCD zaslonu, kao što je prikazano na gornjoj slici.

Nakon toga, tijek koda izvršit će sljedeći programski blok.

ako (proces_mjera == 1)

{updateTemp (); bajt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Brojanje minuta --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = stvarniMin; } if (contMin == 5) {sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); senzori.requestTemperatures (); plutajući TempSensor = senzori.getTempCByIndex (0); myFile.print (puta); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Brojanje sati ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = stvarni sat; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Završeno"); lcd.setCursor (5, 1); lcd.print ("Proces"); mjera_proces = 0; contHour = 0; } // ---------------------------------------------- Stanje da biste zaustavili zapisnik podataka -----

Prvo će se izvršiti funkcija updateTemp (). Slično je funkciji updateHour (); međutim, prikazuje temperaturu svakih 1 minutu.

Nakon toga, sustav će prikupiti podatke o vremenu sa sata u stvarnom vremenu i pohraniti vrijednost trenutne minute u varijablu currentMin.

Zatim će provjeriti je li min varijabla promijenjena, u skladu s dolje navedenim uvjetom

if (actualMin! = previousMin)

{contMin ++; previousMin = stvarniMin; }

Stoga, ako se trenutna varijabla minute razlikuje od prethodne vrijednosti, to znači da je došlo do promjene vrijednosti. Na ovaj način uvjet će biti istinit i vrijednost broja minuta će se povećati (contMin) i trenutna vrijednost bit će dodijeljena varijabli previousMin, za spremanje njezine prethodne vrijednosti.

Stoga, kada je vrijednost ovog broja jednaka 5, to znači da je prošlo 5 minuta i sustav mora izvršiti novo očitanje temperature i spremiti sat i vrijednost temperature u datoteku zapisnika SD kartice.

if (contMin == 5)

{sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); senzori.requestTemperatures (); plutajući TempSensor = senzori.getTempCByIndex (0); myFile.print (puta); myFile.println (TempSensor); contMin = 0; }

Na taj način će se ovaj proces ponavljati sve dok ne dosegne vrijednost od 5 sati praćenja temperature pacijenta pomoću senzora temperature s Arduinom.

Kodni dio prikazan je dolje i sličan je broju minuta koji je gore predstavljen.

// ------------------------------------------------ ----------- Brojanje sati ------------------------------------- ---------------------

if (actualHour! = previousHour) {contHour ++; previousHour = stvarni sat; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Završeno"); lcd.setCursor (5, 1); lcd.print ("Proces"); mjera_proces = 0; contHour = 0; }

Nakon 5 sati praćenja, sustav će zatvoriti datoteku zapisnika i prikazati korisniku poruku "Završen proces".

Osim toga, korisnik može pritisnuti gumb U redu/Pauziraj kako bi zaustavio snimanje podataka. Kada se to dogodi, izvršit će se sljedeći kodni blok.

// ---------------------------------------------- Uvjet do zaustaviti zapisnik podataka ----------------------------------------------- ---

if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Zaustavljeno"); lcd.setCursor (5, 1); lcd.print ("Proces"); mjera_proces = 0; odgoda (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (puta); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Korak 9:

Slika
Slika

Zatim će sustav zatvoriti datoteku i prikazati poruku "Zaustavljeni proces", kao što je prikazano na slici 8.

10. korak:

Slika
Slika

Nakon toga, sustav će ispisati vremenski zaslon i opcije izbornika, kao što je prikazano na slici 9.

Korak 11: Pristup podacima modula SD kartice s Arduinom

Pristup podacima modula SD kartice s Arduinom
Pristup podacima modula SD kartice s Arduinom

Nakon procesa praćenja JLCPCB Dataloggera s osjetnikom temperature s Arduinom, potrebno je ukloniti memorijsku karticu i pristupiti podacima na računalu.

Za bolji prikaz i analizu podataka izvezite / kopirajte sve podatke tekstualne datoteke u Excel. Nakon toga možete iscrtati grafikone i analizirati dobivene rezultate.

Korak 12: Zaključak

JLCPCB Datalogger s temperaturnim senzorom s Arduinom omogućuje nam, osim mjerenja temperature, bilježenje informacija o temperaturnom ponašanju pacijenta kroz određeno vrijeme.

S tim pohranjenim podacima moguće je analizirati i razumjeti kako se ponaša temperatura pacijenta zaraženog virusom COVID 19.

Osim toga, moguće je procijeniti razinu temperature i povezati njezinu vrijednost s primjenom neke vrste lijekova.

Stoga, putem ovih podataka, JLCPCB Datalogger sa senzorom temperature za Arduino ima za cilj pomoći liječnicima i medicinskim sestrama u proučavanju ponašanja pacijenata.

Na kraju, zahvaljujemo tvrtki JLCPCB na podršci razvoju projekta i nadamo se da ćete je moći koristiti

Bilo koji korisnik može besplatno preuzeti i koristiti sve datoteke.

Preporučeni: