Përmbajtje:
- Furnizimet
- Hapi 1: Ndërtimi i regjistruesit të të dhënave JLCPCB me sensorin e temperaturës me Arduino
- Hapi 2:
- Hapi 3:
- Hapi 4:
- Hapi 5:
- Hapi 6: Menyja e Kontrollit të Dataloggerit JLCPCB
- Hapi 7:
- Hapi 8:
- Hapi 9:
- Hapi 10:
- Hapi 11: Qasja në të dhënat e modulit të kartës SD me Arduino
- Hapi 12: Përfundim
Video: Sensori i temperaturës për Arduino i aplikuar për COVID 19: 12 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:14
Sensori i temperaturës për Arduino është një element themelor kur duam të matim temperaturën e një procesori të trupit të njeriut.
Sensori i temperaturës me Arduino duhet të jetë në kontakt ose afër për të marrë dhe matur nivelin e nxehtësisë. Kështu funksionojnë termometrat.
Këto pajisje përdoren jashtëzakonisht për të matur temperaturën e trupit të njerëzve të sëmurë, pasi temperatura është një nga faktorët e parë që ndryshon në trupin e njeriut kur ka një anomali ose sëmundje.
Një nga sëmundjet që ndryshojnë temperaturën e trupit të njeriut është COVID 19. Prandaj, ne paraqesim simptomat kryesore:
Lodhja e kollës Vështirësia në frymëmarrje (Rastet e rënda) Ethet Ethet Temperatura është një simptomë, karakteristika kryesore e së cilës është rritja e temperaturës së trupit. Në këtë sëmundje, ne duhet të monitorojmë vazhdimisht këto simptoma.
Kështu, ne do të zhvillojmë një projekt për të monitoruar temperaturën dhe ruajtur këto të dhëna në një kartë memorie përmes një regjistruesi të të dhënave JLCPCB duke përdorur një sensor të temperaturës me Arduino.
Prandaj, në këtë artikull do të mësoni:
- Si funksionon një regjistrues i të dhënave JLCPCB me një sensor të temperaturës me Arduino?
- Si funksionon sensori i temperaturës me Arduino.
- Si funksionon sensori i temperaturës DS18B20 me Arduino
- Përdorni butona me funksione të shumta.
Tjetra, ne do t'ju tregojmë se si do të zhvilloni regjistruesin tuaj të të dhënave JLCPCB duke përdorur sensorin e temperaturës Arduino.
Furnizimet
Arduino UNO
Bordi i Qarkut të Shtypur JLCPCB
Sensori i temperaturës DS18B20
Arduino Nano R3
Kërcyesit
Ekran LCD 16 x 2
Çelësi i butonit
Rezistencë 1kR
Moduli i Kartës SD për Arduino
Hapi 1: Ndërtimi i regjistruesit të të dhënave JLCPCB me sensorin e temperaturës me Arduino
Siç u përmend më herët, projekti konsiston në krijimin e një Datalogger të të dhënave JLCPCB me Sensor Temperature me Arduino, dhe përmes këtyre të dhënave, ne mund të monitorojmë temperaturën e pacientit që trajtohet.
Kështu, qarku është treguar në Figurën e mësipërme.
Prandaj, siç mund ta shihni, ky qark ka një sensor të temperaturës DS18B20 me Arduino, i cili është përgjegjës për matjen e leximit të temperaturës së pacientit.
Për më tepër, Arduino Nano do të jetë përgjegjës për mbledhjen e këtyre të dhënave dhe ruajtjen e tyre në kartën e kujtesës të Modulit të Kartës SD.
Çdo informacion do të ruhet me kohën e tij përkatëse, e cila do të lexohet nga Moduli RTC DS1307.
Kështu, që të dhënat e sensorit të temperaturës me Arduino të ruhen, përdoruesi duhet ta kryejë procesin përmes Menysë së Kontrollit me LCD 16x2.
Hapi 2:
Çdo buton është përgjegjës për kontrollin e një opsioni, siç tregohet në ekranin LCD 16x2 në Figurën 2.
Çdo opsion është përgjegjës për kryerjen e një funksioni në sistem, siç tregohet më poshtë.
- Opsioni M është përgjegjës për fillimin e matjes dhe regjistrimit të të dhënave në Kartën e Kujtesës.
- Opsioni H është përgjegjës për rregullimin e orëve të sistemit.
- Opsioni O/P përdoret për të konfirmuar futjen e të dhënave në sistem ose për të ndaluar shkrimin e të dhënave në kartën e kujtesës.
Për të kuptuar procesin e kontrollit të sistemit, ne do të japim kodin më poshtë dhe do të diskutojmë sistemin e kontrollit hap pas hapi të JLCPCB Datalogger me Sensor Temperature me Arduino.
#include // Biblioteka me të gjithë funksionin e sensorit DS18B20
#include #include // Biblioteca I2C për LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Konfiguro për përdorim në LCD 16x2 për 0x27 #define ONE_WIRE_BUS 8 // Pin dixhital për të lidhur sensorin DS18B20 // Përcaktoni rastet kur bëni njëWire për komunikimin me sensorin OneWire oneWire (ONE_WIRE_BUS); Sensorë të temperaturës Dallas (& oneWire); DeviceAdresa sensor1; Dosja myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool masë = 0, adjusthour = 0, ok = 0; bool masë_state = 0, adjusthour_state = 0, ok_state = 0; bool masë_proces = 0, përshtat_proces = 0; bajt aktualMin = 0, paraMin = 0; byte aktualeHour = 0, Ora e mëparshme = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); nëse (DataTime [5]! = minUpdate) {sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (herë); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); nëse (DataTime [5]! = minUpdate) {sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.qartë (); lcd.setCursor (5, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensorë.kërkojmëTemperaturat (); noton TempSensor = sensorë.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.filloj (); sensorë.fillojnë (); pinMode (pinoSS, OUTPUT); // Deklarata pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao LCD LCD. Drita e pasme (); lcd.setCursor (3, 0); lcd.print ("Sistemi Temp"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); vonesa (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Lokalizimi i sensorit me sukses!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Sensori"); if (SD.begin ()) {// Inicializa ose SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falë na inicializimit të kartës SD."); kthim; } DS1307.getDate (DataTime); lcd.qartë (); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Gjendja e butonit të leximit masë = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); nëse (masë == 0 && masë_state == 1) {masë_state = 0; } nëse (masë == 1 && masë_state == 0 && masë_proces == 0) {masë_proces = 1; shteti_masë = 1; if (SD.ekziston ("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 (); } vonesë (500); myFile.print ("Ora:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); aktualeMin = previousMin = Koha e të dhënave [5]; sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.qartë (); lcd.setCursor (5, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensorë.kërkojmëTemperaturat (); noton TempSensor = sensorë.getTempCByIndex (0); lcd.print (TempSensor); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && masë_proces == 0) {adjust_process = 1; } // -------------------------------------------------- --- Procesi i matjes --------------------------------------------- -------------- if (masë_procesi == 1) {updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); aktualeMin = Koha e të dhënave [5]; // ---------------------------------------------------- --------- Numëroni Procesverbalet ------------------------------------------ ------------------- nëse (aktualMin! = Mini i mëparshëm) {kontMin ++; previousMin = aktualeMin; } if (contMin == 5) {sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); sensorë.kërkojmëTemperaturat (); noton TempSensor = sensorë.getTempCByIndex (0); myFile.print (herë); myFile.println (TempSensor); contMin = 0; } // -------------------------------------------------- ------------ Numëroni orët ---------------------------------------- ---------------------- nëse (Ora aktuale! = Ora e mëparshme) {contHour ++; orë e mëparshme = orë aktuale; } if (contHour == 5) {myFile.close (); lcd.qartë (); lcd.setCursor (5, 0); lcd.print ("Përfunduar"); lcd.setCursor (5, 1); lcd.print ("Procesi"); masë_proces = 0; contHour = 0; } // ---------------------------------------------- Gjendja për të ndaluar regjistruesin e të dhënave ---------------------------------------------- ---- nëse (ok == 1) {myFile.close (); lcd.qartë (); lcd.setCursor (6, 0); lcd.print ("U ndal"); lcd.setCursor (5, 1); lcd.print ("Procesi"); masë_proces = 0; vonesa (2000); lcd.qartë (); DS1307.getDate (DataTime); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // -------------------------------------------------- ------- Rregulloni orët ----------------------------------------- ---------------------- // Rregullo orën nëse (rregullo_procesin == 1) {lcd.qartë (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Rregulloni orën:"); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); // Hour Adjust do {masë = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); nëse (masë == 0 && masë_state == 1) {masë_state = 0; } if (masë == 1 && masë_state == 0) {DataTime [4] ++; nëse (DataTime [4]> 23) {DataTime [4] = 0; } shteti_masë = 1; sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); 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] ++; nëse (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); shteti adjusthour = 1; } nëse (ok == 1) {lcd.qartë (); DS1307.getDate (DataTime); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); rregullo_proces = 0; }} ndërsa (në rregull! = 1); } // -------------------------------------------------- ------- Ora e rregullimit të fundit -------------------------------------------- -------------------}
Së pari, ne përcaktojmë të gjitha bibliotekat për kontrollin e moduleve dhe deklarimin e variablave të përdorur kur programojmë JLCPCB Datalogger me një sensor të temperaturës për Arduino. Blloku i kodit është treguar më poshtë.
Hapi 3:
#include // Biblioteka me të gjithë funksionin e sensorit DS18B20
#include #include // Biblioteca I2C për LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Konfiguro për përdorim në LCD 16x2 për 0x27 #define ONE_WIRE_BUS 8 // Pin dixhital për të lidhur sensorin DS18B20 // Përcaktoni rastet kur bëni njëWire për komunikimin me sensorin OneWire oneWire (ONE_WIRE_BUS); Sensorë të temperaturës Dallas (& oneWire); DeviceAdresa sensor1; Dosja myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool masë = 0, adjusthour = 0, ok = 0; bool masë_state = 0, adjusthour_state = 0, ok_state = 0; bool masë_proces = 0, përshtat_proces = 0; bajt aktualMin = 0, paraMin = 0; byte aktualeHour = 0, orë e mëparshme = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7];
Tani e tutje, ne kemi funksionin e konfigurimit të zbrazët. Ky funksion përdoret për të konfiguruar kunjat dhe fillimin e pajisjes, siç tregohet më poshtë.
void setup ()
{Serial.fillo (9600); DS1307.filloj (); sensorë.fillojnë (); pinMode (pinoSS, OUTPUT); // Deklarata pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao LCD LCD. Drita e pasme (); lcd.setCursor (3, 0); lcd.print ("Sistemi Temp"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); vonesa (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Lokalizimi i sensorit me sukses!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Sensori"); if (SD.begin ()) {// Inicializa ose SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falë na inicializimit të kartës SD."); kthim; } DS1307.getDate (DataTime); lcd.qartë (); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Së pari, filloi komunikimi serik, ora në kohë reale dhe sensori i temperaturës për Arduino DS18B20. Pas fillimit dhe testimit të pajisjeve, mesazhi me opsionet e menysë u shtyp në ekranin LCD 16x2. Ky ekran është treguar në Figurën 1.
Hapi 4:
Pas kësaj, sistemi lexon orët dhe azhurnon vlerën duke thirrur funksionin updateHour. Kështu, ky funksion ka për qëllim të paraqesë vlerën e orës çdo minutë. Blloku i kodit të funksionit është treguar më poshtë.
void updateHour ()
{DS1307.getDate (DataTime); nëse (DataTime [5]! = minUpdate) {sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (herë); minUpdate = DataTime [5]; }}
Hapi 5:
Përveç përditësimit të orëve, përdoruesi mund të zgjedhë një nga tre butonat për të monitoruar pacientin me një sensor të temperaturës me Arduino. Qarku është treguar në Figurën e mësipërme.
Hapi 6: Menyja e Kontrollit të Dataloggerit JLCPCB
Së pari, përdoruesi duhet të kontrollojë dhe rregullojë orët e sistemit. Ky proces kryhet kur shtypet butoni i dytë.
Kur shtypet butoni, duhet të shfaqet ekrani i mëposhtëm, i cili është treguar në Figurën e mësipërme.
Hapi 7:
Nga ky ekran, përdoruesi do të jetë në gjendje të fusë vlerat e orës dhe minutës nga butonat e lidhur me kunjat dixhitale 2 dhe 3 të Arduino. Butonat tregohen në Figurën e mësipërme.
Pjesa e kodit për kontrollin e orëve është treguar më poshtë.
nëse (adjusthour == 0 && adjusthour_state == 1)
{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && masë_proces == 0) {adjust_process = 1; }
Kur shtypet butoni i orëve dhe ndryshorja masë_proces është vendosur në 0, gjendja do të jetë e vërtetë dhe ndryshorja e përshtatur_procesit do të vendoset në 1. Ndryshorja masë_proces përdoret për të sinjalizuar që sistemi po monitoron temperaturën. Kur vlera e tij është 0, sistemi do t'i lejojë përdoruesit të hyjë në menunë e cilësimit të kohës. Prandaj, pasi ndryshorja adjust_process merr një vlerë 1, sistemi do të hyjë në gjendjen e rregullimit të kohës. Ky bllok kodesh është treguar më poshtë.
// ---------------------------------------------------- ----- Rregulloni orët ---------------------------------------------- --------------------
// Adjust Hour if (rregullo_procesin == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Rregulloni orën:"); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); // Hour Adjust do {masë = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); nëse (masë == 0 && masë_state == 1) {masë_state = 0; } if (masë == 1 && masë_state == 0) {DataTime [4] ++; nëse (DataTime [4]> 23) {DataTime [4] = 0; } shteti_masë = 1; sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); 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] ++; nëse (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); shteti adjusthour = 1; } nëse (ok == 1) {lcd.qartë (); DS1307.getDate (DataTime); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); rregullo_proces = 0; }} ndërsa (në rregull! = 1); }
Në këtë gjendje, sistemi do të shfaq mesazhin e treguar në Figurën 4 dhe pastaj do të presë që vlerat të rregullohen brenda në lakun while. Kur rregulloni orët, këto butona kanë ndryshuar funksionet e tyre, domethënë ato janë shumëfunksionale.
Kjo ju lejon të përdorni një buton për më shumë se një funksion dhe të zvogëloni kompleksitetin e sistemit.
Në këtë mënyrë, përdoruesi do të rregullojë vlerën e orëve dhe minutave dhe më pas do të ruajë të dhënat në sistem kur të shtypet butoni Ok.
Siç mund ta shihni, sistemi do të lexojë 3 butonat, siç tregohet më poshtë.
masë = digitalRead (Buttonmeasure);
adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
Vini re se butoni i masës (Buttonmeasure) ka ndryshuar funksionin e tij. Tani do të përdoret për të rregulluar vlerat e orës, siç tregohet më poshtë. Dy kushtet e mëposhtme janë të ngjashme dhe përdoren për të rregulluar orët dhe minutat, siç tregohet më sipër.
nëse (masë == 0 && masë_state == 1)
{masë_stat = 0; } if (masë == 1 && masë_state == 0) {DataTime [4] ++; nëse (DataTime [4]> 23) {DataTime [4] = 0; } shteti_masë = 1; sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); 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] ++; nëse (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (herë); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); shteti adjusthour = 1; }
Prandaj, sa herë që shtypet një nga dy butonat, vlera e pozicioneve 4 dhe 5 të vektorit DataTime do të ndryshohet dhe së dyti, këto vlera do të ruhen në kujtesën DS1307.
Pas rregullimeve, përdoruesi duhet të klikojë në butonin Ok, për të përfunduar procesin. Kur të ndodhë kjo ngjarje, sistemi do të ekzekutojë rreshtat e mëposhtëm të kodit.
nëse (ok == 1)
{lcd.qartë (); DS1307.getDate (DataTime); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); rregullo_proces = 0; }
Ai do të hyjë në gjendjen e mësipërme dhe do t'i paraqesë përdoruesit mesazhin e orës dhe Menunë e Opsioneve.
Së fundi, përdoruesi duhet të fillojë procesin e monitorimit të pacientit përmes sensorit të temperaturës me Arduino JLCPCB Datalogger.
Për ta bërë këtë, përdoruesi duhet të shtypë butonin e matjes, i cili është i lidhur me pinin dixhital 2.
Pastaj, sistemi do të kryejë leximin me sensorin e temperaturës për Arduino dhe do ta ruajë atë në kartën e kujtesës. Rajoni i qarkut tregohet në Figurën e mësipërme.
Hapi 8:
Prandaj, kur shtypet butoni, pjesa e mëposhtme e kodit do të ekzekutohet.
nëse (masë == 0 && masë_state == 1)
{masë_stat = 0; } nëse (masë == 1 && masë_state == 0 && masë_proces == 0) {masë_proces = 1; shteti_masë = 1; if (SD.ekziston ("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 (); } vonesë (500); myFile.print ("Ora:"); myFile.println ("Temperatura"); DS1307.getDate (DataTime); aktualeMin = previousMin = Koha e të dhënave [5]; sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.qartë (); lcd.setCursor (5, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("Temperatura:"); lcd.setCursor (14, 1); sensorë.kërkojmëTemperaturat (); noton TempSensor = sensorë.getTempCByIndex (0); lcd.print (TempSensor); }
Në pjesën e kodit të mësipërm, sistemi do t'i caktojë një vlerë 1 variablës masë_proces. Ai është përgjegjës për lejimin e ruajtjes së të dhënave në Kartën SD.
Përveç kësaj, sistemi do të kontrollojë nëse ekziston një skedar teksti me një regjistër të të dhënave apo jo. Nëse ka një skedar, sistemi do të fshijë dhe do të krijojë një të ri për të ruajtur të dhënat.
Pas kësaj, do të krijojë dy kolona: një për orët dhe një për temperaturën brenda skedarit të tekstit.
Pas kësaj, do të shfaqë orët dhe temperaturën në ekranin LCD, siç tregohet në Figurën e mësipërme.
Pas kësaj, rrjedha e kodit do të ekzekutojë bllokun e mëposhtëm të programit.
nëse (masë_procesi == 1)
{updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); aktualeMin = Koha e të dhënave [5]; // ---------------------------------------------------- --------- Numëroni Procesverbalet ------------------------------------------ ------------------- nëse (aktualMin! = Mini i mëparshëm) {kontMin ++; previousMin = aktualeMin; } if (contMin == 5) {sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); sensorë.kërkojmëTemperaturat (); noton TempSensor = sensorë.getTempCByIndex (0); myFile.print (herë); myFile.println (TempSensor); contMin = 0; } // -------------------------------------------------- ------------ Numëroni orët ---------------------------------------- ---------------------- nëse (Ora aktuale! = Ora e mëparshme) {contHour ++; orë e mëparshme = orë aktuale; } if (contHour == 5) {myFile.close (); lcd.qartë (); lcd.setCursor (5, 0); lcd.print ("Përfunduar"); lcd.setCursor (5, 1); lcd.print ("Procesi"); masë_proces = 0; contHour = 0; } // ---------------------------------------------- Gjendja për të ndaluar regjistruesin e të dhënave -----
Së pari, funksioni updateTemp () do të ekzekutohet. Isshtë e ngjashme me funksionin updateHour (); megjithatë, ajo shfaq temperaturën çdo 1 minutë.
Pas kësaj, sistemi do të mbledhë të dhënat e kohës nga Ora në kohë reale dhe do të ruajë vlerën e minutës aktuale në ndryshoren currentMin.
Pastaj, do të kontrollojë nëse ndryshorja min është ndryshuar, sipas gjendjes së paraqitur më poshtë
nëse (aktualMin! = Mini i mëparshëm)
{contMin ++; previousMin = aktualeMin; }
Prandaj, nëse ndryshorja aktuale e minutës është e ndryshme nga vlera e mëparshme, kjo do të thotë se ka ndodhur një ndryshim në vlerë. Në këtë mënyrë, gjendja do të jetë e vërtetë dhe vlera e numërimit të minutave do të rritet (vazhdim) dhe vlera aktuale do t'i caktohet variablës previousMin, për të ruajtur vlerën e saj të mëparshme.
Prandaj, kur vlera e këtij numërimi është e barabartë me 5, do të thotë që kanë kaluar 5 minuta dhe sistemi duhet të kryejë një lexim të ri të temperaturës dhe të ruajë orën dhe vlerën e temperaturës në skedarin e regjistrit të Kartës SD.
nëse (contMin == 5)
{sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); sensorë.kërkojmëTemperaturat (); noton TempSensor = sensorë.getTempCByIndex (0); myFile.print (herë); myFile.println (TempSensor); contMin = 0; }
Në këtë mënyrë, ky proces do të përsëritet derisa të arrijë vlerën e 5 orëve të monitorimit të temperaturës së pacientit me sensorin e temperaturës me Arduino.
Pjesa e kodit është treguar më poshtë dhe është e ngjashme me numërimin e minutave, i cili u paraqit më sipër.
// ---------------------------------------------------- ----------- Numëroni orët ---------------------------------------- ---------------------
nëse (Ora aktuale! = Ora e mëparshme) {contHour ++; orë e mëparshme = orë aktuale; } if (contHour == 5) {myFile.close (); lcd.qartë (); lcd.setCursor (5, 0); lcd.print ("Përfunduar"); lcd.setCursor (5, 1); lcd.print ("Procesi"); masë_proces = 0; contHour = 0; }
Pas arritjes së 5 orëve të monitorimit, sistemi do të mbyllë skedarin e regjistrit dhe do t'i paraqesë përdoruesit mesazhin "Procesi i përfunduar".
Për më tepër, përdoruesi mund të shtypë butonin Ok/Pause në mënyrë që të ndalojë regjistrimin e të dhënave. Kur kjo të ndodhë, blloku i kodit të mëposhtëm do të ekzekutohet.
// ---------------------------------------------- Kushti për ndalo regjistruesin e të dhënave ----------------------------------------------- ---
nëse (ok == 1) {myFile.close (); lcd.qartë (); lcd.setCursor (6, 0); lcd.print ("U ndal"); lcd.setCursor (5, 1); lcd.print ("Procesi"); masë_proces = 0; vonesa (2000); lcd.qartë (); DS1307.getDate (DataTime); sprintf (herë, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (herë); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Hapi 9:
Pastaj, sistemi do të mbyllë skedarin dhe do të paraqesë mesazhin "Procesi i ndaluar", siç tregohet në Figurën 8.
Hapi 10:
Pas kësaj, sistemi do të printojë ekranin e kohës dhe opsionet e menysë, siç tregohet në Figurën 9.
Hapi 11: Qasja në të dhënat e modulit të kartës SD me Arduino
Pas procesit të monitorimit të JLCPCB Datalogger me sensorin e temperaturës me Arduino, është e nevojshme të hiqni kartën e kujtesës dhe të përdorni të dhënat në kompjuter.
Për të parë dhe analizuar të dhënat me cilësi më të mirë, eksportoni / kopjoni të gjithë informacionin e skedarit të tekstit në Excel. Pas kësaj, ju mund të vizatoni grafikë dhe të analizoni rezultatet e marra.
Hapi 12: Përfundim
Regjistruesi i të dhënave JLCPCB me një sensor të temperaturës me Arduino na lejon, përveç matjes së temperaturës, të regjistrojmë informacion mbi sjelljen e temperaturës së pacientit gjatë një periudhe kohe.
Me këto të dhëna të ruajtura, është e mundur të analizoni dhe kuptoni se si sillet temperatura e pacientit të infektuar nga COVID 19.
Për më tepër, është e mundur të vlerësohet niveli i temperaturës dhe të lidhet vlera e tij me aplikimin e disa llojeve të ilaçeve.
Prandaj, përmes këtyre të dhënave, JLCPCB Datalogger me sensor të temperaturës për Arduino synon të ndihmojë mjekët dhe infermierët në studimin e sjelljes së pacientëve.
Së fundmi, falënderojmë kompaninë JLCPCB për mbështetjen e zhvillimit të projektit dhe shpresojmë që ta përdorni
Të gjithë skedarët mund të shkarkohen dhe përdoren lirshëm nga çdo përdorues.
Recommended:
Sensori i temperaturës dhe mishit BBQ në ESP8266 Me ekran: 5 hapa (me fotografi)
Sensori i Temperaturës dhe Mishit BBQ në ESP8266 Me Ekran: Në këtë Udhëzues do t'ju tregoj se si të bëni versionin tuaj të një mjeti BBQ që mat temperaturën aktuale në Barbecue tuaj dhe ndez një tifoz për ta ndezur nëse është e nevojshme. Përveç kësaj ka edhe një atak sensor të temperaturës së bërthamës së mishit
Sensori i temperaturës IoT Me ESP8266: 6 hapa (me fotografi)
Sensori i temperaturës IoT Me ESP8266: Unë u frymëzova për të krijuar një sensor të temperaturës që mund ta monitoroj përmes wifi. Ky projekt nuk është i ri, por më pëlqen ideja e të pasurit një shtresë të ndërmjetme për sigurinë dhe të mos kesh nevojë të hapësh portin në ruterin tënd në pajisjen tënde IoT. Ideja bazë do të alokojë
Projekti i Elektronikës së Aplikuar: 4 Hapa
Projekti i Elektronikës së Aplikuar: Para së gjithash, gjatë diplomës sonë të dytë Master ne duhej të bënim një projekt i cili i përgjigjet një problemi të jetës së përditshme duke përdorur një Arduino ose një Raspeberry Pi. Ne vendosëm të punojmë në një motor sepse mekanika dhe motoçikleta janë në qendër të vëmendjes
Sensori dixhital i temperaturës i bazuar në Arduino: 5 hapa (me fotografi)
Sensori i Temperaturës Dixhitale Bazuar në Arduino: Sensorët e Temperaturës janë një gjë e vërtetë e zakonshme këto ditë, por shumica e tyre janë jashtëzakonisht të komplikuara për t'u bërë ose jashtëzakonisht të shtrenjta për t'u blerë. Ky projekt ju jep një Sensor të Temperaturës Dixhitale të Bazuar në Arduino i cili jo vetëm që është i lirë dhe shumë i lehtë te m
Shtyrja e datës dhe orës për të aplikuar Blynk duke përdorur Wemos D1 Mini Pro: 10 hapa
Shtyrja e datës dhe orës për të aplikuar Blynk duke përdorur Wemos D1 Mini Pro: Ne do të përdorim Wemos D1 Mini Pro për të shtyrë kohën & datoni në Aplikacionin Blynk. Ju nuk do të keni nevojë të lidhni asnjë përbërës me Wemos D1 Mini Pro për këtë aktivitet