Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: JLCPCB -dataloggerin rakentaminen lämpötila -anturilla Arduinolla
- Vaihe 2:
- Vaihe 3:
- Vaihe 4:
- Vaihe 5:
- Vaihe 6: JLCPCB Datalogger Control -valikko
- Vaihe 7:
- Vaihe 8:
- Vaihe 9:
- Vaihe 10:
- Vaihe 11: SD -korttimoduulin tietojen käyttäminen Arduinolla
- Vaihe 12: Johtopäätös
Video: Arduinon lämpötila -anturi soveltuu COVID 19: 12 -vaiheisiin (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Arduinon lämpötila -anturi on olennainen osa, kun haluamme mitata ihmiskehon prosessorin lämpötilaa.
Arduinon kanssa varustetun lämpötila -anturin on oltava kosketuksissa tai lähellä, jotta se voi vastaanottaa ja mitata lämpötilan. Näin lämpömittarit toimivat.
Näitä laitteita käytetään erittäin paljon sairaiden ihmisten kehon lämpötilan mittaamiseen, koska lämpötila on yksi ensimmäisistä tekijöistä, jotka muuttuvat ihmiskehossa epänormaalin tai sairauden sattuessa.
Yksi sairauksista, jotka muuttavat ihmiskehon lämpötilaa, on COVID 19. Siksi esittelemme tärkeimmät oireet:
Yskä Väsymys Hengitysvaikeudet (vakavat tapaukset) Kuume Kuume on oire, jonka tärkein ominaisuus on kehon lämpötilan nousu. Tässä taudissa meidän on seurattava jatkuvasti näitä oireita.
Siksi kehitämme projektin lämpötilan seuraamiseksi ja näiden tietojen tallentamiseksi muistikortille JLCPCB -dataloggerin kautta käyttämällä lämpötila -anturia Arduinon kanssa.
Siksi tässä artikkelissa opit:
- Miten JLCPCB -dataloggeri, jossa on lämpötila -anturi Arduinon kanssa?
- Kuinka lämpötila -anturi toimii Arduinon kanssa.
- Kuinka DS18B20 -lämpötila -anturi toimii Arduinon kanssa
- Käytä painikkeita, joissa on useita toimintoja.
Seuraavaksi näytämme sinulle, kuinka kehität JLCPCB -dataloggeriasi Arduino -lämpötila -anturin avulla.
Tarvikkeet
Arduino UNO
JLCPCB -piirilevy
DS18B20 lämpötila -anturi
Arduino Nano R3
Puserot
LCD -näyttö 16 x 2
Painonappikytkin
Vastus 1kR
SD -korttimoduuli Arduinolle
Vaihe 1: JLCPCB -dataloggerin rakentaminen lämpötila -anturilla Arduinolla
Kuten aiemmin mainittiin, projekti koostuu JLCPCB -dataloggerin ja lämpötila -anturin luomisesta Arduinolla, ja näiden tietojen avulla voimme seurata hoidettavan potilaan lämpötilaa.
Siten piiri on esitetty yllä olevassa kuvassa.
Siksi, kuten näette, tässä piirissä on DS18B20 -lämpötila -anturi, jossa on Arduino, joka vastaa potilaan lämpötilan mittaamisesta.
Lisäksi Arduino Nano vastaa näiden tietojen keräämisestä ja tallentamisesta SD -korttimoduulin muistikortille.
Jokainen tieto tallennetaan omalla ajallaan, joka luetaan RTC -moduulista DS1307.
Näin ollen, jotta Arduino -lämpötila -anturin tiedot voidaan tallentaa, käyttäjän on suoritettava prosessi ohjausvalikon kautta 16x2 LCD -näytöllä.
Vaihe 2:
Jokainen painike on vastuussa valinnan ohjaamisesta, kuten on esitetty nestekidenäytössä 16x2 kuvassa 2.
Jokainen vaihtoehto vastaa järjestelmän toiminnon suorittamisesta, kuten alla on esitetty.
- Vaihtoehto M vastaa muistikortille tallennettujen tietojen mittaamisen ja tallentamisen aloittamisesta.
- Vaihtoehto H vastaa järjestelmän tuntien säätämisestä.
- Vaihtoehtoa O/P käytetään vahvistamaan tietojen syöttäminen järjestelmään tai keskeyttämään tietojen kirjoittaminen muistikortille.
Järjestelmän ohjausprosessin ymmärtämiseksi annamme alla olevan koodin ja keskustelemme JLCPCB Datalogger with Temperature Sensor -laitteiston vaiheittaisesta ohjausjärjestelmästä Arduinon kanssa.
#include // Kirjasto, jossa on kaikki DS18B20 -anturin toiminnot
#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 -asetusten määrittäminen 0x27 #define ONE_WIRE_BUS 8 // Digitaalinen nasta DS18B20 -anturin liittämiseksi // Määritä uma instancia do oneWire para comunicacao com o -anturi OneWire oneWire (ONE_WIRE_BUS); DallasLämpötila -anturit (& oneWire); DeviceAddress sensor1; Tiedosto myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool intézkedés = 0, Adjusthour = 0, ok = 0; bool toimenpide_tila = 0, säätötunti_tila = 0, ok_tila = 0; bool toimenpide_prosessi = 0, Adjust_process = 0; tavu todellinenMin = 0, edellinenMin = 0; tavu todellinenTunti = 0, edellinenTunti = 0; tavu minUpdate = 0; int pinoSS = 10; // Pin 53, Mega / Pin 10, 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 (kertaa); minUpdate = DataTime [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 (kertaa); lcd.setCursor (0, 1); lcd.print ("Lämpötila:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); anturit.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 ("Lämpötilajärjestelmä"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); viive (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Anturin lokalisointi onnistui!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Anturi"); if (SD.begin ()) {// Inicializa tai SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card"); palata; } DS1307.getDate (DataTime); lcd.clear (); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Lukupainikkeen tilat mitta = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); jos (mitta == 0 && mittatila == 1) {mitta_tila = 0; } jos (mitta == 1 && mittatila == 0 && mittausprosessi == 0) {mitta_prosessi = 1; mittatila = 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 (); } viive (500); myFile.print ("Tunti:"); myFile.println ("Lämpötila"); DS1307.getDate (DataTime); todellinenMin = edellinenMin = Data -aika [5]; sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("Lämpötila:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } jos (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } jos (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_process == 0) {Adjust_process = 1; } // ----------------------------------------------- --- Mittausprosessi --------------------------------------------- -------------- if (toimenpide_prosessi == 1) {updateTemp (); tavu contMin = 0, contHour = 0; DS1307.getDate (DataTime); todellinenMin = Datan aika [5]; // ------------------------------------------------ --------- Laske minuutteja --------------------------------------- ------------------- jos (todellinenMin! = edellinenMin) {jatk.min ++; edellinenMin = todellinenMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (kertaa); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Laske tunnit ------------------------------------ ---------------------- if (todellinenTunti! = edellinenTunti) {jatkoaika ++; edellinenTunti = todellinenTunti; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Valmis"); lcd.setCursor (5, 1); lcd.print ("Prosessi"); toimenpide_prosessi = 0; contHour = 0; } // ------------------------------------------------- Kunto lopettaa dataloggerin ---------------------------------------------- ---- jos (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Pysäytetty"); lcd.setCursor (5, 1); lcd.print ("Prosessi"); toimenpide_prosessi = 0; viive (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Säädä aukioloaikoja ----------------------------------------- ---------------------- // Säädä tuntia, jos (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Säädä tuntia:"); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); // Tuntien säätö {mitta = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); jos (mitta == 0 && mittatila == 1) {mitta_tila = 0; } jos (mitta == 1 && mittatila == 0) {DataTime [4] ++; jos (DataTime [4]> 23) {DataTime [4] = 0; } mittatila = 1; sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } jos (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; jos (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } jos (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }} while (ok! = 1); } // ----------------------------------------------- ------- päättymisaika ---------------------------------------- -------------------}
Ensinnäkin määritämme kaikki kirjastot moduulien ohjaamiseen ja muuttujien ilmoittamiseen, joita käytetään ohjelmoitaessa JLCPCB Dataloggeria lämpötila -anturilla Arduinolle. Koodilohko näkyy alla.
Vaihe 3:
#include // Kirjasto, jossa on kaikki DS18B20 -anturin toiminnot
#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 -asetusten määrittäminen 0x27 #define ONE_WIRE_BUS 8 // Digitaalinen nasta DS18B20 -anturin liittämiseksi // Määritä uma instancia do oneWire para comunicacao com o -anturi OneWire oneWire (ONE_WIRE_BUS); DallasLämpötila -anturit (& oneWire); DeviceAddress sensor1; Tiedosto myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool intézkedés = 0, Adjusthour = 0, ok = 0; bool toimenpide_tila = 0, säätötunti_tila = 0, ok_tila = 0; bool toimenpide_prosessi = 0, Adjust_process = 0; tavu todellinenMin = 0, edellinenMin = 0; tavu todellinenTunti = 0, edellinenTunti = 0; tavu minUpdate = 0; int pinoSS = 10; // Pin 53, Mega / Pin 10, UNO int DataTime [7];
Jäljempänä meillä on tyhjennystoiminto. Tällä toiminnolla määritetään nastat ja laitteen alustus alla kuvatulla tavalla.
mitätön asennus ()
{Serial.begin (9600); DS1307.begin (); anturit.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 ("Lämpötilajärjestelmä"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); viive (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Anturin lokalisointi onnistui!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Anturi"); if (SD.begin ()) {// Inicializa tai SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card"); palata; } DS1307.getDate (DataTime); lcd.clear (); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Ensin käynnistettiin sarjaliikenne, reaaliaikainen kello ja lämpötila-anturi Arduino DS18B20 -laitteelle. Tämä näyttö on esitetty kuvassa 1.
Vaihe 4:
Tämän jälkeen järjestelmä lukee tunnit ja päivittää arvon kutsumalla updateHour -toiminnon. Tämän toiminnon tarkoituksena on siis esittää tunti -arvo joka minuutti. Toimintokoodilohko on esitetty alla.
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 (kertaa); minUpdate = DataTime [5]; }}
Vaihe 5:
Tuntien päivittämisen lisäksi käyttäjä voi valita yhden kolmesta painikkeesta seuratakseen potilasta Arduino -lämpötila -anturilla. Piiri on esitetty yllä olevassa kuvassa.
Vaihe 6: JLCPCB Datalogger Control -valikko
Ensin käyttäjän on tarkistettava ja säädettävä järjestelmän aukioloajat. Tämä prosessi suoritetaan, kun toista painiketta painetaan.
Kun painiketta painetaan, seuraava näyttö tulee näkyviin, joka näkyy yllä olevassa kuvassa.
Vaihe 7:
Tällä näytöllä käyttäjä voi syöttää tunnin ja minuutin arvot painikkeista, jotka on liitetty Arduinon digitaalisiin nastoihin 2 ja 3. Painikkeet on esitetty yllä olevassa kuvassa.
Koodiosio tuntien säätämistä varten on esitetty alla.
jos (Adjusthour == 0 && Adjusthour_state == 1)
{Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0 && intézkedés_process == 0) {Adjust_process = 1; }
Kun tuntipainiketta painetaan ja mittausprosessi -muuttuja on 0, ehto on tosi ja muuttujan Adjust_process arvoksi tulee 1. Mittausprosessimuuttujaa käytetään ilmoittamaan, että järjestelmä valvoo lämpötilaa. Kun sen arvo on 0, järjestelmä sallii käyttäjän siirtyä ajan asetusvalikkoon. Siksi, kun Adjust_process -muuttuja saa arvon 1, järjestelmä siirtyy ajan säätöehtoon. Tämä koodilohko on esitetty alla.
// ------------------------------------------------ ----- Säädä aukioloaikoja ------------------------------------------- --------------------
// Säädä tuntia, jos (Adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Säädä tuntia:"); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); // Tuntien säätö {mitta = digitalRead (Buttonmeasure); Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); jos (mitta == 0 && mittatila == 1) {mitta_tila = 0; } jos (mitta == 1 && mittatila == 0) {DataTime [4] ++; jos (DataTime [4]> 23) {DataTime [4] = 0; } mittatila = 1; sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } jos (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; jos (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; } jos (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }} while (ok! = 1); }
Tässä tilassa järjestelmä näyttää kuvassa 4 esitetyn viestin ja odottaa sitten, että arvot muuttuvat sisäisesti while -silmukassa.
Tämän avulla voit käyttää painiketta useampaan kuin yhteen toimintoon ja vähentää järjestelmän monimutkaisuutta.
Tällä tavalla käyttäjä säätää tuntien ja minuuttien arvoa ja tallentaa tiedot sitten järjestelmään, kun Ok -painiketta painetaan.
Kuten huomaat, järjestelmä lukee kolme painiketta, kuten alla on esitetty.
mitta = digitalRead (Buttonmeasure);
Adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
Huomaa, että mittauspainike (Buttonmeasure) on muuttanut toimintoaan. Sitä käytetään nyt tuntien arvojen säätämiseen, kuten alla on esitetty.
jos (mitata == 0 && mittatila == 1)
{mittatila = 0; } jos (mitta == 1 && mittatila == 0) {DataTime [4] ++; jos (DataTime [4]> 23) {DataTime [4] = 0; } mittatila = 1; sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } jos (Adjusthour == 0 && Adjusthour_state == 1) {Adjusthour_state = 0; } if (Adjusthour == 1 && Adjusthour_state == 0) {DataTime [5] ++; jos (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kertaa); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); Adjusthour_state = 1; }
Siksi joka kerta, kun jompaakumpaa painiketta painetaan, DataTime -vektorin sijaintien 4 ja 5 arvo muuttuu ja toiseksi nämä arvot tallennetaan DS1307 -muistiin.
Säätöjen jälkeen käyttäjän on napsautettava OK -painiketta lopettaakseen prosessin. Kun tämä tapahtuma tapahtuu, järjestelmä suorittaa seuraavat koodirivit.
jos (ok == 1)
{lcd.clear (); DS1307.getDate (DataTime); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); Adjust_process = 0; }
Se siirtyy yllä olevaan tilaan ja näyttää tuntiviestin ja Asetukset -valikon käyttäjälle.
Lopuksi käyttäjän on aloitettava potilaan seurantaprosessi lämpötila -anturin kautta Arduino JLCPCB Dataloggerilla.
Tätä varten käyttäjän on painettava mittauspainiketta, joka on kytketty digitaaliseen nastaan 2.
Sitten järjestelmä suorittaa lukemisen Arduinon lämpötila -anturilla ja tallentaa sen muistikortille. Piirialue on esitetty yllä olevassa kuvassa.
Vaihe 8:
Siksi, kun painiketta painetaan, seuraava osa koodista suoritetaan.
jos (mitata == 0 && mittatila == 1)
{mittatila = 0; } jos (mitta == 1 && mittatila == 0 && mittausprosessi == 0) {mitta_prosessi = 1; mittatila = 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 (); } viive (500); myFile.print ("Tunti:"); myFile.println ("Lämpötila"); DS1307.getDate (DataTime); todellinenMin = edellinenMin = Data -aika [5]; sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("Lämpötila:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
Yllä olevassa koodiosassa järjestelmä antaa arvon 1 arvolle meet_process. Se on vastuussa tietojen tallentamisesta SD -kortille.
Lisäksi järjestelmä tarkistaa, onko tietolokilla varustettu tekstitiedosto olemassa vai ei. Jos tiedosto on olemassa, järjestelmä poistaa ja luo uuden tiedoston tietojen tallentamiseksi.
Sen jälkeen se luo kaksi saraketta: toisen tunnit ja toisen tekstitiedoston sisälämpötilan.
Sen jälkeen se näyttää tunnit ja lämpötilan nestekidenäytössä, kuten yllä olevassa kuvassa näkyy.
Tämän jälkeen koodivirta suorittaa seuraavan ohjelmalohkon.
jos (toimenpide_prosessi == 1)
{updateTemp (); tavu contMin = 0, contHour = 0; DS1307.getDate (DataTime); todellinenMin = Datan aika [5]; // ------------------------------------------------ --------- Laske minuutteja --------------------------------------- ------------------- jos (todellinenMin! = edellinenMin) {jatk.min ++; edellinenMin = todellinenMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (kertaa); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Laske tunnit ------------------------------------ ---------------------- if (todellinenTunti! = edellinenTunti) {jatkoaika ++; edellinenTunti = todellinenTunti; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Valmis"); lcd.setCursor (5, 1); lcd.print ("Prosessi"); toimenpide_prosessi = 0; contHour = 0; } // ------------------------------------------------- Kunto lopettaa dataloggerin -----
Ensin suoritetaan updateTemp () -toiminto. Se on samanlainen kuin updateHour () -toiminto; se näyttää kuitenkin lämpötilan 1 minuutin välein.
Tämän jälkeen järjestelmä kerää aikatiedot reaaliaikaisesta kellosta ja tallentaa nykyisen minuutin arvon currentMin-muuttujaan.
Sitten se tarkistaa, onko min -muuttuja muutettu alla esitetyn ehdon mukaisesti
jos (todellinenMin! = edellinenMin)
{contMin ++; edellinenMin = todellinenMin; }
Jos nykyinen minuutti muuttuja on erilainen kuin edellinen arvo, se tarkoittaa, että arvo on muuttunut. määritetään muuttujalle previousMin, tallentaakseen sen edellisen arvon.
Siksi, kun tämän luvun arvo on 5, se tarkoittaa, että 5 minuuttia on kulunut ja järjestelmän on suoritettava uusi lämpötilalukema ja tallennettava tunti- ja lämpötila -arvo SD -kortin lokitiedostoon.
jos (jatkuu == 5)
{sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (kertaa); myFile.println (TempSensor); contMin = 0; }
Tällä tavalla tämä prosessi toistetaan, kunnes saavutetaan 5 tunnin mittausarvo potilaan lämpötilan mittaamisesta Arduino -lämpötila -anturilla.
Koodiosa näkyy alla ja on samanlainen kuin minuuttilaskenta, joka esitettiin yllä.
// ------------------------------------------------ ----------- Laskutunnit ------------------------------------- ---------------------
if (todellinenTunti! = edellinenTunti) {jatkoaika ++; edellinenTunti = todellinenTunti; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Valmis"); lcd.setCursor (5, 1); lcd.print ("Prosessi"); toimenpide_prosessi = 0; contHour = 0; }
5 tunnin seurannan jälkeen järjestelmä sulkee lokitiedoston ja näyttää käyttäjälle viestin "Valmis prosessi".
Lisäksi käyttäjä voi lopettaa tietojen tallennuksen painamalla OK/Tauko -painiketta. Kun näin tapahtuu, seuraava koodilohko suoritetaan.
// ---------------------------------------------- Ehto lopeta dataloggeri ----------------------------------------------- ---
jos (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Pysäytetty"); lcd.setCursor (5, 1); lcd.print ("Prosessi"); toimenpide_prosessi = 0; viive (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (ajat, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kertaa); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Vaihe 9:
Tämän jälkeen järjestelmä sulkee tiedoston ja näyttää viestin "Pysäytetty prosessi", kuten kuvassa 8 on esitetty.
Vaihe 10:
Tämän jälkeen järjestelmä tulostaa kellonäytön ja valikkovaihtoehdot kuvan 9 mukaisesti.
Vaihe 11: SD -korttimoduulin tietojen käyttäminen Arduinolla
JLCPCB Dataloggerin seurantaprosessin jälkeen lämpötila -anturilla Arduinolla on poistettava muistikortti ja päästävä käsiksi tietokoneen tietoihin.
Jos haluat tarkastella ja analysoida tietoja laadukkaammin, vie / kopioi kaikki tekstitiedoston tiedot Exceliin ja sen jälkeen voit piirtää kaavioita ja analysoida saatuja tuloksia.
Vaihe 12: Johtopäätös
JLCPCB -dataloggeri, jossa on lämpötila -anturi ja Arduino, antavat meille mahdollisuuden mitata lämpötilan mittaamisen lisäksi tietoja potilaan lämpökäyttäytymisestä tietyn ajanjakson aikana.
Näiden tallennettujen tietojen avulla on mahdollista analysoida ja ymmärtää, miten COVID -19 -tartunnan saaneen potilaan lämpötila käyttäytyy.
Lisäksi on mahdollista arvioida lämpötilatasoa ja liittää sen arvo jonkin tyyppisten lääkkeiden käyttöön.
Siksi näiden tietojen avulla Arduinon lämpötila -anturilla varustettu JLCPCB Datalogger pyrkii auttamaan lääkäreitä ja sairaanhoitajia potilaiden käyttäytymisen tutkimisessa.
Lopuksi kiitämme JLCPCB -yritystä projektin kehittämisen tukemisesta ja toivomme, että voit käyttää sitä
Kaikki käyttäjät voivat ladata ja käyttää vapaasti kaikkia tiedostoja.
Suositeltava:
Kuinka käyttää DHT22 -kosteus- ja lämpötila -anturia Arduinon kanssa: 6 vaihetta
Kuinka käyttää DHT22 -kosteus- ja lämpötila -anturia Arduinon kanssa: Tässä opetusohjelmassa opimme käyttämään DHT22 -kosteus- ja lämpötila -anturia Arduinon kanssa ja näyttämään arvot OLED -näytöllä
Kuinka käyttää DHT12 I2C -kosteus- ja lämpötila -anturia Arduinon kanssa: 7 vaihetta
Kuinka käyttää DHT12 I2C -kosteus- ja lämpötila -anturia Arduinon kanssa: Tässä opetusohjelmassa opimme käyttämään DHT12 I2C -kosteus- ja lämpötila -anturia Arduinon kanssa ja näyttämään arvot OLED -näytöllä
Lämpötila- ja kosteusanturi (dht11) Liitäntä Arduinon kanssa: 4 vaihetta
Lämpötila- ja kosteusanturi (dht11) Liitäntä Arduinon kanssa: Lämpötila -anturilla on laaja käyttöalue, sitä käytetään monissa paikoissa ja missä se toimii palautejärjestelmänä. Markkinoilta on saatavana useita lämpötila -anturityyppejä, joiden tekniset tiedot ovat erilaisia
Arduinon sääasema BMP280 -DHT11: n avulla - Lämpötila, kosteus ja paine: 8 vaihetta
Arduinon sääasema käyttämällä BMP280 -DHT11 -laitetta - Lämpötila, kosteus ja paine: Tässä opetusohjelmassa opimme tekemään sääaseman, joka näyttää LÄMPÖTILA, KOSTEUS JA PAINE nestekidenäytössä TFT 7735Katso esittelyvideo
Langaton kaukosäädin käyttäen 2,4 GHz: n NRF24L01 -moduulia Arduinon kanssa - Nrf24l01 4 -kanavainen / 6 -kanavainen lähettimen vastaanotin nelikopterille - Rc -helikopteri - Rc -taso Arduinon avulla: 5 vaihetta (kuvilla)
Langaton kaukosäädin käyttäen 2,4 GHz: n NRF24L01 -moduulia Arduinon kanssa | Nrf24l01 4 -kanavainen / 6 -kanavainen lähettimen vastaanotin nelikopterille | Rc -helikopteri | Rc -lentokone Arduinon avulla: Rc -auton käyttö | Nelikopteri | Drone | RC -taso | RC -vene, tarvitsemme aina vastaanottimen ja lähettimen, oletetaan, että RC QUADCOPTER -laitteelle tarvitaan 6 -kanavainen lähetin ja vastaanotin, ja tämäntyyppinen TX ja RX on liian kallista, joten teemme sellaisen