İçindekiler:

COVID 19 için Uygulanan Arduino için Sıcaklık Sensörü: 12 Adım (Resimlerle)
COVID 19 için Uygulanan Arduino için Sıcaklık Sensörü: 12 Adım (Resimlerle)

Video: COVID 19 için Uygulanan Arduino için Sıcaklık Sensörü: 12 Adım (Resimlerle)

Video: COVID 19 için Uygulanan Arduino için Sıcaklık Sensörü: 12 Adım (Resimlerle)
Video: Arduino ile Sosyal Mesafe Koruyucu | Covid-19 Önlemleri 2024, Kasım
Anonim
COVID 19 için Uygulanan Arduino için Sıcaklık Sensörü
COVID 19 için Uygulanan Arduino için Sıcaklık Sensörü

Arduino için sıcaklık sensörü, insan vücudunun bir işlemcisinin sıcaklığını ölçmek istediğimizde temel bir unsurdur.

Arduino ile sıcaklık sensörü, ısı seviyesini alıp ölçmek için temas halinde veya yakın olmalıdır. Termometreler böyle çalışır.

Sıcaklık, bir anormallik veya hastalık olduğunda insan vücudunda ilk değişen faktörlerden biri olduğu için, bu cihazlar son derece hasta kişilerin vücut ısısını ölçmek için kullanılır.

İnsan vücudunun sıcaklığını değiştiren hastalıklardan biri de COVID 19'dur. Bu nedenle, ana semptomları sunuyoruz:

Öksürük Yorgunluk Nefes almada güçlük (Şiddetli vakalar) Ateş Ateş, ana özelliği vücut sıcaklığındaki artış olan bir semptomdur. Bu hastalıkta bu semptomları sürekli izlememiz gerekir.

Böylece Arduino ile bir sıcaklık sensörü kullanarak JLCPCB Datalogger aracılığıyla sıcaklığı izlemek ve bu verileri bir hafıza kartına depolamak için bir proje geliştireceğiz.

Bu nedenle, bu makalede öğreneceksiniz:

  • Arduino ile sıcaklık sensörlü bir JLCPCB Datalogger nasıl çalışır?
  • Arduino ile sıcaklık sensörü nasıl çalışır?
  • Arduino ile DS18B20 sıcaklık sensörü nasıl çalışır?
  • Birden çok işleve sahip düğmeleri kullanın.

Ardından, Arduino sıcaklık sensörünü kullanarak JLCPCB Veri Kaydedicinizi nasıl geliştireceğinizi göstereceğiz.

Gereçler

Arduino UNO'su

JLCPCB Baskılı Devre Kartı

DS18B20 Sıcaklık Sensörü

Arduino Nano R3

Süveterler

LCD Ekran 16 x 2

buton anahtarı

Direnç 1kR

Arduino için SD Kart Modülü

Adım 1: Arduino ile Sıcaklık Sensörlü JLCPCB Veri Kaydedici Yapımı

Arduino ile Sıcaklık Sensörlü JLCPCB Veri Kaydedici Yapımı
Arduino ile Sıcaklık Sensörlü JLCPCB Veri Kaydedici Yapımı

Daha önce bahsedildiği gibi proje Arduino ile Sıcaklık Sensörlü JLCPCB Datalogger oluşturulmasından oluşuyor ve bu veriler aracılığıyla tedavi edilen hastanın ateşini takip edebiliyoruz.

Böylece devre yukarıdaki şekilde gösterilmiştir.

Bu nedenle, gördüğünüz gibi, bu devre, hastanın sıcaklık okumasını ölçmekten sorumlu olan Arduino ile bir DS18B20 sıcaklık sensörüne sahiptir.

Ayrıca Arduino Nano, bu verilerin toplanmasından ve SD Kart Modülünün hafıza kartında saklanmasından sorumlu olacaktır.

Her bilgi, RTC Modülü DS1307'den okunacak olan ilgili zamanı ile kaydedilecektir.

Bu nedenle Arduino ile sıcaklık sensörünün verilerinin kaydedilebilmesi için kullanıcının 16x2 LCD ile Kontrol Menüsü üzerinden işlemi gerçekleştirmesi gerekmektedir.

Adım 2:

resim
resim

Şekil 2'deki 16x2 LCD ekranda gösterildiği gibi, her düğme bir seçeneğin kontrolünden sorumludur.

Her seçenek, aşağıda gösterildiği gibi sistemde bir işlevi yerine getirmekten sorumludur.

  • M Seçeneği, Hafıza Kartındaki verilerin ölçülmesi ve kaydedilmesinin başlatılmasından sorumludur.
  • Seçenek H, sistem saatlerinin ayarlanmasından sorumludur.
  • Opsiyon O/P, sisteme veri girişini onaylamak veya hafıza kartına veri yazmayı duraklatmak için kullanılır.

Sistem kontrol sürecini anlamak için aşağıdaki kodu sağlayacağız ve Arduino ile Sıcaklık Sensörlü JLCPCB Datalogger'ın adım adım kontrol sistemini tartışacağız.

#include // DS18B20 Sensörünün tüm fonksiyonlarına sahip kitaplık

#include #include //Biblioteca I2C do LCD 16x2 #include //Biblioteca de Comunicacao I2C #include //DS18B20 Sensörü için OneWire Kitaplığı #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD 16x2 para 0x27'yi yapılandırın #define ONE_WIRE_BUS 8 //DS18B20 Sensörünü bağlamak için Dijital Pin //oneWire ile iletişim için uma instancia tanımlayın OneWire oneWire(ONE_WIRE_BUS); DallasSıcaklık sensörleri(&oneWire); CihazAdresi sensörü1; Dosya myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool ölçü = 0, ayar saat = 0, tamam = 0; bool ölçü_durumu = 0, ayarsaat_durumu = 0, ok_durumu = 0; bool ölçü_işlem = 0, ayar_işlem = 0; bayt gerçekMin = 0, öncekiMin = 0; byte gerçekSaat = 0, öncekiSaat = 0; bayt minUpdate = 0; int pinoSS = 10; // Mega 53 para / Pin 10 para UNO int DataTime[7]; void 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(kez); minUpdate = VeriZamanı[5]; } } void updateTemp() { DS1307.getDate(DataTime); if(DataTime[5] != minUpdate) { sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.clear(); lcd.setCursor(5, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("Sıcaklık: "); lcd.setCursor(14, 1); sensörler.requestTemperatures(); float TempSensor = sensor.getTempCByIndex(0); lcd.print(TempSensor); minUpdate = VeriZamanı[5]; } } geçersiz kurulum() { Serial.begin(9600); DS1307.begin(); sensörler.begin(); pinMode(pinoSS, ÇIKIŞ); // Declara pinoSS ortak kullanıma girdi Wire.begin(); //Comunicacao I2C lcd.init(); //LCD lcd.backlight(); lcd.setCursor(3, 0); lcd.print("Sıcaklık Sistemi"); lcd.setCursor(3, 1); lcd.print("Veri kaydedici"); gecikme(2000); // Localiza e Mostra enderecos dos sensörleri Serial.println("Localizando sensörleri DS18B20…"); Serial.print("Sensör Lokalizasyonu başarılı!"); Serial.print(sensors.getDeviceCount(), DEC); Serial.println(" Sensör"); if(SD.begin()) { // SD Kart Serial.println("SD Kart pronto para uso."); // Imprime na tela } else { Serial.println("Falha na inicialização SD Card."); dönüş; } DS1307.getDate(DataTime); lcd.clear(); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); } geçersiz döngü() { updateHour(); //Okuma düğmesi durumları ölçü = digitalRead(Buttonmeasure); saat ayarı = digitalRead(Buttonadjusthour); tamam = digitalRead(Buttonok); if(ölçü == 0 && ölçü_durumu == 1) { ölçü_durumu = 0; } if(ölçüm == 1 && ölçü_durumu == 0 && ölçü_işlem == 0) { ölçü_işlem = 1; ölçü_durumu = 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şka { Serial.println("Criou o arquivo!"); myFile = SD.open("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close(); } gecikme(500); myFile.print("Saat: "); myFile.println("Sıcaklık"); DS1307.getDate(DataTime); gerçekMin = öncekiMin = VeriZamanı[5]; sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.clear(); lcd.setCursor(5, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("Sıcaklık: "); lcd.setCursor(14, 1); sensörler.requestTemperatures(); float TempSensor = sensor.getTempCByIndex(0); lcd.print(TempSensor); } if(adjusthour == 0 && Adjusthour_state == 1) { Adjusthour_state = 0; } if(adjusthour == 1 && Adjusthour_state == 0 && Measure_process == 0) { Adjust_process = 1; } //------------------------------------------------ ---Ölçüm Süreci------------------------------------------------ -------------- if(measure_process == 1) { updateTemp(); bayt contMin = 0, contSaat = 0; DS1307.getDate(DataTime); gerçekMin = VeriZamanı[5]; //------------------------------------------------ --------- Dakikaları Say ------------------------------------------ ------------------- if(actualMin != öncekiMin) { contMin++; öncekiMin = gerçekMin; } if(contMin == 5) { sprintf(times, "%02d:%02d ", DataTime[4], DataTime[5]); sensörler.requestTemperatures(); float TempSensor = sensor.getTempCByIndex(0); myFile.print(kez); myFile.println(TempSensor); contMin = 0; } //------------------------------------------------ ------------Saatleri Say ---------------------------------- ---------------------- if(actualHour != öncekiHour) { contHour++; öncekiSaat = gerçekSaat; } if(contHour == 5) { myFile.close(); lcd.clear(); lcd.setCursor(5, 0); lcd.print("Bitti"); lcd.setCursor(5, 1); lcd.print("İşlem"); ölçü_işlem = 0; contSaat = 0; } //----------------------------------------------Şart veri kaydediciyi durdurmak için ---------------------------------------------- ---- if(tamam == 1) { myFile.close(); lcd.clear(); lcd.setCursor(6, 0); lcd.print("Durdurma"); lcd.setCursor(5, 1); lcd.print("İşlem"); ölçü_işlem = 0; gecikme(2000); lcd.clear(); DS1307.getDate(DataTime); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); } } //------------------------------------------------- -------Saatleri Ayarlayın------------------------------------------- ---------------------- //Saati Ayarla if(adjust_process == 1) { lcd.clear(); DS1307.getDate(DataTime); lcd.setCursor(0, 0); lcd.print("Saati Ayarlayın:"); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); //Saat Ayarı do { ölçü = digitalRead(Buttonmeasure); saat ayarı = digitalRead(Buttonadjusthour); tamam = digitalRead(Buttonok); if(ölçü == 0 && ölçü_durumu == 1) { ölçü_durumu = 0; } if(ölçmek == 1 && ölçü_durumu == 0) { VeriZamanı[4]++; if(DataTime[4] > 23) { DataTime[4] = 0; } ölçü_durumu = 1; sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); 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 && settingshour_state == 0) { DataTime[5]++; if(DataTime[5] > 59) { DataTime[5] = 0; } sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); DS1307.setDate(DataTime[0], DataTime[1], DataTime[2], DataTime[3], DataTime[4], DataTime[5], 00); ayarsaat_durumu = 1; } if(tamam == 1) { lcd.clear(); DS1307.getDate(DataTime); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(0, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O"); ayar_işlem = 0; } }while(tamam != 1); } //------------------------------------------------ -------- Ayarlama Saatini Bitir -------------------------------------------- ------------------- }

İlk olarak, Arduino için bir sıcaklık sensörü ile JLCPCB Veri Kaydediciyi programlarken kullanılan modülleri kontrol etmek ve değişkenleri bildirmek için tüm kütüphaneleri tanımlıyoruz. Kod bloğu aşağıda gösterilmiştir.

Aşama 3:

#include // DS18B20 Sensörünün tüm fonksiyonlarına sahip kitaplık

#include #include //Biblioteca I2C do LCD 16x2 #include //Biblioteca de Comunicacao I2C #include //DS18B20 Sensör için OneWire Kütüphanesi #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD 16x2 para 0x27'yi yapılandırın #define ONE_WIRE_BUS 8 //DS18B20 Sensörünü bağlamak için Dijital Pin //oneWire ile iletişim için uma instancia tanımlayın OneWire oneWire(ONE_WIRE_BUS); DallasSıcaklık sensörleri(&oneWire); CihazAdresi sensörü1; Dosya myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool ölçü = 0, ayar saat = 0, tamam = 0; bool ölçü_durumu = 0, ayarsaat_durumu = 0, ok_durum = 0; bool ölçü_işlem = 0, ayar_işlem = 0; bayt gerçekMin = 0, öncekiMin = 0; byte gerçekSaat = 0, öncekiSaat = 0; bayt minUpdate = 0; int pinoSS = 10; // Mega 53 para / Pin 10 para UNO int DataTime[7];

Bundan sonra, geçersiz kurulum işlevine sahibiz. Bu işlev, aşağıda gösterildiği gibi pinleri ve cihaz başlatmayı yapılandırmak için kullanılır.

geçersiz kurulum()

{ Serial.başlangıç(9600); DS1307.begin(); sensörler.begin(); pinMode(pinoSS, ÇIKIŞ); // Declara pinoSS ortak kullanıma girdi Wire.begin(); //Comunicacao I2C lcd.init(); //LCD lcd.backlight(); lcd.setCursor(3, 0); lcd.print("Sıcaklık Sistemi"); lcd.setCursor(3, 1); lcd.print("Veri kaydedici"); gecikme(2000); // Localiza e Mostra enderecos dos sensörleri Serial.println("Localizando sensörleri DS18B20…"); Serial.print("Sensör Lokalizasyonu başarılı!"); Serial.print(sensors.getDeviceCount(), DEC); Serial.println(" Sensör"); if(SD.begin()) { // SD Kart Serial.println("SD Kart pronto para uso."); // Imprime na tela } else { Serial.println("Falha na inicialização SD Card."); dönüş; } DS1307.getDate(DataTime); lcd.clear(); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); }

İlk olarak Arduino DS18B20 için seri haberleşme, gerçek zamanlı saat ve sıcaklık sensörü başlatıldı. Cihazlar başlatılıp test edildikten sonra 16x2 LCD ekrana menü seçeneklerinin bulunduğu mesaj yazdırıldı. Bu ekran Şekil 1'de gösterilmektedir.

4. Adım:

Bundan sonra sistem saatleri okur ve updateHour işlevini çağırarak değeri günceller. Böylece, bu fonksiyon her dakika saatlik değeri sunma amacına sahiptir. Fonksiyon kodu bloğu aşağıda gösterilmiştir.

void 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(kez); minUpdate = VeriZamanı[5]; } }

Adım 5:

resim
resim

Kullanıcı, saatleri güncellemenin yanı sıra, Arduino ile bir sıcaklık sensörü ile hastayı izlemek için üç düğmeden birini seçebilir. Devre yukarıdaki şekilde gösterilmiştir.

Adım 6: JLCPCB Veri Kaydedici Kontrol Menüsü

JLCPCB Veri Kaydedici Kontrol Menüsü
JLCPCB Veri Kaydedici Kontrol Menüsü

İlk olarak, kullanıcı sistem saatlerini kontrol etmeli ve ayarlamalıdır. Bu işlem ikinci düğmeye basıldığında gerçekleştirilir.

Butona basıldığında, yukarıdaki Şekilde gösterilen aşağıdaki ekran görünmelidir.

7. Adım:

resim
resim

Bu ekrandan kullanıcı Arduino'nun 2 ve 3 numaralı dijital pinlerine bağlı butonlardan saat ve dakika değerlerini girebilecektir. Düğmeler yukarıdaki şekilde gösterilmiştir.

Saatleri kontrol etmek için kod kısmı aşağıda gösterilmiştir.

if(adjusthour == 0 && Adjusthour_state == 1)

{ saat ayarı_durumu = 0; } if(adjusthour == 1 && Adjusthour_state == 0 && Measure_process == 0) { Adjust_process = 1; }

Saat düğmesine basıldığında ve ölçme_işlem değişkeni 0'a ayarlandığında, koşul doğru olacaktır ve ayar_işlem değişkeni 1'e ayarlanacaktır. Ölçme_işlem değişkeni, sistemin sıcaklığı izlediğini belirtmek için kullanılır. Değeri 0 olduğunda sistem kullanıcının zaman ayar menüsüne girmesine izin verecektir. Bu nedenle, ayar_işlem değişkeni 1 değerini aldıktan sonra sistem zaman ayarlama koşuluna girecektir. Bu kod bloğu aşağıda gösterilmiştir.

//------------------------------------------------ -----Saatleri Ayarlayın------------------------------------------- --------------------

//Saati Ayarla if(adjust_process == 1) { lcd.clear(); DS1307.getDate(DataTime); lcd.setCursor(0, 0); lcd.print("Saati Ayarlayın:"); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); //Saat Ayarı do { ölçü = digitalRead(Buttonmeasure); saat ayarı = digitalRead(Buttonadjusthour); tamam = digitalRead(Buttonok); if(ölçü == 0 && ölçü_durumu == 1) { ölçü_durumu = 0; } if(ölçmek == 1 && ölçü_durumu == 0) { VeriZamanı[4]++; if(DataTime[4] > 23) { DataTime[4] = 0; } ölçü_durumu = 1; sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); 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 && settingshour_state == 0) { DataTime[5]++; if(DataTime[5] > 59) { DataTime[5] = 0; } sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); DS1307.setDate(DataTime[0], DataTime[1], DataTime[2], DataTime[3], DataTime[4], DataTime[5], 00); ayarsaat_durumu = 1; } if(tamam == 1) { lcd.clear(); DS1307.getDate(DataTime); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(0, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O"); ayar_işlem = 0; } }while(tamam != 1); }

Bu durumda sistem Şekil 4'te gösterilen mesajı gösterecek ve daha sonra while döngüsünde değerlerin dahili olarak ayarlanmasını bekleyecektir. Saatler ayarlanırken bu butonların fonksiyonları değişmiş yani çok fonksiyonludur.

Bu, birden fazla işlev için bir düğme kullanmanıza ve sistemin karmaşıklığını azaltmanıza olanak tanır.

Bu sayede kullanıcı saat ve dakika değerini ayarlayacak ve ardından Ok butonuna basıldığında verileri sisteme kaydedecektir.

Gördüğünüz gibi, sistem aşağıda gösterildiği gibi 3 düğmeyi okuyacaktır.

ölçü = digitalRead(Buttonmeasure);

saat ayarı = digitalRead(Buttonadjusthour); tamam = digitalRead(Buttonok);

Ölçü düğmesinin (Buttonmeasure) işlevini değiştirdiğini unutmayın. Şimdi aşağıda gösterildiği gibi saat değerlerini ayarlamak için kullanılacaktır. Aşağıdaki iki koşul benzerdir ve yukarıda gösterildiği gibi saat ve dakikayı ayarlamak için kullanılır.

if(ölçü == 0 && ölçü_durumu == 1)

{ ölçü_durumu = 0; } if(ölçmek == 1 && ölçü_durumu == 0) { VeriZamanı[4]++; if(DataTime[4] > 23) { DataTime[4] = 0; } ölçü_durumu = 1; sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); 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 && settingshour_state == 0) { DataTime[5]++; if(DataTime[5] > 59) { DataTime[5] = 0; } sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 1); lcd.print(kez); DS1307.setDate(DataTime[0], DataTime[1], DataTime[2], DataTime[3], DataTime[4], DataTime[5], 00); ayarsaat_durumu = 1; }

Bu nedenle iki butondan birine her basıldığında DataTime vektörünün 4 ve 5 numaralı konumlarının değeri değişecek ve ikinci olarak bu değerler DS1307 hafızasına kaydedilecektir.

Ayarlamalardan sonra kullanıcının işlemi bitirmek için Tamam düğmesine tıklaması gerekir. Bu olay meydana geldiğinde, sistem aşağıdaki kod satırlarını yürütecektir.

eğer(tamam == 1)

{ lcd.clear(); DS1307.getDate(DataTime); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(0, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O"); ayar_işlem = 0; }

Yukarıdaki koşulu girerek saat mesajını ve Seçenekler Menüsünü kullanıcıya sunacaktır.

Son olarak kullanıcı Arduino JLCPCB Datalogger ile sıcaklık sensörü üzerinden hasta takip sürecini başlatmalıdır.

Bunu yapmak için kullanıcının dijital pin 2'ye bağlı olan ölçüm düğmesine basması gerekir.

Ardından sistem Arduino için sıcaklık sensörü ile okuma yapacak ve hafıza kartına kaydedecektir. Devre bölgesi yukarıdaki şekilde gösterilmiştir.

Adım 8:

resim
resim

Bu nedenle, butona basıldığında, kodun aşağıdaki kısmı yürütülecektir.

if(ölçü == 0 && ölçü_durumu == 1)

{ ölçü_durumu = 0; } if(ölçüm == 1 && ölçü_durumu == 0 && ölçü_işlem == 0) { ölçü_işlem = 1; ölçü_durumu = 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şka { Serial.println("Criou o arquivo!"); myFile = SD.open("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close(); } gecikme(500); myFile.print("Saat: "); myFile.println("Sıcaklık"); DS1307.getDate(DataTime); gerçekMin = öncekiMin = VeriZamanı[5]; sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.clear(); lcd.setCursor(5, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("Sıcaklık: "); lcd.setCursor(14, 1); sensörler.requestTemperatures(); float TempSensor = sensor.getTempCByIndex(0); lcd.print(TempSensor); }

Yukarıdaki kod kısmında sistem, ölçü_işlem değişkenine 1 değerini atayacaktır. Verilerin SD Karta kaydedilmesine izin vermekten sorumludur.

Ayrıca sistem, veri günlüğüne sahip bir metin dosyasının var olup olmadığını kontrol edecektir. Bir dosya varsa, sistem verileri saklamak için silecek ve yeni bir tane oluşturacaktır.

Bundan sonra, iki sütun oluşturacaktır: biri saat ve diğeri metin dosyasının içindeki sıcaklık için.

Bundan sonra, yukarıdaki Şekilde gösterildiği gibi LCD ekranda saat ve sıcaklık görüntülenecektir.

Bundan sonra, kod akışı aşağıdaki program bloğunu yürütecektir.

if(ölçü_işlem == 1)

{ updateTemp(); bayt contMin = 0, contSaat = 0; DS1307.getDate(DataTime); gerçekMin = VeriZamanı[5]; //------------------------------------------------ --------- Dakikaları Say ------------------------------------------ ------------------- if(actualMin != öncekiMin) { contMin++; öncekiMin = gerçekMin; } if(contMin == 5) { sprintf(times, "%02d:%02d ", DataTime[4], DataTime[5]); sensörler.requestTemperatures(); float TempSensor = sensor.getTempCByIndex(0); myFile.print(kez); myFile.println(TempSensor); contMin = 0; } //------------------------------------------------ ------------Saatleri Say ---------------------------------- ---------------------- if(actualHour != öncekiHour) { contHour++; öncekiSaat = gerçekSaat; } if(contHour == 5) { myFile.close(); lcd.clear(); lcd.setCursor(5, 0); lcd.print("Bitti"); lcd.setCursor(5, 1); lcd.print("İşlem"); ölçü_işlem = 0; contSaat = 0; } //----------------------------------------------Şart veri kaydediciyi durdurmak için -----

İlk olarak updateTemp() işlevi yürütülecektir. updateHour() işlevine benzer; ancak her 1 dakikada bir sıcaklığı görüntüler.

Bundan sonra, sistem Gerçek Zamanlı Saatten zaman verilerini toplayacak ve mevcut dakika değerini currentMin değişkeninde saklayacaktır.

Ardından, aşağıda sunulan koşula göre min değişkeninin değişip değişmediğini kontrol edecektir.

if(gerçekMin !=öncekiMin)

{ contMin++; öncekiMin = gerçekMin; }

Bu nedenle mevcut dakika değişkeni bir önceki değerden farklı ise değerde bir değişiklik meydana gelmiş demektir. Bu şekilde koşul doğru olacak ve dakika sayımının değeri artırılacak (contMin) ve mevcut değer artacaktır. önceki değerini saklamak için öncekiMin değişkenine atanacaktır.

Dolayısıyla bu sayının değeri 5'e eşit olduğunda 5 dakika geçmiş demektir ve sistemin yeni bir sıcaklık okuması yapması ve saat ve sıcaklık değerini SD Kart log dosyasına kaydetmesi gerekir.

if(devamMin == 5)

{ sprintf(times, "%02d:%02d ", DataTime[4], DataTime[5]); sensörler.requestTemperatures(); float TempSensor = sensor.getTempCByIndex(0); myFile.print(kez); myFile.println(TempSensor); contMin = 0; }

Bu şekilde Arduino ile sıcaklık sensörü ile hastanın ateşinin izlenmesi 5 saat değerine ulaşana kadar bu işlem tekrarlanacaktır.

Kod kısmı aşağıda gösterilmiştir ve yukarıda sunulan dakika sayısına benzer.

//------------------------------------------------ -----------Saatleri Say -------------------------------------- ---------------------

if(actualHour !=öncekiSaat) { contHour++; öncekiSaat = gerçekSaat; } if(contHour == 5) { myFile.close(); lcd.clear(); lcd.setCursor(5, 0); lcd.print("Bitti"); lcd.setCursor(5, 1); lcd.print("İşlem"); ölçü_işlem = 0; contSaat = 0; }

5 saatlik izleme süresine ulaştıktan sonra sistem log dosyasını kapatacak ve kullanıcıya "Bitti İşlemi" mesajını sunacaktır.

Ayrıca kullanıcı, veri kaydını durdurmak için Tamam/Duraklat düğmesine basabilir. Bu gerçekleştiğinde, aşağıdaki kod bloğu yürütülecektir.

//-------------------------------------------------Şart veri kaydediciyi durdur -------------------------------------------------- ---

if(tamam == 1) { myFile.close(); lcd.clear(); lcd.setCursor(6, 0); lcd.print("Durdurma"); lcd.setCursor(5, 1); lcd.print("İşlem"); ölçü_işlem = 0; gecikme(2000); lcd.clear(); DS1307.getDate(DataTime); sprintf(times, "%02d:%02d", DataTime[4], DataTime[5]); lcd.setCursor(5, 0); lcd.print(kez); lcd.setCursor(0, 1); lcd.print("1-M 2-H 3-O/P"); }

9. Adım:

resim
resim

Ardından sistem dosyayı kapatacak ve Şekil 8'de gösterildiği gibi "İşlem Durduruldu" mesajını sunacaktır.

Adım 10:

resim
resim

Bundan sonra sistem, Şekil 9'da gösterildiği gibi zaman ekranını ve menü seçeneklerini yazdıracaktır.

Adım 11: Arduino ile SD Kart Modül Verilerine Erişim

Arduino ile SD Kart Modül Verilerine Erişim
Arduino ile SD Kart Modül Verilerine Erişim

Arduino ile sıcaklık sensörü ile JLCPCB Datalogger'ın izlenmesi işlemi tamamlandıktan sonra hafıza kartının çıkartılması ve bilgisayardaki verilere ulaşılması gerekmektedir.

Verileri daha kaliteli görüntülemek ve analiz etmek için, metin dosyasının tüm bilgilerini Excel'e aktarın / kopyalayın. Bundan sonra, grafikleri çizebilir ve elde edilen sonuçları analiz edebilirsiniz.

Adım 12: Sonuç

Arduino ile sıcaklık sensörlü JLCPCB Veri Kaydedici, sıcaklığı ölçmenin yanı sıra, hastanın belirli bir süre boyunca sıcaklık davranışı hakkında bilgi kaydetmemizi sağlar.

Depolanan bu verilerle COVID 19 ile enfekte olan hastanın vücut ısısının nasıl davrandığını analiz etmek ve anlamak mümkün.

Ek olarak, sıcaklık seviyesini değerlendirmek ve değerini bir tür ilaç uygulamasıyla ilişkilendirmek mümkündür.

Bu nedenle, bu veriler aracılığıyla, Arduino için sıcaklık sensörlü JLCPCB Veri Kaydedici, hastaların davranışlarının incelenmesinde doktorlara ve hemşirelere yardımcı olmayı amaçlamaktadır.

Son olarak, projenin gelişimini desteklediği için JLCPCB şirketine teşekkür ediyor ve bunu kullanabileceğinizi umuyoruz

Tüm dosyalar herhangi bir kullanıcı tarafından ücretsiz olarak indirilebilir ve kullanılabilir.

Önerilen: