Мазмұны:

Arduino үшін температура сенсоры COVID 19: 12 қадамдарына қолданылады (суреттермен)
Arduino үшін температура сенсоры COVID 19: 12 қадамдарына қолданылады (суреттермен)

Бейне: Arduino үшін температура сенсоры COVID 19: 12 қадамдарына қолданылады (суреттермен)

Бейне: Arduino үшін температура сенсоры COVID 19: 12 қадамдарына қолданылады (суреттермен)
Бейне: Lesson 32: MCP9808 High Accuracy I2C Temperature | Arduino Step By Step Course 2024, Қараша
Anonim
Arduino үшін температура сенсоры COVID 19 үшін қолданылады
Arduino үшін температура сенсоры COVID 19 үшін қолданылады

Адам денесінің процессорының температурасын өлшегіміз келетін кезде Arduino температура сенсоры негізгі элемент болып табылады.

Arduino бар температура сенсоры жылу деңгейін қабылдау және өлшеу үшін байланыста немесе жақын болуы керек. Термометрлер осылай жұмыс істейді.

Бұл қондырғылар науқастардың дене температурасын өлшеу үшін өте қажет, себебі температура адам ағзасында ауытқулар немесе аурулар болған кезде өзгеретін алғашқы факторлардың бірі болып табылады.

Адам денесінің температурасын өзгертетін аурулардың бірі - COVID 19. Сондықтан біз негізгі белгілерді ұсынамыз:

Жөтел Шаршау тыныс алудың қиындауы (ауыр жағдайларда) Қызба Қызба - бұл симптом, оның негізгі сипаттамасы дене температурасының жоғарылауы. Бұл ауруда біз бұл белгілерді үнемі бақылауымыз керек.

Осылайша, біз температураны бақылау жобасын әзірлейміз және бұл деректерді Arduino көмегімен температура сенсоры көмегімен JLCPCB Datalogger арқылы жад картасында сақтаймыз.

Сондықтан, бұл мақалада сіз білесіз:

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

Әрі қарай, біз сізге Arduino температура сенсоры көмегімен JLCPCB Datalogger -ді қалай дамытатындығыңызды көрсетеміз.

Жабдықтар

Arduino UNO

JLCPCB баспа схемасы

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

Arduino Nano R3

Секіргіштер

СКД дисплейі 16х2

Түймешік қосқышы

Резистор 1кР

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

1 -қадам: Arduino көмегімен температура сенсоры бар JLCPCB деректер каталогының құрылысы

Arduino -мен температура сенсоры бар JLCPCB Datalogger құрылысы
Arduino -мен температура сенсоры бар JLCPCB Datalogger құрылысы

Жоғарыда айтылғандай, жоба Arduino көмегімен температура сенсоры бар JLCPCB Datalogger құрудан тұрады және осы мәліметтер арқылы біз емделіп жатқан науқастың температурасын бақылай аламыз.

Осылайша, схема жоғарыдағы суретте көрсетілген.

Сондықтан, сіз көріп тұрғандай, бұл схемада науқастың температуралық көрсеткішін өлшеуге жауап беретін Arduino бар DS18B20 температура сенсоры бар.

Сонымен қатар, Arduino Nano бұл деректерді жинауға және SD картасы модулінің жад картасында сақтауға жауапты болады.

Әрбір ақпарат өзінің сәйкес уақытында сақталады, ол DS1307 RTC модулінен оқылады.

Осылайша, Arduino бар температура сенсорының деректері сақталуы үшін пайдаланушы бұл процесті 16x2 СКД бар Басқару мәзірі арқылы орындауы керек.

2 -қадам:

Кескін
Кескін

Әр түйме 2 -суреттегі 16x2 СКД экранында көрсетілгендей опцияны басқаруға жауап береді.

Әр опция төменде көрсетілгендей жүйеде функцияны орындауға жауап береді.

  • M нұсқасы жад картасындағы деректерді өлшеу мен жазуды бастауға жауап береді.
  • Н нұсқасы жүйелік сағаттарды реттеуге жауап береді.
  • O/P опциясы жүйеге деректерді енгізуді растау немесе жад картасына деректерді жазуды кідірту үшін қолданылады.

Жүйені басқару процесін түсіну үшін біз төмендегі кодты береміз және Arduino-мен температура сенсоры бар JLCPCB Datalogger-ді кезең-кезеңімен басқару жүйесін талқылайтын боламыз.

#қосу // DS18B20 сенсорының барлық функциялары бар кітапхана

#қосу #қосу // Biblioteca I2C - СКД 16x2 #қосу // Biblioteca de Comunicacao I2C #қосу // DS18B20 сенсорына арналған OneWire кітапханасы #қосу #LiquidCrystal_I2C LCD қосу (0x27, 16, 2); // 0x27 өлшемді СКД 16x2 конфигурациясы #ONE_WIRE_BUS 8 -ді анықтау // DS18B20 датчигін қосу үшін цифрлық түйреу // OneWire үшін OneWire байланыс құралдарын анықтаңыз OneWire oneWire (ONE_WIRE_BUS); DallasTemature температура сенсорлары (& oneWire); DeviceAddress датчигі1; MyFile файлын жасаңыз; #define Buttonmeasure 2 #deutine Buttonadjusthour 3 #deutine Buttonok 4 бол өлшемі = 0, adjusthour = 0, ok = 0; bool tədbir_суреті = 0, adjusthour_state = 0, ok_state = 0; bool шара_процессі = 0, реттеу_процессі = 0; байт actualMin = 0, алдыңғыMin = 0; байт actualHour = 0, previousHour = 0; байт minUpdate = 0; int pinoSS = 10; // Мега үшін 53 түйреуіш / UNO int DataTime үшін 10 түйреуіш [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 комментарийі Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // СКД lcd.backlight () режимінде жұмыс істеу; lcd.setCursor (3, 0); lcd.print («Temp System»); lcd.setCursor (3, 1); lcd.print («Datalogger»); кешіктіру (2000); // Localial e mostra enderecos dos sensors Serial.println («DS18B20 сенсорларының Localizando …»); Serial.print («Сенсорды оқшаулау сәтті!»); Serial.print (sensors.getDeviceCount (), DEC); Serial.println («Сенсор»); if (SD.begin ()) {// SD картасы Serial.println («SD картасы» үшін). // Imprime na tela} else {Serial.println («SD картасына рұқсат жоқ»); қайтару; } DS1307.getDate (DataTime); lcd.clear (); sprintf (times, «%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 (шара == 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 («Температура»); DS1307.getDate (DataTime); actualMin = алдыңғыMin = DataTime [5]; 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); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } егер (adjusthour == 1 && adjusthour_state == 0 && ted_process == 0) {adjust_process = 1; } // ----------------------------------------------- --- Өлшеу процесі --------------------------------------------- -------------- if (шара_процесс == 1) {updateTemp (); байт contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- минут санау --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; алдыңғыMin = нақтыМин; } 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 («Процесс»); өлшеу_ процесі = 0; contHour = 0; } // ---------------------------------------------- Шарты деректерді тіркеушіні тоқтату үшін ---------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print («Тоқтатылды»); lcd.setCursor (5, 1); lcd.print («Процесс»); өлшеу_ процесі = 0; кешіктіру (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (times, «%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 (times, «%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 (шара == 0 && шара_мәдениеті == 1) {шара_мәдениеті = 0; } if (шара == 1 && шара_мәдениеті == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } шара_арнасы = 1; sprintf (times, «%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 (times, «%02d:%02d», DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (уақыт); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O»); реттеу_ процесі = 0; }} while (жақсы! = 1); } // ----------------------------------------------- ------- Реттеу сағатын аяқтаңыз ---------------------------------------- -------------------}

Біріншіден, біз Arduino үшін температура сенсорымен JLCPCB Datalogger бағдарламалау кезінде қолданылатын модульдерді басқаруға және айнымалыларды жариялауға арналған барлық кітапханаларды анықтаймыз. Код блогы төменде көрсетілген.

3 -қадам:

#қосу // DS18B20 сенсорының барлық функциялары бар кітапхана

#қосу #қосу // Biblioteca I2C - СКД 16x2 #қосу // Biblioteca de Comunicacao I2C #қосу // DS18B20 сенсорына арналған OneWire кітапханасы #қосу #LiquidCrystal_I2C LCD қосу (0x27, 16, 2); // 0x27 өлшемді СКД 16x2 конфигурациясы #ONE_WIRE_BUS 8 -ді анықтау // DS18B20 датчигін қосу үшін цифрлық түйреу // OneWire үшін OneWire байланыс құралдарын анықтаңыз OneWire oneWire (ONE_WIRE_BUS); DallasTemature температура сенсорлары (& oneWire); DeviceAddress датчигі1; MyFile файлын жасаңыз; #define Buttonmeasure 2 #deutine Buttonadjusthour 3 #deutine Buttonok 4 бол өлшемі = 0, adjusthour = 0, ok = 0; bool tədbir_суреті = 0, adjusthour_state = 0, ok_state = 0; bool шара_процессі = 0, реттеу_процессі = 0; байт actualMin = 0, алдыңғыMin = 0; байт actualHour = 0, previousHour = 0; байт minUpdate = 0; int pinoSS = 10; // Мега үшін 53 түйреуіш / DataTime UNO int 10 парасы [7];

Бұдан кейін бізде void setup функциясы бар. Бұл функция төменде көрсетілгендей түйреуіштер мен инициализацияны конфигурациялау үшін қолданылады.

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

{Serial.begin (9600); DS1307.begin (); сенсорлар.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS комментарийі Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // СКД lcd.backlight () режимінде жұмыс істеу; lcd.setCursor (3, 0); lcd.print («Temp System»); lcd.setCursor (3, 1); lcd.print («Datalogger»); кешіктіру (2000); // Localial e mostra enderecos dos sensors Serial.println («DS18B20 сенсорларының Localizando …»); Serial.print («Сенсорды оқшаулау сәтті!»); Serial.print (sensors.getDeviceCount (), DEC); Serial.println («Сенсор»); if (SD.begin ()) {// SD картасы Serial.println («SD картасы» үшін). // Imprime na tela} else {Serial.println («SD картасына рұқсат жоқ»); қайтару; } DS1307.getDate (DataTime); lcd.clear (); sprintf (times, «%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 СКД экранында мәзір опциялары бар хабарлама басылды. Бұл экран 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 басқару мәзірі

JLCPCB Datalogger басқару мәзірі
JLCPCB Datalogger басқару мәзірі

Біріншіден, пайдаланушы жүйенің жұмыс уақытын тексеріп, реттеуі керек. Бұл процесс екінші түйме басылған кезде орындалады.

Түйме басылған кезде жоғарыдағы суретте көрсетілген келесі экран пайда болуы керек.

7 -қадам:

Кескін
Кескін

Бұл экранда пайдаланушы Arduino 2 және 3 цифрлық түйреуіштеріне қосылған түймелерден сағат пен минут мәндерін енгізе алады. Түймелер жоғарыдағы суретте көрсетілген.

Сағаттарды басқаруға арналған код бөлігі төменде көрсетілген.

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

{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && ted_process == 0) {adjust_process = 1; }

Сағат түймешігі басылғанда және шара_процессінің айнымалы мәні 0 -ге орнатылғанда, шарт дұрыс болады, ал реттеу_процессінің айнымалы мәні 1 -ге орнатылады. Оның мәні 0 болғанда, жүйе пайдаланушыға уақытты реттеу мәзіріне кіруге мүмкіндік береді. Демек, adjust_process айнымалысы 1 мәнін алғаннан кейін жүйе уақытты реттеу шартына кіреді. Бұл код блогы төменде көрсетілген.

// ------------------------------------------------ ----- Сағатты реттеу ------------------------------------------- --------------------

// Реттеу сағаты, егер (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print («Реттеу сағаты:»); sprintf (times, «%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 (шара == 0 && шара_мәдениеті == 1) {шара_мәдениеті = 0; } if (шара == 1 && шара_мәдениеті == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } шара_арнасы = 1; sprintf (times, «%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 (times, «%02d:%02d», DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (уақыт); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O»); реттеу_ процесі = 0; }} while (жақсы! = 1); }

Бұл жағдайда жүйе 4 -суретте көрсетілген хабарламаны көрсетеді, содан кейін while циклінде мәндердің ішкі реттелуін күтеді. Сағаттарды реттеу кезінде бұл түймелердің функциялары өзгереді, яғни олар көп функциялы болады.

Бұл батырманы бірнеше функцияға қолдануға және жүйенің күрделілігін төмендетуге мүмкіндік береді.

Осылайша, пайдаланушы сағаттар мен минуттардың мәнін реттейді, содан кейін Ok түймесі басылған кезде жүйеде деректерді сақтайды.

Көріп отырғаныңыздай, жүйе төменде көрсетілгендей 3 түймені оқиды.

шара = digitalRead (Buttonmeasure);

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

Өлшеу түймесі (Buttonmeasure) өз функциясын өзгерткенін ескеріңіз. Ол енді төменде көрсетілгендей сағат мәндерін реттеу үшін пайдаланылатын болады. Келесі екі шарт ұқсас және жоғарыда көрсетілгендей сағаттар мен минуттарды реттеу үшін қолданылады.

егер (шара == 0 && шара_мәдениеті == 1)

{ted_state = 0; } if (шара == 1 && шара_мәдениеті == 0) {DataTime [4] ++; if (DataTime [4]> 23) {DataTime [4] = 0; } шара_арнасы = 1; sprintf (times, «%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 (times, «%02d:%02d», DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (уақыт); lcd.setCursor (0, 1); lcd.print («1-M 2-H 3-O»); реттеу_ процесі = 0; }

Ол жоғарыда көрсетілген шартты енгізеді және пайдаланушыға сағат туралы хабар мен параметрлер мәзірін ұсынады.

Ақырында, пайдаланушы Arduino JLCPCB Datalogger көмегімен температура сенсоры арқылы науқасты бақылау процесін бастауы керек.

Ол үшін пайдаланушы 2 цифрлық түйреуішке қосылған өлшеу түймесін басуы керек.

Содан кейін жүйе Arduino температура сенсорымен оқуды орындайды және оны жад картасына сақтайды. Тізбек аймағы жоғарыдағы суретте көрсетілген.

8 -қадам:

Кескін
Кескін

Сондықтан түйме басылғанда кодтың келесі бөлігі орындалады.

егер (шара == 0 && шара_мәдениеті == 1)

{ted_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 («Температура»); DS1307.getDate (DataTime); actualMin = алдыңғыMin = DataTime [5]; 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); }

Жоғарыдағы код бөлігінде жүйе шара_процессінің айнымалысына 1 мәнін тағайындайды. Ол деректерді SD картасына сақтауға мүмкіндік береді.

Сонымен қатар, жүйе деректер журналы бар мәтіндік файлдың бар -жоғын тексереді. Егер файл болса, жүйе деректерді сақтау үшін жойып, жаңасын жасайды.

Осыдан кейін ол екі бағанды жасайды: біреуі сағаттарға, екіншісі мәтіндік файл ішіндегі температураға.

Осыдан кейін ол жоғарыдағы суретте көрсетілгендей СКД экранында сағат пен температураны көрсетеді.

Осыдан кейін код ағыны келесі бағдарламалық блокты орындайды.

егер (шара_ процесі == 1)

{updateTemp (); байт contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- минут санау --------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; алдыңғыMin = нақтыМин; } 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 («Процесс»); өлшеу_ процесі = 0; contHour = 0; } // ---------------------------------------------- Шарты деректерді тіркеушіні тоқтату үшін -----

Алдымен updateTemp () функциясы орындалады. Бұл updateHour () функциясына ұқсас; алайда ол температураны әр 1 минут сайын көрсетеді.

Осыдан кейін, жүйе нақты уақыттағы уақыт туралы деректерді жинайды және ағымдағы минут мәнін currentMin айнымалысында сақтайды.

Содан кейін ол төменде көрсетілген шартқа сәйкес мин айнымалысының өзгергенін тексереді

егер (actualMin! = алдыңғыMin)

{contMin ++; алдыңғыMin = нақтыМин; }

Демек, егер ағымдағы минут айнымалысы алдыңғы мәннен өзгеше болса, бұл мәннің өзгергенін білдіреді, осылайша шарт дұрыс болады және минут санауының мәні артады (contMin) және ағымдағы мән алдыңғы мәнін сақтау үшін, алдыңғыMin айнымалысына тағайындалады.

Демек, бұл есептің мәні 5 -ке тең болса, бұл 5 минут өткенін білдіреді және жүйе температураның жаңа көрсеткішін орындауы және SD картасының журнал файлында сағат пен температураның мәнін сақтауы керек.

егер (жалғасы = = 5)

{sprintf (times, «%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 («Процесс»); өлшеу_ процесі = 0; contHour = 0; }

5 сағаттық бақылауға жеткеннен кейін жүйе журнал файлын жабады және пайдаланушыға «Аяқталған процесс» хабарламасын ұсынады.

Сонымен қатар, пайдаланушы деректерді жазуды тоқтату үшін Ok/Pause түймесін баса алады. Бұл орын алған кезде келесі код блогы орындалады.

// ---------------------------------------------- шарт деректерді тіркеушіні тоқтату ----------------------------------------------- ---

if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print («Тоқтатылды»); lcd.setCursor (5, 1); lcd.print («Процесс»); өлшеу_ процесі = 0; кешіктіру (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (times, «%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 картасының модульдік деректеріне қол жеткізу

Arduino көмегімен температура сенсорымен JLCPCB Datalogger бақылау процесі аяқталғаннан кейін жад картасын алып тастау және компьютердегі деректерге қол жеткізу қажет.

Деректерді сапалы қарау және талдау үшін мәтіндік файлдың барлық ақпаратын Excel бағдарламасына экспорттаңыз / көшіріңіз, содан кейін графиктерді құруға және алынған нәтижелерді талдауға болады.

12 -қадам: Қорытынды

Arduino бар температура сенсоры бар JLCPCB Datalogger бізге температураны өлшеуден басқа, белгілі бір уақыт ішінде науқастың температурасы туралы ақпаратты жазуға мүмкіндік береді.

Осы сақталған мәліметтер арқылы COVID 19 жұқтырған науқастың температурасы қалай болатынын талдауға және түсінуге болады.

Сонымен қатар, температураның деңгейін бағалауға және оның құндылығын дәрі -дәрмектің кейбір түрін қолданумен байланыстыруға болады.

Сондықтан, осы мәліметтер арқылы Arduino үшін температура сенсоры бар JLCPCB Datalogger бағдарламасы дәрігерлер мен медбикелерге пациенттердің мінез -құлқын зерттеуге көмектесуге бағытталған.

Ақырында, біз JLCPCB компаниясына жобаның дамуына қолдау көрсеткені үшін алғыс айтамыз және сіз оны қолдана аласыз деп үміттенеміз

Барлық файлдарды кез келген пайдаланушы жүктей алады және еркін қолдана алады.

Ұсынылған: