Բովանդակություն:

Arduino- ի համար ջերմաստիճանի տվիչ, որը կիրառվում է COVID 19: 12 քայլում (նկարներով)
Arduino- ի համար ջերմաստիճանի տվիչ, որը կիրառվում է COVID 19: 12 քայլում (նկարներով)
Anonim
Arduino- ի համար ջերմաստիճանի տվիչ, որը կիրառվում է COVID 19 -ի դեպքում
Arduino- ի համար ջերմաստիճանի տվիչ, որը կիրառվում է COVID 19 -ի դեպքում

Arduino- ի համար ջերմաստիճանի տվիչը հիմնարար տարր է, երբ մենք ցանկանում ենք չափել մարդու մարմնի պրոցեսորի ջերմաստիճանը:

Duերմաստիճանի տվիչը Arduino- ով պետք է շփվի կամ մոտ լինի ջերմության մակարդակը ընդունելու և չափելու համար: Այդպես են աշխատում ջերմաչափերը:

Այս սարքերը չափազանց օգտագործվում են հիվանդ մարդկանց մարմնի ջերմաստիճանը չափելու համար, քանի որ ջերմաստիճանը առաջին գործոններից մեկն է, որը փոխվում է մարդու մարմնում, երբ կա աննորմալություն կամ հիվանդություն:

Մարդու մարմնի ջերմաստիճանը փոխող հիվանդություններից մեկը COVID 19 -ն է: Հետևաբար, մենք ներկայացնում ենք հիմնական ախտանիշները.

Հազ հոգնածություն Շնչառության դժվարություն (reանր դեպքեր) everերմություն everերմությունը ախտանիշ է, որի հիմնական բնութագիրը մարմնի ջերմաստիճանի բարձրացումն է: Այս հիվանդության դեպքում մենք պետք է մշտապես վերահսկենք այս ախտանիշները:

Այսպիսով, մենք կմշակենք ջերմաստիճանը վերահսկելու և այս տվյալները հիշողության քարտի վրա պահելու նախագիծ JLCPCB Datalogger- ի միջոցով `օգտագործելով ջերմաստիճանի տվիչ Arduino- ով:

Հետևաբար, այս հոդվածում դուք կսովորեք.

  • Ինչպե՞ս է JLCPCB Datalogger- ը ջերմաստիճանի տվիչով Arduino- ով:
  • Ինչպես է աշխատում ջերմաստիճանի տվիչը Arduino- ի հետ:
  • Ինչպես է աշխատում DS18B20 ջերմաստիճանի տվիչը Arduino- ի հետ
  • Օգտագործեք բազմաթիվ գործառույթներով կոճակներ:

Հաջորդը, մենք ձեզ ցույց կտանք, թե ինչպես կզարգացնեք ձեր JLCPCB Datalogger- ը ՝ օգտագործելով Arduino ջերմաստիճանի տվիչը:

Պարագաներ

Arduino UNO

JLCPCB տպագիր տպատախտակ

DS18B20 peratերմաստիճանի տվիչ

Arduino Nano R3

Ցատկողներ

LCD էկրան 16 x 2

Կոճակի անջատիչ

Ռեզիստոր 1kR

SD քարտի մոդուլ Arduino- ի համար

Քայլ 1. LCերմաստիճանի տվիչով JLCPCB տվյալների ցուցիչի կառուցում Arduino- ով

JLCPCB Datalogger- ի կառուցում ջերմաստիճանի տվիչով Arduino- ով
JLCPCB Datalogger- ի կառուցում ջերմաստիճանի տվիչով Arduino- ով

Ինչպես արդեն նշվեց, նախագիծը բաղկացած է Arduino- ով ջերմաստիճանի տվիչով JLCPCB Datalogger- ի ստեղծմամբ, և այս տվյալների միջոցով մենք կարող ենք վերահսկել բուժվող հիվանդի ջերմաստիճանը:

Այսպիսով, սխեման ցույց է տրված վերևի նկարում:

Հետեւաբար, ինչպես տեսնում եք, այս միացումն ունի Arduino- ի հետ DS18B20 ջերմաստիճանի տվիչ, որը պատասխանատու է հիվանդի ջերմաստիճանի ընթերցման չափման համար:

Բացի այդ, Arduino Nano- ն պատասխանատու կլինի այս տվյալները հավաքելու և SD Card Module- ի հիշողության քարտի վրա պահելու համար:

Յուրաքանչյուր տեղեկատվություն կպահպանվի իր համապատասխան ժամանակի հետ, որը կկարդա RTC DS1307 մոդուլից:

Այսպիսով, որպեսզի Arduino- ով ջերմաստիճանի տվիչի տվյալները պահպանվեն, օգտագործողը պետք է գործընթացը կատարի 16x2 LCD- ով Control Menu- ի միջոցով:

Քայլ 2:

Պատկեր
Պատկեր

Յուրաքանչյուր կոճակ պատասխանատու է տարբերակի վերահսկման համար, ինչպես ցույց է տրված LCD էկրանին 16x2 գծապատկերում:

Յուրաքանչյուր տարբերակ պատասխանատու է համակարգում գործառույթ կատարելու համար, ինչպես ցույց է տրված ստորև:

  • M տարբերակը պատասխանատու է Հիշողության քարտի տվյալների չափման և գրանցման համար:
  • H տարբերակը պատասխանատու է համակարգի ժամերը կարգավորելու համար:
  • O/P տարբերակը օգտագործվում է համակարգում տվյալների մուտքագրումը հաստատելու կամ հիշողության քարտում տվյալները գրելու համար:

Համակարգի վերահսկման գործընթացը հասկանալու համար մենք կտրամադրենք ստորև բերված ծածկագիրը և կքննարկենք JLCPCB Datalogger- ի ջերմաստիճանային տվիչով Arduino- ի հետ քայլ առ քայլ կառավարման համակարգը:

#ներառել // Գրադարան DS18B20 ցուցիչի բոլոր գործառույթներով

#ներառել #ներառել // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Կարգավորեք LCD 16x2 պարամետրով 0x27 համար #սահմանեք ONE_WIRE_BUS 8 // DS18B20 սենսորին միացնելու համար թվային քորոց // Սահմանեք միանգամից մեկ OneWire կամ OneWire սենսորային արագությունը (ONE_WIRE_BUS); DallasTemperature տվիչներ (& oneWire); DeviceAddress sensor1; Ֆայլ myFile; #սահմանել Buttonmeasure 2 #սահմանել Buttonadjusthour 3 #սահմանել Buttonok 4 bool միջոց = 0, adjusthour = 0, ok = 0; bool masë_state = 0, adjusthour_state = 0, ok_state = 0; bool միջոց_միջոց = 0, adjust_process = 0; բայթ actualMin = 0, previousMin = 0; բայթ actualHour = 0, նախորդ ժամ = 0; բայթ minUpdate = 0; int pinoSS = 10; // Փին 53 para Mega / Pin 10 para UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (անգամ); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (անգամ, «%02d:%02d», DataTime [4], DataTime [5]); lcd. հստակ (); lcd.setCursor (5, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print ("Temերմաստիճանը."); lcd.setCursor (14, 1); տվիչներ. խնդրում ենք ջերմաստիճաններ (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307. սկսել (); տվիչներ. սկսել (); 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 («Տվյալների գրիչ»); ուշացում (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print («Սենսորների տեղայնացումը հաջողությամբ»); Serial.print (sensors.getDeviceCount (), DEC); Serial.println («Սենսոր»); 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"); վերադարձ; } DS1307.getDate (DataTime); lcd. հստակ (); sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O/P»); } void loop () {updateHour (); // Կարդալու կոճակի վիճակները չափում են = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (կոճակ); եթե (չափել == 0 && միջոց_քաղաք == 1) {չափիչ_պետություն = 0; } if (միջոց == 1 && միջոց_քաղաքական == 0 && միջոց_միջոց == 0) {միջոց_միջոց = 1; չափման_պետություն = 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 (); } ուշացում (500); myFile.print («:ամ.»); myFile.println («peratերմաստիճան»); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd. հստակ (); lcd.setCursor (5, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print ("Temերմաստիճանը."); lcd.setCursor (14, 1); տվիչներ. խնդրում ենք ջերմաստիճաններ (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && masë_process == 0) {adjust_process = 1; } // --------------------------------------------------- --- Չափման գործընթաց ------------------------------------------------- -------------- եթե (masë_process == 1) {updateTemp (); բայթ contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = Տվյալների ժամանակ [5]; // ---------------------------------------------------- --------- Հաշվիր րոպեներ ------------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = aktualeMin; } if (contMin == 5) {sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); տվիչներ. խնդրում ենք ջերմաստիճաններ (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (անգամ); myFile.println (TempSensor); contMin = 0; } // --------------------------------------------------- ------------ Countամերի հաշվարկ ---------------------------------------- ---------------------- եթե (փաստացի !ամ! = նախորդժամ) {կոնտուր ++; նախորդ ժամ = փաստացի ժամ; } if (contHour == 5) {myFile.close (); lcd. հստակ (); lcd.setCursor (5, 0); lcd.print («Ավարտված է»); lcd.setCursor (5, 1); lcd.print («Գործընթաց»); masë_process = 0; contHour = 0; } // ---------------------------------------------- Վիճակը դադարեցնել տվյալների գրառումը -------------------------------------------------- ---- եթե (լավ == 1) {myFile.close (); lcd. հստակ (); lcd.setCursor (6, 0); lcd.print («Դադարեցվել է»); lcd.setCursor (5, 1); lcd.print («Գործընթաց»); masë_process = 0; ուշացում (2000); lcd. հստակ (); DS1307.getDate (DataTime); sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O/P»); }} // ---------------------------------------------- ------- Կարգավորել ժամերը --------------------------------------------- ---------------------- // Կարգավորել ժամը եթե (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Կարգավորել ժամը."); sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); // Hour Adjust do {masë = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (կոճակ); եթե (չափել == 0 && չափ_պետություն == 1) {չափման_պետություն = 0; } if (միջոց == 1 && միջոց_քաղաքական == 0) {DataTime [4] ++; եթե (DataTime [4]> 23) {DataTime [4] = 0; } չափման_պետություն = 1; sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); 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] ++; եթե (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); 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 (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O»); adjust_process = 0; }} while (լավ! = 1); } // --------------------------------------------------- ------- Վերջի ճշգրտման ժամը -------------------------------------------- -------------------}}

Նախ, մենք սահմանում ենք բոլոր գրադարանները `մոդուլները վերահսկելու և փոփոխականները հայտարարելու համար, որոնք օգտագործվում են JLCPCB Datalogger- ը Arduino- ի համար ջերմաստիճանի տվիչով ծրագրելիս: Կոդի բլոկը ներկայացված է ստորև:

Քայլ 3:

#ներառել // Գրադարան DS18B20 ցուցիչի բոլոր գործառույթներով

#ներառել #ներառել // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Կարգավորեք LCD 16x2 պարամետրով 0x27 համար #սահմանեք ONE_WIRE_BUS 8 // DS18B20 սենսորին միացնելու համար թվային քորոց // Սահմանեք միանգամից մեկ OneWire կամ OneWire սենսորային արագությունը (ONE_WIRE_BUS); DallasTemperature տվիչներ (& oneWire); DeviceAddress sensor1; Ֆայլ myFile; #սահմանել Buttonmeasure 2 #սահմանել Buttonadjusthour 3 #սահմանել Buttonok 4 bool միջոց = 0, adjusthour = 0, ok = 0; bool masë_state = 0, adjusthour_state = 0, ok_state = 0; bool միջոց_միջոց = 0, adjust_process = 0; բայթ actualMin = 0, previousMin = 0; բայթ actualHour = 0, նախորդ ժամ = 0; բայթ minUpdate = 0; int pinoSS = 10; // Փին 53 para Mega / Pin 10 para UNO int DataTime [7];

Այսուհետ մենք ունենք դատարկ կարգաբերման գործառույթ: Այս գործառույթը օգտագործվում է կապումներն ու սարքի սկզբնական կազմաձևման համար, ինչպես ցույց է տրված ստորև:

դատարկ կարգավորում ()

{Serial.begin (9600); DS1307. սկսել (); տվիչներ. սկսել (); 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 («Տվյալների գրիչ»); ուշացում (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print («Սենսորների տեղայնացումը հաջողությամբ»); Serial.print (sensors.getDeviceCount (), DEC); Serial.println («Սենսոր»); 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"); վերադարձ; } DS1307.getDate (DataTime); lcd. հստակ (); sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O/P»); }

Նախ սկսվեց սերիական հաղորդակցությունը, իրական ժամանակի ժամացույցը և Arduino DS18B20- ի ջերմաստիճանի տվիչը: Սարքերը նախաստորագրելուց և փորձարկելուց հետո ընտրացանկի ընտրանքներով հաղորդագրությունը տպվեց 16x2 LCD էկրանին: Այս էկրանը ներկայացված է Նկար 1 -ում:

Քայլ 4:

Դրանից հետո համակարգը կարդում է ժամերը և թարմացնում արժեքը `զանգահարելով updateHour գործառույթին: Այսպիսով, այս գործառույթը նպատակ ունի ամեն րոպե ներկայացնել ժամային արժեքը: Ֆունկցիայի կոդի բլոկը ներկայացված է ստորև:

void updateHour ()

{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (անգամ); minUpdate = DataTime [5]; }}

Քայլ 5:

Պատկեր
Պատկեր

Բացի ժամերի թարմացումից, օգտվողը կարող է ընտրել երեք կոճակներից մեկը ՝ Arduino- ով ջերմաստիճանի տվիչով հիվանդին վերահսկելու համար: Շղթան ցույց է տրված վերևի նկարում:

Քայլ 6: JLCPCB Datalogger Control Menu

JLCPCB Տվյալների գրանցման վերահսկման ընտրացանկ
JLCPCB Տվյալների գրանցման վերահսկման ընտրացանկ

Նախ, օգտագործողը պետք է ստուգի և կարգավորի համակարգի ժամերը: Այս գործընթացը կատարվում է երկրորդ կոճակը սեղմելիս:

Երբ կոճակը սեղմվում է, պետք է հայտնվի հետևյալ էկրանը, որը ցույց է տրված վերևում նկարում:

Քայլ 7:

Պատկեր
Պատկեր

Այս էկրանից օգտվողը կկարողանա մուտքագրել ժամի և րոպեի արժեքները Arduino- ի թվային 2 -րդ և 3 -րդ կապումներին միացված կոճակներից: Կոճակները ցուցադրվում են վերևի նկարում:

Ստորև բերված է ժամերի վերահսկման կոդի հատվածը:

եթե (adjusthour == 0 && adjusthour_state == 1)

{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && masë_process == 0) {adjust_process = 1; }

Theամերի կոճակը սեղմելիս, և չափման_փոփոխական փոփոխականը սահմանվել է 0, պայմանը ճշմարիտ կլինի, իսկ adjust_process փոփոխականը `1: Երբ դրա արժեքը 0 է, համակարգը թույլ կտա օգտվողին մուտք գործել ժամանակի կարգավորման ընտրացանկ: Հետեւաբար, adjust_process փոփոխականի 1 արժեք ստանալուց հետո համակարգը կմտնի ժամանակի ճշգրտման պայման: Այս ծածկագրի բլոկը ներկայացված է ստորև:

// ---------------------------------------------------- ----- Կարգավորել ժամերը ----------------------------------------------- --------------------

// Adjust Hour if (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Կարգավորել ժամը."); sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); // Hour Adjust do {masë = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (կոճակ); եթե (չափել == 0 && չափ_պետություն == 1) {չափիչ_պետություն = 0; } if (միջոց == 1 && միջոց_քաղաքական == 0) {Տվյալների ժամանակ [4] ++; եթե (DataTime [4]> 23) {DataTime [4] = 0; } չափման_պետություն = 1; sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); 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] ++; եթե (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); 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 (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O»); adjust_process = 0; }} while (լավ! = 1); }

Այս վիճակում համակարգը կցուցադրի Նկար 4 -ում ցուցադրված հաղորդագրությունը, այնուհետև սպասեք, մինչև արժեքները ներքին կարգավորվեն միևնույն ժամանակ:

Սա թույլ է տալիս կոճակ օգտագործել մեկից ավելի գործառույթների համար և նվազեցնել համակարգի բարդությունը:

Այս կերպ օգտվողը կկարգավորի ժամերի և րոպեների արժեքը, այնուհետև տվյալները կպահի համակարգում, երբ Ok կոճակը սեղմվի:

Ինչպես տեսնում եք, համակարգը կկարդա 3 կոճակը, ինչպես ցույց է տրված ստորև:

միջոց = digitalRead (Buttonmeasure);

adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (կոճակ);

Նշենք, որ չափման կոճակը (Buttonmeasure) փոխել է իր գործառույթը: Այժմ այն կօգտագործվի ժամերի արժեքները կարգավորելու համար, ինչպես ցույց է տրված ստորև: Հետևյալ երկու պայմանները նման են և օգտագործվում են ժամերն ու րոպեները կարգավորելու համար, ինչպես ցույց է տրված վերևում:

եթե (չափել == 0 && չափման_պետություն == 1)

{masë_state = 0; } if (միջոց == 1 && միջոց_քաղաքական == 0) {Տվյալների ժամանակ [4] ++; եթե (DataTime [4]> 23) {DataTime [4] = 0; } չափման_պետություն = 1; sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); 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] ++; եթե (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (անգամ); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; }

Հետևաբար, ամեն անգամ, երբ երկու կոճակներից մեկը սեղմվում է, DataTime վեկտորի 4 և 5 դիրքերի արժեքը կփոխվի, և երկրորդ ՝ այդ արժեքները կպահվեն DS1307 հիշողության մեջ:

Կարգավորումներից հետո օգտագործողը պետք է կտտացնի Ok կոճակին ՝ գործընթացն ավարտելու համար: Երբ այս իրադարձությունը տեղի ունենա, համակարգը կկատարի կոդի հետևյալ տողերը:

եթե (լավ == 1)

{lcd.clear (); DS1307.getDate (DataTime); sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O»); adjust_process = 0; }

Այն կմտնի վերը նշված պայմանը և օգտվողին կներկայացնի ժամային հաղորդագրությունը և Ընտրանքների ընտրացանկը:

Վերջապես, օգտագործողը պետք է սկսի հիվանդի մոնիտորինգի գործընթացը ջերմաստիճանի տվիչի միջոցով Arduino JLCPCB Datalogger- ով:

Դա անելու համար օգտագործողը պետք է սեղմի չափման կոճակը, որը միացված է թվային 2 -րդ կապին:

Այնուհետև համակարգը կարդալու է Arduino- ի համար ջերմաստիճանի տվիչով և այն պահելու է հիշողության քարտի վրա: Շղթայի շրջանը ցուցադրված է վերևում նկարում:

Քայլ 8:

Պատկեր
Պատկեր

Հետևաբար, երբ կոճակը սեղմվում է, կոդի հետևյալ հատվածը կկատարվի:

եթե (չափել == 0 && չափման_պետություն == 1)

{masë_state = 0; } if (միջոց == 1 && միջոց_քաղաքական == 0 && միջոց_միջոց == 0) {միջոց_միջոց = 1; չափման_պետություն = 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 (); } ուշացում (500); myFile.print («:ամ.»); myFile.println («peratերմաստիճան»); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd. հստակ (); lcd.setCursor (5, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print ("Temերմաստիճանը."); lcd.setCursor (14, 1); տվիչներ. խնդրում ենք ջերմաստիճաններ (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }

Վերևի կոդի հատվածում համակարգը միջոցը փոխանցելու է չափման գործընթաց 1 -ին: Այն պատասխանատու է SD քարտի վրա տվյալները պահելու թույլտվության համար:

Բացի այդ, համակարգը կստուգի ՝ տվյալների գրանցամատյանով տեքստային ֆայլ գոյություն ունի, թե ոչ: Եթե ֆայլ կա, համակարգը կջնջի և կստեղծի նորը ՝ տվյալները պահելու համար:

Դրանից հետո այն կստեղծի երկու սյունակ `մեկը ժամերի համար, իսկ մյուսը` ջերմաստիճանի տեքստային ֆայլում:

Դրանից հետո այն կցուցադրի ժամերն ու ջերմաստիճանը LCD էկրանին, ինչպես ցույց է տրված վերևում նկարում:

Դրանից հետո կոդի հոսքը կկատարի հետևյալ ծրագրի բլոկը:

եթե (masë_process == 1)

{updateTemp (); բայթ contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = Տվյալների ժամանակ [5]; // ---------------------------------------------------- --------- Հաշվիր րոպեներ ------------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = aktualeMin; } if (contMin == 5) {sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); տվիչներ. խնդրում ենք ջերմաստիճաններ (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (անգամ); myFile.println (TempSensor); contMin = 0; } // --------------------------------------------------- ------------ Countամերի հաշվարկ ---------------------------------------- ---------------------- եթե (փաստացի !ամ! = նախորդժամ) {կոնտուր ++; նախորդ ժամ = փաստացի ժամ; } if (contHour == 5) {myFile.close (); lcd. հստակ (); lcd.setCursor (5, 0); lcd.print («Ավարտված է»); lcd.setCursor (5, 1); lcd.print («Գործընթաց»); masë_process = 0; contHour = 0; } // ---------------------------------------------- Պայման դադարեցնել տվյալների գրառումը -----

Նախ, updateTemp () գործառույթը կկատարվի: Այն նման է updateHour () գործառույթին; սակայն, այն ցուցադրում է ջերմաստիճանը յուրաքանչյուր 1 րոպեն մեկ:

Դրանից հետո համակարգը կհավաքի ժամանակի տվյալները Իրական ժամանակի ժամացույցից և կպահի ընթացիկ րոպեի արժեքը ընթացիկ Min փոփոխականում:

Այնուհետև այն կստուգի, արդյոք min փոփոխականը փոխվել է ՝ համաձայն ստորև ներկայացված պայմանի

եթե (aktualeMin! = նախորդ Min)

{contMin ++; previousMin = aktualeMin; }

Հետևաբար, եթե ընթացիկ րոպեի փոփոխականը տարբերվում է նախորդ արժեքից, նշանակում է, որ արժեքի փոփոխություն է տեղի ունեցել: Այսպիսով, պայմանը ճշմարիտ կլինի, և րոպեների հաշվարկի արժեքը կավելանա (շարունակություն) և ընթացիկ արժեքը կնշանակվի previousMin փոփոխականին ՝ իր նախկին արժեքը պահելու համար:

Հետևաբար, երբ այս հաշվարկի արժեքը հավասար է 5 -ի, նշանակում է, որ անցել է 5 րոպե, և համակարգը պետք է կատարի ջերմաստիճանի նոր ընթերցում և պահպանի ժամը և ջերմաստիճանի արժեքը SD քարտի գրանցամատյանում:

եթե (շարունակել == 5)

{sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); տվիչներ. խնդրում ենք ջերմաստիճաններ (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (անգամ); myFile.println (TempSensor); contMin = 0; }

Այսպիսով, այս գործընթացը կկրկնվի մինչև Arduino- ով ջերմաստիճանի տվիչով հիվանդի ջերմաստիճանի մոնիտորինգի 5 ժամվա արժեքին հասնելը:

Կոդի հատվածը ներկայացված է ստորև և նման է րոպեների հաշվարկին, որը ներկայացված էր վերևում:

// ---------------------------------------------------- ----------- Countամերի հաշվարկ ----------------------------------------- ---------------------

եթե (փաստացի !ամ! = նախորդժամ) {կոնտուր ++; նախորդ ժամ = փաստացի ժամ; } if (contHour == 5) {myFile.close (); lcd. հստակ (); lcd.setCursor (5, 0); lcd.print («Ավարտված է»); lcd.setCursor (5, 1); lcd.print («Գործընթաց»); masë_process = 0; contHour = 0; }

Մոնիտորինգի 5 ժամ հասնելուց հետո համակարգը կփակի տեղեկամատյան ֆայլը և օգտագործողին կներկայացնի «Ավարտված գործընթաց» հաղորդագրությունը:

Բացի այդ, օգտագործողը կարող է սեղմել Ok/Pause կոճակը `տվյալների գրանցումը դադարեցնելու համար: Երբ դա տեղի ունենա, հետևյալ կոդի բլոկը կկատարվի:

// ---------------------------------------------- Պայման դեպի դադարեցնել տվյալների գրառումը --------------------------------------------------- ---

եթե (լավ == 1) {myFile.close (); lcd. հստակ (); lcd.setCursor (6, 0); lcd.print («Դադարեցվել է»); lcd.setCursor (5, 1); lcd.print («Գործընթաց»); masë_process = 0; ուշացում (2000); lcd. հստակ (); DS1307.getDate (DataTime); sprintf (անգամ, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (անգամ); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O/P»); }

Քայլ 9:

Պատկեր
Պատկեր

Այնուհետև համակարգը կփակի ֆայլը և կներկայացնի «Դադարեցված գործընթաց» հաղորդագրությունը, ինչպես ցույց է տրված Նկար 8 -ում:

Քայլ 10:

Պատկեր
Պատկեր

Դրանից հետո համակարգը տպելու է ժամանակի էկրանը և ընտրացանկի ընտրանքները, ինչպես ցույց է տրված Նկար 9 -ում:

Քայլ 11. SD քարտի մոդուլի տվյալների մուտք Arduino- ով

SD քարտի մոդուլի տվյալների մուտք Arduino- ի միջոցով
SD քարտի մոդուլի տվյալների մուտք Arduino- ի միջոցով

JLCPCB Datalogger- ի ՝ ջերմաստիճանի տվիչով Arduino- ով մոնիտորինգի գործընթացից հետո անհրաժեշտ է հեռացնել հիշողության քարտը և մուտք գործել համակարգչի տվյալները:

Տվյալներն ավելի որակյալ դիտելու և վերլուծելու համար տեքստային ֆայլի բոլոր տեղեկությունները արտահանեք / պատճենեք Excel- ում: Դրանից հետո կարող եք գծապատկերներ գծել և վերլուծել ստացված արդյունքները:

Քայլ 12: Եզրակացություն

JLCPCB Datalogger- ը Arduino- ի հետ ջերմաստիճանի տվիչով թույլ է տալիս մեզ, ջերմաստիճանը չափելուց բացի, որոշակի ժամանակահատվածում գրանցել տեղեկություններ հիվանդի ջերմաստիճանի վարքագծի վերաբերյալ:

Այս պահված տվյալների շնորհիվ հնարավոր է վերլուծել և հասկանալ, թե ինչպես է իրեն պահում COVID 19 -ով վարակված հիվանդի ջերմաստիճանը:

Բացի այդ, հնարավոր է գնահատել ջերմաստիճանի մակարդակը և դրա արժեքը կապել որոշ տեսակի դեղամիջոցների կիրառման հետ:

Հետևաբար, այս տվյալների միջոցով JLCPCB Datalogger- ը Arduino- ի համար ջերմաստիճանի տվիչով նպատակ ունի օգնել բժիշկներին և բուժքույրերին հիվանդների վարքագծի ուսումնասիրության մեջ:

Ի վերջո, մենք շնորհակալություն ենք հայտնում JLCPCB ընկերությանը ծրագրի զարգացմանը աջակցելու համար և հույս ունենք, որ դուք կարող եք օգտագործել այն:

Բոլոր ֆայլերը կարող են անվճար ներբեռնվել և օգտագործվել ցանկացած օգտագործողի կողմից:

Խորհուրդ ենք տալիս: