Мазмұны:
- Жабдықтар
- 1 -қадам: Arduino көмегімен температура сенсоры бар JLCPCB деректер каталогының құрылысы
- 2 -қадам:
- 3 -қадам:
- 4 -қадам:
- 5 -қадам:
- 6 -қадам: JLCPCB Datalogger басқару мәзірі
- 7 -қадам:
- 8 -қадам:
- 9 -қадам:
- 10 -қадам:
- 11 -қадам: Arduino көмегімен SD картасының модулі туралы деректерге қол жеткізу
- 12 -қадам: Қорытынды
Бейне: Arduino үшін температура сенсоры COVID 19: 12 қадамдарына қолданылады (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Адам денесінің процессорының температурасын өлшегіміз келетін кезде 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 бар 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 басқару мәзірі
Біріншіден, пайдаланушы жүйенің жұмыс уақытын тексеріп, реттеуі керек. Бұл процесс екінші түйме басылған кезде орындалады.
Түйме басылған кезде жоғарыдағы суретте көрсетілген келесі экран пайда болуы керек.
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 көмегімен температура сенсорымен JLCPCB Datalogger бақылау процесі аяқталғаннан кейін жад картасын алып тастау және компьютердегі деректерге қол жеткізу қажет.
Деректерді сапалы қарау және талдау үшін мәтіндік файлдың барлық ақпаратын Excel бағдарламасына экспорттаңыз / көшіріңіз, содан кейін графиктерді құруға және алынған нәтижелерді талдауға болады.
12 -қадам: Қорытынды
Arduino бар температура сенсоры бар JLCPCB Datalogger бізге температураны өлшеуден басқа, белгілі бір уақыт ішінде науқастың температурасы туралы ақпаратты жазуға мүмкіндік береді.
Осы сақталған мәліметтер арқылы COVID 19 жұқтырған науқастың температурасы қалай болатынын талдауға және түсінуге болады.
Сонымен қатар, температураның деңгейін бағалауға және оның құндылығын дәрі -дәрмектің кейбір түрін қолданумен байланыстыруға болады.
Сондықтан, осы мәліметтер арқылы Arduino үшін температура сенсоры бар JLCPCB Datalogger бағдарламасы дәрігерлер мен медбикелерге пациенттердің мінез -құлқын зерттеуге көмектесуге бағытталған.
Ақырында, біз JLCPCB компаниясына жобаның дамуына қолдау көрсеткені үшін алғыс айтамыз және сіз оны қолдана аласыз деп үміттенеміз
Барлық файлдарды кез келген пайдаланушы жүктей алады және еркін қолдана алады.
Ұсынылған:
DIY тыныс алу сенсоры Arduino көмегімен (өткізгіш тоқылған созылу сенсоры): 7 қадам (суреттермен)
DIY тыныс алу сенсоры Arduino көмегімен (өткізгіш тоқылған созылу сенсоры): Бұл DIY сенсоры өткізгіш тоқылған созылу сенсоры түрінде болады. Ол кеудеге/асқазанға оралады, ал кеуде/асқазан кеңейгенде және қысылғанда сенсор, демек, Arduino -ға берілетін кіріс деректері кеңейеді. Сонымен
Оқулық: Arduino UNO көмегімен RGB түс детекторы сенсоры TCS230 қалай қолданылады: 3 қадам
Оқу құралы: Arduino UNO көмегімен RGB түс детекторының сенсоры TCS230 қалай қолдану керек: Сипаттама: Бұл оқулықта Arduino Uno көмегімен RGB түс детекторы сенсорын пайдалану туралы бірнеше қарапайым қадамдар көрсетіледі. Бұл оқулықтың соңында сіз бірнеше түстерді салыстыратын көптеген нәтижелерді аласыз
Arduino күн энергиясымен жұмыс істейтін температура мен ылғалдылық сенсоры 433 МГц Орегон сенсоры ретінде: 6 қадам
Arduino күн энергиясымен жұмыс істейтін температура мен ылғалдылық сенсоры 433 МГц Орегон сенсоры: Бұл күн сәулесінен жұмыс істейтін температура мен ылғалдылық сенсорының құрлысы. Сенсор 433 МГц жиілікті Орегон сенсорына ұқсайды және Telldus Net шлюзінде көрінеді. Күн энергиясының қозғалыс сенсоры " ebay -ден. 3.7 вольтты қамыр екеніне көз жеткізіңіз
GY -30 BH1750 жарық сенсоры (GY30 / GY302) қалай сыммен қосылады және қолданылады - Оңай - Arduino жобасы!: 7 қадам
GY -30 BH1750 жарық сенсоры (GY30 / GY302) - сымды қалай қолдану керек - Arduino жобасы!: Бұл оқулықта біз Arduino көмегімен GY -30 BH1750 жарық интенсивті сенсорын тез және оңай қолдануды үйренеміз. Көрсетілім бейнесін қараңыз
ESP8266 NodeMCU кіру нүктесі (AP) DT11 температура сенсоры бар веб -сервер үшін және шолуда температура мен ылғалдылықты басып шығару: 5 қадам
Браузерде DT11 температура сенсоры мен баспа температурасы мен ылғалдылығы бар веб -серверге арналған ESP8266 NodeMCU кіру нүктесі (AP): Сәлеметсіздер ме, біз ESP8266 пайдаланатын жобалардың көпшілігінде және жобалардың көпшілігінде біз ESP8266 -ды веб -сервер ретінде қолданамыз, осылайша деректерге қол жеткізуге болады. ESP8266 орналастырған веб -серверге кіру арқылы Wi -Fi арқылы кез келген құрылғы, бірақ жалғыз мәселе - бізге жұмыс маршрутизаторы қажет