1000 TL Üzeri Alışverişlerde Ücretsiz Kargo ve Türkiye'nin Her Yerine 59,90₺

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

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

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.  [gallery link="none" columns="1" size="full" ids="8167"] 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. [gallery columns="1" link="none" size="large" ids="8230"]
 
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

// Variable to store the time when last event happened
unsigned long lastEvent = 0;

void setup() {
	pinMode(sensorPin, INPUT);	// Set sensor pin as an INPUT
	Serial.begin(9600);
}

void loop() {
	// Read Sound sensor
	int sensorData = digitalRead(sensorPin);

	// If pin goes LOW, sound is detected
	if (sensorData == LOW) {
		
		// If 25ms have passed since last LOW state, it means that
		// the clap is detected and not due to any spurious sounds
		if (millis() - lastEvent > 25) {
			Serial.println("Clap detected!");
		}
		
		// Remember when last event happened
		lastEvent = millis();
	}
}
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.
unsigned long lastEvent = 0;
Kurulum bölümünde, sensörün sinyal pinini giriş olarak beyan ederiz. Seri monitörü de kurduk.
pinMode(sensorPin, INPUT);
Serial.begin(9600);
Döngü bölümünde, önce dijital çıkışı sensörden okuyoruz.
int sensorData = digitalRead(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.
if (sensorData == LOW) {
	if (millis() - lastEvent > 25) {
		Serial.println("Clap detected!");
	}
	lastEvent = millis();
}
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

// Variable to store the time when last event happened
unsigned long lastEvent = 0;
boolean relayState = false;    // Variable to store the state of relay

void setup() {
	pinMode(relayPin, OUTPUT);  // Set relay pin as an OUTPUT pin
	pinMode(sensorPin, INPUT);  // Set sensor pin as an INPUT
}

void loop() {
	// Read Sound sensor
	int sensorData = digitalRead(sensorPin);

	// If pin goes LOW, sound is detected
	if (sensorData == LOW) {

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

	// Remember when last event happened
	lastEvent = millis();
	}
}
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 .
pinMode(relayPin, OUTPUT);
Şimdi alkış sesini tespit ettiğimizde, mesajı ekranda yazdırmak yerine, rölenin durumunu değiştiririz.
relayState = !relayState;
digitalWrite(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.
Etiketler: arduino ile ses sensörü kullanımı
Ekim 14, 2021
Listeye dön
cultureSettings.RegionId: 0 cultureSettings.LanguageCode: TR
Çerez Uyarısı

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası
sayfamızdan erişebilirsiniz.