Isi kandungan:

Sensor Suhu untuk Arduino Diterapkan untuk COVID 19: 12 Langkah (dengan Gambar)
Sensor Suhu untuk Arduino Diterapkan untuk COVID 19: 12 Langkah (dengan Gambar)

Video: Sensor Suhu untuk Arduino Diterapkan untuk COVID 19: 12 Langkah (dengan Gambar)

Video: Sensor Suhu untuk Arduino Diterapkan untuk COVID 19: 12 Langkah (dengan Gambar)
Video: DIY Temperature Thermal Gun | MLX90614 Contactless Infrared Temperature Sensor with Arduino 2024, November
Anonim
Sensor Suhu untuk Arduino Diterapkan untuk COVID 19
Sensor Suhu untuk Arduino Diterapkan untuk COVID 19

Sensor suhu untuk Arduino adalah elemen asas ketika kita ingin mengukur suhu pemproses tubuh manusia.

Sensor suhu dengan Arduino mesti bersentuhan atau dekat untuk menerima dan mengukur tahap panas. Begitulah termometer berfungsi.

Peranti ini sangat digunakan untuk mengukur suhu badan orang sakit, kerana suhu adalah salah satu faktor pertama yang berubah dalam tubuh manusia apabila terdapat kelainan atau penyakit.

Salah satu penyakit yang mengubah suhu badan manusia ialah COVID 19. Oleh itu, kami menunjukkan gejala utama:

Batuk Keletihan Kesukaran bernafas (Kes teruk) Demam Demam adalah gejala yang ciri utamanya adalah peningkatan suhu badan. Dalam penyakit ini, kita perlu sentiasa memantau gejala ini.

Oleh itu, kami akan mengembangkan projek untuk memantau suhu dan menyimpan data ini pada kad memori melalui JLCPCB Datalogger menggunakan sensor suhu dengan Arduino.

Oleh itu, dalam artikel ini anda akan belajar:

  • Bagaimana JLCPCB Datalogger dengan sensor suhu dengan Arduino?
  • Bagaimana berfungsi sensor suhu dengan Arduino.
  • Bagaimana cara kerja sensor suhu DS18B20 dengan Arduino
  • Gunakan butang dengan pelbagai fungsi.

Seterusnya, kami akan menunjukkan kepada anda bagaimana anda akan mengembangkan JLCPCB Datalogger anda menggunakan sensor suhu Arduino.

Bekalan

Arduino UNO

Papan Litar Bercetak JLCPCB

Sensor Suhu DS18B20

Arduino Nano R3

Pelompat

Paparan LCD 16 x 2

Suis butang tekan

Perintang 1kR

Modul Kad SD untuk Arduino

Langkah 1: Pembinaan JLCPCB Datalogger Dengan Temperature Sensor With Arduino

Pembinaan JLCPCB Datalogger Dengan Sensor Suhu Dengan Arduino
Pembinaan JLCPCB Datalogger Dengan Sensor Suhu Dengan Arduino

Seperti yang telah disebutkan sebelumnya, proyek ini terdiri dari membuat JLCPCB Datalogger dengan Temperature Sensor dengan Arduino, dan melalui data ini, kita dapat memantau suhu pasien yang dirawat.

Oleh itu, litar ditunjukkan dalam Rajah di atas.

Oleh itu, seperti yang anda lihat, litar ini mempunyai sensor suhu DS18B20 dengan Arduino, yang bertanggungjawab untuk mengukur bacaan suhu pesakit.

Sebagai tambahan, Arduino Nano akan bertanggungjawab untuk mengumpulkan data ini dan menyimpannya pada kad memori Modul Kad SD.

Setiap maklumat akan disimpan dengan masa masing-masing, yang akan dibaca dari Modul RTC DS1307.

Oleh itu, agar data sensor suhu dengan Arduino disimpan, pengguna mesti melakukan proses tersebut melalui Menu Kawalan dengan LCD 16x2.

Langkah 2:

Imej
Imej

Setiap butang bertanggungjawab untuk mengendalikan pilihan, seperti yang ditunjukkan pada layar LCD 16x2 pada Gambar 2.

Setiap pilihan bertanggung jawab untuk melakukan fungsi dalam sistem, seperti yang ditunjukkan di bawah.

  • Pilihan M bertanggungjawab untuk memulakan pengukuran dan rakaman data pada Kad Memori.
  • Pilihan H bertanggungjawab untuk menyesuaikan waktu sistem.
  • Pilihan O / P digunakan untuk mengesahkan kemasukan data dalam sistem atau untuk menjeda penulisan data ke kad memori.

Untuk memahami proses kawalan sistem, kami akan memberikan kod di bawah ini dan membincangkan sistem kawalan langkah demi langkah JLCPCB Datalogger dengan Temperature Sensor dengan Arduino.

#include // Perpustakaan dengan semua fungsi Sensor DS18B20

#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); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // Pin Digital untuk menyambungkan Sensor DS18B20 // Tentukan uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); Sensor suhu Dallas (& oneWire); Sensor DeviceAddress1; Fail myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 ukuran bool = 0, adjusthour = 0, ok = 0; pengukuran bool_state = 0, adjusthour_state = 0, ok_state = 0; pengukuran bool_process = 0, adjust_process = 0; byte sebenarnyaMin = 0, sebelumnyaMin = 0; byte sebenarHour = 0, sebelumnyaHour = 0; bait minUpdate = 0; int pinoSS = 10; // Pin 53 untuk Mega / Pin 10 untuk UNO int DataTime [7]; batal kemas kiniHour () {DS1307.getDate (DataTime); jika (DataTime [5]! = minUpdate) {sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (kali); minUpdate = DataTime [5]; }} batal updateTemp () {DS1307.getDate (DataTime); jika (DataTime [5]! = minUpdate) {sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("Suhu:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); terapung TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} batal persediaan () {Serial.begin (9600); DS1307. bermula (); sensor.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Sistem Temp"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); kelewatan (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Penyetempatan Sensor berjaya!"); Serial.print (sensor.getDeviceCount (), DEC); Serial.println ("Sensor"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("Kad SD untuk para uso."); // Imprime na tela} lain {Serial.println ("Falha na inicialização do SD Card."); kembali; } DS1307.getDate (DataTime); lcd.clear (); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); } gelung kosong () {updateHour (); // Butang membaca menyatakan ukuran = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); jika (ukuran == 0 && mengukur_state == 1) {mengukur_state = 0; } jika (ukuran == 1 && mengukur_state == 0 && mengukur_proses == 0) {ukuran_proses = 1; mengukur_state = 1; if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } lain {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } kelewatan (500); myFile.print ("Jam:"); myFile.println ("Suhu"); DS1307.getDate (DataTime); sebenarnyaMin = sebelumnyaMin = DataTime [5]; sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("Suhu:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); terapung TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); } jika (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } jika (adjusthour == 1 && adjusthour_state == 0 && mengukur_process == 0) {adjust_process = 1; } // ----------------------------------------------- --- Proses Pengukuran --------------------------------------------- -------------- jika (mengukur_proses == 1) {updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); sebenarnyaMin = DataTime [5]; // ------------------------------------------------ --------- Hitung Minit --------------------------------------- ------------------- if (sebenarMin! = sebelumnyaMin) {contMin ++; sebelumnyaMin = sebenarMin; } if (contMin == 5) {sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); terapung TempSensor = sensor.getTempCByIndex (0); myFile.print (kali); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Hitung Jam ------------------------------------ ---------------------- jika (sebenarHour! = sebelumnyaHour) {contHour ++; sebelumnyaHour = sebenarHour; } jika (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Selesai"); lcd.setCursor (5, 1); lcd.print ("Proses"); mengukur_proses = 0; kontur = 0; } // ---------------------------------------------- Keadaan untuk menghentikan pengecas ---------------------------------------------- ---- jika (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Dihentikan"); lcd.setCursor (5, 1); lcd.print ("Proses"); mengukur_proses = 0; kelewatan (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }} // ---------------------------------------------- ------- Laraskan Waktu ----------------------------------------- ---------------------- // Laraskan Jam jika (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Laraskan Jam:"); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); // Laraskan Jam lakukan {mengukur = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); jika (ukuran == 0 && mengukur_state == 1) {mengukur_state = 0; } jika (ukuran == 1 && mengukur_state == 0) {DataTime [4] ++; jika (DataTime [4]> 23) {DataTime [4] = 0; } mengukur_state = 1; sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } jika (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; jika (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } jika (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); sesuaikan_proses = 0; }} sementara (ok! = 1); } // ----------------------------------------------- ------- Akhir Laraskan Jam ---------------------------------------- -------------------}

Pertama, kami menentukan semua perpustakaan untuk mengendalikan modul dan menyatakan pemboleh ubah yang digunakan semasa memprogram JLCPCB Datalogger dengan sensor suhu untuk Arduino. Blok kod ditunjukkan di bawah.

Langkah 3:

#include // Perpustakaan dengan semua fungsi Sensor DS18B20

#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); // Configurando o endereco do LCD 16x2 para 0x27 #definisi ONE_WIRE_BUS 8 // Pin Digital untuk menyambungkan Sensor DS18B20 // Tentukan uma instancia do oneWire para comunicacao com o sensor OneWire oneWire (ONE_WIRE_BUS); Sensor suhu Dallas (& oneWire); Sensor DeviceAddress1; Fail myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 ukuran bool = 0, adjusthour = 0, ok = 0; pengukuran bool_state = 0, adjusthour_state = 0, ok_state = 0; pengukuran bool_process = 0, adjust_process = 0; byte sebenarnyaMin = 0, sebelumnyaMin = 0; byte sebenarHour = 0, sebelumnyaHour = 0; bait minUpdate = 0; int pinoSS = 10; // Pin 53 untuk Mega / Pin 10 untuk UNO int DataTime [7];

Selepas ini, kita mempunyai fungsi penyediaan yang tidak sah. Fungsi ini digunakan untuk mengkonfigurasi pin dan inisialisasi perangkat, seperti yang ditunjukkan di bawah.

persediaan tidak sah ()

{Serial.begin (9600); DS1307. bermula (); sensor.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Sistem Temp"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); kelewatan (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("Penyetempatan Sensor berjaya!"); Serial.print (sensor.getDeviceCount (), DEC); Serial.println ("Sensor"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("Kad SD untuk para uso."); // Imprime na tela} lain {Serial.println ("Falha na inicialização do SD Card."); kembali; } DS1307.getDate (DataTime); lcd.clear (); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }

Pertama, komunikasi bersiri, jam masa nyata dan sensor suhu untuk Arduino DS18B20 dimulakan. Setelah memulakan dan menguji peranti, mesej dengan pilihan menu dicetak pada skrin LCD 16x2. Skrin ini ditunjukkan dalam Rajah 1.

Langkah 4:

Selepas itu, sistem membaca jam dan mengemas kini nilainya dengan memanggil fungsi updateHour. Oleh itu, fungsi ini mempunyai tujuan untuk menunjukkan nilai setiap jam setiap minit. Blok kod fungsi ditunjukkan di bawah.

batal kemas kiniHour ()

{DS1307.getDate (DataTime); jika (DataTime [5]! = minUpdate) {sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (kali); minUpdate = DataTime [5]; }}

Langkah 5:

Imej
Imej

Selain mengemas kini jam, pengguna dapat memilih salah satu dari tiga butang untuk memantau pesakit dengan sensor suhu dengan Arduino. Litar ditunjukkan dalam Rajah di atas.

Langkah 6: Menu Kawalan Datalogger JLCPCB

Menu Kawalan Datalogger JLCPCB
Menu Kawalan Datalogger JLCPCB

Pertama, pengguna mesti memeriksa dan menyesuaikan waktu sistem. Proses ini dilakukan apabila butang kedua ditekan.

Apabila butang ditekan, layar berikut akan muncul, yang ditunjukkan dalam Gambar di atas.

Langkah 7:

Imej
Imej

Dari skrin ini, pengguna dapat memasukkan nilai jam dan minit dari butang yang disambungkan ke pin digital 2 dan 3 dari Arduino. Butang ditunjukkan dalam Gambar di atas.

Bahagian kod untuk mengawal waktu ditunjukkan di bawah.

jika (adjusthour == 0 && adjusthour_state == 1)

{adjusthour_state = 0; } jika (adjusthour == 1 && adjusthour_state == 0 && mengukur_process == 0) {adjust_process = 1; }

Apabila butang jam ditekan dan pemboleh ubah mengukur_proses ditetapkan ke 0, syaratnya akan benar dan pemboleh ubah penyesuaian proses akan ditetapkan ke 1. Pemboleh ubah ukuran_proses digunakan untuk memberi isyarat bahawa sistem sedang memantau suhu. Apabila nilainya 0, sistem akan membolehkan pengguna memasuki menu tetapan masa. Oleh itu, setelah pemboleh ubah adjust_process menerima nilai 1, sistem akan memasuki keadaan pelarasan masa. Blok kod ini ditunjukkan di bawah.

// ------------------------------------------------ ----- Laraskan Waktu ------------------------------------------- --------------------

// Laraskan Jam jika (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Laraskan Jam:"); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); // Laraskan Jam lakukan {mengukur = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); jika (ukuran == 0 && mengukur_state == 1) {mengukur_state = 0; } jika (ukuran == 1 && mengukur_state == 0) {DataTime [4] ++; jika (DataTime [4]> 23) {DataTime [4] = 0; } mengukur_state = 1; sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } jika (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; jika (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; } jika (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); sesuaikan_proses = 0; }} sementara (ok! = 1); }

Dalam keadaan ini, sistem akan memaparkan mesej yang ditunjukkan dalam Gambar 4 dan kemudian menunggu nilai disesuaikan secara dalaman dalam gelung sementara. Semasa menyesuaikan jam, butang-butang ini mempunyai fungsinya berubah, iaitu, mereka adalah pelbagai fungsi.

Ini membolehkan anda menggunakan butang untuk lebih dari satu fungsi dan mengurangkan kerumitan sistem.

Dengan cara ini, pengguna akan menyesuaikan nilai jam dan minit dan kemudian menyimpan data dalam sistem apabila butang Ok ditekan.

Seperti yang anda lihat, sistem akan membaca 3 butang, seperti gambar di bawah.

mengukur = digitalRead (Buttonmeasure);

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

Perhatikan bahawa butang ukuran (Buttonmeasure) telah mengubah fungsinya. Sekarang akan digunakan untuk menyesuaikan nilai jam, seperti yang ditunjukkan di bawah. Dua keadaan berikut adalah serupa dan digunakan untuk menyesuaikan jam dan minit, seperti yang ditunjukkan di atas.

jika (ukuran == 0 && mengukur_state == 1)

{mengukur_state = 0; } jika (ukuran == 1 && mengukur_state == 0) {DataTime [4] ++; jika (DataTime [4]> 23) {DataTime [4] = 0; } mengukur_state = 1; sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); } jika (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; jika (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (kali); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00); adjusthour_state = 1; }

Oleh itu, setiap kali salah satu daripada dua butang ditekan, nilai kedudukan 4 dan 5 vektor DataTime akan diubah dan kedua, nilai-nilai ini akan disimpan dalam memori DS1307.

Selepas penyesuaian, pengguna mesti mengklik butang Ok, untuk menyelesaikan prosesnya. Apabila peristiwa ini berlaku, sistem akan melaksanakan baris kod berikut.

jika (ok == 1)

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

Ia akan memasuki keadaan di atas dan memaparkan mesej jam dan Menu Pilihan kepada pengguna.

Akhirnya, pengguna mesti memulakan proses pemantauan pesakit melalui sensor suhu dengan Arduino JLCPCB Datalogger.

Untuk melakukan ini, pengguna mesti menekan butang pengukuran, yang disambungkan ke pin digital 2.

Kemudian, sistem akan melakukan pembacaan dengan sensor suhu untuk Arduino dan menyimpannya pada kad memori. Kawasan litar ditunjukkan dalam Rajah di atas.

Langkah 8:

Imej
Imej

Oleh itu, apabila butang ditekan, bahagian kod berikut akan dilaksanakan.

jika (ukuran == 0 && mengukur_state == 1)

{mengukur_state = 0; } jika (ukuran == 1 && mengukur_state == 0 && mengukur_proses == 0) {ukuran_proses = 1; mengukur_state = 1; if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } lain {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } kelewatan (500); myFile.print ("Jam:"); myFile.println ("Suhu"); DS1307.getDate (DataTime); sebenarnyaMin = sebelumnyaMin = DataTime [5]; sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("Suhu:"); lcd.setCursor (14, 1); sensor.requestTemperatures (); terapung TempSensor = sensor.getTempCByIndex (0); lcd.print (TempSensor); }

Pada bahagian kod di atas, sistem akan memberikan nilai 1 kepada pemboleh ubah mengukur_proses. Ia bertanggungjawab untuk membiarkan data disimpan pada Kad SD.

Di samping itu, sistem akan memeriksa sama ada fail teks dengan log data ada atau tidak. Sekiranya terdapat fail, sistem akan menghapus dan membuat yang baru untuk menyimpan data.

Selepas itu, ia akan membuat dua lajur: satu untuk jam dan satu untuk suhu di dalam fail teks.

Setelah itu, ia akan memaparkan jam dan suhu di layar LCD, seperti yang ditunjukkan dalam Gambar di atas.

Selepas itu, aliran kod akan melaksanakan blok program berikut.

jika (mengukur_proses == 1)

{kemas kiniTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); sebenarnyaMin = DataTime [5]; // ------------------------------------------------ --------- Hitung Minit --------------------------------------- ------------------- if (sebenarMin! = sebelumnyaMin) {contMin ++; sebelumnyaMin = sebenarMin; } if (contMin == 5) {sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); terapung TempSensor = sensor.getTempCByIndex (0); myFile.print (kali); myFile.println (TempSensor); contMin = 0; } // ----------------------------------------------- ------------ Hitung Jam ------------------------------------ ---------------------- jika (sebenarHour! = sebelumnyaHour) {contHour ++; sebelumnyaHour = sebenarHour; } jika (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Selesai"); lcd.setCursor (5, 1); lcd.print ("Proses"); mengukur_proses = 0; kontur = 0; } // ---------------------------------------------- Keadaan untuk menghentikan pengecas -----

Pertama, fungsi updateTemp () akan dijalankan. Ia serupa dengan fungsi updateHour (); namun, ia memaparkan suhu setiap 1 minit.

Selepas itu, sistem akan mengumpulkan data masa dari Real-Time Clock dan menyimpan nilai minit semasa dalam pemboleh ubah currentMin.

Kemudian, ia akan memeriksa sama ada pemboleh ubah min telah diubah, mengikut keadaan yang ditunjukkan di bawah

jika (sebenarnyaMin! = sebelumnyaMin)

{contMin ++; sebelumnyaMin = sebenarMin; }

Oleh itu, jika pemboleh ubah minit semasa berbeza dengan nilai sebelumnya, ini bermaksud bahawa perubahan nilai telah berlaku. Dengan cara ini, keadaan akan berlaku dan nilai kiraan minit akan meningkat (contMin) dan nilai semasa akan diberikan kepada pemboleh ubah sebelumnyaMin, untuk menyimpan nilai sebelumnya.

Oleh itu, apabila nilai kiraan ini sama dengan 5, itu bermakna 5 minit telah berlalu dan sistem mesti melakukan pembacaan suhu baru dan menyimpan nilai jam dan suhu dalam fail log Kad SD.

jika (contMin == 5)

{sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); sensor.requestTemperatures (); terapung TempSensor = sensor.getTempCByIndex (0); myFile.print (kali); myFile.println (TempSensor); contMin = 0; }

Dengan cara ini, proses ini akan diulang sehingga mencapai nilai 5 jam memantau suhu pesakit dengan sensor suhu dengan Arduino.

Bahagian kod ditunjukkan di bawah dan serupa dengan kiraan minit, yang ditunjukkan di atas.

// ------------------------------------------------ ----------- Kira Jam ------------------------------------- ---------------------

jika (sebenarHour! = sebelumnyaHour) {contHour ++; sebelumnyaHour = sebenarHour; } jika (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Selesai"); lcd.setCursor (5, 1); lcd.print ("Proses"); mengukur_proses = 0; kontur = 0; }

Setelah mencapai pemantauan selama 5 jam, sistem akan menutup fail log dan menyampaikan mesej "Proses Selesai" kepada pengguna.

Sebagai tambahan, pengguna dapat menekan butang Ok / Pause untuk menghentikan rakaman data. Apabila ini berlaku, blok kod berikut akan dijalankan.

// ---------------------------------------------- Syarat ke hentikan pengecas ----------------------------------------------- ---

jika (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Dihentikan"); lcd.setCursor (5, 1); lcd.print ("Proses"); mengukur_proses = 0; kelewatan (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (kali, "% 02d:% 02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (kali); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O / P"); }

Langkah 9:

Imej
Imej

Kemudian, sistem akan menutup fail dan menampilkan pesan "Proses yang Dihentikan", seperti yang ditunjukkan pada Gambar 8.

Langkah 10:

Imej
Imej

Setelah itu, sistem akan mencetak pilihan skrin waktu dan menu, seperti yang ditunjukkan pada Gambar 9.

Langkah 11: Mengakses Data Modul Kad SD Dengan Arduino

Mengakses Data Modul Kad SD Dengan Arduino
Mengakses Data Modul Kad SD Dengan Arduino

Setelah proses pemantauan JLCPCB Datalogger dengan sensor suhu dengan Arduino, perlu mengeluarkan kad memori dan mengakses data di komputer.

Untuk melihat dan menganalisis data dengan kualiti yang lebih baik, eksport / salin semua maklumat fail teks ke Excel. Selepas itu, anda boleh membuat plot grafik dan menganalisis hasil yang diperoleh.

Langkah 12: Kesimpulannya

JLCPCB Datalogger dengan sensor suhu dengan Arduino memungkinkan kami, selain mengukur suhu, untuk mencatat maklumat mengenai tingkah laku suhu pesakit dalam jangka waktu tertentu.

Dengan data yang tersimpan ini, adalah mungkin untuk menganalisis dan memahami bagaimana suhu pesakit yang dijangkiti oleh COVID 19 berkelakuan.

Di samping itu, adalah mungkin untuk menilai tahap suhu dan mengaitkan nilainya dengan penggunaan beberapa jenis ubat.

Oleh itu, melalui data ini, JLCPCB Datalogger dengan sensor suhu untuk Arduino bertujuan untuk membantu doktor dan jururawat dalam mengkaji tingkah laku pesakit.

Akhirnya, kami mengucapkan terima kasih kepada syarikat JLCPCB kerana menyokong pembangunan projek dan berharap anda dapat menggunakannya

Semua fail boleh dimuat turun dan digunakan secara bebas oleh pengguna mana pun.

Disyorkan: