Tentang proyek ini
Krisis Pandemi Global Saat Ini
Seperti yang direkomendasikan oleh Organisasi Kesehatan Dunia (WHO) untuk mencegah penyebaran infeksi termasuk "mencuci tangan secara teratur, menutup mulut dan hidung saat batuk dan bersin, memasak daging dan telur hingga matang. Hindari kontak dekat dengan siapa pun yang menunjukkan gejala penyakit pernapasan seperti batuk dan bersin".
Sudah menjadi praktik biasa saat bepergian melalui bandara untuk memiliki pemindai termal untuk menemukan kemungkinan pelancong yang terinfeksi.
Detektor Termal Buatan Rumah
Sementara kita ditantang untuk melanjutkan pekerjaan kita dari jarak jauh sebagai lapisan perlindungan dalam situasi saat ini, kita harus menghindari kontak dengan orang lain sampai situasi terkendali.
Ide utamanya adalah membuat detektor kamera termal yang dapat dengan mudah dipasang di luar rumah /lab /kantor /shuttle... sehingga Anda dapat terlindungi di zona aman.
Sensor Masukan
"Berlawanan dengan sensor termal konvensional yang hanya mengukur suhu titik kontak tertentu, Grid-EYE, berdasarkan teknologi MEMS Panasonic, dapat mengukur suhu seluruh area yang ditentukan tanpa kontak apa pun; dengan kata lain, ini adalah "sensor array thermopile tanpa kontak". 64 piksel menghasilkan pengukuran suhu yang akurat pada sudut pandang 60° yang disediakan oleh lensa silikon. Grid-EYE menggunakan antarmuka komunikasi I²C, memungkinkan pengukuran suhu pada kecepatan 1 atau 10 frame/dtk. Fungsi interupsi juga tersedia."
- Dimensi:11,6 x 4,3 x 8,0 mm (P x T x P)
- Tegangan operasi:3.3V atau 5.0V (tergantung P/N)
- Rentang suhu objek pengukuran:-20°C hingga 100°C (tergantung P/N)
- Bidang pandang (FoV):60°
- Jumlah piksel:64 (vertikal 8 x horizontal 8)
- Antarmuka eksternal:I²C (mode cepat)
- Kecepatan bingkai:10 bingkai/dtk atau 1 bingkai/dtk
Apa yang membuat sensor ini sempurna untuk deteksi manusia dari jarak 1,5 meter dan memiliki target dalam jarak 5/7 meter.
Kami juga membutuhkan pemicu karena kami juga ingin mengaktifkan kamera termal ketika gerakan terdeteksi. Oleh karena itu, sensor PIR adalah pilihan yang sempurna.
"Sensor PIR mendeteksi manusia yang bergerak dalam jarak sekitar 10m dari sensor. Ini adalah nilai rata-rata, karena jangkauan deteksi sebenarnya adalah antara 5m dan 12m. PIR pada dasarnya terbuat dari sensor listrik piro, yang dapat mendeteksi tingkat radiasi inframerah. . Untuk berbagai proyek atau item penting yang perlu ditemukan ketika seseorang telah meninggalkan atau memasuki area tersebut. Sensor PIR luar biasa, mereka adalah kontrol datar dan sedikit usaha, memiliki rentang lensa lebar, dan mudah untuk digunakan."
Tambahkan hal-hal bersama-sama seperti di bawah ini:
Setelah konektivitas selesai (lihat diagram di bawah), siapkan kotak untuk sensor input sebagai berikut:
Keluaran Visual &Suara
Kami ingin mendapatkan umpan balik suhu instan dengan dan LED RGB dasar yang akan diprogram untuk menampilkan beberapa warna seperti yang kami dapatkan di kamera termal.
Saat suhu melebihi 37'C normal, kami akan menyalakan alarm suara untuk memberi tahu Anda tentang kemungkinan bahaya.
Tes akhir:
Saat suhu normal dan keberadaan terdeteksi maka kami menunjukkan lampu hijau
// warna yang berbeda dapat dibuat
if (tempC<16) {
setColor(0, 0, 255); // biru
} else if(tempC <15) {
setColor(80, 0, 80); // cyan
} else if(tempC <30) {
setColor(0, 255, 255); // aqua
} else if(tempC <36) {
setColor(0, 255, 0); // hijau
} else if(tempC <38) {
setColor(255, 255, 0); // kuning
} else if(tempC <39) {
setColor(255, 20, 20); // magenta
}
Untuk memicu alarm suara dan warna merah, ujilah dengan benar menggunakan setrika uap untuk pakaian, seperti yang ditemukan kemudian saat melakukan beberapa pekerjaan rumah tangga.
Panjang umur dan sejahtera
Atau Anda dapat melihat suhu di antarmuka NodeJS dan mendapatkan data dari Arduino Anda pada koneksi serial dengan aplikasi terminal ini.
Rencana selanjutnya adalah memperluas integrasi data dengan platform das dan memulai pemodelan.
Ikuti streaming langsung di @dasData
https://dasdata.co/camera/
Semoga Anda akan aman di mana pun Anda berada selama periode ini di Galaxy!
Kode
pencegahan koronaC/C++
#include #include GridEYE grideye;String heatData;int ledState;unsigned long meettime; uint16_t detik =3142; // maks ==65535int bluePin =8;int greenPin =9;int redPin =10;int buzzPin =11; // pilih pin untuk LEDint inputPin =12; // pilih pin input (untuk sensor PIR)int pirState =LOW; // kita mulai, dengan asumsi tidak ada gerakan yang terdeteksiint val =0; // variabel untuk membaca pin statusfloat tempC; void setup() { pinMode(redPin, OUTPUT); pinMode(pin hijau, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(buzzPin, OUTPUT); // mendeklarasikan LED sebagai output pinMode(inputPin, INPUT); // mendeklarasikan sensor sebagai input // Mulai objek I2C pilihan Anda Wire.begin(); // Library mengasumsikan "Wire" untuk I2C tetapi Anda dapat meneruskan sesuatu yang lain dengan begin() jika Anda menyukai grideye.begin(); Serial.begin(115200); } void loop() { char menerimaVal; if(Serial.available()> 0) { acceptVal =Serial.read(); if(receiveVal =='1') { ledState =1; } else ledState =0; } val =digitalRead(inputPin); // membaca nilai input if (val ==HIGH) { // memeriksa apakah input HIGH // digitalWrite(ledPin, HIGH); // nyalakan LED if (pirState ==LOW) { meettime =millis(); Serial.println("Gerakan terdeteksi!"); // Kami hanya ingin mencetak pada perubahan output, bukan menyatakan pirState =HIGH; getHeatmap(); if (tempC<16) { setColor(0, 0, 255); // biru } else if(tempC <16) { setColor(80, 0, 80); // cyan } else if(tempC <20) { setColor(0, 255, 255); // aqua } else if(tempC <24) { setColor(0, 255, 0); // hijau } else if(tempC <28) { setColor(255, 255, 0); // kuning } else if(tempC <37) { setColor(255, 20, 20); // magenta } // membaca byte yang masuk dari klien:// char thisChar =client.read(); // echo byte kembali ke klien:// char msg[10] =""; Serial.println(data panas); penundaan (1500); } } else { // digitalWrite(pin led, RENDAH); // matikan LED jika (pirState ==HIGH){ // kita baru saja mematikan noTone(buzzPin); // Hentikan suara... Serial.println("Gerakan berakhir!"); setWarna(0, 0, 0); // tidak ada pertemuan =0; // Kami hanya ingin mencetak perubahan output, bukan menyatakan pirState =LOW; } } }void getHeatmap(){ // Mencetak nilai suhu setiap piksel dalam floating point derajat Celcius // dipisahkan dengan koma heatData =""; float sebelumnyaVal =0; for (unsigned char i =0; i <64; i++) { if(previousVal>37) { // kita baru saja mengaktifkan Serial.println("High temperature!"); setWarna(255, 0, 0); // nada merah(buzzPin, 1000); // Kirim sinyal suara 1KHz... } tempC =grideye.getPixelTemperature(i); heatData +=tempC + String(","); sebelumnyaVal =tempC; } // Akhiri setiap frame dengan linefeed Serial.println(); // Beri waktu Pemrosesan untuk mengunyah}void setColor(int red, int green, int blue){ #ifdef COMMON_ANODE red =255 - red; hijau =255 - hijau; biru =255 - biru; #endif analogWrite(redPin, red); analogWrite(pin hijau, hijau); analogWrite(bluePin, biru); }
pencegahan korona
Kode untuk Arduino IDE, Visual Studio 2019, NodeJS https://github.com/dasdata/coronafence Skema