Mündəricat:

Arduino üçün Temperatur Sensoru COVID 19: 12 Adım üçün Tətbiq Edildi (Şəkillərlə)
Arduino üçün Temperatur Sensoru COVID 19: 12 Adım üçün Tətbiq Edildi (Şəkillərlə)

Video: Arduino üçün Temperatur Sensoru COVID 19: 12 Adım üçün Tətbiq Edildi (Şəkillərlə)

Video: Arduino üçün Temperatur Sensoru COVID 19: 12 Adım üçün Tətbiq Edildi (Şəkillərlə)
Video: Measure Temperature and Humidity WiFi with ESP32 DHT11 and DHT22 - Robojax 2024, Noyabr
Anonim
Arduino üçün temperatur sensoru COVID 19 üçün tətbiq edildi
Arduino üçün temperatur sensoru COVID 19 üçün tətbiq edildi

İnsan bədəninin bir prosessorunun temperaturunu ölçmək istədiyimiz zaman Arduino üçün temperatur sensoru əsas elementdir.

Arduino ilə temperatur sensoru istilik səviyyəsini qəbul etmək və ölçmək üçün təmasda və ya yaxın olmalıdır. Termometrlər belə işləyir.

Bu cihazlar xəstələrin bədən istiliyinin ölçülməsi üçün son dərəcə istifadə olunur, çünki hər hansı bir anormallıq və ya xəstəlik olduqda insan bədənində dəyişən ilk amillərdən biridir.

İnsan bədəninin istiliyini dəyişdirən xəstəliklərdən biri də COVID 19. Bu səbəbdən əsas simptomları təqdim edirik:

Öskürək Yorğunluğu Nəfəs alma çətinliyi (Ağır hallarda) Atəş hərarətinin əsas xüsusiyyəti bədən istiliyinin artması olan bir simptomdur. Bu xəstəlikdə bu simptomları daim izləmək lazımdır.

Beləliklə, Arduino ilə bir temperatur sensoru istifadə edərək temperaturu izləmək və bu məlumatları JLCPCB Datalogger vasitəsilə yaddaş kartında saxlamaq üçün bir layihə hazırlayacağıq.

Buna görə də, bu yazıda öyrənəcəksiniz:

  • Arduino ilə bir temperatur sensoru olan bir JLCPCB Datalogger necə işləyir?
  • Arduino ilə temperatur sensoru necə işləyir.
  • DS18B20 temperatur sensoru Arduino ilə necə işləyir
  • Çox funksiyalı düymələrdən istifadə edin.

Sonra, Arduino temperatur sensoru istifadə edərək JLCPCB Dataloggerinizi necə inkişaf etdirəcəyinizi sizə göstərəcəyik.

Təchizat

Arduino UNO

JLCPCB Çaplı Devre Kartı

DS18B20 Temperatur Sensoru

Arduino Nano R3

Tullananlar

LCD ekran 16 x 2

Düymə açarı

Rezistor 1kR

Arduino üçün SD Kart Modulu

Addım 1: Arduino ilə İstilik Sensorlu JLCPCB Datalogger -in qurulması

Arduino ilə İstilik Sensorlu JLCPCB Datalogger -in qurulması
Arduino ilə İstilik Sensorlu JLCPCB Datalogger -in qurulması

Daha əvvəl də qeyd edildiyi kimi, layihə Arduino ilə Temperatur Sensorlu bir JLCPCB Datalogger yaratmaqdan ibarətdir və bu məlumatlar vasitəsilə müalicə olunan xəstənin temperaturunu izləyə bilərik.

Beləliklə, dövrə yuxarıdakı Şəkildə göstərilmişdir.

Buna görə də, gördüyünüz kimi, bu dövrədə xəstənin temperatur göstəricilərini ölçməkdən məsul olan Arduino ilə bir DS18B20 temperatur sensoru var.

Bundan əlavə, bu məlumatları toplamaq və SD Kart Modulunun yaddaş kartında saxlamaq Arduino Nano -dan məsul olacaq.

Hər bir məlumat, RTC Modulu DS1307 -dən oxunacaq, öz vaxtı ilə birlikdə saxlanılacaq.

Beləliklə, Arduino ilə temperatur sensoru məlumatlarının saxlanılması üçün istifadəçi prosesi 16x2 LCD ilə İdarəetmə Menyu vasitəsi ilə həyata keçirməlidir.

Addım 2:

Şəkil
Şəkil

Şəkil 2 -də 16x2 LCD ekranda göstərildiyi kimi hər bir düymə bir seçimin idarə edilməsindən məsuldur.

Hər bir seçim, aşağıda göstərildiyi kimi sistemdəki bir funksiyanı yerinə yetirməkdən məsuldur.

  • M Seçimi Yaddaş Kartında məlumatların ölçülməsinə və qeyd edilməsinə başlayır.
  • Seçim H sistem saatlarının tənzimlənməsindən məsuldur.
  • O/P seçimi sistemə məlumat daxil edilməsini təsdiq etmək və ya yaddaş kartına məlumat yazmağı dayandırmaq üçün istifadə olunur.

Sistem nəzarət prosesini başa düşmək üçün aşağıdakı kodu verəcəyik və Arduino ilə Temperatur Sensoru olan JLCPCB Datalogger-in addım-addım idarəetmə sistemini müzakirə edəcəyik.

#daxil edin // DS18B20 Sensorunun bütün funksiyaları olan kitabxana

#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // DS18B20 Sensor üçün OneWire Kitabxanası #daxil edin #LiquidCrystal_I2C lcd daxil edin (0x27, 16, 2); // 0x27 ölçüsündə LCD 16x2 ölçüsündə konfiqurasiya #ONE_WIRE_BUS 8 -i təyin edin // DS18B20 Sensorunu bağlamaq üçün rəqəmsal pin // OneWire üçün OneWire əlaqəli cihazları təyin edin (ONE_WIRE_BUS); DallasTemperatur sensorlar (& oneWire); Cihaz ünvanı ünvanı1; Fayl myFile; #define Buttonmeasure 2 #deffine Buttonadjusthour 3 #define Buttonok 4 bool tədbir = 0, adjusthour = 0, ok = 0; bool tədbir_statı = 0, adjusthour_state = 0, ok_state = 0; bool tədbir_prosesi = 0, tənzimləmə_ prosesi = 0; bayt actualMin = 0, əvvəlkiMin = 0; byte actualHour = 0, əvvəlkiHour = 0; bayt minUpdate = 0; int pinoSS = 10; // Mega üçün 53 Pin / DataTime UNO int 10 üçün Pin [7]; etibarsız updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd çap (dəfə); minUpdate = DataTime [5]; }} etibarsız updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("Temperatur:"); lcd.setCursor (14, 1); sensorlar.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.başla (); sensorlar.begin (); pinMode (pinoSS, ÇIXIŞ); // Wire.begin () ilə əlaqəli Declar pinoSS. // Inunallizacao da Comunicacao I2C lcd.init (); // LCD lcd.backlight () ilə tanış olun; lcd.setCursor (3, 0); lcd.print ("Müvəqqəti Sistem"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); gecikmə (2000); // Yerli sensorlar Serial.println ("Localizando sensorlar DS18B20…"); Serial.print ("Sensor Lokalizasiyası uğurla!"); Serial.print (sensorlar.getDeviceCount (), DEC); Serial.println ("Sensor"); if (SD.begin ()) {// Məlumat və ya SD Kart Serial.println ("SD Kart əvvəlcədən hazırlanmışdır."); // Başqa bir şey yox}} {Serial.println ("SD Kartı yoxlamaq"); qayıtmaq; } DS1307.getDate (DataTime); lcd.clear (); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Oxu düyməsi ölçüləri ölçür = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); tamam = digitalRead (Buttonok); if (tədbir == 0 && tədbir_stat == 1) {ölçü_halı = 0; } if (tədbir == 1 && tədbir_stat == 0 && ölçü_process == 0) {ölçü_process = 1; tədbir_stat = 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!"); } başqa {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } gecikmə (500); myFile.print ("Saat:"); myFile.println ("Temperatur"); DS1307.getDate (DataTime); actualMin = əvvəlkiMin = DataTime [5]; sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("Temperatur:"); lcd.setCursor (14, 1); sensorlar.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && ted_process == 0) {adjust_process = 1; } // ----------------------------------------------- --- Ölçmə prosesi --------------------------------------------- -------------- əgər (ölçü_process == 1) {updateTemp (); bayt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Dəqiqə Sayısı --------------------------------------- ------------------- əgər (actualMin! = əvvəlkiMin) {contMin ++; əvvəlkiMin = faktikiMin; } if (contMin == 5) {sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); sensorlar.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (dəfə); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Saat Sayısı ------------------------------------ ---------------------- əgər (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Bitdi"); lcd.setCursor (5, 1); lcd.print ("Proses"); ölçü_ prosesi = 0; contHour = 0; } // ---------------------------------------------- Şərt datalogger dayandırmaq üçün ---------------------------------------------- ---- əgər (tamam == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Dayandı"); lcd.setCursor (5, 1); lcd.print ("Proses"); ölçü_ prosesi = 0; gecikmə (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- Saatı Ayarla ----------------------------------------- ---------------------- // Saat ayarlayın, əgər (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Saatı Ayarla:"); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); // Saat Ayarı do {tədbir = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); tamam = digitalRead (Buttonok); if (tədbir == 0 && tədbir_stat == 1) {ölçü_stat = 0; } if (tədbir == 1 && tədbir_stat == 0) {DataTime [4] ++; əgər (DataTime [4]> 23) {DataTime [4] = 0; } tədbir_stadı = 1; sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); 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] ++; əgər (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } əgər (tamam == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); tənzimləmə_ prosesi = 0; }} zamanı (tamam! = 1); } // ----------------------------------------------- ------- Ayarlama Saatını bitirin ---------------------------------------- -------------------}

Birincisi, Arduino üçün temperatur sensoru ilə JLCPCB Datalogger proqramlaşdırarkən istifadə olunan modulları idarə etmək və dəyişənləri elan etmək üçün bütün kitabxanaları təyin edirik. Kod bloku aşağıda göstərilmişdir.

Addım 3:

#daxil edin // DS18B20 Sensorunun bütün funksiyaları olan kitabxana

#include #include // Biblioteca I2C do LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // 0x27 ölçüsündə LCD 16x2 ölçüsündə konfiqurasiya #ONE_WIRE_BUS 8 -i təyin edin // DS18B20 Sensorunu bağlamaq üçün rəqəmsal pin // OneWire üçün OneWire əlaqəli cihazları təyin edin (ONE_WIRE_BUS); DallasTemperatur sensorlar (& oneWire); Cihaz ünvanı ünvanı1; Fayl myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool tədbir = 0, adjusthour = 0, ok = 0; bool tədbir_statı = 0, adjusthour_state = 0, ok_state = 0; bool tədbir_prosesi = 0, tənzimləmə_ prosesi = 0; bayt actualMin = 0, əvvəlkiMin = 0; byte actualHour = 0, əvvəlkiHour = 0; bayt minUpdate = 0; int pinoSS = 10; // Mega üçün 53 Pin / UNO int DataTime üçün 10 Pin [7];

Bundan sonra boşluq qurma funksiyasına sahibik. Bu funksiya, aşağıda göstərildiyi kimi, pinləri və cihazın işə salınmasını konfiqurasiya etmək üçün istifadə olunur.

boş quraşdırma ()

{Serial.begin (9600); DS1307.başla (); sensorlar.begin (); pinMode (pinoSS, ÇIXIŞ); // Wire.begin () ilə birlikdə Declara pinoSS ilə əlaqə qurun; // Inunallizacao da Comunicacao I2C lcd.init (); // LCD lcd.backlight () ilə tanış olun; lcd.setCursor (3, 0); lcd.print ("Müvəqqəti Sistem"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); gecikmə (2000); // Yerli sensorlar Serial.println ("Localizando sensorlar DS18B20…"); Serial.print ("Sensor Lokalizasiyası uğurla!"); Serial.print (sensorlar.getDeviceCount (), DEC); Serial.println ("Sensor"); if (SD.begin ()) {// Məlumat və ya SD Kart Serial.println ("SD Kart əvvəlcədən hazırlanmışdır."); // Başqa bir şey yox}} {Serial.println ("SD Kartı yoxlamaq lazımdır"); qayıtmaq; } DS1307.getDate (DataTime); lcd.clear (); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Əvvəlcə Arduino DS18B20 üçün serial rabitə, real vaxt saatı və temperatur sensoru işə salındı. Cihazlar işə salındıqdan və sınaqdan keçirildikdən sonra menyu seçimləri olan mesaj 16x2 LCD ekranda çap edildi. Bu ekran Şəkil 1 -də göstərilmişdir.

Addım 4:

Bundan sonra sistem saatları oxuyur və updateHour funksiyasını çağıraraq dəyəri yeniləyir. Beləliklə, bu funksiyanın hər dəqiqə saat dəyərini təqdim etmək məqsədi var. Funksiya kodu bloku aşağıda göstərilmişdir.

etibarsız updateHour ()

{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd çap (dəfə); minUpdate = DataTime [5]; }}

Addım 5:

Şəkil
Şəkil

Saatları yeniləməklə yanaşı, istifadəçi xəstəni Arduino ilə bir temperatur sensoru ilə izləmək üçün üç düymədən birini seçə bilər. Dövrə yuxarıdakı şəkildə göstərilmişdir.

Addım 6: JLCPCB Datalogger Nəzarət Menyu

JLCPCB Datalogger Nəzarət Menyu
JLCPCB Datalogger Nəzarət Menyu

Əvvəlcə istifadəçi sistem saatlarını yoxlamalı və tənzimləməlidir. Bu proses ikinci düyməyə basıldıqda həyata keçirilir.

Düymə basıldıqda yuxarıdakı Şəkildə göstərilən aşağıdakı ekran görünməlidir.

Addım 7:

Şəkil
Şəkil

Bu ekrandan istifadəçi Arduinonun 2 və 3 rəqəmsal pinlərinə bağlı düymələrdən saat və dəqiqə dəyərlərini daxil edə biləcək. Düymələr yuxarıdakı şəkildə göstərilmişdir.

Saatı idarə etmək üçün kod hissəsi aşağıda göstərilmişdir.

əgər (adjusthour == 0 && adjusthour_state == 1)

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

Saat düyməsinə basıldıqda və tədbirin_ölçüsü dəyişkənliyi 0 -a təyin edildikdə, şərt doğru olacaq və adjust_process dəyişəni 1 -ə təyin olunacaq. Dəyəri 0 olduqda, sistem istifadəçiyə vaxt qəbulu menyusuna daxil olmağa imkan verəcək. Buna görə, adjust_process dəyişən 1 dəyərini aldıqdan sonra sistem vaxt tənzimləmə şərtinə girəcək. Bu kod bloku aşağıda göstərilmişdir.

// ------------------------------------------------ ----- Saatı Ayarla ------------------------------------------- --------------------

// Saatı Ayarla, əgər (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Saatı Ayarla:"); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); // Saat Ayarı do {tədbir = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); tamam = digitalRead (Buttonok); if (tədbir == 0 && tədbir_stat == 1) {ölçü_stat = 0; } if (tədbir == 1 && tədbir_stat == 0) {DataTime [4] ++; əgər (DataTime [4]> 23) {DataTime [4] = 0; } tədbir_stadı = 1; sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); 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] ++; əgər (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } əgər (tamam == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); tənzimləmə_ prosesi = 0; }} zamanı (tamam! = 1); }

Bu vəziyyətdə, sistem Şəkil 4 -də göstərilən mesajı göstərəcək və sonra dəyərlərin daxili döngədə tənzimlənməsini gözləyəcək. Saatları tənzimləyərkən bu düymələrin funksiyaları dəyişdirilir, yəni çoxfunksiyalıdır.

Bu, birdən çox funksiya üçün bir düyməni istifadə etməyə və sistemin mürəkkəbliyini azaltmağa imkan verir.

Bu şəkildə istifadəçi saat və dəqiqənin dəyərini tənzimləyəcək və sonra Ok düyməsinə basıldıqda məlumatları sistemdə saxlayacaq.

Gördüyünüz kimi, sistem aşağıda göstərildiyi kimi 3 düyməni oxuyacaq.

tədbir = digitalRead (Düymə ölçüsü);

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

Ölçmə düyməsinin (Düymə Ölçmə) funksiyasını dəyişdirdiyini unutmayın. İndi aşağıda göstərildiyi kimi saat dəyərlərini tənzimləmək üçün istifadə olunacaq. Aşağıdakı iki şərt oxşardır və yuxarıda göstərildiyi kimi saat və dəqiqələri tənzimləmək üçün istifadə olunur.

əgər (ölçü == 0 && tədbir_stat == 1)

{tədbir_statı = 0; } if (tədbir == 1 && tədbir_stat == 0) {DataTime [4] ++; əgər (DataTime [4]> 23) {DataTime [4] = 0; } tədbir_stadı = 1; sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); 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] ++; əgər (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd çap (dəfə); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; }

Buna görə də hər dəfə iki düymədən birinə basıldıqda DataTime vektorunun 4 və 5 -ci mövqelərinin dəyəri dəyişdiriləcək, ikincisi isə bu dəyərlər DS1307 yaddaşında saxlanılacaq.

Düzəlişlərdən sonra istifadəçi prosesi başa çatdırmaq üçün Ok düyməsini basmalıdır. Bu hadisə baş verdikdə sistem aşağıdakı kod sətirlərini icra edəcək.

əgər (tamam == 1)

{lcd.clear (); DS1307.getDate (DataTime); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); tənzimləmə_ prosesi = 0; }

Yuxarıdakı şərti daxil edəcək və istifadəçiyə saat mesajını və Seçimlər menyusunu təqdim edəcək.

Nəhayət, istifadəçi Arduino JLCPCB Datalogger ilə temperatur sensoru vasitəsilə xəstə monitorinq prosesinə başlamalıdır.

Bunun üçün istifadəçi rəqəmsal pin 2 -yə qoşulmuş ölçü düyməsini basmalıdır.

Daha sonra sistem Arduino üçün temperatur sensoru ilə oxunuşu yerinə yetirəcək və yaddaş kartında saxlayacaq. Dövrə bölgəsi yuxarıdakı şəkildə göstərilmişdir.

Addım 8:

Şəkil
Şəkil

Buna görə də düyməyə basıldıqda kodun aşağıdakı hissəsi icra ediləcək.

əgər (ölçü == 0 && tədbir_stat == 1)

{tədbir_statı = 0; } if (tədbir == 1 && tədbir_stat == 0 && ölçü_process == 0) {ölçü_process = 1; tədbir_stat = 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!"); } başqa {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } gecikmə (500); myFile.print ("Saat:"); myFile.println ("Temperatur"); DS1307.getDate (DataTime); actualMin = əvvəlkiMin = DataTime [5]; sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("Temperatur:"); lcd.setCursor (14, 1); sensorlar.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }

Yuxarıdakı kod hissəsində, sistem tədbir_process dəyişəninə 1 dəyər təyin edəcək. Məlumatların SD Kartda saxlanılmasına icazə verməkdən məsuldur.

Bundan əlavə, sistem məlumat qeydləri olan bir mətn faylının olub olmadığını yoxlayacaq. Bir fayl varsa, sistem siləcək və məlumatları saxlamaq üçün yenisini yaradacaq.

Bundan sonra iki sütun yaradacaq: biri saatlar üçün, biri də mətn faylının içindəki temperatur üçün.

Bundan sonra, yuxarıdakı şəkildə göstərildiyi kimi LCD ekranda saatı və temperaturu göstərəcək.

Bundan sonra, kod axını aşağıdakı proqram blokunu icra edəcək.

əgər (ölçü_sürəsi == 1)

{updateTemp (); bayt contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ------------------------------------------------ --------- Dəqiqə Sayısı --------------------------------------- ------------------- əgər (actualMin! = əvvəlkiMin) {contMin ++; əvvəlkiMin = faktikiMin; } if (contMin == 5) {sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); sensorlar.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (dəfə); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Saat Sayısı ------------------------------------ ---------------------- əgər (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Bitdi"); lcd.setCursor (5, 1); lcd.print ("Proses"); ölçü_ prosesi = 0; contHour = 0; } // ---------------------------------------------- Şərt datalogger dayandırmaq üçün -----

Əvvəlcə updateTemp () funksiyası icra olunacaq. UpdateHour () funksiyasına bənzəyir; lakin hər 1 dəqiqədə bir temperatur göstərir.

Bundan sonra, sistem Real-Time Clock-dan vaxt məlumatlarını toplayacaq və cari dəqiqə dəyərini currentMin dəyişənində saxlayacaq.

Sonra, aşağıda təqdim olunan şərtə görə min dəyişəninin dəyişdirilib -dəyişdirilmədiyini yoxlayacaq

əgər (actualMin! = əvvəlkiMin)

{davamMin ++; əvvəlkiMin = faktikiMin; }

Buna görə də, cari dəqiqə dəyişənləri əvvəlki dəyərdən fərqli olarsa, bu, dəyərdə bir dəyişikliyin baş verdiyini bildirir, beləliklə şərt doğru olacaq və dəqiqə sayının dəyəri artacaq (contMin) və cari dəyər əvvəlki dəyərini saxlamaq üçün previousMin dəyişəninə təyin ediləcək.

Buna görə, bu sayın dəyəri 5 -ə bərabər olduqda, bu, 5 dəqiqənin keçdiyini və sistemin yeni bir temperatur oxunması etməli və SD Kart qeyd sənədində saatı və temperatur dəyərini saxlamalıdır.

əgər (davami == 5)

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

Bu şəkildə, Arduino ilə temperatur sensoru ilə xəstənin istiliyinin 5 saat izlənilməsi dəyərinə çatana qədər bu proses təkrarlanacaq.

Kod hissəsi aşağıda göstərilmişdir və yuxarıda təqdim olunan dəqiqə sayına bənzəyir.

// ------------------------------------------------ ----------- Saat Sayısı ------------------------------------- ---------------------

if (actualHour! = previousHour) {contHour ++; previousHour = actualHour; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Bitdi"); lcd.setCursor (5, 1); lcd.print ("Proses"); ölçü_ prosesi = 0; contHour = 0; }

5 saatlıq monitorinqə çatdıqdan sonra sistem log faylını bağlayacaq və istifadəçiyə "Bitmiş proses" mesajını təqdim edəcək.

Bundan əlavə, istifadəçi məlumatların yazılmasını dayandırmaq üçün Ok/Pause düyməsini basa bilər. Bu baş verdikdə aşağıdakı kod bloku icra ediləcək.

// ---------------------------------------------- Şərt datalogger dayandırın ----------------------------------------------- ---

əgər (tamam == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Dayandı"); lcd.setCursor (5, 1); lcd.print ("Proses"); ölçü_ prosesi = 0; gecikmə (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (dəfə, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd çap (dəfə); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

Addım 9:

Şəkil
Şəkil

Sonra sistem faylı bağlayacaq və Şəkil 8 -də göstərildiyi kimi "Stoped Process" mesajını təqdim edəcək.

Addım 10:

Şəkil
Şəkil

Bundan sonra, sistem Şəkil 9 -da göstərildiyi kimi vaxt ekranı və menyu seçimlərini çap edəcək.

Addım 11: Arduino ilə SD Kart Modulu Məlumatlarına Giriş

Arduino ilə SD Kart Modulu Məlumatlarına Giriş
Arduino ilə SD Kart Modulu Məlumatlarına Giriş

JLCPCB Datalogger -in Arduino ilə temperatur sensoru ilə izlənməsi prosesindən sonra yaddaş kartını çıxarmaq və kompüterdəki məlumatlara daxil olmaq lazımdır.

Verilənləri daha keyfiyyətli görmək və təhlil etmək üçün mətn faylının bütün məlumatlarını Excel -ə ixrac edin / kopyalayın. Bundan sonra qrafiklər qura və əldə edilən nəticələri təhlil edə bilərsiniz.

Addım 12: Nəticə

Arduino ilə bir temperatur sensoru olan JLCPCB Datalogger, temperaturun ölçülməsi ilə yanaşı, müəyyən bir müddət ərzində xəstənin temperatur davranışına dair məlumatları qeyd etməyə imkan verir.

Bu saxlanan məlumatlarla COVID 19 -a yoluxmuş xəstənin temperaturunun necə davrandığını təhlil etmək və anlamaq mümkündür.

Bundan əlavə, temperaturun səviyyəsini qiymətləndirmək və dəyərini bir növ dərman vasitəsi ilə əlaqələndirmək mümkündür.

Buna görə də, bu məlumatlar vasitəsilə, Arduino üçün temperatur sensörlü JLCPCB Datalogger, xəstələrin davranışlarının öyrənilməsində həkimlərə və tibb bacılarına kömək etməyi hədəfləyir.

Nəhayət, layihənin inkişafını dəstəklədiyi üçün JLCPCB şirkətinə təşəkkür edirik və bundan istifadə edə biləcəyinizə ümid edirik

Bütün faylları istənilən istifadəçi yükləyə və sərbəst istifadə edə bilər.

Tövsiyə: