Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Konstruktion af JLCPCB Datalogger med temperatursensor med Arduino
- Trin 2:
- Trin 3:
- Trin 4:
- Trin 5:
- Trin 6: JLCPCB Datalogger -kontrolmenu
- Trin 7:
- Trin 8:
- Trin 9:
- Trin 10:
- Trin 11: Adgang til SD -kortmoduldata med Arduino
- Trin 12: Konklusion
Video: Temperatursensor til Arduino Anvendt til COVID 19: 12 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Temperatursensoren til Arduino er et grundlæggende element, når vi vil måle temperaturen på en processor i menneskekroppen.
Temperatursensoren med Arduino skal være i kontakt eller tæt på for at modtage og måle varmeniveauet. Sådan fungerer termometre.
Disse enheder er ekstremt anvendte til at måle syge menneskers kropstemperatur, da temperaturen er en af de første faktorer, der ændrer sig i menneskekroppen, når der er en abnormitet eller sygdom.
En af de sygdomme, der ændrer temperaturen i menneskekroppen, er COVID 19. Derfor præsenterer vi de vigtigste symptomer:
Hostetræthed Åndedrætsbesvær (alvorlige tilfælde) Feber Feber er et symptom, hvis hovedkarakteristik er en stigning i kropstemperaturen. I denne sygdom skal vi konstant overvåge disse symptomer.
Således vil vi udvikle et projekt til overvågning af temperaturen og lagring af disse data på et hukommelseskort gennem en JLCPCB Datalogger ved hjælp af en temperatursensor med Arduino.
Derfor vil du i denne artikel lære:
- Hvordan fungerer en JLCPCB Datalogger med en temperatursensor med Arduino?
- Hvordan fungerer temperatursensoren med Arduino.
- Hvordan fungerer DS18B20 temperatursensoren med Arduino
- Brug knapper med flere funktioner.
Dernæst viser vi dig, hvordan du vil udvikle din JLCPCB Datalogger ved hjælp af Arduino temperatursensor.
Forbrugsvarer
Arduino UNO
JLCPCB printkort
DS18B20 Temperatursensor
Arduino Nano R3
Jumpere
LCD -skærm 16 x 2
Trykknapkontakt
Modstand 1kR
SD -kortmodul til Arduino
Trin 1: Konstruktion af JLCPCB Datalogger med temperatursensor med Arduino
Som tidligere nævnt består projektet i at oprette en JLCPCB Datalogger med temperatursensor med Arduino, og gennem disse data kan vi overvåge temperaturen på den patient, der behandles.
Således er kredsløbet vist i figuren ovenfor.
Som du kan se, har dette kredsløb derfor en DS18B20 temperatursensor med Arduino, som er ansvarlig for måling af patientens temperaturaflæsning.
Derudover vil Arduino Nano være ansvarlig for at indsamle disse data og gemme dem på SD -kortmodulets hukommelseskort.
Hver information gemmes med sin respektive tid, som læses fra RTC -modulet DS1307.
For at dataene fra temperatursensoren med Arduino kan gemmes, skal brugeren udføre processen gennem kontrolmenuen med 16x2 LCD.
Trin 2:
Hver knap er ansvarlig for at styre en option, som vist på LCD -skærmen 16x2 i figur 2.
Hver mulighed er ansvarlig for at udføre en funktion i systemet, som vist nedenfor.
- Mulighed M er ansvarlig for at starte måling og registrering af data på hukommelseskortet.
- Mulighed H er ansvarlig for justering af systemets timer.
- Valgmulighed O/P bruges til at bekræfte dataindtastning i systemet eller til at pause skrivning af data til hukommelseskortet.
For at forstå systemkontrolprocessen, vil vi give nedenstående kode og diskutere trin-for-trin kontrolsystem for JLCPCB Datalogger med temperatursensor med Arduino.
#include // Bibliotek med alle funktioner i DS18B20 Sensor
#include #include // Biblioteca I2C til LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Konfiguration af endereco til LCD 16x2 til 0x27 #define ONE_WIRE_BUS 8 // Digital pin til tilslutning af DS18B20 -sensoren // Definer en instans til enWire til en comunicacao -com o sensor OneWire oneWire (ONE_WIRE_BUS); DallasTemperatursensorer (& oneWire); DeviceAddress -sensor1; Fil myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool measure = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool måle_proces = 0, juster_proces = 0; byte actualMin = 0, previousMin = 0; byte actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 til Mega / Pin 10 til UNO int DataTime [7]; ugid updateHour () {DS1307.getDate (DataTime); hvis (DataTime [5]! = minUpdate) {sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (gange); minUpdate = DataTime [5]; }} ugyldig updateTemp () {DS1307.getDate (DataTime); hvis (DataTime [5]! = minUpdate) {sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("Temperatur:"); lcd.setCursor (14, 1); sensorer.anmodningstemperaturer (); float TempSensor = sensorer.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} ugyldig opsætning () {Serial.begin (9600); DS1307.begynd (); sensorer.begynd (); 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"); forsinkelse (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Sensorlokalisering med succes!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Sensor"); 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."); Vend tilbage; } DS1307.getDate (DataTime); lcd.clear (); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Læsning af knaptilstande måle = digitalRead (knapmåling); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); hvis (måle == 0 && måle_stat == 1) {måle_stat = 0; } hvis (måle == 1 && måle_stat == 0 && måle_proces == 0) {måle_proces = 1; måle_stat = 1; hvis (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!"); } ellers {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } forsinkelse (500); myFile.print ("Time:"); myFile.println ("Temperatur"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("Temperatur:"); lcd.setCursor (14, 1); sensorer.anmodningstemperaturer (); float TempSensor = sensorer.getTempCByIndex (0); lcd.print (TempSensor); } hvis (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } hvis (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; } // ----------------------------------------------- --- Måleproces -------------------------------------------- -------------- if (measure_process == 1) {updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Tæl minutter --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } hvis (contMin == 5) {sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); sensorer.anmodningstemperaturer (); float TempSensor = sensorer.getTempCByIndex (0); myFile.print (gange); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Tæl timer ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; foregående time = faktisk time; } hvis (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Færdig"); lcd.setCursor (5, 1); lcd.print ("Process"); måleproces = 0; contHour = 0; } //----------------------------------------------Tilstand for at stoppe dataloggeren ---------------------------------------------- ---- hvis (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("stoppet"); lcd.setCursor (5, 1); lcd.print ("Process"); måleproces = 0; forsinkelse (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Juster timer ----------------------------------------- ---------------------- // Juster time hvis (just_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Juster time:"); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (tider); // Time Adjust gør {measure = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); hvis (måle == 0 && måle_stat == 1) {målestat = 0; } hvis (måle == 1 && måle_stat == 0) {DataTime [4] ++; hvis (DataTime [4]> 23) {DataTime [4] = 0; } måle_stat = 1; sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (gange); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } hvis (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } hvis (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; hvis (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (tider); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } hvis (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); juster_proces = 0; }} mens (ok! = 1); } // ----------------------------------------------- ------- Afslut justertid ---------------------------------------- -------------------}
Først definerer vi alle bibliotekerne til styring af modulerne og deklaration af variabler, der bruges ved programmering af JLCPCB Datalogger med en temperatursensor til Arduino. Kodeblokken er vist nedenfor.
Trin 3:
#include // Bibliotek med alle funktioner i DS18B20 Sensor
#include #include // Biblioteca I2C til LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Digital Pin til tilslutning af DS18B20 -sensoren // Definer en instans til enWire til en comunicacao com o -sensor OneWire oneWire (ONE_WIRE_BUS); DallasTemperatursensorer (& oneWire); DeviceAddress -sensor1; Fil myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool measure = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; bool måle_proces = 0, juster_proces = 0; byte actualMin = 0, previousMin = 0; byte actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 til Mega / Pin 10 til UNO int DataTime [7];
Herefter har vi den ugyldige opsætningsfunktion. Denne funktion bruges til at konfigurere benene og enhedens initialisering, som vist nedenfor.
ugyldig opsætning ()
{Serial.begin (9600); DS1307.begynd (); sensorer.begynd (); 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"); forsinkelse (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Sensorlokalisering med succes!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Sensor"); 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."); Vend tilbage; } DS1307.getDate (DataTime); lcd.clear (); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Først blev den serielle kommunikation, real-time uret og temperatursensoren for Arduino DS18B20 startet. Efter initialisering og test af enhederne blev meddelelsen med menuindstillingerne udskrevet på 16x2 LCD-skærmen. Denne skærm er vist i figur 1.
Trin 4:
Derefter læser systemet timerne og opdaterer værdien ved at kalde updateHour -funktionen. Denne funktion har således til formål at præsentere timeværdien hvert minut. Funktionskodeblokken er vist nedenfor.
ugid updateHour ()
{DS1307.getDate (DataTime); hvis (DataTime [5]! = minUpdate) {sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (gange); minUpdate = DataTime [5]; }}
Trin 5:
Ud over at opdatere timerne, kan brugeren vælge en af de tre knapper til at overvåge patienten med en temperatursensor med Arduino. Kredsløbet er vist i figuren ovenfor.
Trin 6: JLCPCB Datalogger -kontrolmenu
Først skal brugeren kontrollere og justere systemtimerne. Denne proces udføres, når der trykkes på den anden knap.
Når der trykkes på knappen, skal følgende skærmbillede vises, som er vist i figuren ovenfor.
Trin 7:
Fra denne skærm vil brugeren kunne indtaste time- og minutværdierne fra knapperne, der er forbundet til digitale ben 2 og 3 i Arduino. Knapperne er vist i figuren ovenfor.
Kodedelen til styring af timerne er vist nedenfor.
hvis (adjusthour == 0 && adjusthour_state == 1)
{adjusthour_state = 0; } hvis (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; }
Når der trykkes på timeknappen, og måleprocesvariablen er indstillet til 0, vil betingelsen være sand, og justeringsprocesvariablen indstilles til 1. Variablen måleproces bruges til at signalere, at systemet overvåger temperaturen. Når værdien er 0, tillader systemet brugeren at gå ind i tidsindstillingsmenuen. Derfor, efter at justeringsprocesvariablen modtager en værdi på 1, vil systemet angive tidsjusteringsbetingelsen. Denne kodeblok er vist nedenfor.
// ------------------------------------------------ ----- Juster timer ------------------------------------------- --------------------
// Juster time, hvis (justér_proces == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Juster time:"); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (tider); // Time Adjust gør {measure = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); hvis (måle == 0 && måle_stat == 1) {målestat = 0; } hvis (måle == 1 && måle_stat == 0) {DataTime [4] ++; hvis (DataTime [4]> 23) {DataTime [4] = 0; } måle_stat = 1; sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (tider); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } hvis (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } hvis (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; hvis (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (gange); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } hvis (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); juster_proces = 0; }} mens (ok! = 1); }
I denne tilstand vil systemet vise meddelelsen vist i figur 4 og derefter vente på, at værdierne justeres internt i while -sløjfen. Ved justering af timerne har disse knapper deres funktioner ændret, det vil sige, de er multifunktionelle.
Dette giver dig mulighed for at bruge en knap til mere end én funktion og reducere systemets kompleksitet.
På denne måde vil brugeren justere værdien af timer og minutter og derefter gemme dataene i systemet, når der trykkes på Ok -knappen.
Som du kan se, vil systemet læse de 3 knapper, som vist herunder.
maatregel = digitalRead (knapforanstaltning);
adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
Bemærk, at måleknappen (Buttonmeasure) har ændret sin funktion. Det vil nu blive brugt til at justere timeværdierne, som vist nedenfor. De følgende to betingelser ligner hinanden og bruges til at justere timer og minutter, som vist ovenfor.
hvis (måle == 0 && måle_stat == 1)
{måle_stat = 0; } hvis (måle == 1 && måle_stat == 0) {DataTime [4] ++; hvis (DataTime [4]> 23) {DataTime [4] = 0; } måle_stat = 1; sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (gange); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } hvis (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } hvis (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; hvis (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (gange); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; }
Hver gang der trykkes på en af de to knapper, ændres derfor værdien af positionerne 4 og 5 i DataTime -vektoren, og for det andet gemmes disse værdier i DS1307 -hukommelsen.
Efter justeringerne skal brugeren klikke på knappen Ok for at afslutte processen. Når denne hændelse opstår, vil systemet udføre følgende kodelinjer.
hvis (ok == 1)
{lcd.clear (); DS1307.getDate (DataTime); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); juster_proces = 0; }
Det vil indtaste ovenstående betingelse og præsentere timebeskeden og menuen Indstillinger for brugeren.
Endelig skal brugeren starte patientovervågningsprocessen gennem temperatursensoren med Arduino JLCPCB Datalogger.
For at gøre dette skal brugeren trykke på måleknappen, der er tilsluttet digital pin 2.
Derefter vil systemet udføre aflæsningen med temperatursensoren til Arduino og gemme det på hukommelseskortet. Kredsløbsområdet er vist i figuren ovenfor.
Trin 8:
Derfor, når der trykkes på knappen, vil følgende del af koden blive eksekveret.
hvis (måle == 0 && måle_stat == 1)
{måle_stat = 0; } hvis (måle == 1 && måle_stat == 0 && måle_proces == 0) {måle_proces = 1; måle_stat = 1; hvis (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!"); } ellers {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } forsinkelse (500); myFile.print ("Time:"); myFile.println ("Temperatur"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("Temperatur:"); lcd.setCursor (14, 1); sensorer.anmodningstemperaturer (); float TempSensor = sensorer.getTempCByIndex (0); lcd.print (TempSensor); }
I kodedelen ovenfor tildeler systemet værdien 1 til variabelen måleproces. Det er ansvarligt for, at dataene kan gemmes på SD -kortet.
Derudover vil systemet kontrollere, om der findes en tekstfil med en datalog eller ej. Hvis der er en fil, sletter systemet og opretter en ny til at gemme dataene.
Derefter opretter det to kolonner: en for timerne og en for temperaturen inde i tekstfilen.
Derefter viser det timer og temperatur på LCD -skærmen, som vist i figuren ovenfor.
Derefter udfører kodeflowet følgende programblok.
hvis (måle_proces == 1)
{updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Tæl minutter --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } hvis (contMin == 5) {sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); sensorer.anmodningstemperaturer (); float TempSensor = sensorer.getTempCByIndex (0); myFile.print (gange); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Tæl timer ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; foregående time = faktisk time; } hvis (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Færdig"); lcd.setCursor (5, 1); lcd.print ("Process"); måleproces = 0; contHour = 0; } //----------------------------------------------Tilstand for at stoppe dataloggeren -----
Først vil updateTemp () -funktionen blive udført. Det ligner funktionen updateHour (); den viser imidlertid temperaturen hvert 1. minut.
Derefter vil systemet indsamle tidsdata fra Real-Time Clock og gemme den aktuelle minutværdi i currentMin-variablen.
Derefter vil den kontrollere, om min -variablen er blevet ændret i henhold til nedenstående betingelse
hvis (actualMin! = previousMin)
{contMin ++; previousMin = actualMin; }
Derfor, hvis den aktuelle minutvariabel er forskellig fra den tidligere værdi, betyder det, at der er sket en ændring i værdien. På denne måde vil betingelsen være sand, og værdien af minuttællingen øges (contMin) og den aktuelle værdi vil blive tildelt variablen previousMin for at gemme dens tidligere værdi.
Derfor, når værdien af denne tælling er lig med 5, betyder det, at der er gået 5 minutter, og systemet skal udføre en ny temperaturmåling og gemme time- og temperaturværdien i SD -kort logfilen.
hvis (contMin == 5)
{sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); sensorer.anmodningstemperaturer (); float TempSensor = sensorer.getTempCByIndex (0); myFile.print (gange); myFile.println (TempSensor); contMin = 0; }
På denne måde gentages denne proces, indtil værdien af 5 timers overvågning af patientens temperatur med temperatursensoren med Arduino nås.
Kodedelen er vist nedenfor og ligner minuttalet, som blev præsenteret ovenfor.
// ------------------------------------------------ ----------- Tæl timer ------------------------------------- ---------------------
hvis (actualHour! = previousHour) {contHour ++; foregående time = faktisk time; } hvis (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Færdig"); lcd.setCursor (5, 1); lcd.print ("Process"); måleproces = 0; contHour = 0; }
Efter at have nået 5 timers overvågning, lukker systemet logfilen og præsenterer meddelelsen "Færdig proces" for brugeren.
Derudover kan brugeren trykke på knappen Ok/Pause for at stoppe optagelse af data. Når dette sker, udføres følgende kodeblok.
// ---------------------------------------------- Betingelse til stop dataloggeren ----------------------------------------------- ---
hvis (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("stoppet"); lcd.setCursor (5, 1); lcd.print ("Process"); måleproces = 0; forsinkelse (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (gange, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (gange); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Trin 9:
Derefter lukker systemet filen og præsenterer meddelelsen "Stoped Process", som vist i figur 8.
Trin 10:
Derefter udskriver systemet tidsskærmen og menuindstillingerne, som vist i figur 9.
Trin 11: Adgang til SD -kortmoduldata med Arduino
Efter processen med at overvåge JLCPCB Datalogger med temperatursensoren med Arduino, er det nødvendigt at fjerne hukommelseskortet og få adgang til dataene på computeren.
For at se og analysere dataene med bedre kvalitet, eksporter / kopier alle oplysninger om tekstfilen til Excel. Derefter kan du plotte grafer og analysere de opnåede resultater.
Trin 12: Konklusion
JLCPCB Datalogger med temperatursensor med Arduino giver os mulighed for, ud over at måle temperaturen, at registrere oplysninger om patientens temperaturadfærd over en periode.
Med disse lagrede data er det muligt at analysere og forstå, hvordan temperaturen hos patienten inficeret af COVID 19 opfører sig.
Derudover er det muligt at evaluere temperaturniveauet og knytte dets værdi til anvendelse af en eller anden form for medicin.
Derfor har JLCPCB Datalogger med temperatursensor til Arduino gennem disse data til formål at hjælpe læger og sygeplejersker i undersøgelsen af patienters adfærd.
Endelig takker vi virksomheden JLCPCB for at støtte udviklingen af projektet og håber, at du kan bruge det
Alle filer kan downloades og bruges frit af enhver bruger.
Anbefalede:
Aktivt lavpasfilter RC anvendt i projekter med Arduino: 4 trin
Aktivt lavpasfilter RC anvendt i projekter med Arduino: Lavpasfilteret er fremragende elektroniske kredsløb til at filtrere ud parasitsignaler fra dine projekter. Et almindeligt problem i projekter med Arduino og systemer med sensorer, der arbejder tæt på strømkredse, er tilstedeværelsen af "parasitære" signaler. De
ESP8266 NodeMCU Access Point (AP) til webserver med DT11 temperatursensor og udskrivningstemperatur og fugtighed i browser: 5 trin
ESP8266 NodeMCU Access Point (AP) til webserver med DT11 temperatursensor og udskrivningstemperatur og luftfugtighed i browser: Hej fyre i de fleste projekter, vi bruger ESP8266, og i de fleste projekter bruger vi ESP8266 som webserver, så data kan tilgås på enhver enhed via wifi ved at få adgang til webserveren hostet af ESP8266, men det eneste problem er, at vi har brug for en fungerende router til
IoT -temperatursensor med ESP8266: 6 trin (med billeder)
IoT Temperatursensor Med ESP8266: Jeg blev inspireret til at oprette en temperatursensor, som jeg kan overvåge via wifi. Dette projekt er ikke nyt, men jeg kan godt lide tanken om at have et mellemliggende lag for sikkerhed og ikke at skulle åbne port i din router til din IoT -enhed. Den grundlæggende idé vil allo
Arduino -baseret digital temperatursensor: 5 trin (med billeder)
Arduino -baseret digital temperatursensor: Temperatursensorer er en rigtig almindelig ting i disse dage, men de fleste af dem er ekstremt komplicerede at lave eller ekstremt dyre at købe til. Dette projekt giver dig en Arduino -baseret digital temperatursensor, som ikke kun er billig og meget let til m
SENSOR SUHU DENGAN LCD DAN LED (Fremstilling af temperatursensor med LCD og LED): 6 trin (med billeder)
SENSOR SUHU DENGAN LCD DAN LED (Making Temperature Sensor With LCD and LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA fra Indonesien, der kan også sige, at der kan bruges en sensor, der kan bruges til en Arduino -udgang på LCD og LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda