Ардуино үчүн температура сенсору COVID 19 үчүн колдонулат: 12 кадам (Сүрөттөр менен)
Ардуино үчүн температура сенсору COVID 19 үчүн колдонулат: 12 кадам (Сүрөттөр менен)
Anonim
Ардуино үчүн температура сенсору COVID 19 үчүн колдонулат
Ардуино үчүн температура сенсору COVID 19 үчүн колдонулат

Адам денесинин процессорунун температурасын өлчөгүбүз келгенде, Arduino үчүн температура сенсору негизги элемент болуп саналат.

Arduino менен температура сенсору жылуулуктун деңгээлин кабыл алуу жана өлчөө үчүн байланышта же жакын болушу керек. Термометрлер ушундай иштейт.

Бул аппараттар оорулуу адамдардын дене температурасын өлчөө үчүн абдан колдонулат, анткени температура анормалдуу же оору болгондо адамдын денесинде өзгөрүүчү биринчи факторлордун бири.

Адамдын денесинин температурасын өзгөрткөн оорулардын бири - COVID 19. Ошондуктан биз негизги симптомдор менен тааныштырабыз:

Жөтөл Чарчоо Дем алуу оорлойт (Оор учурларда) Ысытуу - бул дене табынын көтөрүлүшүнүн негизги белгиси. Бул ооруда биз бул симптомдорду дайыма көзөмөлдөп турушубуз керек.

Ошентип, биз температураны көзөмөлдөө боюнча долбоорду иштеп чыгабыз жана бул маалыматтарды JLCPCB Datalogger аркылуу Arduino менен температура сенсорунун жардамы менен эстутум картасына сактайбыз.

Ошондуктан, бул макалада сиз үйрөнөсүз:

  • JLCPCB Datalogger кантип Arduino менен температура сенсоруна ээ?
  • Температура сенсору Arduino менен кантип иштейт.
  • DS18B20 температура сенсору Arduino менен кантип иштейт
  • Бир нече функциялары бар баскычтарды колдонуңуз.

Андан кийин, биз сизге Arduino температура сенсорун колдонуу менен JLCPCB Dataloggerди кантип өнүктүрүүнү көрсөтөбүз.

Жабдуулар

Arduino UNO

JLCPCB Басылган райондук

DS18B20 температура сенсору

Arduino Nano R3

Секирүүчүлөр

ЖК дисплей 16 x 2

Баскыч баскычы

Резистор 1kR

Arduino үчүн SD карт модулу

1 -кадам: JLCPCB Dataloggerдин курулушу Arduino менен температура сенсору менен

JLCPCB Dataloggerдин температура сенсору менен курулушу Arduino менен
JLCPCB Dataloggerдин температура сенсору менен курулушу Arduino менен

Мурда айтылгандай, долбоор Arduino менен температура сенсору менен JLCPCB Datalogger түзүүдөн турат жана бул маалыматтар аркылуу биз дарыланып жаткан пациенттин температурасын көзөмөлдөй алабыз.

Ошентип, схема жогорудагы сүрөттө көрсөтүлгөн.

Демек, сиз көрүп тургандай, бул схемада Arduino менен DS18B20 температура сенсору бар, ал пациенттин температурасынын окуусун өлчөө үчүн жооптуу.

Мындан тышкары, Arduino Nano бул маалыматтарды чогултуу жана SD карт модулунун эстутум картасына сактоо үчүн жооптуу болот.

Ар бир маалымат өз убактысы менен сакталат, ал RTC Module DS1307ден окулат.

Ошентип, Arduino менен температура сенсорунун маалыматтары сакталуусу үчүн, колдонуучу 16x2 ЖК менен Башкаруу Менюсу аркылуу процессти аткарышы керек.

2-кадам:

Сүрөт
Сүрөт

Ар бир баскыч 2 -сүрөттөгү 16x2 ЖК экранда көрсөтүлгөндөй, опцияны башкаруу үчүн жооптуу.

Төмөндө көрсөтүлгөндөй, ар бир вариант системада функция аткарууга жооптуу.

  • M варианты Эстутум картасындагы маалыматтарды өлчөөнү жана жазууну баштоо үчүн жооптуу.
  • H варианты системанын сааттарын тууралоого жооптуу.
  • O/P опциясы тутумга маалыматтарды киргизүүнү ырастоо үчүн же эстутум картасына маалыматтарды жазууну токтотуу үчүн колдонулат.

Тутумду башкаруу процессин түшүнүү үчүн, биз төмөндөгү кодду беребиз жана JLCPCB Datalogger'дин этап-этабы менен башкаруу системасын талкуулайбыз, температура сенсору менен Arduino.

#кошуу // DS18B20 сенсорунун бардык функциялары бар китепкана

#кошуу #кошуу // Biblioteca I2C do LCD 16x2 #кошуу // Biblioteca de Comunicacao I2C #кошуу // DS18B20 сенсоруна OneWire китепканасы #кошуу #кошуу LiquidCrystal_I2C lcd (0x27, 16, 2); // 0x27 үчүн LCD 16x2ди конфигурациялоо #ONE_WIRE_BUS 8ди аныктоо // DS18B20 сенсорун туташтыруу үчүн санариптик PIN // OneWire үчүн OneWire комуникациясын аныктоо үчүн OneWire OneWire (ONE_WIRE_BUS) аныктоо; DallasTemperature сенсорлору (& oneWire); DeviceAddress sensor1; MyFile файлын берүү; #define Buttonmeasure 2 #deutine Buttonadjusthour 3 #define Buttonok 4 bool tədbir = 0, adjusthour = 0, ok = 0; bool meter_state = 0, adjusthour_state = 0, ok_state = 0; bool meter_process = 0, adjust_process = 0; байт actualMin = 0, previousMin = 0; байт actualHour = 0, previousHour = 0; байт minUpdate = 0; int pinoSS = 10; // Пин 53 үчүн Mega / PinO 10 үчүн UNO int DataTime [7]; жараксыз updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (жолу); minUpdate = DataTime [5]; }} жараксыз updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (жолу); lcd.setCursor (0, 1); lcd.print ("Температура:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); сенсорлор.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // LCD lcd.backlight () менен иштөө; lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); кечигүү (2000); // Сериялар.println ("Localizando DS18B20 сенсорлору …"); Serial.print ("Сенсордун локализациясы ийгиликтүү!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Сенсор"); if (SD.begin ()) {// SD картасы Serial.println ("SD Card пронто акча үчүн"); // Imprime na tela} else {Serial.println ("SD карта менен иштөө расмий эмес"); кайтуу; } DS1307.getDate (DataTime); lcd.clear (); 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 (Buttonok); if (tədbir == 0 && өлчөө_штат == 1) {чен_мамлекет = 0; } if (tədbir == 1 && чара_стат == 0 && өлчөө_процеси == 0) {чара_процесс = 1; ted_state = 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 ("Температура"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (жолу, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (жолу); lcd.setCursor (0, 1); lcd.print ("Температура:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && tədbir_процеси == 0) {adjust_process = 1; } // ----------------------------------------------- --- Өлчөө процесси --------------------------------------------- -------------- if (чара_процесс == 1) {updateTemp (); байт contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Протоколдор --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (жолу); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Сааттарды эсептөө ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Даяр"); lcd.setCursor (5, 1); lcd.print ("Процесс"); ted_process = 0; contHour = 0; } // ---------------------------------------------- Шарты datalogger токтотуу үчүн ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Токтотулду"); lcd.setCursor (5, 1); lcd.print ("Процесс"); ted_process = 0; кечигүү (2000); lcd.clear (); 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 {tədbir = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (tədbir == 0 && чара_мамлекет == 1) {чен_мамлекет = 0; } if (tədbir == 1 && tədbir_статы == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } tədbir_статасы = 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] ++; if (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); } // ----------------------------------------------- ------- Аягына келтирүү сааты ---------------------------------------- -------------------}

Биринчиден, биз Arduino үчүн температура сенсору менен JLCPCB Datalogger программалоодо колдонулган модулдарды көзөмөлдөө жана өзгөрмөлөрдү жарыялоо үчүн бардык китепканаларды аныктайбыз. Код блогу төмөндө көрсөтүлгөн.

3 -кадам:

#кошуу // DS18B20 сенсорунун бардык функциялары бар китепкана

#кошуу #кошуу // Biblioteca I2C do LCD 16x2 #кошуу // Biblioteca de Comunicacao I2C #кошуу // DS18B20 сенсоруна OneWire китепканасы #кошуу #кошуу LiquidCrystal_I2C lcd (0x27, 16, 2); // 0x27 үчүн LCD 16x2ди конфигурациялоо #ONE_WIRE_BUS 8ди аныктоо // DS18B20 сенсорун туташтыруу үчүн санариптик PIN // OneWire үчүн OneWire комуникациясын аныктоо үчүн OneWire OneWire (ONE_WIRE_BUS) аныктоо; DallasTemperature сенсорлору (& oneWire); DeviceAddress sensor1; MyFile файлын берүү; #define Buttonmeasure 2 #deutine Buttonadjusthour 3 #define Buttonok 4 bool tədbir = 0, adjusthour = 0, ok = 0; bool meter_state = 0, adjusthour_state = 0, ok_state = 0; bool meter_process = 0, adjust_process = 0; байт actualMin = 0, previousMin = 0; байт actualHour = 0, previousHour = 0; байт minUpdate = 0; int pinoSS = 10; // 53 -пунктка Мега / 10 -пунктка UNO int DataTime [7];

Мындан кийин бизде боштукту орнотуу функциясы бар. Бул функция төмөндө көрсөтүлгөндөй, казыктарды жана түзмөктү баптоо үчүн колдонулат.

жараксыз орнотуу ()

{Serial.begin (9600); DS1307.begin (); сенсорлор.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // LCD lcd.backlight () менен иштөө; lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); кечигүү (2000); // Сериялар.println ("Localizando DS18B20 сенсорлору …"); Serial.print ("Сенсордун локализациясы ийгиликтүү!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Сенсор"); if (SD.begin ()) {// SD картасы Serial.println ("SD Card пронто акча үчүн"); // Imprime na tela} else {Serial.println ("SD карта менен иштөө расмий эмес"); кайтуу; } DS1307.getDate (DataTime); lcd.clear (); 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 ЖК экранда басылып чыкты. Бул экран Figure 1де көрсөтүлгөн.

4 -кадам:

Андан кийин, система сааттарды окуйт жана updateHour функциясын чакырып, маанини жаңыртат. Ошентип, бул функция ар бир мүнөт сайын сааттык маанини көрсөтүү максатын көздөйт. Функциянын коду блогу төмөндө көрсөтүлгөн.

жараксыз updateHour ()

{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%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 Datalogger башкаруу менюсу
JLCPCB Datalogger башкаруу менюсу

Биринчиден, колдонуучу системанын сааттарын текшерип, тууралашы керек. Бул процесс экинчи баскыч басылганда аткарылат.

Кнопка басылганда, жогорудагы сүрөттө көрсөтүлгөн төмөнкү экран пайда болушу керек.

7 -кадам:

Сүрөт
Сүрөт

Бул экрандан колдонуучу Arduino 2 жана 3 санарип казыктарына туташкан баскычтардан саат жана мүнөттүн маанилерин киргизе алат. Баскычтар жогорудагы сүрөттө көрсөтүлгөн.

Сааттарды көзөмөлдөө үчүн код бөлүгү төмөндө көрсөтүлгөн.

эгер (adjusthour == 0 && adjusthour_state == 1)

{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && tədbir_процеси == 0) {adjust_process = 1; }

Сааттардын баскычы басылганда жана өлчөө_процессинин өзгөрмөсү 0 деп коюлганда, шарт туура болот жана adjust_process өзгөрмөсү 1ге коюлат. Анын мааниси 0 болгондо, система колдонуучуга убакытты жөндөө менюсуна кирүүгө мүмкүнчүлүк берет. Ошондуктан, adjust_process өзгөрмөсү 1 маанисин алгандан кийин, система убакытты тууралоо шартына кирет. Бул код блогу төмөндө көрсөтүлгөн.

// ------------------------------------------------ ----- Сааттарды тууралоо ------------------------------------------- --------------------

// Саатты тууралаңыз, эгер (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 {tədbir = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); if (tədbir == 0 && чара_мамлекет == 1) {чен_мамлекет = 0; } if (tədbir == 1 && tədbir_статы == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } tədbir_статасы = 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] ++; if (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); }

Бул шартта, система Figure 4тө көрсөтүлгөн билдирүүнү көрсөтөт, андан кийин while циклинде маанилердин ички жөнгө салынышын күтөт. Сааттарды тууралаганда, бул баскычтардын функциялары өзгөрөт, башкача айтканда, алар көп функциялуу.

Бул баскычты бир нече функция үчүн колдонууга жана системанын татаалдыгын азайтууга мүмкүндүк берет.

Ошентип, колдонуучу сааттын жана мүнөттүн маанисин тууралайт, андан кийин Ok баскычы басылганда системада маалыматтарды сактайт.

Көрүнүп тургандай, система төмөндө көрсөтүлгөндөй 3 баскычты окуйт.

чара = digitalRead (Buttonmeasure);

adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);

Ченөө баскычы (Buttonmeasure) функциясын өзгөрткөнүнө көңүл буруңуз. Бул азыр төмөндө көрсөтүлгөндөй, сааттын маанилерин тууралоо үчүн колдонулат. Төмөнкү эки шарт окшош жана жогоруда көрсөтүлгөндөй сааттарды жана мүнөттөрдү тууралоо үчүн колдонулат.

эгерде (чара == 0 && чара_стат == 1)

{ted_state = 0; } if (tədbir == 1 && tədbir_статы == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } tədbir_статасы = 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] ++; if (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)

{ted_state = 0; } if (tədbir == 1 && чара_стат == 0 && өлчөө_процеси == 0) {чара_процесс = 1; ted_state = 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 ("Температура"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (жолу, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (жолу); lcd.setCursor (0, 1); lcd.print ("Температура:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }

Жогорудагы код бөлүгүндө, система чара_процессинин өзгөрмөсүнө 1 маанисин берет. Бул маалыматты SD картада сактоого уруксат берүү үчүн жооптуу.

Мындан тышкары, система маалымат журналы бар тексттик файлдын бар же жок экендигин текшерет. Эгерде файл бар болсо, система жок кылат жана маалыматтарды сактоо үчүн жаңысын түзөт.

Андан кийин, ал эки мамычаны түзөт: бири сааттар үчүн жана бири текст файлынын ичиндеги температура үчүн.

Андан кийин, ал жогоруда сүрөттө көрсөтүлгөндөй ЖК экранда сааттарды жана температураны көрсөтөт.

Андан кийин, код агымы төмөнкү программалык блокту аткарат.

эгерде (чара_процесс == 1)

{updateTemp (); байт contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Протоколдор --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = actualMin; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (жолу); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Сааттарды эсептөө ------------------------------------ ---------------------- if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Даяр"); lcd.setCursor (5, 1); lcd.print ("Процесс"); ted_process = 0; contHour = 0; } // ---------------------------------------------- Шарты datalogger токтотуу үчүн -----

Биринчиден, updateTemp () функциясы аткарылат. Бул updateHour () функциясына окшош; бирок, температураны 1 мүнөт сайын көрсөтөт.

Андан кийин, система реалдуу убакыт саатынан убакыт маалыматын чогултат жана учурдагы мүнөттүн маанисин currentMin өзгөрмөсүндө сактайт.

Андан кийин, ал төмөндө келтирилген шартка ылайык, мин өзгөрмөсү өзгөртүлгөнүн текшерет

эгер (actualMin! = мурункуMin)

{contMin ++; previousMin = actualMin; }

Ошондуктан, эгерде учурдагы өзгөрмөлүү өзгөрүү мурунку мааниден айырмаланса, анда мааниси өзгөргөн. Демек, шарт туура болот жана мүнөт санынын мааниси көбөйөт (contMin) жана учурдагы мааниси мурунку маанисин сактоо үчүн, мурунку өзгөрмөгө дайындалат.

Демек, бул эсептөөнүн мааниси 5ке барабар болгондо, бул 5 мүнөт өткөнүн жана системанын жаңы температура көрсөткүчүн аткарып, сааттын жана температуранын маанисин SD карт журналынын файлында сактоосу керектигин билдирет.

эгер (уландысы == 5)

{sprintf (жолу, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (жолу); myFile.println (TempSensor); contMin = 0; }

Ошентип, бул процесс пациенттин температурасын Arduino менен температура сенсору менен көзөмөлдөөнүн 5 сааттык маанисине жеткенге чейин кайталанат.

Код бөлүгү төмөндө көрсөтүлгөн жана жогоруда көрсөтүлгөн мүнөттөрдүн санына окшош.

// ------------------------------------------------ ----------- Сааттарды эсептөө ------------------------------------- ---------------------

if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Даяр"); lcd.setCursor (5, 1); lcd.print ("Процесс"); ted_process = 0; contHour = 0; }

5 сааттык мониторингге жеткенден кийин, система журнал файлын жабат жана колдонуучуга "Бүткөн процесс" билдирүүсүн берет.

Мындан тышкары, колдонуучу маалыматтарды жазууну токтотуу үчүн Ok/Pause баскычын басса болот. Бул болгондо, төмөнкү код блогу аткарылат.

// ---------------------------------------------- Шарты datalogger токтотуу ----------------------------------------------- ---

if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Токтотулду"); lcd.setCursor (5, 1); lcd.print ("Процесс"); ted_process = 0; кечигүү (2000); lcd.clear (); 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 -кадам: Arduino менен SD карт модулунун маалыматтарына жетүү

Arduino менен SD карт модулунун маалыматтарына жетүү
Arduino менен SD карт модулунун маалыматтарына жетүү

JLCPCB Datalogger'ди Arduino менен температура сенсору менен көзөмөлдөө процессинен кийин, эстутум картасын алып салуу жана компьютердеги маалыматка жетүү керек.

Дайындарды сапаттуу көрүү жана талдоо үчүн, текст файлынын бардык маалыматтарын Excelге экспортто / көчүрүү. Андан кийин графиктерди түзүп, алынган жыйынтыктарды талдай аласыз.

12 -кадам: Жыйынтык

JLCPCB Datalogger Arduino менен температура сенсоруна ээ, бизге температураны өлчөөдөн тышкары, белгилүү бир убакыт аралыгында пациенттин температурасы боюнча маалыматты жазууга мүмкүндүк берет.

Бул сакталган маалыматтардын жардамы менен, COVID 19 жуктурган бейтаптын температурасы кандай экенин анализдеп, түшүнүүгө болот.

Мындан тышкары, температуранын деңгээлин баалоого жана анын баасын дарынын кандайдыр бир түрүн колдонуу менен байланыштырууга болот.

Ошондуктан, бул маалыматтар аркылуу, JLCPCB Datalogger Arduino үчүн температура сенсору менен дарыгерлерге жана медайымдарга бейтаптардын жүрүм -турумун изилдөөгө жардам берүүнү максат кылат.

Акырында, биз JLCPCB компаниясына долбоордун өнүгүшүн колдогону үчүн ыраазычылык билдиребиз жана сиз аны колдоно аласыз деп үмүттөнөбүз

Бардык файлдарды каалаган колдонуучу жүктөп алып, эркин колдоно алат.

Сунушталууда: