Kazalo:

Temperaturni senzor za Arduino Uporablja se za korake COVID 19: 12 (s slikami)
Temperaturni senzor za Arduino Uporablja se za korake COVID 19: 12 (s slikami)

Video: Temperaturni senzor za Arduino Uporablja se za korake COVID 19: 12 (s slikami)

Video: Temperaturni senzor za Arduino Uporablja se za korake COVID 19: 12 (s slikami)
Video: SKR 1.4 - TMC2209 v1.2 2024, November
Anonim
Temperaturni senzor za Arduino Uporablja se za COVID 19
Temperaturni senzor za Arduino Uporablja se za COVID 19

Senzor temperature za Arduino je temeljni element, ko želimo izmeriti temperaturo procesorja človeškega telesa.

Senzor temperature z Arduinom mora biti v stiku ali blizu, da sprejme in izmeri raven toplote. Tako delujejo termometri.

Te naprave se izjemno uporabljajo za merjenje telesne temperature bolnih ljudi, saj je temperatura eden prvih dejavnikov, ki se v človeškem telesu spremenijo, ko pride do nenormalnosti ali bolezni.

Ena od bolezni, ki spreminjajo temperaturo človeškega telesa, je COVID 19. Zato predstavljamo glavne simptome:

Kašelj Utrujenost Težko dihanje (hudi primeri) Vročina Vročina je simptom, katerega glavna značilnost je zvišanje telesne temperature. Pri tej bolezni moramo te simptome stalno spremljati.

Tako bomo razvili projekt za spremljanje temperature in shranjevanje teh podatkov na pomnilniško kartico prek podatkovnega zapisnika JLCPCB z uporabo temperaturnega senzorja z Arduinom.

Zato se boste v tem članku naučili:

  • Kako deluje JLCPCB Datalogger s temperaturnim senzorjem z Arduinom?
  • Kako deluje temperaturni senzor z Arduinom.
  • Kako deluje temperaturni senzor DS18B20 z Arduinom
  • Uporabite gumbe z več funkcijami.

Nato vam bomo pokazali, kako boste razvili svoj JLCPCB Datalogger z uporabo temperaturnega senzorja Arduino.

Zaloge

Arduino UNO

Tiskano vezje JLCPCB

Temperaturni senzor DS18B20

Arduino Nano R3

Skakalci

LCD zaslon 16 x 2

Stikalno stikalo

Upor 1kR

Modul SD kartice za Arduino

Korak 1: Konstrukcija zapisovalnika podatkov JLCPCB s temperaturnim senzorjem z Arduinom

Konstrukcija zapisovalnika podatkov JLCPCB s temperaturnim senzorjem z Arduinom
Konstrukcija zapisovalnika podatkov JLCPCB s temperaturnim senzorjem z Arduinom

Kot smo že omenili, je projekt sestavljen iz ustvarjanja podatkovnega zapisovalnika JLCPCB s temperaturnim senzorjem z Arduinom, s pomočjo teh podatkov pa lahko spremljamo temperaturo pacienta, ki se zdravi.

Tako je vezje prikazano na zgornji sliki.

Kot lahko vidite, ima to vezje temperaturni senzor DS18B20 z Arduinom, ki je odgovoren za merjenje bolnikovega odčitavanja temperature.

Poleg tega bo Arduino Nano odgovoren za zbiranje teh podatkov in njihovo shranjevanje na pomnilniško kartico modula kartice SD.

Vsaka informacija bo shranjena z ustreznim časom, ki se bo prebral iz modula RTC DS1307.

Tako mora uporabnik postopek shranjevanja podatkov temperaturnega senzorja z Arduinom izvesti skozi nadzorni meni s 16x2 LCD.

2. korak:

Slika
Slika

Vsak gumb je odgovoren za nadzor možnosti, kot je prikazano na LCD zaslonu 16x2 na sliki 2.

Vsaka možnost je odgovorna za izvajanje funkcije v sistemu, kot je prikazano spodaj.

  • Možnost M je odgovorna za začetek merjenja in snemanje podatkov na pomnilniško kartico.
  • Možnost H je odgovorna za prilagajanje sistemskih ur.
  • Možnost O/P se uporablja za potrditev vnosa podatkov v sistem ali za zaustavitev zapisovanja podatkov na pomnilniško kartico.

Za razumevanje procesa krmiljenja sistema bomo podali spodnjo kodo in razpravljali o postopnem nadzornem sistemu JLCPCB Dataloggerja s temperaturnim senzorjem z Arduinom.

#include // Knjižnica z vsemi funkcijami senzorja 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); // Konfigurirajte ali dokončajte LCD 16x2 za 0x27 #define ONE_WIRE_BUS 8 // Digitalni pin za povezavo senzorja DS18B20 // Določite takojšnjo instalacijo do oneWire za komunikacijo s senzorjem OneWire oneWire (ONE_WIRE_BUS); Senzorji temperature Dallas (& oneWire); Senzor DeviceAddress1; Datoteka myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool ukrep = 0, Adjusthour = 0, ok = 0; bool merilno stanje = 0, prilagodihurno stanje = 0, ok_statsko = 0; bool merilni_proces = 0, prilagodi_procesni = 0; bajt dejanskiMin = 0, prejšnjiMin = 0; bajt dejanska ura = 0, prejšnja ura = 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 (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (časi); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); plavajoči TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Oglasi pinoSS kot žico 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"); zamuda (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Lokalizacija senzorja uspeš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 Card."); vrnitev; } DS1307.getDate (DataTime); lcd.clear (); sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Gumb za branje prikazuje merilo = digitalRead (Buttonmeasure); Adjustour = digitalRead (Buttonadjusthour); ok = digitalno branje (Buttonok); if (merilo == 0 && merilno_stanje == 1) {merilno_državo = 0; } če (merilo == 1 && merilo_država == 0 && merjenje_proces == 0) {merilo_proces = 1; merilo_stanje = 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 (); } zamuda (500); myFile.print ("Ura:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); dejanskiMin = prejšnjiMin = DataTime [5]; sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); plavajoči TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } če (prilagodi uro == 0 && prilagodi čas_stanje == 1) {prilagodi uro_stavo = 0; } če (prilagodi uro == 1 && prilagodi urno stanje == 0 && meri_proces == 0) {prilagodi_proces = 1; } // ----------------------------------------------- --- merilni postopek --------------------------------------------- -------------- if (merilni_proces == 1) {updateTemp (); bajt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Štetje minut --------------------------------------- ------------------- if (dejanskiMin! = prejšnjiMin) {contMin ++; previousMin = dejanskiMin; } if (contMin == 5) {sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); plavajoči TempSensor = sensors.getTempCByIndex (0); myFile.print (krat); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Štetje ur ------------------------------------ ---------------------- if (dejanska ura! = prejšnja ura) {contHour ++; previousHour = dejanska ura; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Končano"); lcd.setCursor (5, 1); lcd.print ("Postopek"); merilni_proces = 0; contHour = 0; } // ---------------------------------------------- Pogoj ustaviti zapisovalnik podatkov ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Stoped"); lcd.setCursor (5, 1); lcd.print ("Proces"); merilni_proces = 0; zamuda (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Prilagodite ure ----------------------------------------- ---------------------- // Prilagodi uro, če (prilagodi_proces == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Prilagodi uro:"); sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); // Hour Adjust do {asure = digitalRead (Buttonmeasure); Adjustour = digitalRead (Buttonadjusthour); ok = digitalno branje (Buttonok); if (merilo == 0 && merilno_stanje == 1) {merilno_državo = 0; } if (mjera == 1 && merilna_država == 0) {DataTime [4] ++; če je (DataTime [4]> 23) {DataTime [4] = 0; } merilo_stanje = 1; sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } če (prilagodi uro == 0 && prilagodi čas_stanje == 1) {prilagodi uro_stavo = 0; } if (Adjustourour == 1 && Adjustour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjustour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); prilagodi_proces = 0; }} while (ok! = 1); } // ----------------------------------------------- ------- Konec ure prilagoditve ---------------------------------------- -------------------}

Najprej določimo vse knjižnice za nadzor modulov in razglasitev spremenljivk, ki se uporabljajo pri programiranju JLCPCB Dataloggerja s temperaturnim senzorjem za Arduino. Blok kode je prikazan spodaj.

3. korak:

#include // Knjižnica z vsemi funkcijami senzorja 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); // Konfigurirajte ali dokončajte LCD 16x2 za 0x27 #define ONE_WIRE_BUS 8 // Digitalni pin za priključitev senzorja DS18B20 // Določite takojšnjo instalacijo do oneWire za komunikacijo s senzorjem OneWire oneWire (ONE_WIRE_BUS); Senzorji temperature Dallas (& oneWire); Senzor DeviceAddress1; Datoteka myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool ukrep = 0, prilagodite uro = 0, ok = 0; bool merilno stanje = 0, prilagodi stanje_ur = 0, ok_statsko = 0; bool merilni_proces = 0, prilagodi_procesni = 0; bajt dejanskiMin = 0, prejšnjiMin = 0; bajt dejanska ura = 0, prejšnja ura = 0; bajt minUpdate = 0; int pinoSS = 10; // Pin 53 za Mega / Pin 10 za UNO int DataTime [7];

V nadaljevanju imamo funkcijo nastavitve praznine. Ta funkcija se uporablja za konfiguracijo zatičev in inicializacije naprave, kot je prikazano spodaj.

void setup ()

{Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Oglasi pinoSS kot žico 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"); zamuda (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Lokalizacija senzorja uspeš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 Card."); vrnitev; } DS1307.getDate (DataTime); lcd.clear (); sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Najprej se je začela serijska komunikacija, ura v realnem času in temperaturni senzor za Arduino DS18B20. Po inicializaciji in preizkušanju naprav je bilo sporočilo z možnostmi menija natisnjeno na 16x2 LCD zaslonu. Ta zaslon je prikazan na sliki 1.

4. korak:

Po tem sistem prebere ure in posodobi vrednost s klicem funkcije updateHour. Namen te funkcije je torej prikazati urno vrednost vsako minuto. Blok funkcijskih kod je prikazan spodaj.

void updateHour ()

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

5. korak:

Slika
Slika

Poleg posodabljanja ur lahko uporabnik izbere enega od treh gumbov za spremljanje bolnika s senzorjem temperature z Arduinom. Vezje je prikazano na zgornji sliki.

Korak 6: Nadzorni meni JLCPCB Datalogger

Nadzorni meni zapisovalnika podatkov JLCPCB
Nadzorni meni zapisovalnika podatkov JLCPCB

Najprej mora uporabnik preveriti in prilagoditi sistemske ure. Ta postopek se izvede, ko pritisnete drugi gumb.

Ko pritisnete gumb, se mora prikazati naslednji zaslon, ki je prikazan na zgornji sliki.

7. korak:

Slika
Slika

Na tem zaslonu bo uporabnik lahko vnesel vrednosti ur in minut z gumbi, povezanimi z digitalnimi zatiči 2 in 3 Arduina. Gumbi so prikazani na zgornji sliki.

Spodaj je prikazan kodni del za nadzor ur.

če (prilagodi uro == 0 && prilagodi čas_stanje == 1)

{Adjuhour_state = 0; } če (prilagodi uro == 1 && prilagodi urno stanje == 0 && meri_proces == 0) {prilagodi_proces = 1; }

Ko pritisnete gumb ur in je spremenljivka merilni_proces nastavljena na 0, bo pogoj resničen, spremenljivka nastavitveni_proces pa nastavljena na 1. Spremenljivka meritveni_proces se uporablja za signaliziranje, da sistem spremlja temperaturo. Ko je njegova vrednost 0, bo sistem uporabniku omogočil vstop v meni za nastavitev časa. Zato potem, ko spremenljivka Adjust_process prejme vrednost 1, bo sistem vnesel pogoj za prilagoditev časa. Ta kodni blok je prikazan spodaj.

// ------------------------------------------------ ----- Prilagodi ure ------------------------------------------- --------------------

// Prilagodite uro if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Prilagodi uro:"); sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); // Hour Adjust do {asure = digitalRead (Buttonmeasure); Adjustour = digitalRead (Buttonadjusthour); ok = digitalno branje (Buttonok); if (merilo == 0 && merilno_stanje == 1) {merilno_državo = 0; } if (mjera == 1 && merilna_država == 0) {DataTime [4] ++; če je (DataTime [4]> 23) {DataTime [4] = 0; } merilo_stanje = 1; sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } če (prilagodi uro == 0 && prilagodi čas_stanje == 1) {prilagodi uro_stavo = 0; } if (Adjustourour == 1 && Adjustour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjustour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); prilagodi_proces = 0; }} while (ok! = 1); }

V tem stanju bo sistem prikazal sporočilo, prikazano na sliki 4, nato pa počakal, da se vrednosti interno prilagodijo v zanki while. Pri prilagajanju ur se te gumbe spremenijo, torej so večnamenske.

To vam omogoča, da uporabite gumb za več kot eno funkcijo in zmanjšate zapletenost sistema.

Na ta način bo uporabnik prilagodil vrednost ur in minut in nato ob pritisku gumba V redu shranil podatke v sistem.

Kot lahko vidite, bo sistem prebral 3 gumbe, kot je prikazano spodaj.

ukrep = digitalno branje (merilo gumbov);

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

Upoštevajte, da je gumb za merjenje (Buttonmeasure) spremenil svojo funkcijo. Zdaj bo uporabljen za prilagajanje vrednosti ur, kot je prikazano spodaj. Naslednja dva pogoja sta si podobna in se uporabljata za prilagoditev ur in minut, kot je prikazano zgoraj.

če (merite == 0 && merite_stanje == 1)

{merilno_državo = 0; } if (mjera == 1 && merilna_država == 0) {DataTime [4] ++; če je (DataTime [4]> 23) {DataTime [4] = 0; } merilo_stanje = 1; sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } če (prilagodi uro == 0 && prilagodi čas_stanje == 1) {prilagodi uro_stavo = 0; } if (Adjustourour == 1 && Adjustour_state == 0) {DataTime [5] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (časi); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjustour_state = 1; }

Zato se bo vsakič, ko pritisnete enega od dveh gumbov, spremenila vrednost položajev 4 in 5 vektorja DataTime, drugič pa bodo te vrednosti shranjene v pomnilniku DS1307.

Po prilagoditvah mora uporabnik klikniti gumb V redu, da dokonča postopek. Ko pride do tega dogodka, bo sistem izvedel naslednje vrstice kode.

če (ok == 1)

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

Vnesel bo zgornji pogoj in uporabniku predstavil sporočilo o uri in meni z možnostmi.

Nazadnje mora uporabnik začeti postopek spremljanja bolnika preko temperaturnega senzorja z Arduino JLCPCB Datalogger.

Če želite to narediti, mora uporabnik pritisniti gumb za merjenje, ki je priključen na digitalni pin 2.

Nato bo sistem izvedel branje s senzorjem temperature za Arduino in ga shranil na pomnilniško kartico. Območje vezja je prikazano na zgornji sliki.

8. korak:

Slika
Slika

Zato se ob pritisku gumba izvede naslednji del kode.

če (merite == 0 && merite_stanje == 1)

{merilno_državo = 0; } če (merilo == 1 && merilo_država == 0 && merjenje_proces == 0) {merilo_proces = 1; merilo_stanje = 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 (); } zamuda (500); myFile.print ("Ura:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); dejanskiMin = prejšnjiMin = DataTime [5]; sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (časi); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); plavajoči TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }

V zgornjem kodnem delu bo sistem spremenljivki mere_process dodelil vrednost 1. Odgovoren je za shranjevanje podatkov na kartico SD.

Poleg tega bo sistem preveril, ali obstaja besedilna datoteka z zapisom podatkov ali ne. Če obstaja datoteka, bo sistem izbrisal in ustvaril novo za shranjevanje podatkov.

Po tem bo ustvaril dva stolpca: enega za ure in enega za temperaturo v besedilni datoteki.

Po tem bo na LCD zaslonu prikazal ure in temperaturo, kot je prikazano na zgornji sliki.

Po tem bo tok kod izvedel naslednji programski blok.

če (merite_proces == 1)

{updateTemp (); bajt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Štetje minut --------------------------------------- ------------------- if (dejanskiMin! = prejšnjiMin) {contMin ++; previousMin = dejanskiMin; } if (contMin == 5) {sprintf (krat, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); plavajoči TempSensor = sensors.getTempCByIndex (0); myFile.print (krat); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Štetje ur ------------------------------------ ---------------------- if (dejanska ura! = prejšnja ura) {contHour ++; previousHour = dejanska ura; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Končano"); lcd.setCursor (5, 1); lcd.print ("Proces"); merilni_proces = 0; contHour = 0; } // ---------------------------------------------- Pogoj ustaviti zapisovalnik podatkov -----

Najprej se izvede funkcija updateTemp (). Podobno je funkciji updateHour (); vendar prikazuje temperaturo vsake 1 minute.

Po tem bo sistem zbral časovne podatke iz ure v realnem času in shranil trenutno vrednost minute v spremenljivko currentMin.

Nato bo preveril, ali je spremenljivka min spremenjena v skladu s spodnjim pogojem

če (dejanskiMin! = prejšnjiMin)

{contMin ++; previousMin = dejanskiMin; }

Če se trenutna spremenljivka minute razlikuje od prejšnje vrednosti, to pomeni, da je prišlo do spremembe vrednosti. Na ta način bo pogoj resničen in vrednost števila minut se bo povečala (contMin) in trenutna vrednost bo dodeljen spremenljivki previousMin za shranjevanje njene prejšnje vrednosti.

Kadar je vrednost tega števila enaka 5, to pomeni, da je minilo 5 minut in sistem mora izvesti novo odčitavanje temperature ter shraniti uro in vrednost temperature v datoteko dnevnika kartice SD.

če (contMin == 5)

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

Na ta način se bo ta postopek ponavljal, dokler ne doseže vrednosti 5 ur spremljanja bolnikove temperature s temperaturnim senzorjem z Arduinom.

Del kode je prikazan spodaj in je podoben števcu minut, ki je bil predstavljen zgoraj.

// ------------------------------------------------ ----------- Štetje ur ------------------------------------- ---------------------

if (dejanska ura! = prejšnja ura) {contHour ++; previousHour = dejanska ura; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Končano"); lcd.setCursor (5, 1); lcd.print ("Proces"); merilni_proces = 0; contHour = 0; }

Po 5 urah spremljanja bo sistem zaprl datoteko dnevnika in uporabniku predstavil sporočilo "Končan proces".

Poleg tega lahko uporabnik pritisne gumb V redu/Premor, da ustavi snemanje podatkov. Ko se to zgodi, se izvede naslednji kodni blok.

// ---------------------------------------------- Pogoj za ustavi zapisovalnik podatkov ----------------------------------------------- ---

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

9. korak:

Slika
Slika

Nato bo sistem zaprl datoteko in prikazal sporočilo "Stoped Process", kot je prikazano na sliki 8.

10. korak:

Slika
Slika

Po tem bo sistem natisnil časovni zaslon in možnosti menija, kot je prikazano na sliki 9.

Korak 11: Dostop do podatkov modula kartice SD z Arduinom

Dostop do podatkov modula kartice SD z Arduinom
Dostop do podatkov modula kartice SD z Arduinom

Po postopku spremljanja JLCPCB Dataloggerja s temperaturnim senzorjem z Arduinom je treba odstraniti pomnilniško kartico in dostopati do podatkov v računalniku.

Če si želite ogledati in analizirati podatke z boljšo kakovostjo, izvozite / kopirajte vse podatke besedilne datoteke v Excel. Po tem lahko narišete grafe in analizirate dobljene rezultate.

12. korak: Zaključek

JLCPCB Datalogger s temperaturnim senzorjem z Arduinom nam omogoča, da poleg merjenja temperature v določenem časovnem obdobju beležimo podatke o bolnikovem temperaturnem obnašanju.

S temi shranjenimi podatki je mogoče analizirati in razumeti, kako se obnaša temperatura bolnika, okuženega s COVID 19.

Poleg tega je mogoče oceniti temperaturno raven in njeno vrednost povezati z uporabo neke vrste zdravila.

Zato si s temi podatki prizadeva JLCPCB Datalogger s temperaturnim senzorjem za Arduino pomagati zdravnikom in medicinskim sestram pri preučevanju vedenja bolnikov.

Na koncu se zahvaljujemo podjetju JLCPCB za podporo pri razvoju projekta in upamo, da ga boste lahko uporabili

Vse datoteke lahko vsak uporabnik brezplačno prenese in uporablja.

Priporočena: