Turinys:

„Arduino“temperatūros jutiklis, pritaikytas COVID 19: 12 žingsnių (su nuotraukomis)
„Arduino“temperatūros jutiklis, pritaikytas COVID 19: 12 žingsnių (su nuotraukomis)

Video: „Arduino“temperatūros jutiklis, pritaikytas COVID 19: 12 žingsnių (su nuotraukomis)

Video: „Arduino“temperatūros jutiklis, pritaikytas COVID 19: 12 žingsnių (su nuotraukomis)
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Lapkritis
Anonim
„Arduino“temperatūros jutiklis, pritaikytas COVID 19
„Arduino“temperatūros jutiklis, pritaikytas COVID 19

„Arduino“temperatūros jutiklis yra pagrindinis elementas, kai norime išmatuoti žmogaus kūno procesoriaus temperatūrą.

Temperatūros jutiklis su „Arduino“turi susisiekti arba būti arti, kad gautų ir išmatuotų šilumos lygį. Taip veikia termometrai.

Šie prietaisai itin naudojami sergančių žmonių kūno temperatūrai matuoti, nes temperatūra yra vienas pirmųjų veiksnių, kurie keičiasi žmogaus organizme, kai yra sutrikimas ar liga.

Viena iš ligų, keičiančių žmogaus kūno temperatūrą, yra COVID 19. Todėl pateikiame pagrindinius simptomus:

Kosulys Nuovargis Pasunkėjęs kvėpavimas (sunkūs atvejai) Karščiavimas Karščiavimas yra simptomas, kurio pagrindinė savybė yra kūno temperatūros padidėjimas. Sergant šia liga, turime nuolat stebėti šiuos simptomus.

Taigi, mes sukursime projektą, skirtą stebėti temperatūrą ir išsaugoti šiuos duomenis atminties kortelėje per „JLCPCB Datalogger“, naudojant temperatūros jutiklį su „Arduino“.

Todėl šiame straipsnyje sužinosite:

  • Kaip veikia „JLCPCB Datalogger“su temperatūros jutikliu su „Arduino“?
  • Kaip veikia temperatūros jutiklis su „Arduino“.
  • Kaip veikia DS18B20 temperatūros jutiklis su „Arduino“
  • Naudokite mygtukus su keliomis funkcijomis.

Toliau parodysime, kaip kuriate „JLCPCB Datalogger“naudodami „Arduino“temperatūros jutiklį.

Prekės

Arduino UNO

JLCPCB spausdintinė plokštė

DS18B20 temperatūros jutiklis

„Arduino Nano R3“

Džemperiai

LCD ekranas 16 x 2

Mygtuko jungiklis

Rezistorius 1kR

SD kortelės modulis „Arduino“

1 žingsnis: JLCPCB duomenų rinkiklio su temperatūros jutikliu su „Arduino“konstravimas

JLCPCB duomenų rinkiklio su temperatūros jutikliu su „Arduino“konstrukcija
JLCPCB duomenų rinkiklio su temperatūros jutikliu su „Arduino“konstrukcija

Kaip minėta anksčiau, projektą sudaro JLCPCB duomenų kaupiklis su temperatūros jutikliu su „Arduino“, ir pagal šiuos duomenis galime stebėti gydomo paciento temperatūrą.

Taigi grandinė parodyta aukščiau esančiame paveikslėlyje.

Todėl, kaip matote, šioje grandinėje yra DS18B20 temperatūros jutiklis su „Arduino“, kuris yra atsakingas už paciento temperatūros rodmenų matavimą.

Be to, „Arduino Nano“bus atsakingas už šių duomenų rinkimą ir saugojimą SD kortelės modulio atminties kortelėje.

Kiekviena informacija bus išsaugota atitinkamu laiku, kuris bus nuskaitytas iš RTC modulio DS1307.

Taigi, norint išsaugoti temperatūros jutiklio su „Arduino“duomenis, vartotojas turi atlikti šį procesą per valdymo meniu su 16x2 LCD.

2 žingsnis:

Vaizdas
Vaizdas

Kiekvienas mygtukas yra atsakingas už parinkties valdymą, kaip parodyta 2 paveiksle esančiame LCD ekrane 16x2.

Kiekviena parinktis yra atsakinga už sistemos funkcijos atlikimą, kaip parodyta žemiau.

  • M parinktis yra atsakinga už atminties kortelės duomenų matavimo ir įrašymo pradžią.
  • H variantas yra atsakingas už sistemos valandų koregavimą.
  • O/P parinktis naudojama norint patvirtinti duomenų įvedimą sistemoje arba pristabdyti duomenų įrašymą į atminties kortelę.

Norėdami suprasti sistemos valdymo procesą, pateiksime žemiau esantį kodą ir aptarsime žingsnis po žingsnio „JLCPCB Datalogger“su temperatūros jutikliu valdymo sistemą su „Arduino“.

#include // Biblioteka su visomis DS18B20 jutiklio funkcijomis

#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 konfigūravimas arba 0x27 #define ONE_WIRE_BUS 8 // Skaitmeninis kaištis, skirtas DS18B20 jutikliui prijungti // Apibrėžkite uma instancia do oneWire para comunicacao com o jutiklį OneWire oneWire (ONE_WIRE_BUS); Dalaso temperatūros jutikliai (& oneWire); DeviceAddress sensor1; Failas myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool matas = 0, koregavimo valanda = 0, gerai = 0; boolio matavimo_stata = 0, koregavimo valandos_stata = 0, gerai_stata = 0; bool priemonė_procesas = 0, koreguoti_procesas = 0; baitas faktinisMin = 0, ankstesnisMin = 0; baitas faktinėViena = 0, ankstesnėViena = 0; baitas minUpdate = 0; int pinoSS = 10; // 53 kaištis Mega / 10 kaištis 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 (laikas); minUpdate = Duomenų laikas [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 (laikas); lcd.setCursor (0, 1); lcd.print ("Temperatūra:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); plūdė TempSensor = sensors.getTempCByIndex (0); lcd.print („TempSensor“); minUpdate = Duomenų laikas [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); jutikliai.pradėti (); 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 („Laikina sistema“); lcd.setCursor (3, 1); lcd.print ("Duomenų kaupiklis"); vėlavimas (2000 m.); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print („Jutiklio lokalizavimas sėkmingai!“); Serial.print (sensors.getDeviceCount (), DEC); Serial.println („Jutiklis“); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); grįžti; } DS1307.getDate (DataTime); lcd.clear (); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Skaitymo mygtuko būsenos priemonė = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); gerai = digitalRead (Buttonok); jei (matas == 0 && matavimo_stata == 1) {matavimo_stata = 0; } jei (matas == 1 && matavimo_stata == 0 && mato_procesas == 0) {matavimo_procesas = 1; matavimo_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 (); } uždelsimas (500); myFile.print ("Valanda:"); myFile.println ("Temperatūra"); DS1307.getDate (DataTime); faktinisMin = ankstesnisMinas = Duomenų laikas [5]; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("Temperatūra:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); plūdė TempSensor = sensors.getTempCByIndex (0); lcd.print („TempSensor“); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_process == 0) {Adjust_process = 1; } // ----------------------------------------------- --- Matavimo procesas --------------------------------------------- -------------- if (meet_process == 1) {updateTemp (); baitas contMin = 0, contHour = 0; DS1307.getDate (DataTime); faktinisMin = Duomenų laikas [5]; // ------------------------------------------------ --------- Skaičiuokite minutes --------------------------------------- ------------------- if (faktinisMinas! = ankstesnisMinas) {tęsinysMin ++; previousMin = faktinisMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); plūdė TempSensor = sensor.getTempCByIndex (0); myFile.print (laikas); myFile.println („TempSensor“); contMin = 0; } // ----------------------------------------------- ------------ Skaičiuoti valandas ------------------------------------ ---------------------- if (faktinėVala! = ankstesnėViena) {contHour ++; previousHour = faktinėHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Baigta"); lcd.setCursor (5, 1); lcd.print („Procesas“); mato_procesas = 0; contHour = 0; } // ---------------------------------------------- Būklė sustabdyti duomenų registravimą ---------------------------------------------- ---- jei (gerai == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Sustabdyta"); lcd.setCursor (5, 1); lcd.print ("Procesas"); mato_procesas = 0; vėlavimas (2000 m.); lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Koreguokite valandas ----------------------------------------- ---------------------- // Koreguoti valandą if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Koreguoti valandą:"); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); // Valandos koregavimas do {intézkedés = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); gerai = digitalRead (Buttonok); jei (matas == 0 && matavimo_stata == 1) {matavimo_stata = 0; } jei (matas == 1 && matavimo_stata == 0) {DataTime [4] ++; jei (DataTime [4]> 23) {DataTime [4] = 0; } matavimo_stata = 1; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; jei (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } if (gerai == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); sureguliuoti_procesas = 0; }} while (gerai! = 1); } // ----------------------------------------------- ------- Pabaigos reguliavimo valanda ---------------------------------------- -------------------}

Pirma, mes apibrėžiame visas bibliotekas, skirtas valdyti modulius ir deklaruoti kintamuosius, naudojamus programuojant „JLCPCB Datalogger“su „Arduino“temperatūros jutikliu. Kodo blokas parodytas žemiau.

3 žingsnis:

#include // Biblioteka su visomis DS18B20 jutiklio funkcijomis

#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 konfigūravimas arba 0x27 #define ONE_WIRE_BUS 8 // Skaitmeninis kaištis, skirtas DS18B20 jutikliui prijungti // Apibrėžkite uma instancia do oneWire para comunicacao com o jutiklį OneWire oneWire (ONE_WIRE_BUS); Dalaso temperatūros jutikliai (& oneWire); DeviceAddress sensor1; Failas myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool matas = 0, koregavimo valanda = 0, gerai = 0; bool meet_state = 0, Adjusthour_state = 0, ok_state = 0; bool priemonė_procesas = 0, koreguoti_procesas = 0; baitas faktinisMin = 0, ankstesnisMin = 0; baitas faktinėViena = 0, ankstesnėViena = 0; baitas minUpdate = 0; int pinoSS = 10; // 53 kaištis Mega / 10 kaištis UNO int DataTime [7];

Toliau turime tuštumos nustatymo funkciją. Ši funkcija naudojama konfigūruoti kaiščius ir įrenginio inicijavimą, kaip parodyta žemiau.

negaliojanti sąranka ()

{Serial.begin (9600); DS1307.begin (); jutikliai.pradėti (); 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 („Laikina sistema“); lcd.setCursor (3, 1); lcd.print ("Duomenų kaupiklis"); vėlavimas (2000 m.); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print („Jutiklio lokalizavimas sėkmingai!“); Serial.print (sensors.getDeviceCount (), DEC); Serial.println („Jutiklis“); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); grįžti; } DS1307.getDate (DataTime); lcd.clear (); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Pirma, buvo pradėtas „Arduino DS18B20“serijinis ryšys, realaus laiko laikrodis ir temperatūros jutiklis. Po prietaisų inicijavimo ir bandymo pranešimas su meniu parinktimis buvo išspausdintas 16x2 LCD ekrane. Šis ekranas parodytas 1 paveiksle.

4 žingsnis:

Po to sistema skaito valandas ir atnaujina vertę, iškviesdama funkciją updateHour. Taigi šios funkcijos tikslas yra kiekvieną valandą pateikti valandos vertę. Funkcijos kodo blokas parodytas žemiau.

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 (laikas); minUpdate = Duomenų laikas [5]; }}

5 veiksmas:

Vaizdas
Vaizdas

Be valandų atnaujinimo, vartotojas gali pasirinkti vieną iš trijų mygtukų, kad pacientas būtų stebimas naudojant temperatūros jutiklį su „Arduino“. Grandinė parodyta aukščiau esančiame paveikslėlyje.

6 veiksmas: „JLCPCB Datalogger“valdymo meniu

JLCPCB duomenų katalogo valdymo meniu
JLCPCB duomenų katalogo valdymo meniu

Pirma, vartotojas turi patikrinti ir pakoreguoti sistemos valandas. Ši procedūra atliekama paspaudus antrąjį mygtuką.

Paspaudus mygtuką, turėtų atsirasti toks ekranas, kuris parodytas aukščiau esančiame paveikslėlyje.

7 žingsnis:

Vaizdas
Vaizdas

Šiame ekrane vartotojas galės įvesti valandos ir minutės reikšmes iš mygtukų, prijungtų prie „Arduino“2 ir 3 skaitmeninių kaiščių. Mygtukai parodyti aukščiau esančiame paveikslėlyje.

Kodo dalis, skirta valandoms valdyti, parodyta žemiau.

jei (Adjusthour == 0 && Adjusthour_state == 1)

{Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_process == 0) {Adjust_process = 1; }

Kai paspaudžiamas valandų mygtukas ir matavimo kintamasis yra nustatytas į 0, sąlyga bus teisinga, o kintamasis koreguoti bus nustatytas į 1. Kintamasis mato_procesas naudojamas signalizuoti, kad sistema stebi temperatūrą. Kai jo reikšmė yra 0, sistema leis vartotojui patekti į laiko nustatymo meniu. Todėl, kai kintamasis „Adjust_process“gaus 1 reikšmę, sistema pateks į laiko koregavimo sąlygą. Šis kodo blokas parodytas žemiau.

// ------------------------------------------------ ----- Koreguokite valandas ------------------------------------------- --------------------

// Koreguoti valandą if (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Koreguoti valandą:"); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); // Valandos koregavimas do {intézkedés = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); gerai = digitalRead (Buttonok); jei (matas == 0 && matavimo_stata == 1) {matavimo_stata = 0; } jei (matas == 1 && matavimo_stata == 0) {DataTime [4] ++; jei (DataTime [4]> 23) {DataTime [4] = 0; } matavimo_stata = 1; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; jei (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } jei (gerai == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); sureguliuoti_procesas = 0; }} while (gerai! = 1); }

Esant tokiai būklei, sistema parodys pranešimą, pavaizduotą 4 paveiksle, ir tada palauks, kol vertės pasikeis vidinėje ciklo dalyje. Koreguojant valandas, šių mygtukų funkcijos yra pakeistos, tai yra, jos yra daugiafunkcinės.

Tai leidžia naudoti mygtuką daugiau nei vienai funkcijai ir sumažinti sistemos sudėtingumą.

Tokiu būdu vartotojas pakoreguos valandų ir minučių vertę, o paskui išsaugos duomenis sistemoje, kai bus paspaustas OK mygtukas.

Kaip matote, sistema perskaitys 3 mygtukus, kaip parodyta žemiau.

priemonė = digitalRead (Buttonmeasure);

Adjusthour = digitalRead (Buttonadjusthour); gerai = digitalRead (Buttonok);

Atminkite, kad matavimo mygtukas (Buttonmeasure) pakeitė savo funkciją. Dabar jis bus naudojamas koreguoti valandų vertes, kaip parodyta žemiau. Toliau pateiktos dvi sąlygos yra panašios ir naudojamos valandoms ir minutėms koreguoti, kaip parodyta aukščiau.

jei (matas == 0 && matavimo_stata == 1)

{matavimo_stata = 0; } jei (matas == 1 && matavimo_stata == 0) {DataTime [4] ++; jei (DataTime [4]> 23) {DataTime [4] = 0; } matavimo_stata = 1; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } if (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; jei (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (laikas); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; }

Todėl kiekvieną kartą paspaudus vieną iš dviejų mygtukų, „DataTime“vektoriaus 4 ir 5 pozicijų reikšmė bus pakeista, antra, šios vertės bus išsaugotos DS1307 atmintyje.

Po pakeitimų vartotojas turi spustelėti mygtuką Gerai, kad užbaigtų procesą. Įvykus šiam įvykiui, sistema vykdys šias kodo eilutes.

jei (gerai == 1)

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

Jis įves aukščiau nurodytą sąlygą ir pateiks vartotojui valandos pranešimą ir parinkčių meniu.

Galiausiai vartotojas turi pradėti paciento stebėjimo procesą per temperatūros jutiklį su „Arduino JLCPCB Datalogger“.

Norėdami tai padaryti, vartotojas turi paspausti matavimo mygtuką, kuris yra prijungtas prie 2 skaitmeninio kaiščio.

Tada sistema nuskaitys „Arduino“temperatūros jutiklį ir išsaugos jį atminties kortelėje. Grandinės sritis parodyta aukščiau esančiame paveikslėlyje.

8 žingsnis:

Vaizdas
Vaizdas

Todėl, paspaudus mygtuką, bus vykdoma ši kodo dalis.

jei (matas == 0 && matavimo_stata == 1)

{matavimo_stata = 0; } jei (matas == 1 && matavimo_stata == 0 && mato_procesas == 0) {matavimo_procesas = 1; matavimo_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 (); } uždelsimas (500); myFile.print ("Valanda:"); myFile.println ("Temperatūra"); DS1307.getDate (DataTime); faktinisMin = ankstesnisMinas = Duomenų laikas [5]; sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("Temperatūra:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); plūdė TempSensor = sensor.getTempCByIndex (0); lcd.print („TempSensor“); }

Aukščiau esančioje kodo dalyje sistema kintamajam meet_process priskirs reikšmę 1. Ji yra atsakinga už galimybę įrašyti duomenis į SD kortelę.

Be to, sistema patikrins, ar yra teksto failas su duomenų žurnalu, ar ne. Jei yra failas, sistema ištrins ir sukurs naują, kad išsaugotų duomenis.

Po to teksto faile bus sukurti du stulpeliai: vienas valandoms ir kitas temperatūrai.

Po to LCD ekrane bus rodomos valandos ir temperatūra, kaip parodyta aukščiau esančiame paveikslėlyje.

Po to kodo srautas vykdys šį programos bloką.

jei (mato_procesas == 1)

{updateTemp (); baitas contMin = 0, contHour = 0; DS1307.getDate (DataTime); faktinisMin = Duomenų laikas [5]; // ------------------------------------------------ --------- Skaičiuokite minutes --------------------------------------- ------------------- if (faktinisMinas! = ankstesnisMinas) {tęsinysMin ++; previousMin = faktinisMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); plūdė TempSensor = sensor.getTempCByIndex (0); myFile.print (laikas); myFile.println („TempSensor“); contMin = 0; } // ----------------------------------------------- ------------ Skaičiuoti valandas ------------------------------------ ---------------------- if (faktinėVala! = ankstesnėViena) {contHour ++; previousHour = faktinėHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Baigta"); lcd.setCursor (5, 1); lcd.print ("Procesas"); mato_procesas = 0; contHour = 0; } // ---------------------------------------------- Būklė sustabdyti duomenų kaupiklį -----

Pirma, bus vykdoma funkcija updateTemp (). Tai panašu į funkciją updateHour (); tačiau ji rodo temperatūrą kas 1 minutę.

Po to sistema surinks laiko duomenis iš realaus laiko laikrodžio ir išsaugos dabartinę minutės vertę kintamajame currentMin.

Tada ji patikrins, ar kintamasis min buvo pakeistas, atsižvelgiant į toliau pateiktą sąlygą

if (faktinisMinas! = ankstesnisMinas)

{contMin ++; previousMin = faktinisMin; }

Todėl, jei dabartinis minučių kintamasis skiriasi nuo ankstesnės vertės, tai reiškia, kad reikšmė pasikeitė. Tokiu būdu sąlyga bus teisinga ir minučių skaičiaus vertė bus padidinta (tęsinys) ir dabartinė vertė bus priskirtas kintamajam previousMin, kad būtų išsaugota jo ankstesnė vertė.

Todėl, kai šio skaičiaus vertė yra lygi 5, tai reiškia, kad praėjo 5 minutės ir sistema turi atlikti naują temperatūros rodmenį bei išsaugoti valandos ir temperatūros vertę SD kortelės žurnalo faile.

jei (tęsinys == 5)

{sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); plūdė TempSensor = sensor.getTempCByIndex (0); myFile.print (laikas); myFile.println („TempSensor“); contMin = 0; }

Tokiu būdu šis procesas bus kartojamas tol, kol bus pasiekta 5 valandų paciento temperatūros stebėjimo vertė naudojant temperatūros jutiklį naudojant „Arduino“.

Kodo dalis parodyta žemiau ir yra panaši į minučių skaičių, kuris buvo pateiktas aukščiau.

// ------------------------------------------------ ----------- Skaičiuoti valandas ------------------------------------- ---------------------

if (faktinėVala! = ankstesnėViena) {contHour ++; previousHour = faktinėHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Baigta"); lcd.setCursor (5, 1); lcd.print ("Procesas"); mato_procesas = 0; contHour = 0; }

Pasibaigus 5 valandų stebėjimo sistemai, sistema uždarys žurnalo failą ir pateiks vartotojui pranešimą „Baigtas procesas“.

Be to, vartotojas gali paspausti mygtuką Ok/Pause, kad sustabdytų duomenų įrašymą. Kai taip atsitiks, bus vykdomas toks kodo blokas.

// ---------------------------------------------- Sąlyga sustabdyk duomenų kaupiklį ----------------------------------------------- ---

jei (gerai == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Sustabdyta"); lcd.setCursor (5, 1); lcd.print ("Procesas"); mato_procesas = 0; vėlavimas (2000 m.); lcd.clear (); DS1307.getDate (DataTime); sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (laikas); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

9 veiksmas:

Vaizdas
Vaizdas

Tada sistema uždarys failą ir pateiks pranešimą „Sustabdytas procesas“, kaip parodyta 8 paveiksle.

10 veiksmas:

Vaizdas
Vaizdas

Po to sistema išspausdins laiko ekraną ir meniu parinktis, kaip parodyta 9 paveiksle.

11 veiksmas: prieiga prie SD kortelės modulio duomenų naudojant „Arduino“

Prieiga prie SD kortelės modulio duomenų naudojant „Arduino“
Prieiga prie SD kortelės modulio duomenų naudojant „Arduino“

Po to, kai buvo stebimas „JLCPCB Datalogger“su temperatūros jutikliu su „Arduino“, būtina išimti atminties kortelę ir pasiekti kompiuterio duomenis.

Norėdami peržiūrėti ir analizuoti duomenis kokybiškiau, eksportuokite / nukopijuokite visą tekstinio failo informaciją į „Excel“. Po to galite sudaryti grafikus ir analizuoti gautus rezultatus.

12 žingsnis: Išvada

JLCPCB duomenų rinkiklis su temperatūros jutikliu su „Arduino“leidžia ne tik matuoti temperatūrą, bet ir įrašyti informaciją apie paciento temperatūros pokyčius per tam tikrą laikotarpį.

Turint šiuos saugomus duomenis galima analizuoti ir suprasti, kaip elgiasi COVID 19 užsikrėtusio paciento temperatūra.

Be to, galima įvertinti temperatūros lygį ir susieti jo vertę su tam tikros rūšies vaistų vartojimu.

Todėl, remdamasis šiais duomenimis, „JLCPCB Datalogger“su „Arduino“temperatūros jutikliu siekia padėti gydytojams ir slaugytojams tirti pacientų elgesį.

Galiausiai dėkojame bendrovei JLCPCB už paramą projekto plėtrai ir tikimės, kad galėsite ja pasinaudoti

Visus failus gali nemokamai atsisiųsti ir naudoti bet kuris vartotojas.

Rekomenduojamas: