Başa dön
Ses Sensörü Nedir? Arduino İle Ses Sensörü Nasıl Çalıştırılır? ve Alkış ile Kontrol Sistemleri

Arduino ile Ses Sensörü Kullanımı, Mikrofon Modülü Çalışma Prensibi

Merhaba Arkadaşlar, Bu Yazımız da Gelin Hep Birlikte Ses  Sensörü Nedir? Arduino ile Nasıl Çalıştırılır? Alkış ile Kontrol ve Ses Dalgalarının Nasıl Elektrik Sinyallerine Dönüştüğünü Öğrenelim.

 

Arduino ses sensörleri yani mikrofon modülü ucuzdur, arayüzü kolaydır ve ses, alkış veya kapı tıklatması gibi sesleri algılayabilir.

Bunları çeşitli ses projeleri için kullanabilirsiniz, örneğin, ışıklarınızı alkışla aktive etmek veya siz yokken evcil hayvanlarınızın hareketlerini veya hırsız alarm sistemi kurmak için.

Ses ve Mikrofon Sensörü Satın Al

 

Ses Sensörü Nedir? Mikrofon Modülü Nasıl Çalışır?

Çalışma Prensibi

Mikrofonun içinde aslında bir kapasitörün bir plakası olan ince diyafram vardır. İkinci plaka diyaframa yakın ve diyaframa paralel olan arka plakadır. 

Mikrofona konuştuğunuzda, sesiniz tarafından oluşturulan ses dalgaları diyaframa vurur ve titreşmesine neden olur.

Diyafram sese tepki olarak titreştiğinde, plakalar birbirine yaklaştıkça veya uzaklaştıkça kapasitans değişir.

Kapasitans değiştikçe, plakalar arasındaki voltaj değişir, bu da sesin ölçülebilir hali olmaktadır.

 

Ses Modülü Donanımına Genel Bakış

Ses sensörü, ses dalgalarını elektrik sinyallerine dönüştürmek için bir kapasitif mikrofonu (50Hz-10kHz) ve bazı işlem devrelerini birleştiren küçük bir karttır.

Bu elektrik sinyali, dijitalleştirmek için yerleşik LM393 Yüksek Hassasiyetli Karşılaştırıcıy besler ve OUT pininde bulunur.

Modül, OUT sinyalinin hassasiyet ayarlaması için yerleşik bir potansiyometreye sahiptir.

Bu potansiyometreyi kullanarak ayar yapabiliriz; Böylece sesin genliği eşik değerini aştığında, modül LOW aksi takdirde HIGH çıkacaktır.

 

Belirli bir eşik değere ulaşıldığında ve bir eylemi tetiklemek istediğinizde çok kullanışlıdır (Potansiyometre). Örneğin, sesin genliği bir eşiği geçtiğinde (ses darbesi algılandığında), ışığı kontrol etmek için bir röleyi etkinleştirebilirsiniz.

İpucu: Hassasiyeti artırmak için düğmeyi saat yönünün tersine, azaltmak için saat yönünde çevirin.

 

Bunun dışında modülde iki LED bulunur. Modüle güç verildiğinde Power LED‘i yanar. Dijital çıkış LOW olduğunda Status LED‘i yanar.

Ses Sensörü Pinout

Ses sensörü yalnızca üç pine sahiptir:

VCC pimi sensöre güç sağlar. Sensörü 3.3V – 5V arasında çalıştırmanız önerilir.

GND bir toprak bağlantısıdır.

OUT pimi koşullar sessiz olduğunda HIGH çıkış verir ve ses algılandığında DÜŞÜK olur. Bir Arduino’daki herhangi bir dijital pime veya doğrudan 5V röleye veya benzer bir cihaza bağlayabilirsiniz.

Arduino Uno ve Breadboard’a Ses Sensörü Bağlantısı – Kablolama

Bağlantılar oldukça basittir. Modüldeki VCC pinini Arduino’daki 5V’ye ve GND pinini toprağa bağlayarak başlayın.

Daha sonra OUT pinini Arduino’nuzdaki dijital pin # 7’ye bağlayın. Bu kadar!

Aşağıdaki şekilde kablolama gösterilmektedir.

Ses Sensörünü Kalibre Etme

Ses sensörünüzden doğru ölçümler elde etmek için, önce kalibre etmeniz önerilir.

Modül, dijital çıkışı (OUT) kalibre etmek için yerleşik bir potansiyometreye sahiptir.

 

Potansiyometrenin düğmesini çevirerek bir eşik ayarlayabilirsiniz. Ses seviyesi eşik değerini aştığında Durum LED’i yanacak ve dijital çıkış (OUT) LOW çıkacaktır.

Şimdi sensörü kalibre etmek için mikrofonun yanında alkışlamaya başlayın ve alkışlarınıza yanıt olarak modül üzerindeki Durum LED’inin yanıp söndüğünü görene kadar potansiyometre’yi ayarlayın.

Sensörünüz artık kalibre edilmiş ve kullanıma hazırdır.

Sesi Algılama – Arduino Kodu

Artık ses sensörünüzü bağladığınıza göre, her şeyin çalışması için bir koda ihtiyacınız olacak.

Aşağıdaki örnek, alkışları algılar veya ekran da yazdırır.

#define sensorPin 7

<span class="com">// Variable to store the time when last event happened</span>
<span class="kwd">unsigned</span> <span class="kwd">long</span> lastEvent = <span class="lit">0</span>;

<span class="kwd">void</span> <span class="func">setup</span>() {
	<span class="func">pinMode</span>(sensorPin, INPUT);	<span class="com">// Set sensor pin as an INPUT</span>
	Serial.<span class="func">begin</span>(<span class="lit">9600</span>);
}

<span class="kwd">void</span> <span class="func">loop</span>() {
	<span class="com">// Read Sound sensor</span>
	<span class="kwd">int</span> sensorData = <span class="func">digitalRead</span>(sensorPin);

	<span class="com">// If pin goes LOW, sound is detected</span>
	<span class="kwd">if</span> (sensorData == LOW) {
		
		<span class="com">// If 25ms have passed since last LOW state, it means that</span>
		<span class="com">// the clap is detected and not due to any spurious sounds</span>
		<span class="kwd">if</span> (<span class="func">millis</span>() - lastEvent &gt; <span class="lit">25</span>) {
			Serial.<span class="func">println</span>(<span class="str">"Clap detected!"</span>);
		}
		
		<span class="com">// Remember when last event happened</span>
		lastEvent = <span class="func">millis</span>();
	}
}

Her şey yolundaysa, alkış algılandığında ekranda aşağıdaki çıktıyı görmelisiniz.

 

Açıklama:

Kod, sensörün OUT pininin bağlı olduğu Arduino pininin bildirimi ile başlar.

#define sensorPin 7

Ardından, lastEvent alkış algılanmasından bu yana geçen zamanı saklayan bir değişken tanımlarız . Sahte sesleri ortadan kaldırmamıza yardımcı olacaktır.

<span class="kwd">unsigned</span> <span class="kwd">long</span> lastEvent = <span class="lit">0</span>;

Kurulum bölümünde, sensörün sinyal pinini giriş olarak beyan ederiz. Seri monitörü de kurduk.

<span class="func">pinMode</span>(sensorPin, INPUT);
Serial.<span class="func">begin</span>(<span class="lit">9600</span>);

Döngü bölümünde, önce dijital çıkışı sensörden okuyoruz.

<span class="kwd">int</span> sensorData = <span class="func">digitalRead</span>(sensorPin);

Sensör eşik değerini geçecek kadar yüksek bir ses algıladığında, çıkış LOW olur. Ancak sesin sahte arka plan gürültüsünden değil alkışlardan kaynaklandığından emin olmalıyız. Yani, 25 milisaniye bekleriz. Çıktı 25 milisaniyeden fazla LOW kalırsa, alkış tespit edildiğini beyan ederiz.

<span class="kwd">if</span> (sensorData == LOW) {
	<span class="kwd">if</span> (<span class="func">millis</span>() - lastEvent &gt; <span class="lit">25</span>) {
		Serial.<span class="func">println</span>(<span class="str">"Clap detected!"</span>);
	}
	lastEvent = <span class="func">millis</span>();
}

Alkışlı Kontrol Cihazları

Bir sonraki projemiz için ses sensörünü AC güçle çalışan cihazları el çırparak açan bir “ Clapper ” olarak kullanacağız .

Bu proje, AC ile çalışan cihazları kontrol etmek için Tek Kanallı Röle Modülünü kullanır.

Bazen Arduino’nuzun lambalar, fanlar veya diğer ev cihazları gibi AC güçle çalışan cihazları kontrol etmesini istersiniz. Ancak Arduino 5 voltta çalıştığı için bunu yapamazsınız. Artık yapabileceksiniz.

Kablolama

Bu projenin kablolaması çok basittir.

  Uyarı:
Bu kart Düşük AC voltaj ile etkileşime girer. Yanlış kullanım ciddi yaralanma veya ölüme neden olabilir. Bu nedenle, etrafında deneyimli ve Yüksek AC voltaj hakkında bilgi sahibi insanlar için tasarlanmıştır.

Önce sensöre ve röle modülüne güç sağlamanız gerekir. VCC pinlerini Arduino ve GND üzerindeki 5V pinine toprağa bağlayın.

Ardından ses sensöründeki çıkış pimini OUT Arduino’nuzdaki dijital pim # 7’ye ve röle modülündeki kontrol pimi (IN) dijital pim # 8’e bağlayın.

 

Ayrıca röle modülünü kontrol etmeye çalıştığınız AC ile çalışan cihaza hizalamanız gerekir. Aktif AC hattınızı kesmeniz ve kesilen telin bir ucunu COM’a, diğerini NO’ya bağlamanız gerekir.

Aşağıdaki şekilde kablolar gösterilmektedir.

Arduino Kodu

İşte cihazları alkışla kontrol etmek için kod.

#define sensorPin 7
#define relayPin 8

<span class="com">// Variable to store the time when last event happened</span>
<span class="kwd">unsigned</span> <span class="kwd">long</span> lastEvent = <span class="lit">0</span>;
boolean relayState = false;    <span class="com">// Variable to store the state of relay</span>

<span class="kwd">void</span> <span class="func">setup</span>() {
	<span class="func">pinMode</span>(relayPin, OUTPUT);  <span class="com">// Set relay pin as an OUTPUT pin</span>
	<span class="func">pinMode</span>(sensorPin, INPUT);  <span class="com">// Set sensor pin as an INPUT</span>
}

<span class="kwd">void</span> <span class="func">loop</span>() {
	<span class="com">// Read Sound sensor</span>
	<span class="kwd">int</span> sensorData = <span class="func">digitalRead</span>(sensorPin);

	<span class="com">// If pin goes LOW, sound is detected</span>
	<span class="kwd">if</span> (sensorData == LOW) {

	<span class="com">// If 25ms have passed since last LOW state, it means that</span>
	<span class="com">// the clap is detected and not due to any spurious sounds</span>
	<span class="kwd">if</span> (<span class="func">millis</span>() - lastEvent &gt; <span class="lit">25</span>) {
		<span class="com">//toggle relay and set the output</span>
		relayState = !relayState;
		<span class="func">digitalWrite</span>(relayPin, relayState ? HIGH : LOW);
	}

	<span class="com">// Remember when last event happened</span>
	lastEvent = <span class="func">millis</span>();
	}
}

Programı donanımınız takılıyken yükledikten ve çalıştırdıktan sonra, sensör her alkışınızda cihazı açmalı veya kapatmalıdır.

Açıklama:

Bu kod bir önceki ile karşılaştırırsanız, birkaç şey dışında birçok benzerlik fark edeceksiniz.

Başlangıçta, rölenin kontrol piminin (IN) bağlı olduğu Arduino pimini beyan ederiz. Ayrıca relayState, röle durumunu saklamak için yeni bir değişken tanımladık.

#define relayPin 7

boolean relayState = false;

Kurulumda, relayPin çıktı olarak tanımlanır .

<span class="func">pinMode</span>(relayPin, OUTPUT);

Şimdi alkış sesini tespit ettiğimizde, mesajı ekranda yazdırmak yerine, rölenin durumunu değiştiririz.

relayState = !relayState;
<span class="func">digitalWrite</span>(relayPin, relayState ? HIGH : LOW);

Sorun giderme

Ses Sensörü hatalı çalışıyorsa, aşağıdaki adımları deneyin.

  1. Güç kaynağının temiz olup olmadığını iki kez kontrol edin. Ses sensörü analog bir devre olduğundan, güç kaynağındaki gürültüye karşı daha hassastır.
  2. Ses sensöründeki mikrofon, mekanik titreşime ve rüzgar gürültüsüne de duyarlıdır. Esnek bir malzeme ile monte edilmesi titreşimi emmeye yardımcı olabilir.
  3. Bu ses sensörünün algılama aralığı çok küçüktür. Bu nedenle iyi bir yanıt almak için çok daha yakın bir gürültü yapmanız gerekir.

 

Hepsi bu kadar. Umarım Arduino İle Toprak Nemi Sensörü makalemizi beğenmiş ve yeni bir şeyler öğrenmişsinizdir.

Memnun kaldıysanız aşağıda bulunan “yukarı ok“a tıklayarak +1 puan verebilirsiniz.

Diğer Güncel Arduino Projeleri için BURAYA TIKLAYABİLİRSİNİZ.

Sizde Robotlara ve Maker’lığa Meraklıysanız Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Kaynak : lastminuteengineers.com/sound-sensor-arduino-tutorial/