Բովանդակություն:
- Պարագաներ
- Քայլ 1. LCերմաստիճանի տվիչով JLCPCB տվյալների ցուցիչի կառուցում Arduino- ով
- Քայլ 2:
- Քայլ 3:
- Քայլ 4:
- Քայլ 5:
- Քայլ 6: JLCPCB Datalogger Control Menu
- Քայլ 7:
- Քայլ 8:
- Քայլ 9:
- Քայլ 10:
- Քայլ 11. SD քարտի մոդուլի տվյալների մուտք Arduino- ով
- Քայլ 12: Եզրակացություն
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
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- ով
Ինչպես արդեն նշվեց, նախագիծը բաղկացած է 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
Նախ, օգտագործողը պետք է ստուգի և կարգավորի համակարգի ժամերը: Այս գործընթացը կատարվում է երկրորդ կոճակը սեղմելիս:
Երբ կոճակը սեղմվում է, պետք է հայտնվի հետևյալ էկրանը, որը ցույց է տրված վերևում նկարում:
Քայլ 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- ով
JLCPCB Datalogger- ի ՝ ջերմաստիճանի տվիչով Arduino- ով մոնիտորինգի գործընթացից հետո անհրաժեշտ է հեռացնել հիշողության քարտը և մուտք գործել համակարգչի տվյալները:
Տվյալներն ավելի որակյալ դիտելու և վերլուծելու համար տեքստային ֆայլի բոլոր տեղեկությունները արտահանեք / պատճենեք Excel- ում: Դրանից հետո կարող եք գծապատկերներ գծել և վերլուծել ստացված արդյունքները:
Քայլ 12: Եզրակացություն
JLCPCB Datalogger- ը Arduino- ի հետ ջերմաստիճանի տվիչով թույլ է տալիս մեզ, ջերմաստիճանը չափելուց բացի, որոշակի ժամանակահատվածում գրանցել տեղեկություններ հիվանդի ջերմաստիճանի վարքագծի վերաբերյալ:
Այս պահված տվյալների շնորհիվ հնարավոր է վերլուծել և հասկանալ, թե ինչպես է իրեն պահում COVID 19 -ով վարակված հիվանդի ջերմաստիճանը:
Բացի այդ, հնարավոր է գնահատել ջերմաստիճանի մակարդակը և դրա արժեքը կապել որոշ տեսակի դեղամիջոցների կիրառման հետ:
Հետևաբար, այս տվյալների միջոցով JLCPCB Datalogger- ը Arduino- ի համար ջերմաստիճանի տվիչով նպատակ ունի օգնել բժիշկներին և բուժքույրերին հիվանդների վարքագծի ուսումնասիրության մեջ:
Ի վերջո, մենք շնորհակալություն ենք հայտնում JLCPCB ընկերությանը ծրագրի զարգացմանը աջակցելու համար և հույս ունենք, որ դուք կարող եք օգտագործել այն:
Բոլոր ֆայլերը կարող են անվճար ներբեռնվել և օգտագործվել ցանկացած օգտագործողի կողմից:
Խորհուրդ ենք տալիս:
Ակտիվ ցածր փոխանցման զտիչ RC- ն կիրառվում է Arduino- ի հետ նախագծերում. 4 քայլ
Lowածր փոխանցման զտիչ RC- ն կիրառվում է Arduino- ի հետ նախագծերում. Arduino- ի և էլեկտրական սխեմաների մոտ աշխատող սենսորներով համակարգերի հետ կապված ընդհանուր խնդիրը «մակաբուծական» ազդանշանների առկայությունն է: Նրանք գ
Շարժիչի ջերմաստիճանի տվիչ/չափիչ դասական մեքենաների համար անլար զոնդով `7 քայլ
Շարժիչի ջերմաստիճանի տվիչ/չափիչ անլար զոնդով դասական մեքենաների համար. Fiat 126 մեքենա ՝ 2 մխոցով օդով սառեցված շարժիչով ՝ հետևի գլխարկի տակ: Չիպիտակը չունի ջերմաստիճանի չափիչ, որը ցույց է տալիս, թե որքան տաք է շարժիչը, ուստի ես կարծում էի, որ սենսորը օգտակար կլինի: Նաև ցանկանում էի, որ սենսորը մետաղալար լինի
IoT ջերմաստիճանի տվիչ ESP8266- ով `6 քայլ (նկարներով)
IoT ջերմաստիճանի տվիչ ESP8266- ով. Ինձ ոգեշնչեց ստեղծել ջերմաստիճանի տվիչ, որը կարող եմ վերահսկել WiFi- ով: Այս նախագիծը նոր չէ, բայց ինձ դուր է գալիս անվտանգության համար միջանկյալ շերտ ունենալու և երթուղիչում ձեր IoT սարքի նավահանգիստ չբացելու գաղափարը: Հիմնական գաղափարը կտարածվի
Հպման տվիչ և ձայնային տվիչ, որը վերահսկում է AC/DC լույսերը `5 քայլ
Touch Sensor & Sound Sensor AC/DC Lights. ՄԻԱՎԱ, եթե այն բաց թողնեք, Լույսը ԿԱՆFԻ, և նույնը
Arduino- ի վրա հիմնված թվային ջերմաստիճանի տվիչ `5 քայլ (նկարներով)
Arduino- ի վրա հիմնված թվային ջերմաստիճանի տվիչ. Daysերմաստիճանի տվիչներն այս օրերին իսկապես սովորական բան են, բայց դրանցից շատերը չափազանց բարդ են կամ չափազանց թանկ գնելը: Այս նախագիծը ձեզ տալիս է Arduino- ի վրա հիմնված թվային ջերմաստիճանի տվիչ, որը ոչ միայն էժան է և շատ հեշտ: դեպի մ