Isi kandungan:
- Bekalan
- Langkah 1: Pembinaan JLCPCB Datalogger Dengan Temperature Sensor With Arduino
- Langkah 2:
- Langkah 3:
- Langkah 4:
- Langkah 5:
- Langkah 6: Menu Kawalan Datalogger JLCPCB
- Langkah 7:
- Langkah 8:
- Langkah 9:
- Langkah 10:
- Langkah 11: Mengakses Data Modul Kad SD Dengan Arduino
- Langkah 12: Kesimpulannya
Video: Sensor Suhu untuk Arduino Diterapkan untuk COVID 19: 12 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
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
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:
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:
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
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:
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:
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:
Kemudian, sistem akan menutup fail dan menampilkan pesan "Proses yang Dihentikan", seperti yang ditunjukkan pada Gambar 8.
Langkah 10:
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
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:
RC Low Pass Filter Aktif Diterapkan dalam Projek Dengan Arduino: 4 Langkah
RC Low Pass Filter Aktif Diterapkan dalam Projek Dengan Arduino: Filter low pass adalah litar elektronik yang sangat baik untuk menyaring isyarat parasit dari projek anda. Masalah umum dalam projek dengan Arduino dan sistem dengan sensor yang berfungsi dekat dengan litar kuasa adalah adanya isyarat "parasit". Mereka
Membaca Suhu Menggunakan Sensor Suhu LM35 Dengan Arduino Uno: 4 Langkah
Membaca Suhu Menggunakan Sensor Suhu LM35 Dengan Arduino Uno: Hai kawan-kawan dalam instruksional ini kita akan belajar bagaimana menggunakan LM35 dengan Arduino. Lm35 adalah sensor suhu yang dapat membaca nilai suhu dari -55 ° C hingga 150 ° C. Ia adalah peranti 3-terminal yang memberikan voltan analog berkadar dengan suhu. Hig
ESP8266 NodeMCU Access Point (AP) untuk Pelayan Web Dengan Sensor Suhu DT11 dan Mencetak Suhu & Kelembapan dalam Penyemak Imbas: 5 Langkah
ESP8266 NodeMCU Access Point (AP) untuk Pelayan Web Dengan Sensor Suhu DT11 dan Mencetak Suhu & Kelembapan di Penyemak Imbas: Hai kawan-kawan dalam kebanyakan projek yang kami gunakan ESP8266 dan di kebanyakan projek kami menggunakan ESP8266 sebagai pelayan laman web sehingga data dapat diakses di sebarang peranti melalui wifi dengan mengakses Pelayan Web yang dihoskan oleh ESP8266 tetapi satu-satunya masalah adalah kita memerlukan penghala yang berfungsi untuk
Termometer Memasak Probe Suhu ESP32 NTP Dengan Pembetulan Steinhart-Hart dan Penggera Suhu .: 7 Langkah (dengan Gambar)
ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm .: Masih dalam perjalanan untuk menyelesaikan " projek akan datang ", " ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm " adalah Instructable yang menunjukkan bagaimana saya menambah probe suhu NTP, piezo b
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): 6 Langkah (dengan Gambar)
SENSOR SUHU DENGAN LCD DAN LED (Membuat Sensor Suhu Dengan LCD dan LED): hai, saya. Ini adalah bacaan suhu dengan reka bentuk saya sendiri, dengan sensor ini dan