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, Novembar
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 nivo topline. Tako rade termometri.

Ovi uređaji izuzetno se koriste za mjerenje tjelesne temperature bolesnih ljudi, jer je temperatura jedan od prvih faktora 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 ove simptome.

Stoga ćemo razviti projekt za praćenje temperature i pohranjivanje ovih podataka 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 funkcionira senzor temperature DS18B20 s Arduinom
  • Koristite tipke s više funkcija.

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

Supplies

Arduino UNO

JLCPCB štampana ploča

DS18B20 Senzor temperature

Arduino Nano R3

Džemperi

LCD ekran 16 x 2

Prekidač na dugme

Otpornik 1kR

Modul SD kartice za Arduino

Korak 1: Konstrukcija JLCPCB Dataloggera sa temperaturnim senzorom sa Arduinom

Konstrukcija JLCPCB Dataloggera sa temperaturnim senzorom sa Arduinom
Konstrukcija JLCPCB Dataloggera sa temperaturnim senzorom sa Arduinom

Kao što je ranije spomenuto, projekt se sastoji od stvaranja JLCPCB Dataloggera s temperaturnim senzorom s Arduinom, a putem ovih 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.

Stoga, da bi se podaci temperaturnog senzora s Arduinom spremili, korisnik mora izvršiti postupak putem Kontrolnog izbornika sa LCD ekranom 16x2.

Korak 2:

Image
Image

Svako dugme je odgovorno za kontrolu opcije, kao što je prikazano na LCD ekranu 16x2 na slici 2.

Svaka opcija je odgovorna za obavljanje funkcije u sistemu, 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 sistemskih sati.
  • Opcija O/P koristi se za potvrdu unosa podataka u sistem ili za pauziranje upisivanja podataka na memorijsku karticu.

Da bismo razumjeli proces upravljanja sistemom, dat ćemo donji kôd i razgovarati o postupnom sistemu upravljanja JLCPCB zapisnika podataka s temperaturnim senzorom s Arduinom.

#include // Biblioteka sa svim funkcijama senzora DS18B20

#include #include // Biblioteka I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire biblioteka 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 instalacije za oneWire za komunikaciju senzora OneWire oneWire (ONE_WIRE_BUS); Senzori temperature u Dallasu (& oneWire); Senzor DeviceAddress1; File myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonokhourh 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonandhourhour 3 #define Buttonauthourhour # bool mjera_stata = 0, prilagodi stanje_stata = 0, ok_stata = 0; bool mjera_proces = 0, prilagodi_proces = 0; bajt actualMin = 0, previousMin = 0; bajt currentHour = 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); sensors.requestTemperatures (); plutajući TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Deklarira pinoSS kao stranicu Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Pokretanje LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); kašnjenje (2000); // Lokalizacija i većina endoskota senzora Serial.println ("Lokalizacija senzora DS18B20 …"); Serial.print ("Lokalizacija senzora uspješno!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Senzor"); if (SD.begin ()) {// Inicijalizacija o SD kartici Serial.println ("SD kartica pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD kartice."); return; } 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 (); // Dugme 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); sensors.requestTemperatures (); plutajući TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } if (podesite sat == 0 && prilagodi čas_statu == 1) {prilagodi čas_statu = 0; } if (podesite sat == 1 && prilagodi stanje_= = 0 && mjeri_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 = actualMin; } if (contMin == 5) {sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); plutajući TempSensor = sensors.getTempCByIndex (0); myFile.print (puta); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Brojanje sati ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } 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; kašnjenje (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 ----------------------------------------- ---------------------- // Podesi 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); // Prilagođavanje 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_stata = 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 čas_statu == 1) {prilagodi čas_statu = 0; } if (podesite sat == 1 && prilagodi stanje_= = 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); adjuhour_state = 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 biblioteke za kontrolu modula i deklariranje varijabli koje se koriste pri programiranju JLCPCB Dataloggera s senzorom temperature za Arduino. Kodni blok je prikazan ispod.

Korak 3:

#include // Biblioteka sa svim funkcijama senzora DS18B20

#include #include // Biblioteka I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire biblioteka 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 instalacije za oneWire za komunikaciju senzora OneWire oneWire (ONE_WIRE_BUS); Senzori temperature u Dallasu (& oneWire); Senzor DeviceAddress1; File myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonokhourh 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonokmeasurehour 3 #define Buttonandhourhour 3 #define Buttonauthourhour # bool mjera_stata = 0, prilagodi stanje_stata = 0, ok_stanje = 0; bool mjera_proces = 0, prilagodi_proces = 0; bajt actualMin = 0, previousMin = 0; bajt currentHour = 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 funkcija se koristi za konfiguriranje pinova i inicijalizacije uređaja, kao što je prikazano u nastavku.

void setup ()

{Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Deklarira pinoSS kao stranicu Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Pokretanje LCD ekrana lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); kašnjenje (2000); // Lokalizacija i većina endoskota senzora Serial.println ("Lokalizacija senzora DS18B20 …"); Serial.print ("Lokalizacija senzora uspješno!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Senzor"); if (SD.begin ()) {// Inicijalizacija o SD kartici Serial.println ("SD kartica pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD kartice."); return; } 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 sa opcijama menija je odštampana na 16x2 LCD ekranu. Ovaj ekran je prikazan na slici 1.

Korak 4:

Nakon toga, sistem čita sate i ažurira vrijednost pozivanjem funkcije updateHour. Dakle, ova funkcija ima svrhu predstavljanja satne vrijednosti svake minute. Blok kodova funkcija prikazan je ispod.

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]; }}

Korak 5:

Image
Image

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

Korak 6: Kontrolni meni JLCPCB zapisnika podataka

Kontrolni meni JLCPCB zapisnika podataka
Kontrolni meni JLCPCB zapisnika podataka

Prvo, korisnik mora provjeriti i prilagoditi sistemske sate. Ovaj postupak se izvodi kada se pritisne drugo dugme.

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

Korak 7:

Image
Image

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

Kodni dio za kontrolu sati prikazan je dolje.

ako (prilagodi sat == 0 && prilagodi čas_statu == 1)

{Adjuhour_state = 0; } if (podesite sat == 1 && prilagodi stanje_= = 0 && mjeri_proces == 0) {prilagodi_proces = 1; }

Kada se pritisne tipka sata i varijabla mjera_procesa je postavljena na 0, uvjet će biti istinit, a varijabla prilagoditi_proces bit će postavljena na 1. Promjenjiva mjera_proces se koristi za signalizaciju da sistem prati temperaturu. Kada je njegova vrijednost 0, sistem će omogućiti korisniku da uđe u meni za podešavanje vremena. Stoga, nakon što varijabla Adjust_process primi vrijednost 1, sistem će ući u stanje prilagođavanja vremena. Ovaj kodni blok prikazan je ispod.

// ------------------------------------------------ ----- 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); // Prilagođavanje 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_stata = 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 čas_statu == 1) {prilagodi čas_statu = 0; } if (Adjusthour == 1 && customhour_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); adjuhour_state = 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 ovom stanju, sistem će prikazati poruku prikazanu na slici 4, a zatim sačekati da se vrijednosti interno prilagode u while petlji. Prilikom podešavanja sati, ovim tipkama se mijenjaju funkcije, odnosno višenamjenske su.

Ovo vam omogućava da koristite dugme za više funkcija i smanjite složenost sistema.

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

Kao što vidite, sistem će pročitati 3 dugmeta, kao što je prikazano ispod.

mjera = digitalno čitanje (Mjerenje dugmeta);

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 vrijednosti sati, kao što je prikazano u nastavku. Sljedeća dva uslova 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_stata = 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 čas_statu == 1) {prilagodi čas_statu = 0; } if (Adjusthour == 1 && customhour_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); adjuhour_state = 1; }

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

Nakon podešavanja, korisnik mora kliknuti na dugme U redu da završi proces. Kada dođe do ovog događaja, sistem će izvršiti sljedeće redove 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; }

On će unijeti gornji uslov i prikazati korisniku poruku o satu i meni Opcije.

Konačno, korisnik mora započeti proces praćenja pacijenta preko 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 sistem očitati senzor temperature za Arduino i spremiti ga na memorijsku karticu. Područje kola prikazano je na gornjoj slici.

Korak 8:

Image
Image

Stoga će se, kada se pritisne dugme, 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); sensors.requestTemperatures (); plutajući TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }

U gornjem dijelu koda, sistem će dodijeliti vrijednost 1 varijabli mjera_proces. Odgovoran je za omogućavanje spremanja podataka na SD karticu.

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

Nakon toga će stvoriti dvije kolone: jednu za sate i jednu za temperaturu unutar tekstualne datoteke.

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

Nakon toga, tok koda će izvršiti sljedeći programski blok.

ako (proces_mjere == 1)

{updateTemp (); bajt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Brojanje minuta --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (puta, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); plutajući TempSensor = sensors.getTempCByIndex (0); myFile.print (puta); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Brojanje sati ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } 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, sistem ć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, prema dolje navedenom stanju

if (actualMin! = previousMin)

{contMin ++; previousMin = actualMin; }

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 će biti dodijeljena varijabli previousMin, za spremanje njene prethodne vrijednosti.

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

if (contMin == 5)

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

Na ovaj 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 je prikazan ispod i sličan je brojaču minuta, koji je predstavljen gore.

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

if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } 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, sistem će zatvoriti datoteku dnevnika i prikazati korisniku poruku "Završen proces".

Osim toga, korisnik može pritisnuti tipku Ok/Pauza kako bi zaustavio snimanje podataka. Kada se to dogodi, izvršit će se sljedeći kodni blok.

// ---------------------------------------------- Uslov za zaustavite datalogger ----------------------------------------------- ---

if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Zaustavljeno"); lcd.setCursor (5, 1); lcd.print ("Proces"); mjera_proces = 0; kašnjenje (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:

Image
Image

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

Korak 10:

Image
Image

Nakon toga, sistem će odštampati vremenski ekran i opcije menija, kao što je prikazano na slici 9.

Korak 11: Pristup podacima modula SD kartice pomoću Arduina

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

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

Da biste bolje pregledali i analizirali podatke, izvezite / kopirajte sve podatke tekstualne datoteke u Excel. Nakon toga možete iscrtati grafikone i analizirati dobivene rezultate.

Korak 12: Zaključak

JLCPCB Datalogger sa senzorom temperature s Arduinom omogućuje nam, osim mjerenja temperature, snimanje informacija o temperaturnom ponašanju pacijenta u određenom vremenskom periodu.

Pomoću ovih pohranjenih podataka 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 kompaniji JLCPCB na podršci razvoju projekta i nadamo se da ćete je moći koristiti

Svi korisnici mogu besplatno preuzeti i koristiti sve datoteke.

Preporučuje se: