Gömülü sistemler ve elektronik projeler dünyasına adım atan öğrencilerin en çok ilgisini çeken konulardan biri sensörlerdir. Projelerinize ortamdaki sesleri “duyma” yeteneği kazandırmak, akıllı ev otomasyonlarından güvenlik sistemlerine kadar pek çok yenilikçi uygulamanın kapısını aralar.
Bu rehberimizde, piyasada en yaygın ve uygun fiyatlı olarak bulunan KY-038 ve KY-037 mikrofon ses sensörü modüllerinin nasıl çalıştığını, Arduino ile nasıl bağlantı kurulacağını ve temel seviyede öğrencilerin bile kolayca yapabileceği “Alkışla Yanan Lamba” projesini adım adım inceleyeceğiz.

Ses Sensörü Nedir ve Nasıl Çalışır?
Temelinde bir ses sensörü, ortamdaki ses basıncı dalgalarını algılayarak bunları elektrik sinyallerine dönüştüren bir mikrofon (transduser) modülüdür. Sensörün içinde bulunan “Elektret Kondansatör Mikrofon”, aralarında belirli bir mesafe bulunan esnek bir diyafram ve sabit bir arka plakadan oluşur.
Siz konuştuğunuzda veya el çırptığınızda oluşan ses dalgaları, mikrofonun esnek diyaframına çarparak titreşmesine neden olur. Bu titreşim, iki plaka arasındaki mesafeyi değiştirir ve fiziksel bir kapasitans (sığa) değişimi yaratır. Sensör bu değişimi işleyerek ortamdaki sesin şiddetiyle orantılı bir voltaj dalgalanması olarak Arduino’ya iletir.
KY-038 Ses Sensörü Modülü Üzerindeki Bileşenler
Öğrencilerimiz sensör modülünü ellerine aldıklarında genellikle üzerinde dört adet bağlantı pini (VCC, GND, AO, DO) ve ortasında ayarlanabilir bir vida (potansiyometre) görürler.
- VCC: Modüle güç sağlamak için kullanılır. Arduino’nun 3.3V veya 5V pinine bağlanır.
- GND: Topraklama pinidir.
- LM393 Karşılaştırıcı (Comparator): Kartın üzerindeki bu küçük siyah entegre çip, mikrofondan gelen zayıf sinyalleri işler ve dijital bir çıktı üretilmesini sağlar.
- Potansiyometre (Hassasiyet Ayarı): Üzerindeki küçük vidayı çevirerek, dijital pinden hangi ses seviyesinde sinyal alacağımızı (eşik değerini) ayarlamamızı sağlar.
Analog Çıkış (AO) ile Dijital Çıkış (DO) Arasındaki Fark
Sensörü kullanırken en çok kafa karıştıran konulardan biri hangi pini kullanacağımızdır.
- Dijital Çıkış (DO): Bu pin, tıpkı bir buton gibi çalışır. Sadece
0(LOW) veya1(HIGH) değeri üretir. Eğer ortamdaki ses, potansiyometre ile belirlediğiniz eşik seviyesinin altındaysa pin LOW, ses eşiği aşarsa (örneğin sert bir alkış) pin HIGH sinyali verir. Başlangıç projeleri için en kolay ve ideal yöntem budur. - Analog Çıkış (AO): Bu pin, ortamdaki ses şiddetini sürekli bir dalga (0-1023 arası değerler) olarak verir. Ancak KY-038 üzerindeki analog çıkış, mikrofon kapsülünden doğrudan alındığı ve özel bir yükseltici (preamp) barındırmadığı için sadece çok düşük mili-volt seviyelerinde değişimler yaratır. Bu nedenle sesin şiddetini hassas ölçmek (Desibelmetre yapmak vb.) isterseniz, MAX4466 gibi içinde daha güçlü sinyal yükseltici barındıran modülleri tercih etmeniz gerekebilir.
Sensörü Kullanmadan Önce: Kalibrasyon Aşaması
Arduino kodunuzu yazmadan önce donanım kalibrasyonunu doğru yapmak projenin kalbidir. Aksi takdirde sensör her sese tepki verir veya hiçbir şeye tepki vermez.
- Sensörün VCC pinini Arduino’nun 5V pinine, GND pinini ise Arduino’nun GND pinine bağlayın. Sensör üzerindeki Güç (Power) LED’i yanacaktır.
- Ortam sessizken potansiyometrenin üzerindeki vidayı küçük bir tornavida ile yavaşça çevirin.
- Kartın üzerindeki ikinci LED (Sinyal LED’i) sönünceye kadar vidayı çevirmeye devam edin.
- Işığın tam olarak söndüğü sınır noktada bırakın. Şimdi sensöre yakın bir yerde el çırpın. El çırptığınız an LED anlık olarak yanıp sönüyorsa, tebrikler! Kalibrasyonunuz mükemmeldir.
Örnek Çalışma: Alkış ile Kontrol Edilen Akıllı Işık (Clap Switch)
Şimdi öğrendiğimiz bu teorik bilgileri pratiğe dökelim. Odamızdaki ışığı sadece ellerimizi çırparak açıp kapatacağımız harika bir giriş seviyesi projesi tasarlıyoruz.
Gerekli Malzemeler:
- 1 Adet Arduino Uno
- 1 Adet KY-038 Ses Sensörü
- 1 Adet LED (Kırmızı, Yeşil veya Mavi)
- 1 Adet 220 Ohm Direnç
- Breadboard ve Jumper (Atlama) Kabloları
Devre Bağlantısı Şeması:
- Sensör VCC ➔ Arduino 5V
- Sensör GND ➔ Arduino GND
- Sensör DO (Dijital Out) ➔ Arduino Dijital 2 Numaralı Pin
- LED’in Artı Bacağı (Uzun bacak) ➔ 220 Ohm direnç üzerinden Arduino Dijital 4 Numaralı Pin
- LED’in Eksi Bacağı (Kısa bacak) ➔ Arduino GND
(Not: Akım sınırlayıcı 220 Ohm direnç kullanmazsanız LED’inize zarar verebilirsiniz.)
Arduino Kodları ve Açıklamaları:
Aşağıdaki kod, mikrofonun sesi (alkışı) duyduğunda LED’in yanmasını, tekrar duyduğunda ise sönmesini sağlayan “Durum Değiştirme (Toggle)” mantığına dayanmaktadır.
// Değişkenlerimizi ve pinlerimizi tanımlıyoruz
int soundSensor = 2; // Ses sensörümüzün Dijital çıkışını 2 numaralı pine bağladık
int ledPin = 4; // LED'imizi 4 numaralı pine bağladık
boolean ledDurumu = false; // Başlangıçta LED sönük olarak kabul ediyoruz
void setup() {
pinMode(soundSensor, INPUT); // Sensör pinini "Giriş" olarak ayarladık (Ses verisi alacağız)
pinMode(ledPin, OUTPUT); // LED pinini "Çıkış" olarak ayarladık (Güç vereceğiz)
Serial.begin(9600); // Bilgisayar ekranından takip etmek için Seri haberleşmeyi başlatıyoruz
}
void loop() {
int sensorVerisi = digitalRead(soundSensor); // Sensörden gelen 1 veya 0 değerini okuyoruz
// Eğer eşik değeri aşıldıysa (HIGH sinyali geldiyse)
if (sensorVerisi == HIGH) {
// Eğer ışık kapalıysa aç, açıksa kapat mantığı
if (ledDurumu == false) {
ledDurumu = true; // Durumu açık olarak güncelle
digitalWrite(ledPin, HIGH); // LED'i yak
Serial.println("Alkis duyuldu: Isik ACILDI!");
} else {
ledDurumu = false; // Durumu kapalı olarak güncelle
digitalWrite(ledPin, LOW); // LED'i söndür
Serial.println("Alkis duyuldu: Isik KAPATILDI!");
}
// Yanlışlıkla arka arkaya algılamaları (sesin yankısı vb.) önlemek için biraz bekletiyoruz (Debounce)
delay(200);
}
}
Bu kodu Arduino IDE programına kopyalayıp kartınıza yüklediğinizde, artık basit bir alkış sesiyle LED’i açıp kapatabileceksiniz! Eğer projeyi ilerletmek isterseniz, LED yerine ileride bir Röle Modülü kullanarak evinizdeki 220V masa lambasını dahi kontrol edebilecek seviyeye gelebilirsiniz. Ancak AC voltaj tehlikeli olduğundan sadece tecrübe kazandıktan sonra bir yetişkinle denemeniz önerilir.
İleri Seviye Öğrenciler İçin: Gürültü (Noise) Problemlerini Gidermek
Ses sensörleri ile çalışırken en sık karşılaşılan sorun “Gürültü” (Noise), yani sistemin istenmeyen seslere veya anlık elektrik dalgalanmalarına tepki vermesidir. Sensörünüz kendi kendine tetikleniyorsa;
- Fiziksel Filtreleme: Sensör güç kaynağındaki voltaj dalgalanmalarına oldukça duyarlıdır. Arduino’dan gelen elektrik parazitlerini engellemek için sensörün güç pinlerine basit bir RC Filtresi (bir direnç ve 100uF kapasitör) eklemek donanımsal gürültüyü ciddi ölçüde azaltır. Ayrıca bağlantı kablolarınızı mümkün olduğunca kısa tutmalısınız, çünkü uzun kablolar ortamdaki elektromanyetik paraziti (EMI) bir anten gibi üzerlerine çeker.
- Yazılımsal Filtreleme: Sinyalleri analog olarak okumaya karar verirseniz, ham sensör verisindeki küçük sıçramaları engellemek için kodunuzda “Ortalama Alma (Averaging)”, “Kayan Ortalama (Running Average)” veya “Eksponansiyel Filtre (Exponential Filter)” gibi yazılım algoritmaları geliştirebilirsiniz. Bu matematiksel yaklaşımlar öğrenci seviyesinden mühendislik mantığına geçişte mükemmel bir basamaktır!
Özetle; Arduino ile ses sensörü entegrasyonu, etrafıyla etkileşime giren dinamik sistemler yaratmanın en keyifli yoludur. Kodlarınızı yazın, devrenizi kurun ve alkışlarınızla teknolojiyi yönetin!






