Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Ujenzi wa Datalogger ya JLCPCB iliyo na Sensor ya Joto na Arduino
- Hatua ya 2:
- Hatua ya 3:
- Hatua ya 4:
- Hatua ya 5:
- Hatua ya 6: Menyu ya Udhibiti wa Hifadhidata ya JLCPCB
- Hatua ya 7:
- Hatua ya 8:
- Hatua ya 9:
- Hatua ya 10:
- Hatua ya 11: Kupata Data ya Moduli ya Kadi ya SD na Arduino
- Hatua ya 12: Hitimisho
Video: Sensorer ya Joto la Arduino Iliyotumiwa kwa COVID 19: 12 Hatua (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Sensor ya joto kwa Arduino ni jambo la msingi wakati tunataka kupima joto la processor ya mwili wa mwanadamu.
Sensorer ya joto na Arduino lazima iwe katika mawasiliano au karibu ili kupokea na kupima kiwango cha joto. Ndio jinsi thermometers inavyofanya kazi.
Vifaa hivi hutumiwa sana kupima joto la mwili la watu wagonjwa, kwani joto ni moja ya sababu za kwanza zinazobadilika katika mwili wa mwanadamu kunapokuwa na hali isiyo ya kawaida au ugonjwa.
Moja ya magonjwa ambayo hubadilisha joto la mwili wa mwanadamu ni COVID 19. Kwa hivyo, tunawasilisha dalili kuu:
Uchovu wa Kikohozi Kupumua kwa shida (Kesi kali) Homa ya Homa ni dalili ambayo tabia yake kuu ni kuongezeka kwa joto la mwili. Katika ugonjwa huu, tunahitaji kufuatilia dalili hizi kila wakati.
Kwa hivyo, tutakua na mradi wa kufuatilia hali ya joto na kuhifadhi data hii kwenye kadi ya kumbukumbu kupitia Datalogger ya JLCPCB ikitumia sensa ya joto na Arduino.
Kwa hivyo, katika nakala hii utajifunza:
- Je! Datalogger ya JLCPCB iliyo na sensa ya joto na Arduino?
- Inafanya kazi vipi sensor ya joto na Arduino.
- Jinsi inavyofanya kazi sensor ya joto ya DS18B20 na Arduino
- Tumia vifungo vyenye kazi nyingi.
Ifuatayo, tutakuonyesha jinsi utakavyoendeleza Datalogger yako ya JLCPCB ukitumia sensa ya joto ya Arduino.
Vifaa
Arduino UNO
Bodi ya Mzunguko iliyochapishwa ya JLCPCB
Sensor ya Joto la DS18B20
Arduino Nano R3
Wanarukaji
Uonyesho wa LCD 16 x 2
Kitufe cha kushinikiza
Kuzuia 1kR
Moduli ya Kadi ya SD ya Arduino
Hatua ya 1: Ujenzi wa Datalogger ya JLCPCB iliyo na Sensor ya Joto na Arduino
Kama ilivyotajwa hapo awali, mradi huo unajumuisha kuunda Datalogger ya JLCPCB iliyo na Sensor ya Joto na Arduino, na kupitia data hii, tunaweza kufuatilia hali ya joto ya mgonjwa anayetibiwa.
Kwa hivyo, mzunguko unaonyeshwa kwenye Kielelezo hapo juu.
Kwa hivyo, kama unaweza kuona, mzunguko huu una sensorer ya joto ya DS18B20 na Arduino, ambayo inawajibika kupima usomaji wa joto la mgonjwa.
Kwa kuongeza, Arduino Nano atakuwa na jukumu la kukusanya data hii na kuihifadhi kwenye kadi ya kumbukumbu ya Moduli ya Kadi ya SD.
Kila habari itahifadhiwa na wakati wake, ambayo itasomwa kutoka kwa Moduli ya RTC DS1307.
Kwa hivyo, ili data ya sensorer ya joto na Arduino iokolewe, mtumiaji lazima afanye mchakato kupitia Menyu ya Udhibiti na LCD ya 16x2.
Hatua ya 2:
Kila kifungo kinawajibika kudhibiti chaguo, kama inavyoonyeshwa kwenye skrini ya LCD 16x2 kwenye Mchoro 2.
Kila chaguo ni jukumu la kufanya kazi kwenye mfumo, kama inavyoonyeshwa hapa chini.
- Chaguo M ni jukumu la kuanza kupima na kurekodi data kwenye Kadi ya Kumbukumbu.
- Chaguo H ni jukumu la kurekebisha masaa ya mfumo.
- Chaguo O / P hutumiwa kuthibitisha uingizaji wa data kwenye mfumo au kusitisha kuandika data kwenye kadi ya kumbukumbu.
Ili kuelewa mchakato wa kudhibiti mfumo, tutatoa nambari iliyo hapa chini na kujadili mfumo wa hatua kwa hatua wa kudhibiti Jalada la JLCPCB na Sura ya Joto na Arduino.
# pamoja na // Maktaba na kazi zote za Sensor ya DS18B20
# pamoja # ikiwa ni pamoja // Biblioteca I2C hufanya LCD 16x2 # pamoja na // Biblioteca de Comunicacao I2C # pamoja # Maktaba ya OneWire ya DS18B20 Sensor # pamoja na # pamoja na LiquidCrystal_I2C lcd (0x27, 16, 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Digital Pin to connect the DS18B20 Sensor // Define uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); Sensorer za Joto la Dallas (& OneWire); Kifaa cha Anwani ya Anwani1; Faili myFile; #fafanua kitufe 2 #fafanua Kitufe cha kidole 3 #fafanua Kitufe 4 bool kipimo = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; mchakato wa bool = 0, rekebisha_process = 0; byte actualMin = 0, Minin uliopita = 0; saa halisi = 0, Saa iliyopita = 0; toleo ndogo = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7]; tupu updateHour () {DS1307.getDate (DataTime); ikiwa (DataTime [5]! = minUpdate) {sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (nyakati); minUpdate = Wakati wa data [5]; }} batili updateTemp () {DS1307.getDate (DataTime); ikiwa (DataTime [5]! = minUpdate) {sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd wazi (); lcd.setCursor (5, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("Joto:"); lcd.set Mshale (14, 1); sensorer.ombi ombi Joto (); kuelea TempSensor = sensorer.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = Wakati wa data [5]; }} usanidi batili () {Serial.begin (9600); DS1307. Anza (); sensorer kuanza (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.anza (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao fanya LCD LCD. Mwangaza wa taa (); lcd.setCursor (3, 0); lcd.print ("Mfumo wa Temp"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); kuchelewa (2000); // Localiza na most end endcos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Ujanibishaji wa Sensor umefanikiwa!"); Serial.print (sensorer.getDeviceCount (), DEC); Serial.println ("Sensor"); ikiwa (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} mwingine {Serial.println ("Falha na inicialização do SD Card."); kurudi; } DS1307.getDate (DataTime); lcd wazi (); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); } kitanzi batili () {updateHour (); // Kitufe cha kusoma kinasema kipimo = kusoma kwa dijiti (Kipimo cha Kitufe); adjusthour = kusoma kwa dijiti (Buttonadjusthour); sawa = kusoma kwa dijiti (Kitufe); ikiwa (kipimo == 0 && measure_state == 1) {measure_state = 0; } ikiwa (kipimo == 1 && measure_state == 0 && measure_process == 0) {measure_process = 1; kipimo_jimbo = 1; ikiwa (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); Ondoa SD ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } mwingine {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile. karibu (); } kuchelewa (500); myFile.print ("Saa:"); myFile.println ("Joto"); DS1307.getDate (DataTime); realMin = previousMin = DataTime [5]; sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd wazi (); lcd.setCursor (5, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("Joto:"); lcd.set Mshale (14, 1); sensorer.ombi ombi Joto (); kuelea TempSensor = sensorer.getTempCByIndex (0); lcd.print (TempSensor); } ikiwa (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ikiwa (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; } // ----------------------------------------------- Mchakato wa Upimaji -------------------------------------- -------------- ikiwa (kipimo_process == 1) {updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); realMin = Muda wa Data [5]; // ------------------------------------------------ --------- Hesabu Dakika ------------------------------------------- ------------------- ikiwa (RealMin! = Minin iliyopita) {contMin ++; uliopitaMin = halisiMin; } ikiwa (contMin == 5) {sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); sensorer.ombi ombi Joto (); kuelea TempSensor = sensorer.getTempCByIndex (0); myFile.print (nyakati); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Hesabu masaa ------------------------------------ ---------------------- ikiwa (saa ya kweli! = Saa iliyopita) {contHour ++; Saa iliyopita = saa halisi; } ikiwa (saa == 5) {myFile.close (); lcd wazi (); lcd.setCursor (5, 0); lcd.print ("Imemalizika"); lcd.setCursor (5, 1); lcd.print ("Mchakato"); mchakato_pima = 0; saa = 0; } // ----------------------------------------------- Hali kusitisha orodha ya data -------------------------------------------------- ---- ikiwa (ok == 1) {myFile.close (); lcd wazi (); lcd.setCursor (6, 0); lcd.print ("Imesimamishwa"); lcd.setCursor (5, 1); lcd.print ("Mchakato"); mchakato_pima = 0; kuchelewa (2000); lcd wazi (); DS1307.getDate (DataTime); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }} // ----------------------------------------------- ------- Rekebisha Saa ----------------------------------------- ---------------------- // Rekebisha Saa ikiwa (fix_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Rekebisha Saa:"); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); // Saa ya Kurekebisha fanya {measure = digitalRead (Kipimo cha Kitufe); adjusthour = kusoma kwa dijiti (Buttonadjusthour); sawa = kusoma kwa dijiti (Kitufe); ikiwa (kipimo == 0 && measure_state == 1) {measure_state = 0; } ikiwa (kipimo == 1 && measure_state == 0) {DataTime [4] ++; ikiwa (DataTime [4]> 23) {DataTime [4] = 0; } kipimo_jimbo = 1; sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } ikiwa (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ikiwa (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; ikiwa (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); karibu_jimbo = 1; } ikiwa (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); rekebisha_process = 0; }} wakati (sawa! = 1); } // ----------------------------------------------- ------- Mwisho Kurekebisha Saa ---------------------------------------- -------------------}
Kwanza, tunafafanua maktaba yote ya kudhibiti moduli na kutangaza anuwai zinazotumiwa wakati wa kupanga Jatalog JLCPCB na sensorer ya joto kwa Arduino. Kizuizi cha nambari kimeonyeshwa hapa chini.
Hatua ya 3:
# pamoja na // Maktaba na kazi zote za Sensor ya DS18B20
# pamoja # ikiwa ni pamoja // Biblioteca I2C hufanya LCD 16x2 # pamoja na // Biblioteca de Comunicacao I2C # pamoja # Maktaba ya OneWire ya DS18B20 Sensor # pamoja na # pamoja na LiquidCrystal_I2C lcd (0x27, 16, 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Digital Pin to connect the DS18B20 Sensor // Define uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); Sensorer za Joto la Dallas (& OneWire); Kifaa cha Anwani ya Anwani1; Faili myFile; #fafanua kitufe 2 #fafanua Kitufe cha kidole 3 #fafanua Kitufe 4 bool kipimo = 0, adjusthour = 0, ok = 0; bool measure_state = 0, adjusthour_state = 0, ok_state = 0; mchakato wa bool = 0, rekebisha_process = 0; byte actualMin = 0, Minin uliopita = 0; saa halisi = 0, Saa iliyopita = 0; toleo ndogo = 0; int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO int DataTime [7];
Baadaye, tuna kazi ya usanidi batili. Kazi hii hutumiwa kusanidi pini na uanzishaji wa kifaa, kama inavyoonyeshwa hapa chini.
kuanzisha batili ()
{Serial.begin (9600); DS1307. Anza (); sensorer kuanza (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.anza (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao fanya LCD LCD. Mwangaza wa taa (); lcd.setCursor (3, 0); lcd.print ("Mfumo wa Temp"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); kuchelewa (2000); // Localiza na most end endcos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Ujanibishaji wa Sensor umefanikiwa!"); Serial.print (sensorer.getDeviceCount (), DEC); Serial.println ("Sensor"); ikiwa (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} mwingine {Serial.println ("Falha na inicialização do SD Card."); kurudi; } DS1307.getDate (DataTime); lcd wazi (); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }
Kwanza, mawasiliano ya serial, saa ya wakati halisi na sensorer ya joto kwa Arduino DS18B20 ilianza. Baada ya kuanzisha na kujaribu vifaa, ujumbe na chaguzi za menyu ulichapishwa kwenye skrini ya 16x2 LCD. Skrini hii imeonyeshwa kwenye Kielelezo 1.
Hatua ya 4:
Baada ya hapo, mfumo unasoma masaa na kusasisha thamani kwa kupiga kazi ya sasishoHour. Kwa hivyo, kazi hii ina kusudi la kuwasilisha thamani ya saa kila dakika. Kizuizi cha msimbo wa kazi kinaonyeshwa hapa chini.
sasisho tupu Saa ()
{DS1307.getDate (DataTime); ikiwa (DataTime [5]! = minUpdate) {sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (nyakati); minUpdate = Wakati wa data [5]; }}
Hatua ya 5:
Mbali na kusasisha masaa, mtumiaji anaweza kuchagua moja ya vifungo vitatu vya kufuatilia mgonjwa aliye na sensorer ya joto na Arduino. Mzunguko umeonyeshwa kwenye Kielelezo hapo juu.
Hatua ya 6: Menyu ya Udhibiti wa Hifadhidata ya JLCPCB
Kwanza, mtumiaji lazima aangalie na kurekebisha masaa ya mfumo. Utaratibu huu unafanywa wakati kifungo cha pili kinabonyeza.
Wakati kitufe kinabanwa, skrini ifuatayo inapaswa kuonekana, ambayo imeonyeshwa kwenye Kielelezo hapo juu.
Hatua ya 7:
Kutoka skrini hii, mtumiaji ataweza kuingiza maadili ya saa na dakika kutoka kwa vifungo vilivyounganishwa na pini za dijiti 2 na 3 ya Arduino. Vifungo vinaonyeshwa kwenye Kielelezo hapo juu.
Sehemu ya nambari ya kudhibiti masaa imeonyeshwa hapa chini.
ikiwa (karibu = = 0 && adjusthour_state == 1)
{adjusthour_state = 0; } ikiwa (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; }
Wakati kitufe cha masaa kinabanwa na ubadilishaji wa kipimo_kawekwa kwa 0, hali hiyo itakuwa ya kweli na mabadiliko ya mchakato wa kurekebisha yatawekwa kwa 1. Tofauti_ya mchakato hutumika kuashiria kuwa mfumo unafuatilia joto. Thamani yake ni 0, mfumo utamruhusu mtumiaji kuingiza menyu ya kuweka wakati. Kwa hivyo, baada ya badiliko la kurekebisha_uchukuaji thamani ya 1, mfumo utaingia katika hali ya urekebishaji wa wakati. Kizuizi hiki cha kificho kinaonyeshwa hapa chini.
// ------------------------------------------------ ----- Rekebisha Saa ------------------------------------------ --------------------
// Rekebisha Saa ikiwa (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Rekebisha Saa:"); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); // Saa ya Kurekebisha fanya {measure = digitalRead (Kipimo cha Kitufe); adjusthour = kusoma kwa dijiti (Buttonadjusthour); sawa = kusoma kwa dijiti (Kitufe); ikiwa (kipimo == 0 && measure_state == 1) {measure_state = 0; } ikiwa (kipimo == 1 && measure_state == 0) {DataTime [4] ++; ikiwa (DataTime [4]> 23) {DataTime [4] = 0; } kipimo_jimbo = 1; sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } ikiwa (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ikiwa (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; ikiwa (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); karibu_jimbo = 1; } ikiwa (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); rekebisha_process = 0; }} wakati (sawa! = 1); }
Katika hali hii, mfumo utaonyesha ujumbe ulioonyeshwa kwenye Mchoro wa 4 na kisha subiri maadili yarekebishe ndani katika kitanzi cha wakati Wakati wa kurekebisha masaa, vifungo hivi hubadilisha kazi zao, ambayo ni kazi nyingi.
Hii hukuruhusu kutumia kitufe kwa kazi zaidi ya moja na kupunguza ugumu wa mfumo.
Kwa njia hii, mtumiaji atarekebisha thamani ya masaa na dakika na kisha ahifadhi data kwenye mfumo wakati kitufe cha Ok kinabanwa.
Kama unavyoona, mfumo utasoma vitufe 3, kama inavyoonyeshwa hapa chini.
kipimo = kusoma kwa dijiti (Kipimo cha Kitufe);
adjusthour = kusoma kwa dijiti (Buttonadjusthour); sawa = kusoma kwa dijiti (Kitufe);
Kumbuka kuwa kitufe cha kipimo (Buttonmeasure) kimebadilisha kazi yake. Sasa itatumika kurekebisha maadili ya saa, kama inavyoonyeshwa hapa chini. Masharti mawili yafuatayo yanafanana na hutumiwa kurekebisha masaa na dakika, kama inavyoonyeshwa hapo juu.
ikiwa (kipimo == 0 && measure_state == 1)
{kipimo_jimbo = 0; } ikiwa (kipimo == 1 && measure_state == 0) {DataTime [4] ++; ikiwa (DataTime [4]> 23) {DataTime [4] = 0; } kipimo_jimbo = 1; sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } ikiwa (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ikiwa (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; ikiwa (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (nyakati); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); karibu_jimbo = 1; }
Kwa hivyo, kila wakati kifungo kimoja kati ya hivyo viwili kinabanwa, thamani ya nafasi 4 na 5 ya vector ya DataTime itabadilishwa na pili, maadili haya yatahifadhiwa kwenye kumbukumbu ya DS1307.
Baada ya marekebisho, mtumiaji lazima abofye kitufe cha Ok, kumaliza mchakato. Wakati tukio hili linatokea, mfumo utafanya mistari ifuatayo ya nambari.
ikiwa (sawa == 1)
{lcd.safi (); DS1307.getDate (DataTime); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); rekebisha_process = 0; }
Itaingia hali hiyo hapo juu na kuwasilisha ujumbe wa saa na Menyu ya Chaguzi kwa mtumiaji.
Mwishowe, mtumiaji lazima aanze mchakato wa ufuatiliaji wa mgonjwa kupitia sensa ya joto na Arduino JLCPCB Datalogger.
Ili kufanya hivyo, mtumiaji lazima bonyeza kitufe cha kipimo, ambacho kimeunganishwa na pini ya dijiti 2.
Kisha, mfumo utafanya usomaji na sensorer ya joto kwa Arduino na kuihifadhi kwenye kadi ya kumbukumbu. Eneo la mzunguko linaonyeshwa kwenye Kielelezo hapo juu.
Hatua ya 8:
Kwa hivyo, wakati kitufe kinabanwa, sehemu ifuatayo ya nambari itatekelezwa.
ikiwa (kipimo == 0 && measure_state == 1)
{kipimo_jimbo = 0; } ikiwa (kipimo == 1 && measure_state == 0 && measure_process == 0) {measure_process = 1; kipimo_jimbo = 1; ikiwa (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); Ondoa SD ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } mwingine {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile. karibu (); } kuchelewa (500); myFile.print ("Saa:"); myFile.println ("Joto"); DS1307.getDate (DataTime); realMin = previousMin = DataTime [5]; sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd wazi (); lcd.setCursor (5, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("Joto:"); lcd.set Mshale (14, 1); sensorer.ombi ombi Joto (); kuelea TempSensor = sensorer.getTempCByIndex (0); lcd.print (TempSensor); }
Katika sehemu ya nambari hapo juu, mfumo utatoa thamani ya 1 kwa kutofautisha kwa kipimo. Ni jukumu la kuruhusu data iokolewe kwenye Kadi ya SD.
Kwa kuongezea, mfumo utaangalia ikiwa faili ya maandishi na kumbukumbu ya data ipo au la. Ikiwa kuna faili, mfumo utafuta na kuunda mpya kuhifadhi data.
Baada ya hapo, itaunda safu mbili: moja kwa masaa na moja kwa joto ndani ya faili ya maandishi.
Baada ya hapo, itaonyesha masaa na joto kwenye skrini ya LCD, kama inavyoonyeshwa kwenye Kielelezo hapo juu.
Baada ya hapo, mtiririko wa nambari utafanya kizuizi kifuatacho cha programu.
ikiwa (kipimo_process == 1)
{sasishoTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); realMin = Muda wa Data [5]; // ------------------------------------------------ --------- Hesabu Dakika ------------------------------------------- ------------------- ikiwa (RealMin! = Minin iliyopita) {contMin ++; uliopitaMin = halisiMin; } ikiwa (contMin == 5) {sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); sensorer.ombi ombi Joto (); kuelea TempSensor = sensorer.getTempCByIndex (0); myFile.print (nyakati); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Hesabu masaa ------------------------------------ ---------------------- ikiwa (saa ya kweli! = Saa iliyopita) {contHour ++; Saa iliyopita = saa halisi; } ikiwa (saa == 5) {myFile.close (); lcd wazi (); lcd.setCursor (5, 0); lcd.print ("Imemalizika"); lcd.setCursor (5, 1); lcd.print ("Mchakato"); mchakato_pima = 0; saa = 0; } // ----------------------------------------------- Hali kusitisha orodha ya data -----
Kwanza, kazi ya sasishoTemp () itatekelezwa. Ni sawa na kazi ya sasishoHour (); Walakini, inaonyesha joto kila dakika 1.
Baada ya hapo, mfumo utakusanya data ya wakati kutoka Saa Saa ya Saa na kuhifadhi thamani ya dakika ya sasa katika ubadilishaji wa sasaMin.
Halafu, itaangalia ikiwa mabadiliko ya min yamebadilishwa, kulingana na hali iliyowasilishwa hapa chini
ikiwa (realMin! = Minin iliyopita)
{contMin ++; uliopitaMin = halisiMin; }
Kwa hivyo, ikiwa kutofautisha kwa dakika ya sasa ni tofauti na thamani ya hapo awali, inamaanisha kuwa mabadiliko katika thamani yametokea. itapewa variableMin iliyopita, kuhifadhi thamani yake ya awali.
Kwa hivyo, wakati thamani ya hesabu hii ni sawa na 5, inamaanisha kuwa dakika 5 zimepita na mfumo lazima ufanye usomaji mpya wa joto na uhifadhi saa na thamani ya joto kwenye faili ya kumbukumbu ya Kadi ya SD.
ikiwa (contMin == 5)
{sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); sensorer.ombi ombi Joto (); kuelea TempSensor = sensorer.getTempCByIndex (0); myFile.print (nyakati); myFile.println (TempSensor); contMin = 0; }
Kwa njia hii, mchakato huu utarudiwa hadi kufikia thamani ya masaa 5 ya kufuatilia joto la mgonjwa na sensorer ya joto na Arduino.
Sehemu ya nambari imeonyeshwa hapa chini na ni sawa na hesabu ya dakika, ambayo iliwasilishwa hapo juu.
// ------------------------------------------------ ----------- Saa za kuhesabu ------------------------------------- ---------------------
ikiwa (Saa halisi! = Saa iliyopita) {contHour ++; Saa iliyopita = saa halisi; } ikiwa (saa == 5) {myFile.close (); lcd wazi (); lcd.setCursor (5, 0); lcd.print ("Imemalizika"); lcd.setCursor (5, 1); lcd.print ("Mchakato"); mchakato_pima = 0; saa = 0; }
Baada ya kufikia masaa 5 ya ufuatiliaji, mfumo utafunga faili ya kumbukumbu na kuwasilisha ujumbe "Mchakato wa Kumalizika" kwa mtumiaji.
Kwa kuongezea, mtumiaji anaweza kubonyeza kitufe cha Ok / Pause ili kuacha kurekodi data. Wakati hii itatokea, kizuizi kifuatacho kitatekelezwa.
// ----------------------------------------------- Hali kwa simamisha orodha ya data ------------------------------------------ ---
ikiwa (ok == 1) {myFile.close (); lcd wazi (); lcd.setCursor (6, 0); lcd.print ("Imesimamishwa"); lcd.setCursor (5, 1); lcd.print ("Mchakato"); mchakato_pima = 0; kuchelewa (2000); lcd wazi (); DS1307.getDate (DataTime); sprintf (mara, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (nyakati); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }
Hatua ya 9:
Kisha, mfumo utafunga faili na kuwasilisha ujumbe "Mchakato uliosimamishwa", kama inavyoonyeshwa kwenye Kielelezo 8.
Hatua ya 10:
Baada ya hapo, mfumo utachapisha chaguzi za skrini na menyu, kama inavyoonyeshwa kwenye Kielelezo 9.
Hatua ya 11: Kupata Data ya Moduli ya Kadi ya SD na Arduino
Baada ya mchakato wa kufuatilia Datalogger ya JLCPCB na sensorer ya joto na Arduino, inahitajika kuondoa kadi ya kumbukumbu na kupata data kwenye kompyuta.
Kuangalia na kuchambua data na ubora bora, tuma / nakala nakala zote za faili ya maandishi kwa Excel. Baada ya hapo, unaweza kupanga grafu na kuchambua matokeo yaliyopatikana.
Hatua ya 12: Hitimisho
Datalogger ya JLCPCB iliyo na sensorer ya joto na Arduino inaturuhusu, pamoja na kupima joto, kurekodi habari juu ya tabia ya joto ya mgonjwa kwa kipindi cha muda.
Kwa data hizi zilizohifadhiwa, inawezekana kuchambua na kuelewa jinsi joto la mgonjwa aliyeambukizwa na COVID 19 anavyofanya.
Kwa kuongeza, inawezekana kutathmini kiwango cha joto na kuhusisha thamani yake na matumizi ya aina fulani ya dawa.
Kwa hivyo, kupitia data hizi, Datalogger ya JLCPCB iliyo na sensorer ya joto kwa Arduino inakusudia kusaidia madaktari na wauguzi katika utafiti wa tabia ya wagonjwa.
Mwishowe, tunaishukuru kampuni ya JLCPCB kwa kusaidia maendeleo ya mradi huo na tunatumahi kuwa unaweza kuitumia
Faili zote zinaweza kupakuliwa na kutumiwa kwa uhuru na mtumiaji yeyote.
Ilipendekeza:
Joto linalotumiwa na jua la Arduino na sensorer ya unyevu kama 433mhz Sensorer ya Oregon: Hatua 6
Joto la jua na umeme wa Arduino na Sura ya unyevu kama 433mhz Oregon Sensor: Huu ni ujenzi wa hali ya joto ya jua na sensorer ya unyevu. Sensor hutengeneza sensor ya Oregon ya 433mhz, na inaonekana katika lango la Telldus Net. Unachohitaji: 1x " 10-LED Sura ya Mwendo wa Nguvu ya jua " kutoka Ebay. Hakikisha inasema kugonga 3.7v
Jinsi ya kutumia Sensor ya Joto la DHT11 na Arduino na Joto la Uchapishaji wa Joto na Unyevu: Hatua 5
Jinsi ya Kutumia Sensorer ya Joto la DHT11 Na Arduino na Joto la Uchapishaji Joto na Unyevu: Sura ya DHT11 hutumiwa kupima joto na unyevu. Unyevu wa DHT11 na sensorer ya joto hufanya iwe rahisi sana kuongeza data ya unyevu na joto kwenye miradi yako ya elektroniki ya DIY. Ni kwa kila
Joto la joto la ESP32 NTP Kuchunguza Thermometer na Sauti ya Steinhart-Hart na Alarm ya Joto.: Hatua 7 (na Picha)
Joto la kupima joto la ESP32 NTP na Thermometer ya kupikia ya joto na Alarm ya Steinhart-Hart na Alarm ya joto. ni ya kufundisha inayoonyesha jinsi ninavyoongeza uchunguzi wa joto la NTP, piezo b
Joto -Joto La Kudhibitiwa la Joto La joto: Hatua 6
Joto -Joto La Kutabasamu La Kudhibiti Joto: ******************************************* ************************************************** +
Sensorer ya Joto la Joto la Arduino: Njia 5 (na Picha)
Sensor ya Joto la Joto la Arduino: Sensorer ya Joto ni jambo la kawaida siku hizi, lakini nyingi zao ni ngumu sana kutengeneza au ni ghali sana kununua. Mradi huu unakupa Sensor ya Joto la Joto la Arduino ambalo sio tu ni rahisi na rahisi sana. hadi m