Sisukord:
- Tarvikud
- Samm: temperatuurianduriga JLCPCB andmekoguja ehitamine Arduino abil
- 2. samm:
- 3. samm:
- 4. samm:
- 5. samm:
- Samm 6: JLCPCB Datalogger Control Menu
- 7. samm:
- 8. samm:
- 9. samm:
- 10. samm:
- Samm: juurdepääs SD -kaardi mooduli andmetele Arduino abil
- 12. samm: järeldus
Video: Arduino temperatuuriandur, rakendatud COVID 19: 12 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Arduino temperatuuriandur on põhielement, kui tahame mõõta inimkeha protsessori temperatuuri.
Arduino temperatuuriandur peab olema kuumuse taseme vastuvõtmiseks ja mõõtmiseks kontaktis või lähedal. Nii töötavad termomeetrid.
Neid seadmeid kasutatakse äärmiselt haigete inimeste kehatemperatuuri mõõtmiseks, kuna temperatuur on üks esimesi tegureid, mis inimese kehas muutuvad, kui esineb kõrvalekalle või haigus.
Üks haigustest, mis muudab inimkeha temperatuuri, on COVID 19. Seetõttu esitame peamised sümptomid:
Köha Väsimus Hingamisraskused (rasked juhud) Palavik Palavik on sümptom, mille peamine omadus on kehatemperatuuri tõus. Selle haiguse korral peame neid sümptomeid pidevalt jälgima.
Seega töötame välja projekti temperatuuri jälgimiseks ja salvestame need andmed mälukaardile läbi JLCPCB andmebaasi, kasutades temperatuuriandurit koos Arduinoga.
Seetõttu saate sellest artiklist teada:
- Kuidas töötab temperatuurianduriga JLCPCB andmebaasija koos Arduinoga?
- Kuidas töötab temperatuuriandur koos Arduinoga.
- Kuidas töötab DS18B20 temperatuuriandur koos Arduinoga
- Kasutage mitme funktsiooniga nuppe.
Järgmisena näitame teile, kuidas arendate oma JLCPCB andmebaasi Arduino temperatuurianduri abil.
Tarvikud
Arduino UNO
JLCPCB trükkplaat
DS18B20 temperatuuriandur
Arduino Nano R3
Džemprid
LCD -ekraan 16 x 2
Nuppude lüliti
Takisti 1kR
SD -kaardi moodul Arduino jaoks
Samm: temperatuurianduriga JLCPCB andmekoguja ehitamine Arduino abil
Nagu varem mainitud, koosneb projekt temperatuurianduriga JLCPCB andmebaasi loomisest koos Arduinoga ja nende andmete kaudu saame jälgida ravitava patsiendi temperatuuri.
Seega on skeem näidatud ülaltoodud joonisel.
Seetõttu, nagu näete, on sellel vooluringil DS18B20 temperatuuriandur koos Arduinoga, mis vastutab patsiendi temperatuuri näidu mõõtmise eest.
Lisaks vastutab Arduino Nano nende andmete kogumise ja SD -kaardimooduli mälukaardile salvestamise eest.
Iga teave salvestatakse koos selle ajaga, mis loetakse RTC moodulist DS1307.
Seega, et Arduinoga temperatuurianduri andmed salvestataks, peab kasutaja protsessi läbi juhtmenüü juhtima 16x2 LCD -ekraaniga.
2. samm:
Iga nupp vastutab valiku juhtimise eest, nagu on näidatud joonisel 2 LCD -ekraanil 16x2.
Iga valik vastutab süsteemi funktsiooni täitmise eest, nagu allpool näidatud.
- Valik M vastutab mälukaardile andmete mõõtmise ja salvestamise eest.
- Valik H vastutab süsteemi tundide reguleerimise eest.
- Valikut O/P kasutatakse andmete sisestamise kinnitamiseks süsteemi või andmete mälukaardile kirjutamise peatamiseks.
Süsteemi juhtimisprotsessi mõistmiseks anname allpool koodi ja arutame Arduinoga temperatuurianduriga JLCPCB andmebaasi samm-sammult juhtimissüsteemi.
#include // Raamatukogu, millel on kõik DS18B20 anduri funktsioonid
#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // LCD 16x2 seadistamine või endereco parax 0x27 #define ONE_WIRE_BUS 8 // Digitaalne pin DS18B20 anduri ühendamiseks // Määra uma instancia do oneWire para comunicacao com või anduri OneWire oneWire (ONE_WIRE_BUS); DallasTemperatuuri andurid (& oneWire); DeviceAddress sensor1; Fail myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool meet = 0, Adjusthour = 0, ok = 0; bool meet_state = 0, Adjusthour_state = 0, ok_state = 0; bool meetmeprotsess = 0, Adjust_process = 0; bait tegelikMin = 0, eelmineMin = 0; bait tegelikTund = 0, eelmineTund = 0; bait minUpdate = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (ajad); minUpdate = Andmeaeg [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("Temperatuur:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); ujuk TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = Andmeaeg [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); sensorid.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"); viivitus (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Anduri lokaliseerimine õnnestus!"); Serial.print (sensor.getDeviceCount (), DEC); Serial.println ("Andur"); if (SD.begin ()) {// Inicializa või SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); tagasipöördumine; } DS1307.getDate (DataTime); lcd.clear (); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Lugemisnupu olekud meetme = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mõõt == 0 && mõõtmisseisund == 1) {mõõtmisseisund = 0; } kui (mõõt == 1 && mõõtmisseisund == 0 && mõõtmisprotsess == 0) {mõõtetöötlus = 1; meetme_riik = 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 (); } viivitus (500); myFile.print ("Tund:"); myFile.println ("Temperatuur"); DS1307.getDate (DataTime); tegelikMin = eelmineMin = Andmeaeg [5]; sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("Temperatuur:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); ujuk TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } kui (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } kui (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_protsess == 0) {Adjust_process = 1; } // ------------------------------------------------ --- Mõõtmisprotsess --------------------------------------------- -------------- if (meetmeprotsess == 1) {updateTemp (); bait contMin = 0, contHour = 0; DS1307.getDate (DataTime); tegelikMin = Andmeaeg [5]; // ------------------------------------------------ --------- Arvestage minuteid --------------------------------------- ------------------- if (tegelikMin! = eelmineMin) {kontMin ++; eelmineMin = tegelikMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); ujuk TempSensor = sensors.getTempCByIndex (0); myFile.print (ajad); myFile.println (TempSensor); contMin = 0; } // ------------------------------------------------ ------------ Loendamistunnid ------------------------------------ ---------------------- if (tegelikTund! = eelmineTund) {contHour ++; eelmineTund = tegelikTund; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Valmis"); lcd.setCursor (5, 1); lcd.print ("Protsess"); meetme_protsess = 0; contHour = 0; } // ------------------------------------------------ Seisukord andmeallika peatamiseks ------------------------------------------------ ---- kui (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Peatatud"); lcd.setCursor (5, 1); lcd.print ("Protsess"); meetmeprotsess = 0; viivitus (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Kohandage tunde ----------------------------------------- ---------------------- // Reguleerige tund, kui (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Reguleeri tundi:"); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); // Tundide korrigeerimine do {mõõt = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mõõt == 0 && mõõtmisseisund == 1) {mõõtmisseisund = 0; } kui (mõõt == 1 && mõõtmisseisund == 0) {DataTime [4] ++; kui (DataTime [4]> 23) {DataTime [4] = 0; } meetme_riik = 1; sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } kui (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } kui (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; kui (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } kui (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }} while (ok! = 1); } // ------------------------------------------------ ------- Lõppkorrigeerimise tund ---------------------------------------- -------------------}
Esiteks määratleme kõik teegid moodulite juhtimiseks ja muutujate deklareerimiseks, mida kasutatakse Arduino temperatuurianduriga JLCPCB andmebaasi programmeerimisel. Koodplokk on näidatud allpool.
3. samm:
#include // Raamatukogu, millel on kõik DS18B20 anduri funktsioonid
#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // LCD 16x2 seadistamine või endereco parax 0x27 #define ONE_WIRE_BUS 8 // Digitaalne tihvt DS18B20 anduri ühendamiseks // Määra uma instancia do oneWire para comunicacao com või anduri OneWire oneWire (ONE_WIRE_BUS); DallasTemperatuuri andurid (& oneWire); DeviceAddress sensor1; Fail myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool meet = 0, Adjusthour = 0, ok = 0; bool meet_state = 0, Adjusthour_state = 0, ok_state = 0; bool meetmeprotsess = 0, Adjust_process = 0; bait tegelikMin = 0, eelmineMin = 0; bait tegelikTund = 0, eelmineTund = 0; bait minUpdate = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7];
Edaspidi on meil tühimike seadistamise funktsioon. Seda funktsiooni kasutatakse tihvtide ja seadme lähtestamise konfigureerimiseks, nagu allpool näidatud.
tühine seadistus ()
{Serial.begin (9600); DS1307.begin (); sensorid.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"); viivitus (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Anduri lokaliseerimine õnnestus!"); Serial.print (sensor.getDeviceCount (), DEC); Serial.println ("Andur"); if (SD.begin ()) {// Inicializa või SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); tagasipöördumine; } DS1307.getDate (DataTime); lcd.clear (); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Esiteks käivitati Arduino DS18B20 jadaühendus, reaalajas kell ja temperatuuriandur. Pärast seadmete lähtestamist ja testimist trükiti menüüvalikutega teade 16x2 LCD-ekraanile. See ekraan on näidatud joonisel 1.
4. samm:
Pärast seda loeb süsteem tunde ja värskendab väärtust, kutsudes funktsiooni updateHour. Seega on selle funktsiooni eesmärk esitada tunni väärtus iga minut. Funktsioonikoodi plokk on näidatud allpool.
tühine updateHour ()
{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (ajad); minUpdate = Andmeaeg [5]; }}
5. samm:
Lisaks tundide uuendamisele saab kasutaja valida ühe kolmest nupust patsiendi jälgimiseks temperatuurianduriga Arduino abil. Ahel on näidatud ülaltoodud joonisel.
Samm 6: JLCPCB Datalogger Control Menu
Esiteks peab kasutaja kontrollima ja kohandama süsteemi lahtiolekuaegu. See protsess viiakse läbi teise nupu vajutamisel.
Nupu vajutamisel peaks ilmuma järgmine ekraan, mis on näidatud ülaltoodud joonisel.
7. samm:
Sellel ekraanil saab kasutaja sisestada tunni ja minuti väärtused Arduino digitaalsete kontaktidega 2 ja 3 ühendatud nuppudest. Nupud on näidatud ülaltoodud joonisel.
Koodiosa tundide juhtimiseks on näidatud allpool.
if (Adjusthour == 0 && Adjusthour_state == 1)
{Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_protsess == 0) {Adjust_process = 1; }
Kui tundide nuppu vajutatakse ja muutuja meet_process on seatud 0 -le, on tingimus tõene ja muutuja Adjust_process väärtuseks 1. Muutujat meetmeprotsessi kasutatakse märguandeks, et süsteem jälgib temperatuuri. Kui selle väärtus on 0, lubab süsteem kasutajal siseneda aja seadistamise menüüsse. Seega, pärast seda, kui muutuja Adjust_process saab väärtuse 1, siseneb süsteem aja reguleerimise tingimusse. See koodiplokk on näidatud allpool.
// ------------------------------------------------ ----- Tundide kohandamine ------------------------------------------- --------------------
// Reguleerige tund, kui (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Reguleeri tundi:"); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); // Tundide korrigeerimine do {mõõt = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mõõt == 0 && mõõtmisseisund == 1) {mõõtmisseisund = 0; } kui (mõõt == 1 && mõõtmisseisund == 0) {DataTime [4] ++; kui (DataTime [4]> 23) {DataTime [4] = 0; } meetme_riik = 1; sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } kui (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } kui (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; kui (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } kui (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }} while (ok! = 1); }
Sellises olukorras kuvab süsteem joonisel 4 näidatud sõnumi ja ootab, kuni väärtused sisemiselt ajavahemikus kohanduvad. Tundide reguleerimisel on nende nuppude funktsioonid muudetud, st need on multifunktsionaalsed.
See võimaldab kasutada nuppu mitme funktsiooni jaoks ja vähendada süsteemi keerukust.
Sel viisil reguleerib kasutaja tundide ja minutite väärtust ning salvestab seejärel andmed OK -nupu vajutamisel süsteemi.
Nagu näete, loeb süsteem 3 nuppu, nagu allpool näidatud.
mõõt = digitalRead (Buttonmeasure);
Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
Pange tähele, et mõõtmisnupp (Buttonmeasure) on oma funktsiooni muutnud. Seda kasutatakse nüüd tundide väärtuste reguleerimiseks, nagu allpool näidatud. Järgmised kaks tingimust on sarnased ning neid kasutatakse tundide ja minutite reguleerimiseks, nagu eespool näidatud.
kui (mõõt == 0 && mõõtmisseisund == 1)
{meetme_riik = 0; } kui (mõõt == 1 && mõõtmisseisund == 0) {DataTime [4] ++; kui (DataTime [4]> 23) {DataTime [4] = 0; } meetme_riik = 1; sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } kui (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } kui (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; kui (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (ajad); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; }
Seetõttu muudetakse iga kord, kui vajutatakse ühte kahest nupust, DataTime vektori positsioonide 4 ja 5 väärtust ning teiseks salvestatakse need väärtused DS1307 mällu.
Pärast kohandamist peab kasutaja protsessi lõpetamiseks klõpsama nuppu OK. Selle sündmuse ilmnemisel käivitab süsteem järgmised koodiridad.
kui (okei == 1)
{lcd.clear (); DS1307.getDate (DataTime); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }
See siseneb ülaltoodud olekusse ja esitab kasutajale tunnisõnumi ja menüü Valikud.
Lõpuks peab kasutaja alustama patsiendi jälgimist Arduino JLCPCB Datalogger abil temperatuurianduri kaudu.
Selleks peab kasutaja vajutama mõõtmisnuppu, mis on ühendatud digitaalse tihvtiga 2.
Seejärel teeb süsteem lugemise Arduino temperatuurianduriga ja salvestab selle mälukaardile. Ahela piirkond on näidatud ülaltoodud joonisel.
8. samm:
Seetõttu täidetakse nupu vajutamisel järgmine koodiosa.
kui (mõõt == 0 && mõõtmisseisund == 1)
{meetme_riik = 0; } kui (mõõt == 1 && mõõtmisseisund == 0 && mõõtmisprotsess == 0) {mõõtetöötlus = 1; meetme_riik = 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 (); } viivitus (500); myFile.print ("Tund:"); myFile.println ("Temperatuur"); DS1307.getDate (DataTime); tegelikMin = eelmineMin = Andmeaeg [5]; sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("Temperatuur:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); ujuk TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
Ülaltoodud koodiosas määrab süsteem muutujale meet_process väärtuse 1. Ta vastutab andmete SD -kaardile salvestamise lubamise eest.
Lisaks kontrollib süsteem, kas andmelogiga tekstifail on olemas või mitte. Faili olemasolul kustutab süsteem ja loob andmete salvestamiseks uue.
Pärast seda loob see kaks veergu: üks tundide ja teine tekstifaili temperatuuri kohta.
Pärast seda kuvab see LCD -ekraanil tunde ja temperatuuri, nagu on näidatud ülaltoodud joonisel.
Pärast seda käivitab koodivoog järgmise programmiploki.
kui (meetmeprotsess == 1)
{updateTemp (); bait contMin = 0, contHour = 0; DS1307.getDate (DataTime); tegelikMin = Andmeaeg [5]; // ------------------------------------------------ --------- Arvestage minuteid --------------------------------------- ------------------- if (tegelikMin! = eelmineMin) {kontMin ++; eelmineMin = tegelikMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); ujuk TempSensor = sensors.getTempCByIndex (0); myFile.print (ajad); myFile.println (TempSensor); contMin = 0; } // ------------------------------------------------ ------------ Loendamistunnid ------------------------------------ ---------------------- if (tegelikTund! = eelmineTund) {contHour ++; eelmineTund = tegelikTund; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Valmis"); lcd.setCursor (5, 1); lcd.print ("Protsess"); meetmeprotsess = 0; contHour = 0; } // ------------------------------------------------ Seisukord andmete salvestamise peatamiseks -----
Esiteks käivitatakse funktsioon updateTemp (). See sarnaneb funktsiooniga updateHour (); näitab see aga temperatuuri iga 1 minuti järel.
Pärast seda kogub süsteem aja andmed reaalajas kellast ja salvestab hetke minuti väärtuse muutuja currentMin.
Seejärel kontrollib see, kas muutujat min on muudetud vastavalt allpool toodud tingimustele
if (tegelikMin! = eelmineMin)
{contMin ++; eelmineMin = tegelikMin; }
Seega, kui praegune minutimuutuja erineb eelmisest väärtusest, tähendab see, et väärtus on muutunud. Sel viisil on tingimus tõene ja minutite arvu väärtust suurendatakse (jätkub) ja praegune väärtus määratakse muutujale eelmiseMin, et salvestada selle eelmine väärtus.
Seega, kui selle arvu väärtus on 5, tähendab see, et 5 minutit on möödas ja süsteem peab tegema uue temperatuurinäidu ning salvestama tunni ja temperatuuri väärtused SD -kaardi logifaili.
kui (jätk = = 5)
{sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); ujuk TempSensor = sensors.getTempCByIndex (0); myFile.print (ajad); myFile.println (TempSensor); contMin = 0; }
Sel viisil korratakse seda protsessi, kuni jõuab väärtuseni 5 tundi patsiendi temperatuuri jälgimine temperatuurianduriga Arduino abil.
Koodiosa on näidatud allpool ja sarnaneb ülaltoodud minutite arvuga.
// ------------------------------------------------ ----------- Loendamistunnid ------------------------------------- ---------------------
if (tegelikTund! = eelmineTund) {contHour ++; eelmineTund = tegelikTund; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Valmis"); lcd.setCursor (5, 1); lcd.print ("Protsess"); meetmeprotsess = 0; contHour = 0; }
Pärast 5 -tunnise jälgimise saavutamist sulgeb süsteem logifaili ja esitab kasutajale teate "Lõpetatud protsess".
Lisaks saab kasutaja andmete salvestamise peatamiseks vajutada nuppu OK/Paus. Kui see juhtub, käivitatakse järgmine koodiplokk.
// ---------------------------------------------- Tingimus peata andmekoguja ----------------------------------------------- ---
kui (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Peatatud"); lcd.setCursor (5, 1); lcd.print ("Protsess"); meetmeprotsess = 0; viivitus (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (ajad, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (ajad); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
9. samm:
Seejärel sulgeb süsteem faili ja esitab teate "Peatatud protsess", nagu on näidatud joonisel 8.
10. samm:
Pärast seda prindib süsteem ajaekraani ja menüüvalikud, nagu on näidatud joonisel 9.
Samm: juurdepääs SD -kaardi mooduli andmetele Arduino abil
Pärast JLCPCB andmebaasi jälgimist Arduino temperatuurianduriga on vaja mälukaart eemaldada ja arvutis olevatele andmetele juurde pääseda.
Andmete parema kvaliteediga vaatamiseks ja analüüsimiseks eksportige / kopeerige kogu tekstifaili teave Excelisse. Pärast seda saate graafikuid joonistada ja saadud tulemusi analüüsida.
12. samm: järeldus
Arduinoga temperatuurianduriga JLCPCB andmebaas võimaldab meil lisaks temperatuuri mõõtmisele salvestada teavet patsiendi temperatuurikäitumise kohta teatud aja jooksul.
Nende salvestatud andmete abil on võimalik analüüsida ja mõista, kuidas käitub COVID 19 nakatunud patsiendi temperatuur.
Lisaks on võimalik hinnata temperatuuri taset ja seostada selle väärtus teatud tüüpi ravimite kasutamisega.
Seetõttu on nende andmete kaudu Arduino temperatuurianduriga JLCPCB andmebaasi eesmärk aidata arstidel ja õdedel patsientide käitumist uurida.
Lõpuks täname ettevõtet JLCPCB projekti arendamise toetamise eest ja loodame, et saate seda kasutada
Kõik kasutajad saavad kõik failid tasuta alla laadida ja kasutada.
Soovitan:
IoT temperatuuriandur ESP8266 -ga: 6 sammu (piltidega)
IoT temperatuuriandur ESP8266 abil: sain inspiratsiooni luua temperatuuriandur, mida saan WiFi kaudu jälgida. See projekt ei ole uus, kuid mulle meeldib idee, et turvalisuse jaoks on vahekiht ja et te ei peaks oma IoT -seadmesse oma ruuteri porti avama. Põhiidee annab
Temperatuuriandur DS18B20 (Raspberry Pi): 4 sammu (piltidega)
Temperatuuriandur DS18B20 (Raspberry Pi): põhiõpetus DS18b20 temperatuurianduri seadistamiseks vaarika pi abil
Arduino -põhine digitaalne temperatuuriandur: 5 sammu (piltidega)
Arduino -põhine digitaalne temperatuuriandur: temperatuuriandurid on tänapäeval tõeliselt tavaline asi, kuid enamik neist on äärmiselt keerulised või väga kallid osta. See projekt annab teile Arduino -põhise digitaalse temperatuurianduri, mis pole mitte ainult odav ja väga lihtne mulle
Temperatuuriandur / ilmastikuolud: 9 sammu (piltidega)
Temperatuuriandur / ilmastikujaam: looge ilmastikujaam või temperatuurimonitor, kasutades väga lahedat digitaalset temperatuuriandurit DS1820. Ma kasutan seda seadet serveriruumi jälgimiseks ja ilmastikujaamana. See projekt koosneb: Dallase 1-juhtmelisest bussivõrgust RS-liides 232 ja
Veekindel LM35 temperatuuriandur: 6 sammu (piltidega)
Veekindel LM35 temperatuuriandur: siin on juhend LM35 veekindlaks kasutamiseks, mis on seotud kinnitatud ROV -iga, kasutades toiteallikana auto 12 V akut. See tulenes vajadusest MATE ROV võistluse järele. LM35 seeria on täpsed integreeritud ahela temperatuuriandurid, kes