İçindekiler:

Hareket Kontrollü Ultrasonik Pi Piyano!: 10 Adım (Resimlerle)
Hareket Kontrollü Ultrasonik Pi Piyano!: 10 Adım (Resimlerle)

Video: Hareket Kontrollü Ultrasonik Pi Piyano!: 10 Adım (Resimlerle)

Video: Hareket Kontrollü Ultrasonik Pi Piyano!: 10 Adım (Resimlerle)
Video: HEMEN SAHİP OLABİLECEĞİNİZ 10 SÜPER GÜÇ! 2024, Kasım
Anonim
Image
Image
Hareket Kontrollü Ultrasonik Pi Piyano!
Hareket Kontrollü Ultrasonik Pi Piyano!

Bu proje, giriş olarak ucuz HC-SR04 ultrasonik sensörler kullanır ve yüksek kaliteli bir ses için Raspberry Pi'deki bir sentezleyici aracılığıyla çalınabilen MIDI notaları üretir.

Proje ayrıca, ellerinizi en dıştaki iki sensör üzerinde birkaç saniye tutarak müzik aletinin değiştirilebildiği temel bir hareket kontrolü biçimini kullanıyor. İşiniz bittiğinde Raspberry Pi'yi kapatmak için başka bir hareket kullanılabilir.

Yukarıdaki video, bitmiş ürünü basit bir lazer kesim muhafaza içinde göstermektedir. Bu talimatta daha sonra projenin nasıl çalıştığını açıklayan daha ayrıntılı bir video var.

Bu projeyi, yerel STEM/STEAM etkinliklerine ve Maker Faires'e götürebileceğimiz bazı etkileşimli sergiler yapmak için The Gizmo Dojo (Broomfield, CO'daki yerel maker alanım) ile birlikte oluşturdum.

Lütfen ayrıca https://theotherandygrove.com/octasonic/ adresindeki en son belgelere ve öğreticilere göz atın ve şimdi bu projenin Python sürümü hakkında bilgi içerir (bu talimat, Rust sürümü için yazılmıştır).

Adım 1: Malzemeler

Bu talimat için aşağıdaki bileşenlere ihtiyacınız olacak:

  • SD kartlı Raspberry Pi (2 veya 3)
  • 8 HC-SR04 ultrasonik sensör
  • Octasonic Breakout Kurulu
  • Çift Yönlü Mantık Seviyesi Dönüştürücü
  • Ultrasonik sensörleri bağlamak için 32 x 12" Dişi-Dişi Jumper Telleri
  • Raspberry Pi, Octasonic ve Logic Level Converter'ı bağlamak için 13 x 6" Dişi-Dişi Jumper Telleri
  • Raspberry Pi için uygun güç kaynağı
  • PC hoparlörleri veya benzeri

Daha fazla bilgi işlem gücüne sahip olduğu için mümkünse Raspberry Pi 3 kullanmanızı tavsiye ederim, bu da daha duyarlı ve hoş bir ses sağlar. Biraz ince ayar yaparak bir Raspberry Pi 2 ile iyi çalışabilir ama bu proje için orijinal Raspberry Pi'yi kullanmaya çalışmam.

HC-SR04 ultrasonik sensörlerin 4 bağlantısı vardır - 5V, GND, Trigger ve Echo. Tipik olarak, Trigger ve Echo, bir mikrodenetleyici veya Raspberry Pi üzerindeki ayrı pinlere bağlanır, ancak bu, 8 sensörü bağlamak için 16 pin kullanmanız gerektiği anlamına gelir ve bu pratik değildir. Octasonic devre kartının devreye girdiği yer burasıdır. Bu kart tüm sensörlere bağlanır ve sensörleri izleyen ve ardından SPI üzerinden Raspberry Pi ile iletişim kuran özel bir mikro denetleyiciye sahiptir.

HC-SR04 5V gerektirir ve Raspberry Pi sadece 3.3V'dur, bu yüzden Raspberry Pi'yi Octasonic devre kartına bağlayacak mantık seviyesi dönüştürücüye de ihtiyacımız var.

Adım 2: Ultrasonik Sensörleri Octasonic Board'a bağlayın

Ultrasonik Sensörleri Octasonic Board'a bağlayın
Ultrasonik Sensörleri Octasonic Board'a bağlayın
Ultrasonik Sensörleri Octasonic Board'a bağlayın
Ultrasonik Sensörleri Octasonic Board'a bağlayın

Her bir ultrasonik sensörü karta bağlamak için 4 dişi-dişi jumper kablosu kullanın ve bunları doğru şekilde bağlamaya dikkat edin. Kart, pinler ultrasonik sensör üzerindeki pinlerle aynı sırada olacak şekilde tasarlanmıştır. Tahtada soldan sağa pinler GND, Trigger, Echo, 5V'dir.

Adım 3: Mantık Seviyesi Dönüştürücüsünü Octasonic Board'a bağlayın

Mantık Seviyesi Dönüştürücüyü Octasonic Board'a bağlayın
Mantık Seviyesi Dönüştürücüyü Octasonic Board'a bağlayın

Raspberry Pi ve Octasonic Board, SPI üzerinden haberleşir. SPI 4 kablo kullanır:

  • Ana Giriş, Bağımlı Çıkış (MISO)
  • Master Out, Slave In (MOSI)
  • Seri Saat (SCK)
  • Köle Seçimi (SS)

Ek olarak, gücü (5V ve GND) bağlamamız gerekiyor.

Mantık seviyesi dönüştürücünün iki tarafı vardır - düşük voltaj (LV) ve yüksek voltaj (HV). Raspberry 3.3V olduğu için AG tarafına bağlanacaktır. Octasonic, 5V olduğu için HV tarafına bağlanacaktır.

Bu adım, Octasonic'i mantık seviyesi dönüştürücünün HV tarafına bağlamak içindir

Mantık seviyesi dönüştürücüye hangi pinlerin bağlanması gerektiğini gösteren bu adıma ekli fotoğrafa bakın.

Octasonic'ten Logic Level dönüştürücüye bağlantılar aşağıdaki gibi olmalıdır:

  • 5V'den YG'ye
  • SCK'den HV4'e dönüştürücü
  • MISO'dan HV3'e dönüştürücü
  • MOSI'den HV2'ye dönüştürücü
  • SS'den HV1'e
  • GND'den GND'ye dönüştürücü

Adım 4: Logic Level Converter'ı Raspberry Pi'ye bağlayın

Logic Level Converter'ı Raspberry Pi'ye bağlayın
Logic Level Converter'ı Raspberry Pi'ye bağlayın

Raspberry Pi ve Octasonic Board, SPI üzerinden iletişim kurar. SPI 4 kablo kullanır:

  • Ana Giriş, Bağımlı Çıkış (MISO)
  • Master Out, Slave In (MOSI)
  • Seri Saat (SCK)
  • Köle Seçimi (SS)

Ek olarak, gücü (3.3V ve GND) bağlamamız gerekiyor. Mantık seviyesi dönüştürücünün iki tarafı vardır - düşük voltaj (LV) ve yüksek voltaj (HV). Raspberry 3.3V olduğu için AG tarafına bağlanacaktır. Octasonic, 5V olduğu için HV tarafına bağlanacaktır.

Bu adım, Raspberry Pi'yi mantık seviye dönüştürücünün LV tarafına bağlamak içindir

Raspbery Pi'den Logic Level dönüştürücüye bağlantılar aşağıdaki gibi olmalıdır:

  • 3,3V'den AG'ye
  • GPIO11'den (SPI_SCLK) LV4'e
  • GPIO09'dan (SPI_MISO) LV3'e
  • GPIO10 (SPI_MOSI) - LV2
  • GPIO08 (SPI_CE0_N) SS'den LV1'e
  • GND'den GND'ye dönüştürücü

Raspberry Pi'deki doğru pinleri bulmak için bu adıma ekli diyagramı kullanın!

Adım 5: Raspberry Pi 5V'yi Octasonic 5V'ye bağlayın

Raspberry Pi 5V'yi Octasonic 5V'ye bağlayın
Raspberry Pi 5V'yi Octasonic 5V'ye bağlayın
Raspberry Pi 5V'yi Octasonic 5V'ye bağlayın
Raspberry Pi 5V'yi Octasonic 5V'ye bağlayın

Eklenecek son bir tel var. Aslında Octasonic kartına 5V ile güç vermemiz gerekiyor, bu yüzden bunu Raspberry Pi 5V pinlerinden birini Octasonic AVR başlığındaki 5V pinine bağlayarak yapıyoruz. Bu, AVR başlık bloğundaki sol alt pimdir (bu, kartın sağ üstündeki 2 x 3 bloktur). AVR bloğunun nerede olduğunu gösteren ekteki fotoğrafa bakın.

Raspberry Pi'deki 5V pinini bulmak için ekteki diğer şemaya bakın.

Adım 6: Yazılımı Kurun

Raspian'ı yükleyin

Temiz bir Raspbian Jessie kurulumuyla başlayın, ardından en son sürüme güncelleyin:

sudo apt-get güncellemesi

sudo apt-get yükseltme

SPI'yi etkinleştir

Bu projenin çalışması için Raspberry Pi'de SPI'yi etkinleştirmelisiniz! Bunu yapmak için Raspberry Pi Yapılandırma yardımcı programını kullanın.

Etkili olması için SPI'yi etkinleştirdikten sonra Pi'yi yeniden başlatmak da önemlidir

FluidSynth'i yükleyin

Fluidsynth, harika bir ücretsiz MIDI synth yazılımıdır. Bu komutla komut satırından yükleyebilirsiniz:

sudo apt-get install sıvılar

Rust Programlama Dilini Kurun

Ultrasonik Pi Piyano, Mozilla'dan Rust Programlama Dili'nde uygulanmaktadır (C++ gibidir, ancak kötü bitleri yoktur). Bugünlerde bütün havalı çocukların kullandığı şey bu.

Rust'ı yüklemek için https://rustup.rs/ adresindeki talimatları izleyin. Size zaman kazandırmak için, talimatlar bu komutu çalıştırmak içindir. Yükleme sırasında herhangi bir soruya varsayılan yanıtları kabul edebilirsiniz.

NOT: Bu talimatı gönderdikten sonra, Raspberry Pi'ye Rust kurulumuyla ilgili bazı sorunlar var. Kötü zamanlama:-/ ancak sorunu çözmek için aşağıdaki komutu değiştirdim. Umarım yakında bunu düzeltirler. İnsanların indirip bir SD karta yazabilecekleri bir görüntü oluşturmaya çalışıyorum. Bunu istiyorsanız, lütfen benimle iletişime geçin.

dışa aktar RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | NS

Ultrasonik Pi Piyano kaynak kodunu indirin

Ultrasonik Pi Piyano kaynak kodunun kaynak kodu github'da barındırılmaktadır. Kodu almak için iki seçenek vardır. Git ve github'a aşina iseniz, depoyu klonlayabilirsiniz:

git klon [email protected]:TheGizmoDojo/UltrasonicPiPiano.git

Alternatif olarak, en son kodun bir zip dosyasını indirebilirsiniz.

Kaynak kodunu derleyin

cd UltrasonikPiPiyano

kargo inşa -- bırakma

Kodu test edin

Bir sonraki adımda müzik yapmaya geçmeden önce, yazılımın çalıştığından ve sensörlerden gelen geçerli verileri okuyabildiğimizden emin olalım.

Uygulamayı çalıştırmak için aşağıdaki komutu kullanın. Bu, sensörlerden gelen verileri okuyacak ve bunları daha sonra konsolda yazdırılan MIDI notlarına çevirecektir. Elinizi sensörlerin üzerinde hareket ettirirken, verinin üretildiğini görmelisiniz. Değilse, bu talimatın sonundaki sorun giderme bölümüne atlayın.

kargo çalışması -- yayın

Merak ediyorsanız, "--release" bayrağı, varsayılan "--debug" ayarının aksine, Rust'a kodu olabildiğince verimli bir şekilde derlemesini söyler.

7. Adım: Biraz Müzik Yapın

Hala kaynak kodu indirdiğiniz dizinde olduğunuzdan emin olun ve aşağıdaki komutu çalıştırın.

Bu "run.sh" betiği, kodun derlendiğinden emin olur ve ardından kodu çalıştırarak çıktıyı sıvılara aktarır.

./run.sh

Raspberry Pi'deki 3,5 mm ses jakına bağlı amplifikatörlü hoparlörleriniz olduğundan emin olun ve ellerinizi sensörlerin üzerinde hareket ettirirken müzik duymalısınız.

Müzik duymuyorsanız ve bağlı bir HDMI monitörünüz varsa, ses çıkışı muhtemelen oraya gidiyor demektir. Bunu düzeltmek için bu komutu çalıştırın ve ardından Pi Piano'yu yeniden başlatın:

sudo amixer cset numid=3 1

Ses seviyesini değiştirme

Hacim (veya "kazanç"), sıvılar için "-g" parametresi ile belirtilir. run.sh betiğini değiştirebilir ve bu değeri değiştirebilirsiniz. Lütfen bu parametredeki küçük değişikliklerin hacimde büyük bir değişiklikle sonuçlandığını unutmayın, bu nedenle küçük miktarlarda (0,1 veya 0,2 gibi) artırmayı deneyin.

Adım 8: Hareket Kontrolü

Hareket kontrollerinin nasıl çalıştığı da dahil olmak üzere projenin tam bir gösterimi için bu adıma eklenen videoya bakın.

Konsept çok basit. Yazılım, hangi sensörlerin kapsandığını (10 cm içinde) ve hangilerinin kapsanmadığını takip eder. Bu, 8 ikili sayı (1 veya 0) anlamına gelir. Bu çok kullanışlıdır, çünkü 8 ikili sayı dizisi, 0 ile 255 arasındaki sayıları temsil edebilen bir "bayt" oluşturur. İkili sayılar hakkında henüz bir şey bilmiyorsanız, bir öğretici aramanızı şiddetle tavsiye ederim. İkili sayılar, programlama hakkında daha fazla bilgi edinmek istiyorsanız öğrenmeniz gereken temel bir beceridir.

Yazılım, sensörlerin mevcut durumunu, mevcut hareketi temsil eden tek bir bayta eşler. Bu sayı birkaç döngü boyunca aynı kalırsa, yazılım bu harekete göre hareket eder.

Ultrasonik sensörler süper güvenilir olmadığından ve sensörler arasında parazit olabileceğinden, hareketleri kullanırken biraz sabırlı olmanız gerekir. Ellerinizi tuttuğunuz açının yanı sıra sensörlerden tuttuğunuz mesafeyi değiştirmeyi deneyin. Sesi daha iyi yansıtmak için sensörlerin üzerine düz ve sağlam bir şey tutmayı da deneyin.

Adım 9: Muhafaza Yapımı

Bunu kalıcı bir sergi yapmak ve insanlara gösterebilmek istiyorsanız, muhtemelen bir tür muhafaza yapmak isteyeceksiniz. Bu ahşap, karton veya diğer birçok malzemeden yapılabilir. İşte bu proje için üzerinde çalıştığımız muhafazayı gösteren bir video. Bu, ultrasonik sensörleri yerinde tutmak için delikler açılmış ahşaptan yapılmıştır.

Adım 10: Sorun Giderme ve Sonraki Adımlar

Sorun giderme

Proje çalışmıyorsa, genellikle bir kablolama hatasıdır. Tüm bağlantıları iki kez kontrol etmek için zaman ayırın.

Diğer bir yaygın sorun, SPI'yi etkinleştirememek ve pi'yi yeniden başlatmaktır.

Rust ve Python'a özel makaleler ile sorun giderme ipuçlarını içeren tam belgeler ve ayrıca nasıl destek alacağınıza ilişkin bilgiler için lütfen https://theotherandygrove.com/octasonic/ adresini ziyaret edin.

Sonraki adımlar

Projeyi çalıştırdıktan sonra, kodla denemeler yapmanızı ve farklı müzik aletlerini denemenizi tavsiye ederim. MIDI enstrüman kodları 1 ile 127 arasındadır ve burada belgelenmiştir.

Her sensörün farklı bir oktav çaldığı tek bir müzik aleti mi istiyorsunuz? Belki de bunun yerine her sensörün ayrı bir enstrüman olmasını istersiniz? Olasılıklar neredeyse sınırsız!

Umarım bu öğreticiyi beğenmişsinizdir. Lütfen beğendiyseniz beğenin ve gelecekteki projeleri görmek için bana ve YouTube kanalıma abone olmayı unutmayın.

Önerilen: