Kapı zili projesi; Arduino Uno, bir buton ve pasif buzzerla yapılır. Butona basılınca Arduino tone() komutuyla buzzera farklı frekanslar gönderir ve kısa bir melodi çalar. İsterseniz 433 MHz verici-alıcı çiftiyle butonu kablosuz yapabilirsiniz; bunun için butonun yanına ikinci bir Arduino Nano gerekir.
Kapı zili, hem ses biliminin hem de elektroniğin temel fikirlerini gösteren kolay bir okul projesidir. Bu yazıda Arduino Uno, bir buton ve pasif buzzerla melodi çalan bir zil kuruyoruz. Sesin frekansla ilişkisini, kodu ve kablosuz sürümü adım adım anlatıyoruz. Sonda ödevinizi bir ses deneyiyle nasıl sunacağınızı bulacaksınız.
Kapı zili projesi nedir?
Kapı zili projesi, bir butona basıldığında hoparlörden ya da buzzerdan uyarı sesi veya melodi çalan küçük bir elektronik devredir. Bizim sürümümüzde buton Arduino'ya "biri geldi" bilgisini verir. Arduino da buzzera hangi notayı ne kadar süre çalacağını söyler.
Aktif buzzer mı pasif buzzer mı seçilmeli?
Melodi çalmak için pasif buzzer seçilmelidir, çünkü pasif buzzer kendisine gönderilen frekansta ses verir. Aktif buzzerın içinde kendi osilatörü vardır ve gerilim verilince hep aynı tonda öter.
| Özellik | Aktif buzzer | Pasif buzzer |
|---|---|---|
| Ses üretimi | İçindeki devre üretir | Arduino'nun gönderdiği sinyalle |
| Ton | Tek ve sabit | Frekansa göre değişir |
| Arduino komutu | digitalWrite(HIGH) | tone(pin, frekans) |
| Melodi | Çalamaz | Çalabilir |
İkisi dışarıdan çok benzer görünür. Farkı ve ayırt etme yollarını aktif ve pasif buzzer farkı yazısında anlattık.
Pasif buzzer melodiyi nasıl çalar?
Pasif buzzer, Arduino'nun gönderdiği kare dalganın frekansında titreşerek ses çıkarır; frekans yükseldikçe ses incelir. Örneğin 659 Hz, buzzerın zarının saniyede 659 kez ileri geri gitmesi demektir. Bir titreşimin süresi 1 / 659 ≈ 1,52 ms'dir.
| Nota | Frekans (yaklaşık) | Kodda |
|---|---|---|
| Sol (4. oktav) | 392 Hz | 392 |
| Do (5. oktav) | 523 Hz | 523 |
| Re (5. oktav) | 587 Hz | 587 |
| Mi (5. oktav) | 659 Hz | 659 |
Bir oktav yukarıdaki aynı nota, frekansın iki katıdır. Örneğin 4. oktavdaki Do yaklaşık 262 Hz, 5. oktavdaki Do yaklaşık 523 Hz'dir.
Hangi malzemeler gerekir?
Kablolu kapı zili için Arduino Uno, bir buton, pasif buzzer, breadboard ve jumper kablo yeterlidir. Kablosuz sürüm için 433 MHz verici-alıcı çifti ve bir Arduino Nano eklenir.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino Uno R3 (CH340) | 1 | Butonu okur, melodiyi çalar |
| 12×12 mm tact buton | 1-2 | Zil düğmesi olur |
| 17 mm pasif buzzer | 1 | Notaları sese çevirir |
| 830 delikli breadboard | 1 | Lehimsiz bağlantı sağlar |
| 433 MHz verici-alıcı çifti | 1 takım | Kablosuz sürümde zil sinyalini taşır |
| Arduino Nano (CH340) | 1 | Kablosuz sürümde butonu okuyup verici sürer |
Kablosuz sürümde Nano, 9V pil başlığıyla VIN pininden beslenir. Ayrıca birkaç jumper kablo ve verici ile alıcı için 17 cm'lik birer tel anten hazırlayın.
Kapı zili nasıl bağlanır?
Buton D2'ye, pasif buzzer D8'e bağlanır; kablosuz sürümde alıcının DATA ucu Uno'nun D11 pinine, vericinin DATA ucu Nano'nun D12 pinine gider.
- Buton: Bir ucu D2'ye, çapraz karşısındaki ucu GND'ye. Kod iç pull-up direncini açar.
- Pasif buzzer: Artı (+) bacağı D8'e, diğer bacağı GND'ye.
- 433 MHz alıcı: VCC → 5V, GND → GND, DATA → D11.
- 433 MHz verici (Nano tarafı): VCC → 5V, GND → GND, DATA → D12. Buton D2 ile GND arasına.
Antenin uzunluğu dalga boyunun dörtte biridir: 300.000.000 / 433.920.000 ≈ 0,69 m, bunun dörtte biri ≈ 17 cm. Modüllerin ayrıntısı 433 MHz verici ve alıcı yazısında.
Kapı zili adım adım nasıl yapılır?
Zil, önce kablolu olarak kurulup denenir, sonra istenirse kablosuz parça eklenir.
- Butonu ve buzzerı breadboard'a takın, yukarıdaki gibi Uno'ya bağlayın.
- Aşağıdaki kodu yükleyin. Butona basınca dört notalık melodi çalmalıdır.
- Melodiyi değiştirmek için notalar ve sureler dizilerindeki sayıları değiştirin.
- Kablosuz sürüm için Arduino IDE'de Kütüphane Yöneticisi'nden RadioHead kütüphanesini kurun.
- Alıcıyı Uno'ya, vericiyi ve ikinci butonu Nano'ya bağlayıp iki kodu yükleyin.
#include <RH_ASK.h>
#include <SPI.h> // RadioHead derlemesi için gerekli
RH_ASK rf; // alıcı DATA = D11
const int BUTON = 2, BUZZER = 8;
int notalar[] = {659, 523, 587, 392}; // Mi, Do, Re, Sol
int sureler[] = {400, 400, 400, 800}; // milisaniye
void zilCal() {
for (int i = 0; i < 4; i++) {
tone(BUZZER, notalar[i], sureler[i]);
delay(sureler[i] + 50);
}
}
void setup() {
pinMode(BUTON, INPUT_PULLUP);
rf.init();
}
void loop() {
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);
if (digitalRead(BUTON) == LOW || rf.recv(buf, &len)) {
zilCal();
}
}
Kablolu sürümde 433 MHz alıcı takılı olmasa da bu kod çalışır. Nano'daki verici kodu ise butona basılınca kısa bir mesaj gönderir:
#include <RH_ASK.h>
#include <SPI.h>
RH_ASK rf; // verici DATA = D12
void setup() { pinMode(2, INPUT_PULLUP); rf.init(); }
void loop() {
if (digitalRead(2) == LOW) {
rf.send((uint8_t *)"ZIL", 3);
rf.waitPacketSent();
delay(2500); // zil çalarken tekrar göndermez
}
}
Hangi güvenlik kurallarına dikkat edilmeli?
Kapı zili düşük gerilimle çalışır; yine de şu kurallara uyun:
- Zili evdeki 220V'luk zil hattına ya da prize bağlamayın. Devre yalnızca USB veya pille çalışır.
- 9V pilin uçlarını birbirine ya da metal eşyaya değdirmeyin. Isınan, şişen ya da akan pili hemen çıkarın ve bir yetişkine söyleyin.
- Pili bağlantıyı bitirdikten sonra takın; kabloları değiştirirken pili çıkarın.
- Buzzerı kulağınıza yakın çalıştırmayın. Yakından uzun süre dinlenen yüksek ses kulağı yorar.
- Butonu gerçek kapıya monte etmek için delik açmanız gerekirse bunu bir yetişkin yapsın.
Ödevinizi nasıl sunarsınız?
Ödevinizi, zilin çaldığı notaların frekanslarını ve sesin uzaklıkla değişimini ölçerek sunabilirsiniz.
- Frekans deneyi: Tek bir notayı 262, 523 ve 1047 Hz ile çalın. Her oktavda sesin nasıl inceldiğini dinleyicilere sorun.
- Ses şiddeti: Telefondaki bir ses ölçer uygulamasıyla buzzerdan 0,5, 1 ve 2 metre uzakta desibel ölçün.
- Menzil: Kablosuz sürümde vericiyle her adımda uzaklaşın ve zilin hangi mesafede çalmadığını not edin.
Açık alanda uzaklık iki katına çıkınca ses düzeyi yaklaşık 6 dB azalır; odada yansımalar nedeniyle düşüş daha az olabilir. Ölçümlerinizi bir tabloya ve grafiğe dökün. Farklı boyuttaki buzzerlar için buzzer kategorisine bakabilirsiniz.
Sık sorulan sorular
Buzzer neden melodi yerine tek bir ses çıkarıyor?
Buzzer tek ses çıkarıyorsa büyük olasılıkla aktif buzzer kullanıyorsunuz. Aktif buzzer, tone() komutundaki frekansı dikkate almaz ve kendi tonunda öter. Pasif buzzerın altında genellikle yeşil bir devre kartı görünür, aktif buzzerın altı ise siyah reçineyle kapalıdır. Emin olmak için buzzerı kısa süre 5V'a bağlayın; ötüyorsa aktiftir.
Butona basmadığım halde zil neden çalıyor?
Zil kendiliğinden çalıyorsa butonun bağlandığı pin boşta kalıyor olabilir. Koddaki INPUT_PULLUP satırının durduğundan ve butonun öteki ucunun GND'ye gittiğinden emin olun. Tact butonun dört bacağı ikişer ikişer birbirine bağlıdır; yanlış iki bacağı kullanırsanız buton hep basılı görünür. Bu yüzden çapraz karşıdaki bacakları kullanın.
Ses neden çok kısık?
Pasif buzzerlar küçük oldukları için kısık ses verebilir. Buzzerın sesi frekansa göre değişir; çoğu buzzer 2.000-4.000 Hz civarında daha yüksek duyulur. Melodiyi bir oktav yukarı taşıyarak deneyin. Buzzerın deliğini kapatmayın ve sert bir yüzeye yapıştırın. Daha güçlü ses için küçük bir hoparlör ve amfi modülü kullanılabilir.
433 MHz zil neden bazen çalmıyor?
433 MHz zil genellikle anten eksikliği ya da mesafe yüzünden çalmaz. Verici ve alıcının ANT ucuna 17 cm'lik düz birer tel lehimleyin. Duvarlar ve metal kapılar sinyali zayıflatır; vericiyi 5V yerine daha yüksek gerilimle beslemek menzili artırabilir, ama modülün sınırını ürün sayfasından kontrol edin. Önce iki modülü aynı masada deneyin.
Melodi çalarken ikinci basış neden algılanmıyor?
Melodi çalarken Arduino delay() komutlarında beklediği için butonu okumaz. Bu kapı zili için sorun değildir, çünkü melodi yaklaşık iki saniye sürer. Daha gelişmiş bir projede millis() ile zaman tutup butonu sürekli okuyabilirsiniz. Bu yöntem, kodun aynı anda birkaç işi takip etmesini sağlar.
Özet
- Melodi çalmak için pasif buzzer gerekir; aktif buzzer tek tonda öter.
- tone(pin, frekans, süre) komutu, buzzera istenen frekansta kare dalga gönderir.
- Bağlantı: buton D2 ile GND arasına, pasif buzzer D8'e.
- Bir oktav yukarıdaki nota, frekansın iki katıdır: Do5 ≈ 523 Hz, Do4 ≈ 262 Hz.
- Kablosuz sürümde Nano'daki verici D12'den, Uno'daki alıcı D11'den RadioHead ile haberleşir; antenler 17 cm.
- Ödevde frekans, ses şiddeti ve kablosuz menzil ölçümleri yapabilirsiniz.
