İçindekiler:
- Adım 1: Malzemeler
- Adım 2: Ultrasonik Sensörleri Octasonic Board'a bağlayın
- Adım 3: Mantık Seviyesi Dönüştürücüsünü Octasonic Board'a bağlayın
- Adım 4: Logic Level Converter'ı Raspberry Pi'ye bağlayın
- Adım 5: Raspberry Pi 5V'yi Octasonic 5V'ye bağlayın
- Adım 6: Yazılımı Kurun
- 7. Adım: Biraz Müzik Yapın
- Adım 8: Hareket Kontrolü
- Adım 9: Muhafaza Yapımı
- Adım 10: Sorun Giderme ve Sonraki Adımlar
Video: Hareket Kontrollü Ultrasonik Pi Piyano!: 10 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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
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
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
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
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:
Hareket Kontrollü Fare: 6 Adım (Resimlerle)
Hareket Kontrollü Fare: Arkadaşlarınızla bir dizüstü bilgisayarda film izliyorsunuz ve adamlardan biri sizi arıyor. Ahh.. Filmi duraklatmak için yerinden kalkmalısın. Bir projektörde sunum yapıyorsunuz ve uygulamalar arasında geçiş yapmanız gerekiyor. AC'yi hareket ettirmek zorundasın
Hareket Kontrollü Robot Yapmanın En Kolay Yolu: 7 Adım (Resimlerle)
Hareket Kontrollü Robot Yapmanın En Kolay Yolu: Oyuncakları süper kahraman gibi kontrol edin. Hareketle kontrol edilen bir araba yapmayı öğrenin. Bu, kendi başınıza hareketle kontrol edilen bir arabayı nasıl yapacağınızla ilgilidir. Temel olarak bu, MPU-6050 3 eksenli Jiroskop, İvmeölçer'in basit bir uygulamasıdır. Daha birçok şey yapabilirsiniz
Hareket Kontrollü İskelet Bot - 4WD Hercules Mobil Robotik Platform - Arduino IDE: 4 Adım (Resimlerle)
Hareketle Kontrollü İskelet Botu - 4WD Hercules Mobil Robotik Platformu - Arduino IDE: Seeedstudio Skeleton Botu tarafından yapılmış bir Hareket Kontrol Aracı - 4WD Hercules Mobil Robotik Platformu. Evde koroner virüs salgını yönetimi döneminde çok eğleniyorum.Bir arkadaşım bana yeni olarak 4WD Hercules Mobil Robotik Platformu verdi
Hareket Kontrollü Timelapse: 7 Adım (Resimlerle)
Hareket Kontrollü Timelapse: Timelapse'ler harika! Güzelliğini takdir etmeyi unutabileceğimiz yavaş hareket eden dünyaya bir göz atmamıza yardımcı olurlar. Ancak bazen sabit bir hızlandırılmış video sıkıcı olabilir veya etrafta o kadar çok şey oluyor ki sadece bir açı
Hareket Kontrollü Çıkış - Hareket Algılayıcı Işıktan: 6 Adım
Hareket Kontrollü Çıkış - Hareket Algılama Işığından: Bloktaki en korkunç eve giden bir şeker mi şaka mı olduğunuzu hayal edin. Tüm hortlakları, hayaletleri ve mezarlıkları geçtikten sonra nihayet son yola ulaşırsınız. Şekeri önünüzde bir kasede görebilirsiniz! Ama sonra aniden bir gho