Automatic Touchless Sanitizer Dispenser
Ringkasan
Proyek Smart Sanitizer ini merupakan sistem dispenser otomatis berbasis Arduino Uno yang dirancang untuk meningkatkan kebersihan tangan secara efisien dan higienis tanpa perlu kontak fisik. Sistem ini mengintegrasikan beberapa komponen utama, yaitu sensor ultrasonik HC-SR04 sebagai pendeteksi kehadiran tangan, servo SG90 untuk menekan botol sanitizer secara otomatis, sensor IR sebagai validator keluarnya cairan, serta sensor suhu DHT11 untuk memantau kondisi lingkungan secara real-time. Sebagai pelengkap, LED dan buzzer ditambahkan sebagai indikator status yang memberikan umpan balik langsung kepada pengguna LED menyala dan buzzer berbunyi ketika cairan berhasil keluar, sementara bunyi peringatan berbeda akan aktif apabila cairan tidak terdeteksi keluar setelah servo bekerja. Seluruh komponen dihubungkan melalui breadboard dengan pin yang telah ditentukan secara spesifik, menjadikan sistem ini tidak hanya fungsional dan responsif, tetapi juga mudah dikembangkan lebih lanjut untuk kebutuhan yang lebih kompleks.
Latar Belakang
Kebersihan tangan di tempat umum masih sering diabaikan, salah satunya karena dispenser konvensional mengharuskan sentuhan langsung yang justru bisa menjadi media penyebaran kuman. Melihat permasalahan ini, proyek Smart Sanitizer dikembangkan sebagai solusi praktis berbasis Arduino Uno yang bekerja secara otomatis tanpa perlu kontak fisik sama sekali. Pengguna cukup mendekatkan tangan, servo langsung menekan botol, dan sanitizer keluar dengan sendirinya. Sistem ini juga dilengkapi sensor suhu, LED, dan buzzer sebagai indikator real-time apakah cairan berhasil keluar atau tidak menjadikannya lebih dari sekadar dispenser biasa.
Tujuan
Manfaat
Smart Sanitizer ini hadir untuk membuat kebiasaan menjaga kebersihan tangan jadi lebih mudah dan higienis. Tanpa perlu menyentuh apapun, pengguna cukup mendekatkan tangan dan servo langsung bekerja secara otomatis. Takaran cairan yang keluar pun konsisten setiap kali digunakan, jadi tidak boros dan lebih efisien. LED dan buzzer memberikan feedback langsung pengguna langsung tahu apakah sanitizer berhasil keluar atau tidak, bahkan bunyi buzzer yang berbeda bisa jadi peringatan dini ketika isi botol mulai menipis sebelum benar-benar habis. Sensor suhu yang ikut terpasang juga membantu memastikan kondisi lingkungan tetap ideal untuk penyimpanan cairan. Alat ini cocok dipasang di berbagai tempat seperti sekolah, kantor, klinik, atau fasilitas umum lainnya yang membutuhkan solusi kebersihan yang praktis sekaligus andal.
Alat dan Bahan
Alat: Arduino Uno, Ultrasonic HC-SR04, Servo SG90, Sensor suhu LM35/DHT11, IR sensor, LED, Buzzer, Resistor 220ohm, DHT11, Breadboard, kabel, obeng, tang, gunting, penggaris.
Bahan: Botol, handsanitizer, kardus, lem/double tape.
Metodologi
Step 1 Perencanaan Tentukan kebutuhan sistem: deteksi tangan otomatis, pengeluaran cairan, validasi cairan keluar, monitoring suhu, serta indikator LED dan buzzer. Setelah itu buat skema rangkaian, peta pin Arduino, dan diagram alir sebagai panduan sebelum masuk ke pemrograman.
Step 2 Perakitan dan Pemrograman Rakit semua komponen sesuai skema yang sudah dibuat, mulai dari sensor ultrasonik untuk mendeteksi tangan di jarak 5–15 cm, servo untuk menekan pompa, sensor IR untuk memvalidasi cairan keluar, hingga LED dan buzzer. Pemrograman dilakukan di Arduino IDE dengan alur kerja seperti ini:
- Tangan didekatkan, sensor ultrasonik dan sensor dht aktif mendeteksi
- Servo menekan botol untuk mengeluarkan cairan
- Sensor IR mengecek apakah cairan benar-benar keluar, Jika cairan keluar LED merah menyala ketika ada objek dekat sedangkan LED hijau menyala ketika tidak ada objek. Sedangkan buzzer akan berbunyi ketika ada objek mendekat.
Step 3 Pengujian dan Dokumentasi Setiap komponen diuji satu per satu terlebih dahulu, baru kemudian diuji secara keseluruhan dalam berbagai skenario nyata. Hasil pengujian dianalisis, diperbaiki jika perlu, lalu didokumentasikan sebagai laporan akhir proyek.
Desain Sistem


Skenario Pengujian
Hasil Pengujian
Kesimpulan
Source Code / Pseudocode
#include <Servo.h>
#include <DHT.h>
// ===== PIN =====
const int trigPin = 10;
const int echoPin = 11;
const int irPin = 2;
const int ledMerah = 6;
const int ledHijau = 5;
const int buzzer = 7;
#define DHTPIN 4
#define DHTTYPE DHT22
Servo myServo;
DHT dht(DHTPIN, DHTTYPE);
int duration;
int distance;
bool sudahGerak = false;
void setup() {
myServo.attach(12);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(irPin, INPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledHijau, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
dht.begin();
}
void loop(){
distance = calculateDistance();
int irState = digitalRead(irPin);
// 👉 kondisi objek
bool adaObjek = (distance < 5 || irState == HIGH);
// ===== LED + BUZZER =====
if(adaObjek) {
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, LOW);
// buzzer bunyi
digitalWrite(buzzer, HIGH);
}
else {
digitalWrite(ledMerah, LOW);
digitalWrite(ledHijau, HIGH);
// buzzer mati
digitalWrite(buzzer, LOW);
}
// ===== SERVO (1x) =====
if(adaObjek && !sudahGerak) {
myServo.write(160);
delay(500);
myServo.write(0);
delay(1000);
sudahGerak = true;
}
Serial.print("Jarak: ");
Serial.print(distance);
Serial.print(" | IR: ");
Serial.println(irState);
delay(200);
}
// ===== ULTRASONIK =====
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH, 30000);
if(duration == 0) return 999;
return duration * 0.034 / 2;
}