Kazalo:
- Zaloge
- Korak 1: Konstrukcija zapisovalnika podatkov JLCPCB s temperaturnim senzorjem z Arduinom
- 2. korak:
- 3. korak:
- 4. korak:
- 5. korak:
- Korak 6: Nadzorni meni JLCPCB Datalogger
- 7. korak:
- 8. korak:
- 9. korak:
- 10. korak:
- Korak 11: Dostop do podatkov modula kartice SD z Arduinom
- 12. korak: Zaključek
Video: Temperaturni senzor za Arduino Uporablja se za korake COVID 19: 12 (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
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
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:
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:
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
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:
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:
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:
Nato bo sistem zaprl datoteko in prikazal sporočilo "Stoped Process", kot je prikazano na sliki 8.
10. korak:
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
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:
IoT temperaturni senzor z ESP8266: 6 korakov (s slikami)
IoT Temperature Sensor z ESP8266: Navdihnilo me je, da sem ustvaril temperaturni senzor, ki ga lahko spremljam prek WiFi. Ta projekt ni nov, vendar mi je všeč zamisel o vmesnem sloju za varnost in ne da bi morali odpreti vrata v usmerjevalniku do naprave IoT. Osnovna ideja bo
Govorljiva merilna naprava z UV-indeksom, ki uporablja senzor VEML6075 in Mali sogovornik: 5 korakov
Govorilna merilna naprava z UV-indeksom, ki uporablja senzor VEML6075 in Little Buddy Talker: Prihajajo poletja! Sonce sije! Kar je super. Ker pa ultravijolično (UV) sevanje postaja vse intenzivnejše, ljudje, kot sem jaz, dobijo pege, majhne rjave otočke, ki plavajo v morju rdeče, sončne in srbeče kože. Biti sposoben imeti informacije v realnem času
Arduino digitalni temperaturni senzor: 5 korakov (s slikami)
Arduino digitalni temperaturni senzor: Temperaturni senzorji so danes zelo pogosti, vendar jih je večina zelo zapletenih za izdelavo ali zelo dragih nakupov. Ta projekt vam ponuja digitalni temperaturni senzor na osnovi Arduino, ki ni le poceni in zelo enostaven do m
Temperaturni senzor / vremenska postaja: 9 korakov (s slikami)
Temperaturni senzor / vremenska postaja: Ustvarite vremensko postajo ali nadzor temperature s pomočjo zelo hladnega digitalnega temperaturnega senzorja DS1820. To nastavitev uporabljam za spremljanje strežniške sobe in kot vremensko postajo. Ta projekt je sestavljen iz: 1-žičnega vodila Dallas Vmesnik med RS- 232 in
Vodoodporen temperaturni senzor LM35: 6 korakov (s slikami)
Vodoodporen temperaturni senzor LM35: Tukaj je navodilo za vodotesnost LM35 za uporabo na privezanem ROV z uporabo avtomobilske 12V baterije kot vira energije. To je nastalo zaradi potrebe po tekmovanju MATE ROV. Serija LM35 so natančni temperaturni senzorji z integriranim vezjem, ki