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.
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.
Malzemelerin toplam maliyeti nedir? Çok iyi anlatım olmuş saygılar İlge hocam
84. satırdaki time.sleep(lenght) hata veriyor
SytntaxError: expected an intended block
alkış sesimizi beklemeden alarm çalışıyo ne yapabiliriz.
Yazıda da belirttiğim üzere kart üzerindeki trimpot ile hassasiyeti değiştirebilirsiniz.
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
Sorun kodlarda olabilir bi bakar mısınız
Alkış sesini beklemeden, buzzer ötüyor.
Kodlarda sıkıntı oldugunu dusunuyoruz, yardım eder misiniz?
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?
Hayır?
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?
Ses modülünüz arızalı olabilir.
Eyvallah
Nasıl susturuyoruz peki veya susturmak için nasıl bir yol izlenilebilir. yardım edin lütfen.