Sistem Pengingat Jarak Aman Berbasis Arduino untuk COVID-19
Tentang Proyek Ini
Secara wajar, pendekatan paling andal untuk memperlambat penyebaran coronavirus adalah menjaga jarak dari orang lain; pencegahan lebih baik daripada pengobatan. Namun, akan mengganggu untuk menoleh setiap tiga puluh detik dan melihat apakah ada orang mendekati Anda. Akan sangat membantu jika ada perangkat yang bisa memperingatkan orang lain untuk menjaga jarak dari Anda. Itulah tujuan di balik proyek ini: untuk memperingatkan orang lain untuk menjaga jarak 2 meter dari Anda. Ini adalah 2-in-1 karena termistor tidak hanya digunakan untuk menambahkan akurasi pada pengukuran jarak (kecepatan suara berubah tergantung pada suhu) tetapi juga berarti bahwa – dengan menggunakan tombol atau sensor sentuh untuk beralih antara mode – perangkat dapat memiliki dua mode: memperingatkan jika seseorang mendekati Anda (Mode 1) dan mengukur suhu serta jarak (Mode 2). Mode pengukuran menampilkan suhu dan jarak pada LCD.
Bagaimana Cara Kerjanya?
- Arduino mengukur suhu.
- Suhu digunakan untuk menghitung jarak dengan akurasi yang lebih baik.
Jika Arduino pada Mode 1:
- Jika jarak antara 2m dan 1m, lampu latar LCD menyala dan LCD menampilkan "Please keep away" dan seberapa jauh orang tersebut.
- Jika jarak 1m - 50cm lampu latar LCD berkedip dan LCD menampilkan "Keep away"
- Jika jarak kurang dari 50cm lampu latar menyala dan mati dua kali per detik dan LCD menampilkan "STAY AWAY!"
Jika Arduino pada Mode 2, LCD menampilkan jarak di atas dan suhu di bawah layar.
Untuk melindungi komponen dari hujan, saya memasang separuh botol plastik yang dapat dinaikkan saat hujan.
Perangkat dapat dilekatkan (dengan dua potong tali) dan mudah dilepas dari bawah ransel.
Bagaimana Cara Membuatnya?
Hubungkan komponen sesuai dengan skema rangkaian di bawah ini.
Setelah selesai, impor library di bawah bagian bernama 'Code' – yang dapat Anda lakukan dengan (asumsi Anda telah membuka Arduino IDE) pergi ke 'Sketch' —> 'Include Library' —> 'Add .ZIP Library...' dan memilih library (yang harus berupa file .zip). Keduanya diperlukan agar kode berfungsi.
Setelah semuanya selesai, Anda dapat mengunggah kode di bawah ini.
Kode
Kode
#include <HCSR04.h> #include <LiquidCrystal.h> #define trigPin 7 #define echoPin 6 #define buzzer 9 #define backlight 10 LiquidCrystal lcd(12, 11, 5, 4, 3, 8); UltraSonicDistanceSensor distanceSensor(trigPin, echoPin); int tempReading; double tempK; float tempC; int rounded; int temp_round; volatile boolean modes = 0; double distance; void setup() { lcd.begin(16, 2); attachInterrupt(0, changeMode, FALLING); pinMode(2, INPUT); pinMode(buzzer, OUTPUT); pinMode(backlight, OUTPUT); digitalWrite(backlight, HIGH); backlightOn(); } void loop() { tempReading = analogRead(A0); tempK = log(10000.0 * ((1024.0 / tempReading - 1))); tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK )) * tempK ); tempC = tempK - 273.15; distance = distanceSensor.measureDistanceCm(tempC); temp_round = round(tempC); if (modes == 1) { backlightOn(); if (distance >= 300 || distance <= 0) { rounded = 0; lcd.clear(); lcd.print("Out of range"); lcd.setCursor(0, 1); lcd.print("Temperature:" + String(temp_round) + " C"); } else { rounded = round(distance); lcd.clear(); lcd.print("Distance: "); lcd.print(rounded); lcd.print(" cm"); lcd.setCursor(0, 1); lcd.print("Temperature:" + String(temp_round) + " C"); } } else { if (distance >= 300 || distance <= 0) { rounded = 0; lcd.clear(); backlightOff(); } else { rounded = round(distance); if (distance >= 200) { backlightOff(); lcd.clear(); } else if (distance <= 200 && distance > 100) { backlightOn(); lcd.clear(); lcd.print("Please keep away"); lcd.setCursor(0, 1); lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm"); } else if (distance <= 100 && distance > 50) { backlightOn(); lcd.clear(); lcd.print("Keep away"); lcd.setCursor(0, 1); lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm"); delay(200); buzz(); backlightOff(); delay(100); unbuzz(); backlightOn(); delay(100); } else if (distance <= 50) { backlightOn(); lcd.clear(); lcd.print("STAY AWAY!"); lcd.setCursor(0, 1); lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm"); delay(200); buzz(); backlightOff(); delay(200); unbuzz(); backlightOn(); delay(200); buzz(); backlightOff(); delay(200); unbuzz(); backlightOn(); } } } delay(700); } void changeMode() { modes = !modes; } void backlightOn() { digitalWrite(backlight, HIGH); } void backlightOff() { digitalWrite(backlight, LOW); } void buzz() { digitalWrite(buzzer, HIGH); } void unbuzz() { digitalWrite(buzzer, LOW); } arduino-lib-hc-sr04-master.zip
https://github.com/Martinsos/arduino-lib-hc-sr04
LiquidCrystal.zip
https://github.com/arduino-libraries/LiquidCrystal