back to top

Arduino İle Ses Sensör Modülü

Merhaba,

Alkış çalarak bir şeyleri kontrol etmeye ne dersiniz ? Bir odanın lambalarını yakabilir yada bir kapıyı açabilirsiniz. Eğer böyle bir şey yapmak istiyorsanız bu modül tam size göre.

Arduino ile kullanacağımız bu sensör modülü ile farklı boyutlardaki ses değerlerini algılayabilmekteyiz. Belirleyeceğimiz değere göre röle kullanarak AC yada DC herhangi bir cihazı kontrol edebilir, Ledler kullanarak farklı kombinasyonlarda yanmalarını sağlayabilir ve bunlara benzer pek çok amaçla bu sensör modülünü kullanabiliriz. Bu yazımda sizlere basit bir program ile modülün çalışma şeklini göstermeye çalışacağım. Belirlenen eşik değerinde bir ses algılandığında led ‘ in yanmasını sağlayacak bir uygulama göstereceğim.

Bunun için bize gerekli olacak malzemler;

Arduino Uno

Ses Sensör Modülü

Dişi – Erkek Jumper Kablo

1 Adet Led

Ardunio Uno – Sensör Modüle

5V       >>    VCC

GND     >>   GND

A0      >>     OUT

Şeklinde yapınız. Daha sonra aşağıdaki kodları Arduino ‘ a yükleyiniz.

const int SensorOutPin = 0; //Sensörün out bacağının bağlı olduğu pin tanımlanır. 
const int ledPin = 13; //13. pine bağlı Led tanımlanır. 
int deger; //Mikrofondan okunan değerin tutulacağı değişken tanımlanır. 
const int esik = 800; //Ledin yanmasını istediğimiz eşik değeri tanımlanır. 
// Eşik değerinin hassasiyeti kart üzerindeki potansiyometre ile // değiştirilebilir. 
void setup() {
  pinMode(ledPin, OUTPUT); //dijital 13. pin çıkış olarak ayarlanır. 
  Serial.begin(9600); // Serial monitor baud rate değeri belirlenir. 
}
void loop() {
  deger = analogRead(SensorOutPin); //Arduino döngü içinde sürekli sensör değerini okur. 
  if (deger > esik) {
    digitalWrite(ledPin, HIGH); //Eğer okunan değer belirlenen eşik değerinden büyükse led yanar. 
    delay(500); //Ledin yarım saniye yanması sağlanır. 
    digitalWrite(ledPin, LOW); //Led söndürülür. 
  } else // eşik değeri farklı diğer tüm değerler için led söndürülür. 
  {
    digitalWrite(ledPin, LOW);
  }
}

Tüm yapmanız gerekenler bu kadar, Şimdi sadece alkış çalarak sistemi test edebilirsiniz. Eğer düşük şiddette yada daha yüksek şiddette bir ses ile led’ in yanmasını istiyorsanız kartın üzerindeki potansiyometreden bunu ayarlayabilirsiniz.

Kartın Şematik Çizimi

Kartın Şematik Çizimi

LM393 Datasheet

Son Çıkan Yazılar

