Robotik Kodlama

Robotik Kodlama
Ana Sayfa

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

ses kontrol etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ses kontrol etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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.

28 Haziran 2021 Pazartesi

Buzzer modül ve Arduino ile Ses

 

Buzzer modül ve Arduino ile Ses


Aktif Buzzer ve Pasif Buzzer Modülleri: Buzzers, DC güç
kaynağı ve elektronik dönüştürücülerin entegre bir yapısıdır.
Zamanlayıcılarda , alarmlarda, elektronik oyuncaklarda, bilgisayarlarda, telefonlarda ve ses oluşumunun gerekli olduğu diğer ürünlerde yaygın olarak kullanılmaktadır aktif zil ve pasif zil. Ayrıntıya girmeden önce, ilk olarak ikisi arasındaki farkı göreceğiz.

Arduino ile arayüz oluşturan buzzer modülü


Aktif bir zil sesin kendisini üretir. Sadece pinleri bağlamanız ve mantığı bir LED'i parlatır gibi yukarı ve aşağı çevirmeniz gerekir. Bununla birlikte, bazı zil sesleri Arduino dijital pinin verdiğinden daha fazla akım gerektirir , bu durumda akımı yükseltmek için mosfet'i bağlamanız gerekir. Pasif zil için, sesi kontrol etmek için ses sinyalini göndermeniz gerekecektir. Ses sinyalini göndermek için pwm pinini kullanmanız gerekecektir. Çeşitli uygulamaları vardır. Müzik çalmak için kullanabilirsiniz.

Aktif Buzzer

Aktif zil, yalnızca elektrikleneceği zaman ses üretecektir. Sadece bir frekansta ses üretir Bu zil 2 KHz'lik duyulabilir bir frekansta çalışır.

Teknik Özellikler

Aktif zilin özellikleri aşağıdaki gibidir

  • 3.3 - 5V voltaj aralığında çalışır.
  • Yaklaşık 2 KHz frekansta çalışır
  • Küçük boyuttadır: 3,3 x 1,3 x 1,2 cm

Pin yapısı

Modülün sadece üç pimi vardır. Soldan sağa doğru pin aşağıdaki gibidirzil tipi aktif zil

S: Sinyal pimi

5V: giriş pimi

Zemin: Toprak pimi

Arduino ile aktif buzzer arabirimi

Bağlantı şeması çok daha kolay. Kabloları şekilde gösterildiği gibi bağlayınaktif buzzer arabirimi arduino

Pasif Buzzer

Pasif zil sesleri bir ton oluşturmak için bir ses sinyaline ihtiyaç duyar. Bu, zile bir pwm sinyali vererek veya farklı frekanslarda AÇIK ve KAPALI konuma getirilerek yapılabilir. Giriş frekansına bağlı olarak bir dizi ses sinyali oluşturabilir. 1.5 ile 2.5 KHz arasında frekans tonları üretebilir.

Şartname

Pasif zilin özellikleri aşağıdaki gibidir.

Çalışma Gerilimi 1.5 - 15V DC

Pin yapısı Modülün sadece üç pimi vardır. Soldan sağa doğru pin aşağıdaki gibidir.

pasif zil

S: Sinyal pimi

5V: giriş pimi

Zemin: Toprak pimi

Arduino ile pasif Buzzer arabirimi

Bağlantı şeması çok daha kolay. Kabloları şekilde gösterildiği gibi bağlayınarduino ile pasif buzzer arabirimi

Kod 

// This code is for testing the passive buzzer

int out =11;                                                                                         // initializing pin 11 as buzzer pin

void setup ()                                                                                      // Code written in it will only run once.
 {
   pinMode(out, OUTPUT);                                                            // Setting pin 11 as output pin
 }

void loop ()                                                                                         // Code written in it will run repeatedly
 {
   unsigned char i, j ;                                                                          // Declaring variables
   while (1){
     for (i = 0; i <80; i++){                                                                     // 100 cycles of sound
       digitalWrite (out, HIGH);                                                         // This will turn the buzzer ON
       delay (1) ;                                                                                      // Giving a Delay of 1ms will set frequency 1
       digitalWrite (out, LOW);                                                          // This will turn the buzzer OFF
       delay (1) ;                                                                                      // Giving a delay ms
     }
     for (i = 0; i <100; i++){                                                                 // 100 cycles of sound
       digitalWrite (out, HIGH);                                                         // This will turn the buzzer ON
       delay (2) ;                                                                                      // Giving a delay of 2ms will set frequency 2
       digitalWrite (out, LOW);                                                          // This will turn the buzzer OFF
       delay (2) ;                                                                                      // Giving a delay of 2ms
     }
   }
 }

Pasif zil kullanarak bir Melodi çalmak

Bu örnekte, pasif zil kullanarak bir melodi çalacağız. Buzzerin farklı frekanslarda ton üreteceği pwm sinyalini üretmek için Arduino'nun yeteneğini kullanacağız. Bağlantılar, pasif zil için yaptığımızla aynı. Sadece kodu yükleyin ve zil bir melodi çalacaktır.

Melody oyun Kodu

// This code is for testing the passive buzzer

int out =11;                                                                                         // initializing pin 11 as buzzer pin

void setup ()                                                                                      // Code written in it will only run once.
 {
   pinMode(out, OUTPUT);                                                            // Setting pin 11 as output pin
 }

void loop ()                                                                                         // Code written in it will run repeatedly
 {
   unsigned char i, j ;                                                                          // Declaring variables
   while (1){
     for (i = 0; i <80; i++){                                                                     // 100 cycles of sound
       digitalWrite (out, HIGH);                                                         // This will turn the buzzer ON
       delay (1) ;                                                                                      // Giving a Delay of 1ms will set frequency 1
       digitalWrite (out, LOW);                                                          // This will turn the buzzer OFF
       delay (1) ;                                                                                      // Giving a delay ms
     }
     for (i = 0; i <100; i++){                                                                 // 100 cycles of sound
       digitalWrite (out, HIGH);                                                         // This will turn the buzzer ON
       delay (2) ;                                                                                      // Giving a delay of 2ms will set frequency 2
       digitalWrite (out, LOW);                                                          // This will turn the buzzer OFF
       delay (2) ;                                                                                      // Giving a delay of 2ms
     }
   }
 }

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.