Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

Ultrasonik Theremin Projesi: HC-SR04 ile Elle Müzik

Ultrasonik Theremin Projesi: HC-SR04 ile Elle Müzik
Kısa cevap

Ultrasonik theremin, HC-SR04 sensörüyle elinizin uzaklığını ölçüp bu mesafeyi ses frekansına çeviren bir Arduino projesidir. El sensöre yaklaştıkça ses incelir, uzaklaştıkça kalınlaşır; örnek kodda 5-50 cm arası 1.000-200 Hz'e karşılık gelir. Ses pasif buzzerdan ya da PAM8403 amfi ve küçük bir hoparlörden çıkar.

Dokunmadan çalınan bir müzik aleti düşünün: elinizi havada yaklaştırıp uzaklaştırdıkça ses değişiyor. Bu alete theremin denir. Bu projede ultrasonik mesafe sensörü HC-SR04 ve Arduino Uno ile basit bir theremin yapıyoruz. Proje ses dalgası, frekans ve mesafe ölçümünü birlikte öğretir; ortaokul, lise ve TÜBİTAK 4006 projeleri için uygundur.

Theremin nedir?

Theremin, çalan kişinin aletin antenlerine dokunmadan, yalnızca elinin konumuyla ses yüksekliğini ve perdesini değiştirdiği elektronik bir müzik aletidir. Rus mucit Lev Termen (Léon Theremin) tarafından 1920'de geliştirilmiştir.

Gerçek theremin, elin anten çevresinde oluşturduğu sığa (kapasite) değişimini algılar. Bizim sürümümüzde bu işi ultrasonik sensör yapar: HC-SR04 elin uzaklığını ölçer, Arduino da bu mesafeyi bir frekansa çevirip hoparlöre gönderir. Sonuç gerçek theremine benzer, ama ölçüm yöntemi farklıdır.

Hangi malzemeler gerekir?

Temel sürüm için Arduino Uno, HC-SR04 sensör, pasif buzzer ve bir buton yeterlidir. Daha yüksek ses isteyenler PAM8403 amfi ve 4 Ω hoparlör ekler.

Malzeme listesi

MalzemeAdetNe işe yarar?
Arduino Uno R3 (CH340, USB kablolu)1Mesafeyi ölçer, sesi üretir
HC-SR04 ultrasonik mesafe sensörü1Elin uzaklığını ölçer (2-400 cm)
Pasif buzzer 17 mm1Temel sürümde ses çıkışı
6x6 mm tact buton1Kaygan ses ve nota modu arasında geçiş
PAM8403 ses kontrollü amfi1İsteğe bağlı; sesi yükseltir
4 Ω 2 W hoparlör (44x44 mm)1İsteğe bağlı; amfiye bağlanır
10 kΩ direnç, breadboard, jumper kablolar1Amfi girişi ve bağlantılar

Pasif buzzer kullanıyoruz, çünkü aktif buzzer tek bir tonda öter ve frekansı değiştirilemez. Farkı aktif ve pasif buzzer farkı yazısında anlattık.

HC-SR04 mesafeyi nasıl ölçer?

HC-SR04, 40 kHz'lik ultrasonik bir ses darbesi gönderir ve yankının dönüş süresini Echo pininde darbe genişliği olarak verir; Arduino bu süreyi 58'e bölerek mesafeyi santimetre olarak bulur.

Ses havada 20 °C'de yaklaşık 343 m/s hızla gider, yani 1 cm'yi yaklaşık 29 µs'de alır. Darbe gidip geri geldiği için 1 cm mesafe yaklaşık 58 µs yankı süresine karşılık gelir. Sensörün çalışma ayrıntıları HC-SR04 ultrasonik sensör yazısında.

Devre nasıl bağlanır?

HC-SR04'ün Trig ucu D9'a, Echo ucu D10'a; pasif buzzer D8'e, buton D2'ye bağlanır. Sensör ve Arduino USB'den 5V ile beslenir.

  1. HC-SR04: VCC → 5V, Trig → D9, Echo → D10, GND → GND. Sensörü yukarı bakacak şekilde, bir sensör tutucuyla sabitleyin.
  2. Pasif buzzer: artı (+) ucu D8'e, diğer ucu GND'ye.
  3. Buton: bir ucu D2'ye, çaprazındaki ucu GND'ye. Kod iç pull-up direncini kullanır.
  4. Yüksek ses için (isteğe bağlı): buzzer yerine D8'i 10 kΩ direnç üzerinden PAM8403'ün sol (L) ses girişine, amfinin ses girişi GND'sini Arduino GND'sine bağlayın. Amfiyi 5V ve GND'den besleyin; hoparlörü L+ ve L− çıkışlarına takın.
  5. USB kablosunu takıp kodu yükleyin ve elinizi sensörün 5-50 cm üstünde gezdirin.
Ultrasonik theremin bağlantı şeması: HC-SR04 sensörünün VCC ucu Arduino Uno 5V pinine, Trig ucu D9'a, Echo ucu D10'a, GND ucu GND'ye bağlı; pasif buzzerın artı ucu D8'e, mod butonu D2 ile GND arasına bağlı; kesik çizgili kutuda isteğe bağlı PAM8403 amfi bağlantısı: D8 10 kΩ dirençle L girişine, 4 ohm hoparlör L artı ve L eksi çıkışına; altta 5-50 cm aralığı Do5 523 Hz'den Do4 262 Hz'e sekiz nota bölgesine ayrılmış, kaygan modda 1.000 Hz'den 200 Hz'e iniyor
HC-SR04 Trig D9'a, Echo D10'a, buzzer D8'e, buton D2'ye bağlanır; el yaklaştıkça ses incelir, nota modunda 5-50 cm Do5'ten Do4'e sekiz notaya bölünür.

PAM8403 köprü (BTL) çıkışlıdır: hoparlörün eksi ucu GND'ye bağlanmaz, yalnızca L− çıkışına gider. Amfinin ayrıntıları PAM8403 mini amfi yazısında.

Theremin kodu nasıl çalışır?

Kod her 30 ms'de mesafeyi ölçer; el 5-50 cm arasındaysa mesafeyi frekansa çevirip tone() ile çalar, bu aralığın dışındaysa sesi keser. Buton kaygan ses ile nota modu arasında geçiş yapar.

const byte TRIG = 9, ECHO = 10, SES = 8, BUTON = 2;
const int NOTA[] = {262, 294, 330, 349, 392, 440, 494, 523};  // Do4..Do5
bool notaModu = false;

long mesafeOlc() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  long sure = pulseIn(ECHO, HIGH, 30000);   // en cok 30 ms bekle
  if (sure == 0) return -1;                 // yanki yok
  return sure / 58;                         // cm
}

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(BUTON, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(BUTON) == LOW) {          // mod degistir
    notaModu = !notaModu;
    delay(300);
    while (digitalRead(BUTON) == LOW);
  }
  long cm = mesafeOlc();
  if (cm < 5 || cm > 50) {
    noTone(SES);                            // el yok: sessiz
  } else if (notaModu) {
    int i = 7 - (cm - 5) * 8 / 46;          // yakin = tiz nota
    tone(SES, NOTA[i]);
  } else {
    tone(SES, map(cm, 5, 50, 1000, 200));   // kaygan ses
  }
  delay(30);
}

Mesafe hangi sese karşılık gelir?

Kaygan modda el yaklaştıkça frekans doğrusal olarak artar; nota modunda 5-50 cm aralığı, her biri yaklaşık 6 cm genişliğinde sekiz bölgeye ayrılır ve her bölge bir Do majör notası çalar.

MesafeKaygan modNota modu
5-10 cm1.000-912 HzDo5 (523 Hz)
11-16 cm894-805 HzSi4 (494 Hz)
17-22 cm787-698 HzLa4 (440 Hz)
23-27 cm680-609 HzSol4 (392 Hz)
28-33 cm592-503 HzFa4 (349 Hz)
34-39 cm485-396 HzMi4 (330 Hz)
40-45 cm378-289 HzRe4 (294 Hz)
46-50 cm272-200 HzDo4 (262 Hz)

Do5'in frekansı Do4'ün yaklaşık iki katıdır; bu aralığa oktav denir. La4 notası 440 Hz'dir ve çalgıların akordunda başvuru sesi olarak kullanılır.

Hangi güvenlik kurallarına dikkat edilmeli?

  • Devreyi bilgisayarın USB çıkışından ya da 5V USB adaptörden besleyin; 220V'a hiçbir şey bağlamayın.
  • Hoparlörü doğrudan Arduino pinine bağlamayın; pinin akım sınırı aşılır. Hoparlör yalnızca amfiye bağlanır.
  • Amfinin ses düğmesini kısık başlatın; yüksek frekanslı ses yakından kulağı rahatsız eder.
  • Projeyi öğretmen ya da yetişkin gözetiminde kurun.

Ödevinizi nasıl sunarsınız?

Nota modunda basit bir çocuk şarkısının ilk ölçülerini çalmak sunumu akılda kalıcı yapar.

  • Problem: "Bir cisme dokunmadan uzaklığı nasıl ölçeriz ve bunu sese nasıl çeviririz?"
  • Deney: Elinizi cetvelle 10, 20, 30 ve 40 cm'ye koyup sesi telefondaki bir frekans ölçer uygulamasıyla ölçün; tabloyla karşılaştırın.
  • Hesap: 58 µs/cm değerinin ses hızından nasıl çıktığını gösterin.
  • Rapor: Bağlantı şemasını, mesafe-frekans tablosunu ve kodun açıklamasını ekleyin.
  • Geliştirme: İkinci bir HC-SR04 ile ses şiddetini de elle kontrol edin.

Sık sorulan sorular

Ses neden kesik kesik ya da titrek çıkıyor?

Ultrasonik ölçüm her seferinde birkaç milimetre farklı sonuç verebilir; bu da frekansın sürekli biraz değişmesine yol açar. Son üç ölçümün ortalamasını almak sesi yumuşatır. Sensörün önünde yansıma yapan başka cisimler olmamalı; elinizi düz ve sensöre dik tutun.

Aktif buzzer ile theremin yapılabilir mi?

Yapılamaz. Aktif buzzerin içinde sabit frekanslı bir osilatör vardır ve Arduino onu yalnızca açıp kapatabilir. Theremin için frekansın değişmesi gerektiği için pasif buzzer ya da amfi ve hoparlör kullanılmalıdır.

Ses aralığını nasıl değiştirebilirim?

Kaygan modda map(cm, 5, 50, 1000, 200) satırındaki 1000 ve 200 değerlerini değiştirin. Örneğin 2000 ve 100 yazarsanız ses aralığı genişler. Mesafe aralığını büyütmek için 5 ve 50 değerlerini değiştirebilirsiniz; ancak 80 cm'nin üstünde el algılaması zorlaşır.

Hoparlörü doğrudan Arduino'ya bağlayabilir miyim?

Bağlamayın. Küçük bir hoparlörün direnci 4-8 Ω'dur ve doğrudan bağlandığında pinden izin verilen akımdan çok daha fazlası çekilir. Ses yükseltmek için PAM8403 gibi bir amfi ya da bir transistörlü sürücü devresi kullanın.

Özet

  • Ultrasonik theremin, HC-SR04 ile ölçülen el mesafesini ses frekansına çevirir.
  • Bağlantı: Trig D9, Echo D10, pasif buzzer D8, mod butonu D2.
  • Mesafe = yankı süresi / 58; ses 5-50 cm aralığında çalar, dışında susar.
  • Kaygan modda 1.000-200 Hz, nota modunda Do4-Do5 arası sekiz nota çalar.
  • Yüksek ses için PAM8403 amfi ve 4 Ω hoparlör kullanılır; hoparlör pine doğrudan bağlanmaz.

Bu yazıdaki ürünler

Diğer yazılar

11 Kasım 20266 dk okuma

Pense Çeşitleri: Yan Keski, Kargaburun ve Kombine Pense

Pense çeşitleri arasında seçim işe göre yapılır: tel ve komponent bacağı kesmek için yan keski, dar alanda tutmak ve bükmek için kargaburun,...

Devamını oku →
11 Kasım 20267 dk okuma

Işık Takip Eden Robot Yapımı: Arduino, LDR ve L298N

Işık takip eden robot, önüne takılan iki LDR ile hangi tarafın daha aydınlık olduğunu ölçüp tekerleklerini o yöne süren bir Arduino projesid...

Devamını oku →
11 Kasım 20266 dk okuma

İzoleli Tornavida ve 1000V VDE El Aletleri Nedir?

İzoleli tornavida, IEC 60900 (EN 60900) standardına göre 1000V AC ve 1500V DC gerilime kadar yalıtım için test edilmiş ve üzerinde çift üçge...

Devamını oku →
11 Kasım 20267 dk okuma

ESP8266 Hava Durumu Ekranı: NodeMCU, OLED ve Open-Meteo

ESP8266 hava durumu ekranı, NodeMCU kartının Wi-Fi ile internete bağlanıp Open-Meteo servisinden anlık sıcaklık, nem, rüzgâr ve hava durumu...

Devamını oku →
11 Kasım 20266 dk okuma

Havya Ucu Çeşitleri ve Bakımı: Konik, Keski, Bıçak

Havya ucu, lehimlenecek noktanın boyutuna göre seçilir: ince SMD ve sık bacaklar için konik (I), genel THT lehim için keski (D) ya da eğik k...

Devamını oku →
11 Kasım 20266 dk okuma

Filament Nasıl Kurutulur ve Saklanır? PLA, PETG, TPU

Nem çeken filament, malzemesine uygun sıcaklıkta birkaç saat ısıtılarak kurutulur: PLA için 45-50 °C, PETG için 60-65 °C, TPU için 50-55 °C...

Devamını oku →