81 YORUMLAR

    • Malesef, bu sensör ile ancak sesin şiddetini (genliğini) ölçebilirsiniz. Zaten sesin dalga boyu, frekansı gibi özellikleri ile işlem yapabilmek için Arduino’nun işlem gücü yetersiz kalacaktır.

  1. hocam arduino kod içerisindeki ”Serial.begin(9600); // Serial monitor baud rate değeri belirlenir.” kodunu tam olarak anlayabilceğimiz şekilde açıklayabilir misiniz?

    • Arduino üzerindeki mikrokontrolcünün 9600 baud ile seri port üzerinden bilgisayarımız ile haberleşebilmesi için bu satır gereklidir. Burada seçtiğimiz baud rate, PC üzerinde kullandığımız seri monitör ekranındaki ile aynı olmalıdır.

  2. Ben istediğim değeri tam olarak ölçemiyorum.
    Yapmak istediğim sadece ses şiddetini ölçüp belli aralıklarla seri monitörden görüntülemek.
    Fakat ben devreyi kurup kodların bir kısmını çalıştırdığımda (led ile alakalı olan satırları siliyorum) sürekli 36 değeri okunuyor. Potansiyometreyi çevirdiğimde ise 1023 değeri okunuyor sürekli. Yani hep aynı değer görünüyor. Ne kadar el çırpsam da, bağırsam da değer değişmiyor.
    Bunun için ne yapmam gerek?

    • Merhabalar. Anattıklarınızdan anladığım kadarıyla, sizdeki ses sensörü dijital çıkış veren tipte. Bu sensör, potansiyometre ile ayarladığınız eşik değerini geçen bir şiddette ses algıladığı zaman çıkış pininden 5V vermektedir. Analog pin yerine dijital pine bağlantı yaparak deneyeyebilir, potansiyometre ile hassasiyeti ayarlayabilirsiniz.

      • Hem dijital hem analog pinde denedim ama hiç değişiklik olmadı, aslında dijital pine bağlayınca sürekli 1 çıkışı verdi. potansiyometreyi ne kadar çevirirsem çevireyim hep aynı değer dönüyor. Ve zaten birkaç satır kod yazılıyor, onlarda da yanlış yapmamış olduğuma inanıyorum.

        • Benim yaptığım devrede de aynı sorun yaşanıyor. Ses olsa da olmasa da 19 değerini gösteriyor. Kendi yazdığım kodlarda da. bunda da aynı şey oldu. Sanırım ses sensöründe bir hata var 3 çıkışı olan kartlarda böyle bir sorun yok. Fakat 4 çıkışlı olanlarda sabit aynı değeri gösteriyor.

          • benim sensörüm 3 bacaklı ama yinede aynı sorunu yaşadım bu daha çok sensörün üzerinde bulunan potansiyometre ile oluşturulacak kalibrasyonla ilgili bişey galiba

  3. Hocam öncelikle paylaşımınız için teşekkür ederim çok iyi olmuş “deger” i seri port ekranına yazdırdığımda ses var ise 1023 yok ise 30 gibi değer okuyor. Yani sensör dijitalmiş gibi çalışıyor sürekli iki değer görünüyor ekranda bu tespitlerim doğru mudur?

  4. merhaba benim farklı bir isteğim var.

    led 1 kere yanacak ve sonsuza kadar yanacak taaki tekrardan ses duyuncaya kadar yani ses duyunca hep açık kalacak ve ses duyunca kapanacak
    ben pek anlamıyorum yardımcı olurmusunuz

    • Kullandığınız ses sensör modülünün dijital çıkışını bağladığınızda bahsettiğiniz durum oluşur. Sensör kartınızda başka bir çıkış var ise onu bağlamayı deneyin, eğer tek çıkış bulunuyorsa malesef sadece dijital çıkış veren bir karta sahipsiniz demektir.

  5. ya benim bir sorunum var, serial porttan sürekli aynı değerler okunuyor. 25’de takılı kalmış gibi hiç oynamıyor değerler. Arızalı mı acaba ürün Lürfen yardım edin.

    • Kullandığınız sensör dijital çıkışa sahip olabilir, bahsettiğiniz durum bunu gösteriyor. Kartınızda mevcutsa analog çıkışı kullanmayı deneyin.

  6. daire giriş kapısını sesli komut ile açıp kapatmak istiyorum.

    konu ile ilgili hiçbir deneyimim yok. malzeme listesi ve yapılacaklar hakkında bilgi verir misiniz?
    iyi çalışmalar.

    • Bu modül ile ses (konuşma) tanıma yapmanız mümkün değildir, sadece alış şekli veya kapı tıklatma gibi sesleri algılayabilirsiniz.

  7. Arduino:1.8.2 (Windows 10), Kart:”Arduino/Genuino Uno”

    sketch_apr24a:2: error: stray ‘\302’ in program

    const int ledPin = 13;      //13. pine bağlı Led tanımlanır.

    ^

    sketch_apr24a:2: error: stray ‘\240’ in program

    sketch_apr24a:2: error: stray ‘\302’ in program

    sketch_apr24a:2: error: stray ‘\240’ in program

    sketch_apr24a:2: error: stray ‘\302’ in program

    sketch_apr24a:2: error: stray ‘\240’ in program

    sketch_apr24a:2: error: stray ‘\302’ in program

    sketch_apr24a:2: error: stray ‘\240’ in program

    sketch_apr24a:2: error: stray ‘\302’ in program

    sketch_apr24a:2: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    int deger;                  //Mikrofondan okunan değerin tutulacağı değişken tanımlanır.

    ^

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:4: error: stray ‘\302’ in program

    sketch_apr24a:4: error: stray ‘\240’ in program

    sketch_apr24a:6: error: stray ‘\302’ in program

    const int esik = 800;       //Ledin yanmasını istediğimiz eşik değeri tanımlanır.

    ^

    sketch_apr24a:6: error: stray ‘\240’ in program

    sketch_apr24a:6: error: stray ‘\302’ in program

    sketch_apr24a:6: error: stray ‘\240’ in program

    sketch_apr24a:6: error: stray ‘\302’ in program

    sketch_apr24a:6: error: stray ‘\240’ in program

    sketch_apr24a:6: error: stray ‘\302’ in program

    sketch_apr24a:6: error: stray ‘\240’ in program

    sketch_apr24a:6: error: stray ‘\302’ in program

    sketch_apr24a:6: error: stray ‘\240’ in program

    sketch_apr24a:6: error: stray ‘\302’ in program

    sketch_apr24a:6: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    delay ();                 //Ledin yarım saniye yanması sağlanır.

    ^

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:20: error: stray ‘\302’ in program

    sketch_apr24a:20: error: stray ‘\240’ in program

    sketch_apr24a:21: error: stray ‘\302’ in program

    digitalWrite (ledPin, LOW);  //Led söndürülür.

    ^

    sketch_apr24a:21: error: stray ‘\240’ in program

    C:\Users\ispir\OneDrive\Belgeler\Arduino\sketch_apr24a\sketch_apr24a.ino: In function ‘void loop()’:

    sketch_apr24a:20: error: too few arguments to function ‘void delay(long unsigned int)’

    delay ();                 //Ledin yarım saniye yanması sağlanır.

    ^

    In file included from sketch\sketch_apr24a.ino.cpp:1:0:

    C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:142:6: note: declared here

    void delay(unsigned long);

    ^

    exit status 1
    stray ‘\302’ in program

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    zahmet olmazsa açıklarmısınız bu hatayı

      • merhaba kodları girdim faka led devamlı yanıyor ses verdiğimde sadece ses sensöründeki ışık yanıp sönüyor onun dışında onun dışında bir değişiklik yok bağlantıda bir yanlışlık mı yapıyorum. bağlantı şemasını verebilirmisiniz

  8. hocam bir sorum olacaktı bızde ardunıo da proje hazırlıyoruz ısd den alınan ses sinyalinin dijital verilere dönüştürülmesi gerekiyor bunun için ne yapmamız gerek?

  9. tübitak 4006 bilim fuarı için 4lü kavşak sinyalizasyonu üzerinde, ambulansın siren sesiyle tetiklenen; ışığın seyrinin ambulansın geldiği yöne yeşil,diğer 3 yöne kırmızı yanarak geçiş üstünlüğü verdiği bir projemiz var. Sinyalizasyon kodlarımız hazır lambalar yanıyor. ancak ses sensörü ile seyir değişmiyor. Bize yardımcı olur musunuz Kerem bey? bu kodu yüklüyoruz karta:
    int DO = 1; //D0 pini
    int DA = A0; // A0 pini

    int redNS = 2;
    int yellowNS = 3;
    int greenNS = 4;

    int redEW = 5;
    int yellowEW = 6;
    int greenEW = 7;

    int redNS1 = 8;
    int yellowNS1 = 9;
    int greenNS1 = 10;

    int redEW2 = 11;
    int yellowEW2 = 12;
    int greenEW2 = 13;

    int ses1 = 40;//analog ses seviyesi
    int ses2 = 48;
    int ses3 = 50;
    int ses4 = 65;
    int ses5 = 60;
    int ses6 = 65;
    int ses7 = 70;
    int ses8 = 75;
    int ses9 = 80;

    int sesdegeri = 0;

    void setup() {
    //Serial.begin(9600);
    pinMode (redNS, OUTPUT);
    pinMode (yellowNS, OUTPUT);
    pinMode (greenNS, OUTPUT);

    pinMode (redEW, OUTPUT);
    pinMode (yellowEW, OUTPUT);
    pinMode (greenEW, OUTPUT);
    }

    void loop() {
    sesdegeri = analogRead(DA);

    if (sesdegeri >= ses8)
    {
    digitalWrite(redNS, LOW);
    digitalWrite(greenEW, LOW);
    digitalWrite(greenNS, HIGH);
    digitalWrite(yellowEW, LOW);
    digitalWrite(redEW, HIGH);
    digitalWrite(yellowNS, LOW);

    }
    else
    {
    digitalWrite(redNS, HIGH);
    digitalWrite(greenEW, HIGH);
    delay(3000);
    digitalWrite(redNS, LOW);
    digitalWrite(greenEW, LOW);

    digitalWrite(greenNS, HIGH);
    digitalWrite(yellowEW, HIGH);
    delay(500);
    digitalWrite(yellowEW, LOW);
    digitalWrite(redEW, HIGH);

    delay(2000);
    digitalWrite(greenNS, LOW);
    digitalWrite(yellowNS, HIGH);

    delay(500);
    digitalWrite(yellowNS, LOW);
    digitalWrite(redEW, LOW);

    }

    }

  10. sinyalizasyon koduna ses sensörü ile sadece 1 lambanın yeşil diğer 3ünün 10 saniyeliğine kırmızı olduğu bir kodunu nasıl düzenlemeliyiz. if else ile yapamadık. Lütfen yardım 🙁 .fuara 3 gün kaldı.

  11. Merhaba bende arduinoya’ya ses alıcısı bağlamak istiyorum. Nasıl bağlayabilirim ve bağlama kodu nedir? Yardımcı olursanız çok sevinirim . Projemin tamamlanması lazım🙏🙏

    • Bu değerler, kart üzerindeki transistörün bias noktasını ayarlamak için kullanılan değerlerdir. Eğer ses sensör modülünü kullanacaksanız bu devre şeması kafanızı karıştırmasın, doğrudan kartın dijital veya analog çıkışını kullanabilirsiniz.

  12. Bu sensorle hcrs 04 modulu gibi bir uzaklik ölçme modülü yapabilirmiyiz? Yani harici bir hoparlör olacak ses cisme carptiktan sonra bu module(ses sensoru) gelip arduino tarafindanda algilanacak bizde bunun süresini tutup ses hiziyla fln aradaki mesafeyi hesaplayabilirmiyiz ?

    • Teorik olarak mümkün, pratikte ise bahsettiğiniz aralıkta çalışacak mikrofon ve ses üreticileri zaten HC-SR04 gibi kartlarda bir arada sunulmaktadır.

  13. Aynı ses sensörünü kullanarak serial porttan en fazla 1023 gibi bir değer alıyoruz. Ses seviyesini arttırdığımız halde seri porttan daha büyük değer alamıyoruz. Anladığım kadarıyla sensör en fazla 1023 değerini alıyor. Daha büyük ses seviyelerini ölçen önerebileceğiniz başka bir sensör var mı? Teşekkürler.

  14. hocam şimdi ben bunu 1 ses ile değilde 5 ses ile yapmak istiyorum. 5 farklı sese 5 farklı şekilde ışık yansın. mesela 1 alkışta ışık yansın kalsın. 2 alkışta yanıp sönsün. acaba bunu nasıl yapabilirim detayli şekilde anlatabilirmisiniz.

  15. Sesin nereden geldiğini algılayıp o yöne doğru giden bir araba yapmak istiyorum. Sesin yönünü saptamak ile ilgili bir fikri olan var mı?

  16. Merhabalar,

    ses sensörü sesi algıladığında p10 led panelde yüksek ses yazmasını istiyorum. Nasıl bağlayabilirim ve kodu için yardımcı olabilir misiniz?

  17. iyi günler ben bluetooth kontrollü arabaya yaptım telefondaki uygulama ile kontrol ediyorum bunu ses kontrolüne nasıl çevirebilirim git deyince gidicek dur deyince durucak filan yardımcı olursanız cok sevınırım
    geri donusu e postadan yaparsınız

  18. Merhaba bende potansiyometreyi en düşük değere ayarladığım halde hep aynı değeri okuyor mikrofona doğru konustuğum zaman bunu algılamıyor veya yanında çok yüksek sesli bir müzik açsamda algılamıyor. mikrofona doğru üflersem onu algılayıp değeri arttırıyor bunu nasıl halledebilirim tüm sitelerdeki kodları denedim okumayıda analog olarak yapıyorum.benim burada tek istediğim konustuğum veya bağırdığımda sesi algılayıp değeri yükseltsin, 4 bacalı ses sensörü kullanıyorum lütfen yardım edin.

  19. Bir iş de tam olsun bu ülkede arkadaş. Bu proje için çektiğiniz videoya baktım, setteki ses modülüyle videodaki bacak sayısı aynı değil, video çöp oldu. Buraya baktım ortada ne led var ne başka bir şey. Yakın Çekim yapmıış bırakmış. Bilenler için anlatıyor sadece demek ki.

    Aldığım Arduino setten çıkan Kitapçıktaki görsel zaten sıfır anlatım. Setten çıkan kitapçıktaki kablo rankleriyle setten çıkan motordaki kablo renkleri alakasız. Bu nedir ya. Ben bu ülkenin büyük kısımında cahillik var sanıyordum. Değilmiş .Ülkenin sorunu bir şeyi bilenlerin bildiğini anlatmayı bilmemesi….

  20. merhabalar benim modülümde A0 ve DO var (D0 da olabilir) hangilerini nereye bağlıyacağımı bilmiyorum yardımcı olursanız sevinirim 🙂

  21. BEN BU SES MODÜLÜNE BİR DEĞER ARALIĞI VEREBİLİR MİYİM?
    MESELA 200-300 ARALIĞINDA LED 1 YANSIN 300-400 ARALIĞINDA LED 2 YANSIN.
    BUNU YAPABİLİR Mİ?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz