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

Bağlantıları görselde olduğu gibi,

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

 

 

 

 

43 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

    • Dediğin şey mümkün kod satırında if kodunun icindeki “digitalWrite (ledPin, LOW); ” kodunu silerseniz dediginiz olur sonsuza kadar yanar.

      • sonsuz yakma işi kolay, benimde isteğim aynı, mesela bir alkışta yansın, bir/iki alkışta sönsün şeklinde bi kod yokmu.?

    • 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. Merhaba , ses ile led yakma projesi yapıcam fakat ledler şerit led olucak arduino ya bağlamamda sorun olurmu ? Yada nasıl yapabilirim ?

  8. 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

  9. 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?

  10. 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);

    }

    }

  11. 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ı.

  12. Peki devrenin bir sese odaklanmasini sağlayabilecek bir devre yapmak mümkün mü yani iki ses var en şiddetli olanina odaklana bilir mi

CEVAP VER