back to top

Raspberry Pi 3 İle Sese Duyarlı Alarm Devresi #16

Raspberry Pi Dersleri serimizde kullanacağımız malzemelerin tamamına sizler için hazırladığımız setler ile kolayca sahip olabilirsiniz. Raspberry Pi’ye Uzaktan Bağlantı Yöntemleri (VNC,SSH,TTL) dersimize kadar olan malzemeler için Kombo Kit, Raspberry Pi 3 Röle Kartı İle Alarm Devresi Yapımı dersimize kadar olan malzemeler için Süper Başlangıç Seti, tüm derslerdeki malzemeler için Proje Seti tercih edebilirsiniz.

Merhaba arkadaşlar. Bu dersimizde Raspberry Pi‘mizi kullanarak sese duyarlı alarm devresi yapacağız.

Gerekli malzemeler:

Bildiğimiz üzere Raspberry Pi’miz, 3.5mm jak çıkışı ve HDMI üzerinden ses çıkışı sunabilmektedir. Buna karşılık Pi üzerinde herhangi bir ses girişi mevcut değildir. Ses kaydı amaçlı mikrofon bağlamak için özel shield kartları veya USB ses kartları kullanmamız gerekir. Bu derste ise çok daha basit yapıya sahip bir mikrofon sensörü ile ses şiddeti algılayıp, bu şiddetin seviyesine göre sesli bir alam tetiklemeyi öğreneceğiz.

Ses Sensörü Nedir?

Kullanacağımız ses sensörü, bir mikrofon ve basit bir amfi devresinden oluşmaktadır. Mikrofonun çıkışındaki çok düşük seviyedeki (milivoltlar mertebesinde) sinyali, amfi devresi güçlendirerek analog veya dijital olarak çıkış almamızı sağlar. Analog sinyal, bize sesin şiddetini ölçmemizi sağlarken kart üzerinde bulunan vidalı trimpot ile dijital çıkışın hangi seviyede aktif olacağını çok hassas bir şekilde ayarlayabilmemiz mümkündür.

Kartın üzerinde yer alan LED’lerden trimpotun yakınında yer alanı, dijital çıkışın hangi seviyede tetikleneceğini gösterir.

Ses sensör modülü

Raspberry Pi – ses sensörü devre şeması:

Not: Kullandığım çizim programında (Fritzing) ses sensörünün birebir aynısını bulamadığım için temsili olarak bir mikrofon kartı kullandım. Sizler bağlantı yaparken sensörün + pinin 3.3V’a, G pinini GND’ye, DO pinini de GPIO18’e bağlayın.

Ses sensörü Python kodu :

import time 
import RPi.GPIO as GPIO 
GPIO.setmode(GPIO.BCM)
buzzer_pin = 17
sensor_pin = 18 
GPIO.setup(sensor_pin, GPIO.IN)
GPIO.setup(buzzer_pin, GPIO.IN)
GPIO.setup(buzzer_pin, GPIO.OUT) 
notes = {
 'B0' : 31,
 'C1' : 33, 'CS1' : 35,
 'D1' : 37, 'DS1' : 39,
 'EB1' : 39,
 'E1' : 41,
 'F1' : 44, 'FS1' : 46,
 'G1' : 49, 'GS1' : 52,
 'A1' : 55, 'AS1' : 58,
 'BB1' : 58,
 'B1' : 62,
 'C2' : 65, 'CS2' : 69,
 'D2' : 73, 'DS2' : 78,
 'EB2' : 78,
 'E2' : 82,
 'F2' : 87, 'FS2' : 93,
 'G2' : 98, 'GS2' : 104,
 'A2' : 110, 'AS2' : 117,
 'BB2' : 123,
 'B2' : 123,
 'C3' : 131, 'CS3' : 139,
 'D3' : 147, 'DS3' : 156,
 'EB3' : 156,
 'E3' : 165,
 'F3' : 175, 'FS3' : 185,
 'G3' : 196, 'GS3' : 208,
 'A3' : 220, 'AS3' : 233,
 'BB3' : 233,
 'B3' : 247,
 'C4' : 262, 'CS4' : 277,
 'D4' : 294, 'DS4' : 311,
 'EB4' : 311,
 'E4' : 330,
 'F4' : 349, 'FS4' : 370,
 'G4' : 392, 'GS4' : 415,
 'A4' : 440, 'AS4' : 466,
 'BB4' : 466,
 'B4' : 494,
 'C5' : 523, 'CS5' : 554,
 'D5' : 587, 'DS5' : 622,
 'EB5' : 622,
 'E5' : 659,
 'F5' : 698, 'FS5' : 740,
 'G5' : 784, 'GS5' : 831,
 'A5' : 880, 'AS5' : 932,
 'BB5' : 932,
 'B5' : 988,
 'C6' : 1047, 'CS6' : 1109,
 'D6' : 1175, 'DS6' : 1245,
 'EB6' : 1245,
 'E6' : 1319,
 'F6' : 1397, 'FS6' : 1480,
 'G6' : 1568, 'GS6' : 1661,
 'A6' : 1760, 'AS6' : 1865,
 'BB6' : 1865,
 'B6' : 1976,
 'C7' : 2093, 'CS7' : 2217,
 'D7' : 2349, 'DS7' : 2489,
 'EB7' : 2489,
 'E7' : 2637,
 'F7' : 2794, 'FS7' : 2960,
 'G7' : 3136, 'GS7' : 3322,
 'A7' : 3520, 'AS7' : 3729,
 'BB7' : 3729,
 'B7' : 3951,
 'C8' : 4186, 'CS8' : 4435,
 'D8' : 4699, 'DS8' : 4978
}
def buzz(frequency, length):
 if(frequency==0):
 time.sleep(length)
 return
 period = 1.0 / frequency
 delayValue = period / 2
 numCycles = int(length * frequency)
 
 for i in range(numCycles):
 GPIO.output(buzzer_pin, True)
 time.sleep(delayValue)
 GPIO.output(buzzer_pin, False)
 time.sleep(delayValue)
def play():
 buzz(notes['A3'], 0.5)
 buzz(notes['A3'], 0.5)
 buzz(notes['A3'], 0.5)
 buzz(notes['F3'], 0.35)
 buzz(notes['C4'], 0.15)
 buzz(notes['A3'], 0.5)
 buzz(notes['F3'], 0.35)
 buzz(notes['C4'], 0.15)
 buzz(notes['A3'], 1.0)
while True:
 if GPIO.input(sensor_pin):
 print("Ses Alarmi!")
 play()
 time.sleep(0.5)

Alarmın melodisi eminim çoğunuza tanıdık gelecektir 😀

Raspberry Pi Hakkında Daha Fazlasını Öğrenmeye Devam Et

Raspberry Pi pek çok yönüyle avantaj sahibi ve geliştiriciler tarafından çok sevilen bir platform. Elektronik projelerinde, bilgisayar bilimlerinde ve robotik çalışmalarında sağladığı destek ve rahatlık ile öğrenmeyi sevdiren Raspberry Pi hergün daha da çok gelişiyor. 

Peki siz de daha fazla gelişmek istemez misiniz? Linux bilginizi geliştirmek, elektronik dünyasına atılmak ve eğlenceli projelere imza atmak için sizi Raspberry Pi ile yolculuğa çıkarıyoruz! Sizler için hazırladığımız Raspberry Pi eğitim serisine devam edin :

Raspberry ile RFID Kartı Okuma

RFID, nesnelerin radyo dalgaları kullanılarak tanınması için geliştirilmiş bir teknolojidir. Toplu taşıma araçlarındaki biletler, otoyol gişelerinde kullanılan HGS/OGS gibi ödeme sistemleri, okul/işyerlerimizdeki turnikelerde sıklıkla karşımıza çıkar.

15. Dersimizde Raspberry ile RFID Kartı Okumayı öğreneceğiz ve Raspberry ile kart okuma yapacağız.

MPU6050 İvmeölçer/Jiroskop Kullanımı

MPU6050, 3-eksen jiroskop ve 3-eksen ivmeölçere sahip bir IMU (inertial measurement unit – ataletsel ölçü birimi) sensörüdür. Cisimlerin hareket ve ivmelerini ölçmek için kullanılır.17. Dersimizde MPU6050 İvmeölçer/Jiroskop Kullanımını sizler için ele aldık.

Son Çıkan Yazılar

14 YORUMLAR

  1. Trimpotu sağa çevirince direnç ne oluyor , sola çevirince ne oluyor?
    Yani direnç ne tarafa doğru artıyor veya azalıyor.
    Bide Sadece hata trimpottan mı kaynaklanıyor.
    Bide bi hata veriyor mail olarak attım.
    Teşekkürler

    • Kodları denediğimizde bu şekilde bir sorun ile karşılaşmadık. Kart üzerindeki trimpot’un yakınında bulunan LED ses şiddetine göre tepki veriyor mu?

  2. ses sensoru uzerindeki ayarlı dirençle oynadım. Direnci çok yuksek yapınca buzzer çalmıyor. Direnci belli bi değerin altına dusurdugumde ıse kendi kendine buzzer çalmaya baslıyor.(bunları yaparken ortamda ses yoktu) sorun n olabilir?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz