Taula de continguts:
- Subministraments
- Pas 1: construcció del registre de dades JLCPCB amb sensor de temperatura amb Arduino
- Pas 2:
- Pas 3:
- Pas 4:
- Pas 5:
- Pas 6: menú de control del registre de dades JLCPCB
- Pas 7:
- Pas 8:
- Pas 9:
- Pas 10:
- Pas 11: Accedir a les dades del mòdul de la targeta SD amb Arduino
- Pas 12: Conclusió
Vídeo: Sensor de temperatura per Arduino aplicat a COVID 19: 12 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
El sensor de temperatura per Arduino és un element fonamental quan volem mesurar la temperatura d’un processador del cos humà.
El sensor de temperatura amb Arduino ha d’estar en contacte o a prop per rebre i mesurar el nivell de calor. Així funcionen els termòmetres.
Aquests dispositius s’utilitzen extremadament per mesurar la temperatura corporal de les persones malaltes, ja que la temperatura és un dels primers factors que canvien al cos humà quan hi ha alguna anomalia o malaltia.
Una de les malalties que alteren la temperatura del cos humà és el COVID 19. Per tant, presentem els principals símptomes:
Tos Cansament Dificultat per respirar (casos greus) Febre La febre és un símptoma que té com a característica principal l’augment de la temperatura corporal. En aquesta malaltia, hem de controlar constantment aquests símptomes.
Així, desenvoluparem un projecte per controlar la temperatura i emmagatzemar aquestes dades en una targeta de memòria mitjançant un JLCPCB Datalogger mitjançant un sensor de temperatura amb Arduino.
Per tant, en aquest article aprendreu:
- Com funciona un Datalogger JLCPCB amb un sensor de temperatura amb Arduino?
- Com funciona el sensor de temperatura amb Arduino.
- Com funciona el sensor de temperatura DS18B20 amb Arduino
- Utilitzeu botons amb diverses funcions.
A continuació, us mostrarem com desenvolupareu el JLCPCB Datalogger mitjançant el sensor de temperatura Arduino.
Subministraments
Arduino UNO
Tauler de circuits impresos JLCPCB
Sensor de temperatura DS18B20
Arduino Nano R3
Saltadors
Pantalla LCD de 16 x 2
Interruptor de polsador
Resistència 1kR
Mòdul de targeta SD per Arduino
Pas 1: construcció del registre de dades JLCPCB amb sensor de temperatura amb Arduino
Com es va esmentar anteriorment, el projecte consisteix a crear un registrador de dades JLCPCB amb sensor de temperatura amb Arduino i, mitjançant aquestes dades, podem controlar la temperatura del pacient tractat.
Per tant, el circuit es mostra a la figura anterior.
Per tant, com podeu veure, aquest circuit té un sensor de temperatura DS18B20 amb Arduino, que s’encarrega de mesurar la lectura de temperatura del pacient.
A més, Arduino Nano serà el responsable de recopilar aquestes dades i emmagatzemar-les a la targeta de memòria del mòdul de la targeta SD.
Cada informació es guardarà amb el seu temps respectiu, que es llegirà des del mòdul RTC DS1307.
Així, perquè les dades del sensor de temperatura amb Arduino es desin, l’usuari ha de realitzar el procés a través del menú de control amb la pantalla LCD de 16x2.
Pas 2:
Cada botó és responsable de controlar una opció, tal com es mostra a la pantalla LCD 16x2 de la figura 2.
Cada opció és responsable de realitzar una funció al sistema, tal com es mostra a continuació.
- L’opció M s’encarrega d’iniciar la mesura i l’enregistrament de dades a la targeta de memòria.
- L’opció H s’encarrega d’ajustar les hores del sistema.
- L'opció O / P s'utilitza per confirmar l'entrada de dades al sistema o per pausar l'escriptura de dades a la targeta de memòria.
Per entendre el procés de control del sistema, proporcionarem el codi següent i parlarem del sistema de control pas a pas del JLCPCB Datalogger amb sensor de temperatura amb Arduino.
#include // Biblioteca amb totes les funcions del sensor DS18B20
#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); // Configurant o enderecant LCD 16x2 per a 0x27 #define ONE_WIRE_BUS 8 // Pin digital per connectar el sensor DS18B20 // Definiu la instància de fer un oneWire per comunicar-vos amb el sensor OneWire oneWire (ONE_WIRE_BUS); Sensors de temperatura Dallas (& oneWire); DeviceAddress sensor1; Arxiva 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 mesura_procés = 0, ajust_procés = 0; byte actualMin = 0, anteriorMin = 0; byte actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 per a Mega / Pin 10 per a UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (vegades); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); flotador TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS com saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Sistema temporal"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); endarreriment (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Localització del sensor amb èxit!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Sensor"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprimeix tela} else {Serial.println ("Falha na inicialização do SD Card."); tornar; } DS1307.getDate (DataTime); lcd.clear (); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); } bucle buit () {updateHour (); // Els estats del botó de lectura mesuren = digitalRead (Buttonmeasure); adjusthour = DigitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mesura == 0 && mesura_estat == 1) {mesura_estat = 0; } if (mesura == 1 && mesura_estat == 0 && mesura_procés == 0) {mesura_procés = 1; mesura_estat = 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 (); } retard (500); myFile.print ("Hora:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); actualMin = anteriorMin = DataTime [5]; sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); flotador TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; } // ----------------------------------------------- --- Procés de mesura --------------------------------------------- -------------- if (mesura_procés == 1) {updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Compte minuts --------------------------------------- ------------------- if (Min actual: = Min anterior) {contMin ++; previousMin = Min actual; } if (contMin == 5) {sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); flotador TempSensor = sensors.getTempCByIndex (0); myFile.print (vegades); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Compte d'hores ------------------------------------ ---------------------- if (Hora real! = Hora anterior) {contHour ++; Hora anterior = Hora actual; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Finalitzat"); lcd.setCursor (5, 1); lcd.print ("Procés"); mesura_procés = 0; contHour = 0; } // ---------------------------------------------- Condició per aturar el registre de dades ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Aturat"); lcd.setCursor (5, 1); lcd.print ("Procés"); mesura_procés = 0; endarreriment (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }} // ---------------------------------------------- ------- Ajusta les hores ----------------------------------------- ---------------------- // Ajusta l'hora si (procés_ajusta == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Ajusta l'hora"); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); // Ajust de l’hora {mesura = Llegir digital (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mesura == 0 && mesura_estat == 1) {mesura_estat = 0; } if (mesura == 1 && mesura_estat == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mesura_estat = 1; sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); 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] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); ajustar_procés = 0; }} while (ok! = 1); } // ----------------------------------------------- ------- Finalitza l’hora d’ajust ---------------------------------------- -------------------}
En primer lloc, definim totes les llibreries per controlar els mòduls i declarar les variables que s’utilitzen quan es programa el JLCPCB Datalogger amb un sensor de temperatura per Arduino. A continuació es mostra el bloc de codi.
Pas 3:
#include // Biblioteca amb totes les funcions del sensor DS18B20
#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); // Configurant o enderecant LCD 16x2 per a 0x27 #define ONE_WIRE_BUS 8 // Pin digital per connectar el sensor DS18B20 // Definiu la instància de fer un oneWire per comunicar-vos amb el sensor OneWire oneWire (ONE_WIRE_BUS); Sensors de temperatura Dallas (& oneWire); DeviceAddress sensor1; Arxiva 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 mesura_procés = 0, ajust_procés = 0; byte actualMin = 0, anteriorMin = 0; byte actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 per a Mega / Pin 10 per a UNO int DataTime [7];
A partir d’ara, tenim la funció de configuració nul·la. Aquesta funció s’utilitza per configurar la inicialització dels pins i del dispositiu, tal com es mostra a continuació.
configuració nul·la ()
{Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS com saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Sistema temporal"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); endarreriment (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Localització del sensor amb èxit!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Sensor"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprimeix tela} else {Serial.println ("Falha na inicialização do SD Card."); tornar; } DS1307.getDate (DataTime); lcd.clear (); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }
En primer lloc, es van iniciar la comunicació en sèrie, el rellotge en temps real i el sensor de temperatura de l’Arduino DS18B20. Després d’inicialitzar i provar els dispositius, el missatge amb les opcions del menú es va imprimir a la pantalla LCD de 16x2. Aquesta pantalla es mostra a la figura 1.
Pas 4:
Després, el sistema llegeix les hores i actualitza el valor trucant a la funció updateHour. Per tant, aquesta funció té el propòsit de presentar el valor horari cada minut. El bloc de codi de funcions es mostra a continuació.
void updateHour ()
{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (vegades); minUpdate = DataTime [5]; }}
Pas 5:
A més d’actualitzar les hores, l’usuari pot seleccionar un dels tres botons per controlar el pacient amb un sensor de temperatura amb Arduino. El circuit es mostra a la figura anterior.
Pas 6: menú de control del registre de dades JLCPCB
En primer lloc, l’usuari ha de comprovar i ajustar les hores del sistema. Aquest procés es realitza quan es prem el segon botó.
Quan es prem el botó, hauria d'aparèixer la pantalla següent, que es mostra a la figura superior.
Pas 7:
Des d’aquesta pantalla, l’usuari podrà introduir els valors d’hora i minut des dels botons connectats als pins digitals 2 i 3 de l’Arduino. Els botons es mostren a la figura superior.
A continuació es mostra la part del codi per controlar les hores.
if (adjusthour == 0 && adjusthour_state == 1)
{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; }
Quan es prem el botó de les hores i la variable measure_process s'estableix a 0, la condició serà veritable i la variable adjust_process s'establirà a 1. La variable measure_process s'utilitza per indicar que el sistema controla la temperatura. Quan el seu valor és 0, el sistema permetrà a l'usuari entrar al menú de configuració de l'hora. Per tant, després que la variable adjust_process rebi un valor d'1, el sistema introduirà la condició d'ajust del temps. Aquest bloc de codi es mostra a continuació.
// ------------------------------------------------ ----- Ajusta les hores ------------------------------------------- --------------------
// Ajusta l’hora si (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Ajusta l'hora"); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); // Ajust de l’hora {mesura = Llegir digital (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (mesura == 0 && mesura_estat == 1) {mesura_estat = 0; } if (mesura == 1 && mesura_estat == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mesura_estat = 1; sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); 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] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); ajustar_procés = 0; }} while (ok! = 1); }
En aquesta condició, el sistema mostrarà el missatge que es mostra a la figura 4 i, a continuació, esperarà que els valors s’ajusten internament al bucle while. Quan s’ajusten les hores, aquests botons canvien les seves funcions, és a dir, són multifuncionals.
Això us permet utilitzar un botó per a més d'una funció i reduir la complexitat del sistema.
D'aquesta manera, l'usuari ajustarà el valor de les hores i els minuts i desarà les dades al sistema quan es prem el botó Ok.
Com podeu veure, el sistema llegirà els 3 botons, tal com es mostra a continuació.
mesura = digitalRead (Buttonmeasure);
adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
Tingueu en compte que el botó de mesura (Buttonmeasure) ha canviat la seva funció. Ara s’utilitzarà per ajustar els valors d’hores, tal com es mostra a continuació. Les dues condicions següents són similars i s’utilitzen per ajustar les hores i els minuts, tal com es mostra més amunt.
if (mesura == 0 && mesura_estat == 1)
{estat_midesa = 0; } if (mesura == 1 && mesura_estat == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } mesura_estat = 1; sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); 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] ++; if (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (vegades); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; }
Per tant, cada vegada que es prem un dels dos botons, es canviarà el valor de les posicions 4 i 5 del vector DataTime i, en segon lloc, es guardaran aquests valors a la memòria DS1307.
Després dels ajustos, l’usuari ha de fer clic al botó Ok per acabar el procés. Quan es produeix aquest esdeveniment, el sistema executarà les següents línies de codi.
if (ok == 1)
{lcd.clear (); DS1307.getDate (DataTime); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); ajustar_procés = 0; }
Introduirà la condició anterior i presentarà el missatge horari i el menú Opcions a l’usuari.
Finalment, l'usuari ha d'iniciar el procés de monitorització del pacient a través del sensor de temperatura amb Arduino JLCPCB Datalogger.
Per fer-ho, l’usuari ha de prémer el botó de mesura, que està connectat al pin digital 2.
A continuació, el sistema realitzarà la lectura amb el sensor de temperatura d’Arduino i el guardarà a la targeta de memòria. La regió del circuit es mostra a la figura anterior.
Pas 8:
Per tant, quan es prem el botó, s'executarà la següent porció de codi.
if (mesura == 0 && mesura_estat == 1)
{estat_midesa = 0; } if (mesura == 1 && mesura_estat == 0 && mesura_procés == 0) {mesura_procés = 1; mesura_estat = 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 (); } retard (500); myFile.print ("Hora:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); actualMin = anteriorMin = DataTime [5]; sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); flotador TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
A la part de codi anterior, el sistema assignarà un valor d'1 a la variable measure_process. És responsable de permetre que les dades es guardin a la targeta SD.
A més, el sistema comprovarà si existeix o no un fitxer de text amb un registre de dades. Si hi ha un fitxer, el sistema se suprimirà i en crearà un de nou per emmagatzemar les dades.
Després, crearà dues columnes: una per a les hores i una per a la temperatura dins del fitxer de text.
Després d'això, mostrarà les hores i la temperatura a la pantalla LCD, tal com es mostra a la figura anterior.
Després, el flux de codi executarà el següent bloc de programa.
if (mesura_procés == 1)
{updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Compte minuts --------------------------------------- ------------------- if (Min actual: = Min anterior) {contMin ++; previousMin = Min actual; } if (contMin == 5) {sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); flotador TempSensor = sensors.getTempCByIndex (0); myFile.print (vegades); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Compte d'hores ------------------------------------ ---------------------- if (Hora real! = Hora anterior) {contHour ++; Hora anterior = Hora actual; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Finalitzat"); lcd.setCursor (5, 1); lcd.print ("Procés"); mesura_procés = 0; contHour = 0; } // ---------------------------------------------- Condició per aturar el registre de dades -----
En primer lloc, s'executarà la funció updateTemp (). És similar a la funció updateHour (); no obstant això, mostra la temperatura cada 1 minut.
Després d’això, el sistema recopilarà les dades de temps del rellotge en temps real i emmagatzemarà el valor del minut actual a la variable currentMin.
A continuació, comprovarà si s’ha canviat la variable mínima, d’acord amb la condició que es presenta a continuació
if (Min actual: = Min anterior)
{contMin ++; previousMin = Min actual; }
Per tant, si la variable de minut actual és diferent del valor anterior, vol dir que s’ha produït un canvi en el valor. D’aquesta manera, la condició serà certa i s’incrementarà el valor del recompte de minuts (contMin) i el valor actual s'assignarà a la variable previousMin, per emmagatzemar el seu valor anterior.
Per tant, quan el valor d’aquest recompte és igual a 5, significa que han passat 5 minuts i el sistema ha de realitzar una nova lectura de temperatura i desar l’hora i el valor de la temperatura al fitxer de registre de la targeta SD.
if (contMin == 5)
{sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); flotador TempSensor = sensors.getTempCByIndex (0); myFile.print (vegades); myFile.println (TempSensor); contMin = 0; }
D’aquesta manera, aquest procés es repetirà fins assolir el valor de 5 hores de control de la temperatura del pacient amb el sensor de temperatura amb Arduino.
La part del codi es mostra a continuació i és similar al recompte de minuts, que es va presentar més amunt.
// ------------------------------------------------ ----------- Compte hores ------------------------------------- ---------------------
if (Hora actual! = Hora anterior) {contHour ++; Hora anterior = Hora actual; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Finalitzat"); lcd.setCursor (5, 1); lcd.print ("Procés"); mesura_procés = 0; contHour = 0; }
Després d’aconseguir cinc hores de supervisió, el sistema tancarà el fitxer de registre i presentarà el missatge “Procés finalitzat” a l’usuari.
A més, l’usuari pot prémer el botó Ok / Pausa per deixar d’enregistrar dades. Quan això passi, s'executarà el següent bloc de codi.
// ---------------------------------------------- Condició a atureu el registre de dades ----------------------------------------------- ---
if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Aturat"); lcd.setCursor (5, 1); lcd.print ("Procés"); mesura_procés = 0; endarreriment (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (vegades, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (vegades); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }
Pas 9:
A continuació, el sistema tancarà el fitxer i presentarà el missatge "Procés aturat", tal com es mostra a la figura 8.
Pas 10:
Després, el sistema imprimirà la pantalla de temps i les opcions del menú, tal com es mostra a la figura 9.
Pas 11: Accedir a les dades del mòdul de la targeta SD amb Arduino
Després del procés de supervisió del JLCPCB Datalogger amb el sensor de temperatura amb Arduino, és necessari treure la targeta de memòria i accedir a les dades de l’ordinador.
Per veure i analitzar les dades amb una millor qualitat, exporteu / copieu tota la informació del fitxer de text a Excel. Després, podeu traçar gràfics i analitzar els resultats obtinguts.
Pas 12: Conclusió
El JLCPCB Datalogger amb un sensor de temperatura amb Arduino ens permet, a més de mesurar la temperatura, registrar informació sobre el comportament de la temperatura del pacient durant un període de temps.
Amb aquestes dades emmagatzemades, és possible analitzar i comprendre com es comporta la temperatura del pacient infectat per COVID 19.
A més, és possible avaluar el nivell de temperatura i associar-ne el valor a l’aplicació d’algun tipus de medicament.
Per tant, mitjançant aquestes dades, el JLCPCB Datalogger amb sensor de temperatura per a Arduino pretén ajudar a metges i infermeres en l’estudi del comportament dels pacients.
Finalment, agraïm a l’empresa JLCPCB el suport al desenvolupament del projecte i esperem que el pugueu utilitzar
Tots els fitxers es poden descarregar i utilitzar lliurement per qualsevol usuari.
Recomanat:
Filtre de pas baix actiu RC aplicat en projectes amb Arduino: 4 passos
RC de filtre de pas baix actiu aplicat en projectes amb Arduino: el filtre de pas baix és un circuit electrònic excel·lent per filtrar els senyals paràsits dels vostres projectes. Un problema comú en projectes amb Arduino i sistemes amb sensors que funcionen a prop de circuits d'alimentació és la presència de senyals "paràsits"
Punt d'accés (AP) ESP8266 NodeMCU per a servidor web amb sensor de temperatura DT11 i temperatura i humitat d'impressió al navegador: 5 passos
Punt d'accés (AP) ESP8266 NodeMCU per a servidor web amb sensor de temperatura DT11 i temperatura i humitat d'impressió al navegador: Hola nois en la majoria dels projectes que fem servir ESP8266 i en la majoria dels projectes fem servir ESP8266 com a servidor web perquè es pugui accedir a les dades a qualsevol dispositiu mitjançant wifi accedint al servidor web allotjat per ESP8266, però l’únic problema és que necessitem un enrutador que funcioni
Tires de llum LED amb decoloració controlades per sensor, alimentades per Arduino: 6 passos (amb imatges)
Tires de llum LED amb desconnexió controlades per sensor Arduino: recentment he actualitzat la cuina i sabia que la il·luminació “elevaria” l’aspecte dels armaris. Vaig optar per "True Handless", així que tinc un buit sota la superfície de treball, així com un kickboard, sota l'armari i a la part superior dels armaris disponibles i
Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura .: 7 passos (amb imatges)
Termòmetre de cocció de sonda de temperatura ESP32 NTP amb correcció de Steinhart-Hart i alarma de temperatura: Encara estem en camí per completar el "proper projecte" Termòmetre de cocció de sonda de temperatura NTP32 amb correcció de Steinhart-Hart i alarma de temperatura " és una instrucció que mostra com afegeixo una sonda de temperatura NTP, piezo b
SENSOR SUHU DENGAN LCD DAN LED (fabricació de sensor de temperatura amb LCD i LED): 6 passos (amb imatges)
SENSOR SUHU DENGAN LCD DAN LED (Making Sensor Temperature With LCD and LED): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA from Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Output ke LCD dan LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda