Di bawah ini Anda akan menemukan semua komponen yang diperlukan untuk menyelesaikan tutorial Arduino ini. Setiap komponen mencakup tautan afiliasi ke berbagai marketplace tempat Anda dapat membelinya.
Gambar | Komponen | Deskripsi | Harga Terbaik | Beli |
---|---|---|---|---|
![]() | Arduino Uno Mikrokontroler | Mikrokontroler populer untuk berbagai proyek elektronik. | Rp 58.980
di Shopee | |
![]() | Sensor Suara KY-038 Sensor | Sensor untuk mendeteksi suara seperti tepuk tangan. | Rp 10.000
di Shopee | |
![]() | Relay Module Output | Modul untuk mengendalikan perangkat listrik berdaya tinggi seperti lampu. | Rp 7.200
di Shopee | |
![]() | Lampu Output | Beban listrik yang dikendalikan oleh relay, misalnya lampu bohlam. | Rp 23.400
di Shopee | |
![]() | Mangkok Lampu Aksesoris | Aksesoris pelindung dan penyangga lampu. | Rp 3.380
di Shopee | |
![]() | Kabel Jumper Male-to-Female Kabel | Kabel untuk menghubungkan komponen ke Arduino. | Rp 9.980
di Shopee |
Mikrokontroler populer untuk berbagai proyek elektronik.
Sensor untuk mendeteksi suara seperti tepuk tangan.
Modul untuk mengendalikan perangkat listrik berdaya tinggi seperti lampu.
Beban listrik yang dikendalikan oleh relay, misalnya lampu bohlam.
Mikrokontroler populer untuk berbagai proyek elektronik.
Bandingkan harga di berbagai marketplace
Sensor untuk mendeteksi suara seperti tepuk tangan.
Modul untuk mengendalikan perangkat listrik berdaya tinggi seperti lampu.
Beban listrik yang dikendalikan oleh relay, misalnya lampu bohlam.
Aksesoris pelindung dan penyangga lampu.
Kabel untuk menghubungkan komponen ke Arduino.
Bandingkan harga di berbagai marketplace
// Definisi pin
const int soundSensorPin = 2; // Pin untuk output Digital (DO) dari sensor suara LM393
const int relayPin = 3; // Pin untuk mengontrol relay
// Variabel untuk deteksi tepukan
int clapCount = 0;
unsigned long lastClapTime = 0; // Waktu tepukan terakhir terdeteksi
unsigned long firstClapTime = 0; // Waktu tepukan pertama dalam urutan
bool relayState = false; // Status relay: false = OFF, true = ON
// Pengaturan waktu (dalam milidetik)
const unsigned long debounceTime = 50; // Waktu untuk mengabaikan pantulan sensor setelah deteksi awal
const unsigned long maxTimeBetweenClaps = 700; // Waktu maksimal antara tepukan pertama dan kedua untuk dianggap double clap
const unsigned long singleClapTimeout = 800; // Waktu tunggu setelah tepukan pertama untuk memutuskan itu single clap
// (harus sedikit lebih lama dari maxTimeBetweenClaps)
void setup() {
Serial.begin(9600); // Mulai komunikasi serial untuk debugging
pinMode(soundSensorPin, INPUT); // Set pin sensor suara sebagai INPUT
pinMode(relayPin, OUTPUT); // Set pin relay sebagai OUTPUT
// Matikan relay di awal (asumsi relay aktif LOW, jadi HIGH untuk mematikan)
digitalWrite(relayPin, HIGH);
relayState = false;
Serial.println("Sistem siap. Relay OFF.");
Serial.println("1 Tepukan untuk ON, 2 Tepukan untuk OFF.");
}
void loop() {
int sensorValue = digitalRead(soundSensorPin); // Baca nilai dari sensor suara
// Sensor suara LM393 biasanya memberikan output LOW ketika suara terdeteksi
if (sensorValue == LOW) {
// Debouncing: Pastikan ini adalah deteksi baru dan bukan pantulan dari deteksi sebelumnya
if (millis() - lastClapTime > debounceTime) {
lastClapTime = millis(); // Catat waktu deteksi suara ini
if (clapCount == 0) {
// Ini adalah tepukan pertama yang terdeteksi dalam suatu urutan
firstClapTime = lastClapTime;
clapCount = 1;
Serial.println("Tepukan pertama terdeteksi...");
} else if (clapCount == 1) {
// Ini adalah tepukan kedua, periksa apakah dalam rentang waktu untuk double clap
if (lastClapTime - firstClapTime < maxTimeBetweenClaps) {
Serial.println("Tepukan kedua terdeteksi (double clap)!");
// Aksi untuk dua tepukan: Matikan relay jika sedang ON
if (relayState == true) {
digitalWrite(relayPin, HIGH); // Matikan relay (aktif LOW)
relayState = false;
Serial.println("Relay DIMATIKAN.");
} else {
Serial.println("Relay sudah MATI. Tidak ada aksi.");
}
clapCount = 0; // Reset hitungan tepukan
} else {
// Tepukan kedua terlalu lambat, anggap ini sebagai tepukan pertama dari urutan baru
firstClapTime = lastClapTime;
clapCount = 1;
Serial.println("Tepukan kedua terlalu lambat, dianggap tepukan pertama baru...");
}
}
}
}
// Cek apakah sudah waktunya memutuskan untuk aksi single clap
// Ini terjadi jika sudah ada 1 tepukan terdeteksi dan waktu tunggu (singleClapTimeout) telah berlalu
// tanpa adanya tepukan kedua.
if (clapCount == 1 && (millis() - firstClapTime >= singleClapTimeout)) {
Serial.println("Single clap dikonfirmasi.");
// Aksi untuk satu tepukan: Nyalakan relay jika sedang OFF
if (relayState == false) {
digitalWrite(relayPin, LOW); // Nyalakan relay (aktif LOW)
relayState = true;
Serial.println("Relay DINYALAKAN.");
} else {
Serial.println("Relay sudah NYALA. Tidak ada aksi.");
}
clapCount = 0; // Reset hitungan tepukan
}
}
Siapkan Komponen
Siapkan Arduino Uno, sensor suara KY-038, relay module, kabel jumper male-to-female, dan lampu.
Rangkai Sensor Suara
Hubungkan ground sensor suara ke GND Arduino, output ke pin 2, dan VCC ke 5V.
Rangkai Relay dan Lampu
Hubungkan VCC relay ke 5V Arduino, GND ke GND, input ke pin 3 Arduino. Kabel lampu dihubungkan ke terminal C dan NC pada relay.
Upload Kode ke Arduino
Sambungkan Arduino ke laptop, upload kode SmartLampu.ino yang sudah dibuat.
Uji Coba Smart Lampu
Tepuk tangan sekali, lampu akan menyala. Tepuk dua kali, lampu akan mati. Sensor menangkap suara, Arduino memproses dan relay mengendalikan lampu.
Nikmati Kemudahan
Sekarang kamu tidak perlu repot berjalan ke saklar untuk menyalakan atau mematikan lampu. Cukup tepuk tangan!