Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

29 Haziran 2021 Salı

Arduino ile Ses Sensörü ve Alkışla Kontrol

 

Arduino ile Ses Sensörü ve Alkışla Kontrol

Bir sonraki projenize kulak eklemeye hazır mısınız?

Bu ses sensörleri ucuzdur, arayüzle bağlantı kurması kolaydır ve ses, alkış veya kapı vurma seslerini algılayabilir.

Bunları çeşitli sese duyarlı projeler için kullanabilirsiniz, örneğin, ışıklarınızı alkışlayarak aktif hale getirmek veya siz uzaktayken evcil hayvanlarınıza "kulak" tutmak.

Elektret Mikrofonlarının nasıl çalıştığını biliyor musunuz?

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

elektret mikrofon working.gif

Mikrofona konuştuğunuzda, sesinizin oluşturduğu ses dalgaları diyaframa çarpar ve diyaframa titreşmesine neden olur.

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

Kapasitans değiştikçe, plakalar üzerindeki voltaj değişir, bu da ölçerek sesin genliğini belirleyebiliriz.

Donanıma Genel Bakış

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

Bu elektrik sinyali, sayısallaştırmak için yerleşik LM393 Yüksek Hassas Karşılaştırıcıya beslenir ve OUT pininde bulunur.

ses sensörü hassasiyet ayarı ve karşılaştırıcı

Modül, OUT sinyalinin hassasiyet ayarı için dahili bir potansiyometreye sahiptir.

Bir potansiyometre kullanarak bir eşik belirleyebilirsiniz; Böylece, sesin genliği eşik değerini aştığında, modül DÜŞÜK aksi takdirde YÜKSEK çıkacaktır.

Bu kurulum, belirli bir eşiğe ulaşıldığında bir eylemi tetiklemek istediğinizde çok kullanışlıdır. Örneğin, sesin genliği bir eşiği geçtiğinde (bir vuruş algılandığında), ışığı kontrol etmek için bir röleyi etkinleştirebilirsiniz. Anladın!

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

ses sensörü gücü ve durum ledleri

Bunun dışında modülün iki LED'i vardır. Modüle güç verildiğinde Güç LED'i yanacaktır. Dijital çıkış DÜŞÜK olduğunda Durum LED'i yanacaktır.

Ses Sensörü Pin Çıkışı

Ses sensörünün yalnızca üç pimi vardır:

ses sensörü modülü pin çıkışı

VCCpin sensör için güç sağlar. Sensöre 3,3V - 5V arasında güç sağlanması önerilir.

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

DIŞARIkoşullar sessiz olduğunda pin YÜKSEK çıkış verir ve ses algılandığında DÜŞÜK olur. Arduino'daki herhangi bir dijital pime veya doğrudan 5V'luk bir röleye veya benzeri bir cihaza bağlayabilirsiniz.

Arduino ile Kablolama Ses Sensörü

Ses sensörünü Arduino ya bağlayalım.

Bağlantılar oldukça basit. Modül üzerindeki VCC pinini Arduino'daki 5V'a ve GND pinini toprağa bağlayarak başlayın.

Şimdi OUT pinini Arduino'nuzdaki 7 numaralı dijital pin'e bağlayın. Bu kadar!

Aşağıdaki çizim kablolamayı göstermektedir.

arduino ile kablolama ses sensörü

Ses Sensörünün Kalibre Edilmesi

Ses sensörünüzden doğru okumalar almak için önce kalibre etmeniz önerilir.

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

Potansiyometrenin düğmesini çevirerek bir eşik ayarlayabilirsiniz. Böylece, ses seviyesi eşik değerini aştığında, Durum LED'i yanacak ve dijital çıkış (ÇIKIŞ) DÜŞÜK çı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üldeki Durum LED'inin yanıp söndüğünü görene kadar potansiyometreyi ayarlayın.

İşte bu, sensörünüz artık kalibre edilmiş ve kullanıma hazırdır.

Sesi Algılama - Temel Örnek

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

Aşağıdaki örnek, seri monitörde alkışları veya çıtçıtları algılar ve mesajı yazdırır. Devam edin, taslağı deneyin; ve sonra onu biraz ayrıntılı olarak inceleyeceğiz.

#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 aşağıdaki çıktıyı seri monitörde görmelisiniz.

ses sensörü çıkışı

Açıklama:

Çizim, sensörün OUT pininin bağlı olduğu Arduino pininin açıklamasıyla başlar.

#define sensorPin 7

Sonra, lastEventalkış algılandığından beri geçen zamanı depolayan adlı bir değişken tanımlıyoruz 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 ilan ediyoruz. Seri monitörü de kurduk.

pinMode(sensorPin, INPUT);
Serial.begin(9600);

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

int sensorData = digitalRead(sensorPin);

Sensör, eşik değerini geçecek kadar yüksek bir ses algıladığında, çıkış DÜŞÜK olur. Ancak sesin arka plandaki sahte gürültüden değil, alkışlardan kaynaklandığından emin olmalıyız. Yani 25 milisaniye bekliyoruz. Çıktı, 25 milisaniyeden daha uzun süre DÜŞÜK kalırsa, alkış algılandığını bildiririz.

if (sensorData == LOW) {
	if (millis() - lastEvent > 25) {
		Serial.println("Clap detected!");
	}
	lastEvent = millis();
}

Alkışla Kontrol Cihazları

Bir sonraki projemiz için ses sensörünü , ellerinizi çırparak AC güçle çalışan cihazları açan bir " Klaket " olarak kullanacağız .

Bu proje, AC güçle çalışan cihazları kontrol etmek için Tek Kanal Röle Modülü kullanır. Röle modülüne aşina değilseniz, eğitimin altındaki okumayı (en azından gözden geçirmeyi) düşünün.

Uyarı:
Bu kart YÜKSEK AC voltajı ile etkileşim halindedir. Yanlış veya uygunsuz kullanım, ciddi yaralanmalara veya 

ölüme neden olabilir. Bu nedenle, etrafta deneyimli ve YÜKSEK AC voltajı hakkında bilgi sahibi kişiler için 

tasarlanmıştır.

Önce sensöre ve röle modülüne güç sağlamanız gerekir. VCC pinlerini Arduino'daki 5V pinine ve GND'yi 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 pimini (IN) dijital pim # 8'e bağlayın.

Ayrıca, röle modülünü, kontrol etmeye çalıştığınız AC gücüyle çalışan cihazla aynı hizaya yerleştirmeniz gerekir. Canlı AC hattınızı kesmeniz ve kesilen telin (duvardan gelen) bir ucunu COM'a ve diğerini NO'ya bağlamanız gerekir.

Aşağıdaki çizim kablolamayı göstermektedir.

arduino ile kablolama ses sensörü ve röle

Arduino Kodu

Cihazları alkışla kontrol etmek için çizim burada.

#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 bağlıyken yükleyip çalıştırdıktan sonra, her alkışladığınızda sensör cihazı açmalı veya kapatmalıdır.

Açıklama:

Bu taslağı bir öncekiyle karşılaştırırsanız, birkaç şey dışında pek çok benzerlik fark edeceksiniz.

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

#define relayPin 7

boolean relayState = false;

Kurulumda, relayPinçıktı olarak tanımlarız .

pinMode(relayPin, OUTPUT);

Şimdi alkış sesini algıladığımızda, mesajı seri monitöre yazdırmak yerine, sadece rölenin durumunu değiştiriyoruz.

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 olduğunu iki kez kontrol edin. Ses sensörü analog bir devre olduğu için, güç kaynağındaki gürültüye karşı daha hassastır.
  2. Ses sensörü üzerindeki elektret mikrofon da mekanik titreşime ve rüzgar sesine 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, muhtemelen 10 inçtir, bu nedenle iyi bir yanıt almak için çok daha yakın bir ses çıkarmanız gerekir.

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Hiç yorum yok:

Yorum Gönder

Yorum yazdığınız ve üye olduğunuz için Size teşekkür ederim.Burada olduğunuza göre hepimizin ilgi alanı Elektronik ve Programlama sonsuz bir dünyadayız.Hepimize Başarılar...

Not: Yalnızca bu blogun üyesi yorum gönderebilir.