Daftar Isi:

Piano Ultrasonic Pi Dengan Kontrol Gerakan!: 10 Langkah (dengan Gambar)
Piano Ultrasonic Pi Dengan Kontrol Gerakan!: 10 Langkah (dengan Gambar)

Video: Piano Ultrasonic Pi Dengan Kontrol Gerakan!: 10 Langkah (dengan Gambar)

Video: Piano Ultrasonic Pi Dengan Kontrol Gerakan!: 10 Langkah (dengan Gambar)
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Juli
Anonim
Image
Image
Piano Ultrasonic Pi Dengan Kontrol Gerakan!
Piano Ultrasonic Pi Dengan Kontrol Gerakan!

Proyek ini menggunakan sensor ultrasonik HC-SR04 yang murah sebagai input dan menghasilkan nada MIDI yang dapat dimainkan melalui synthesizer pada Raspberry Pi untuk menghasilkan suara berkualitas tinggi.

Proyek ini juga menggunakan bentuk dasar kontrol gerakan, di mana alat musik dapat diubah dengan memegang tangan Anda di atas dua sensor terluar selama beberapa detik. Gerakan lain dapat digunakan untuk mematikan Raspberry Pi setelah Anda selesai.

Video di atas menunjukkan produk jadi dalam selungkup laser-cut sederhana. Ada video yang lebih mendalam nanti dalam instruksi ini yang menjelaskan cara kerja proyek.

Saya membuat proyek ini bersama dengan The Gizmo Dojo (ruang pembuat lokal saya di Broomfield, CO) untuk membuat beberapa pameran interaktif yang dapat kami bawa ke acara STEM/STEAM lokal dan Pameran Pembuat.

Silakan lihat juga dokumentasi dan tutorial terbaru di https://theotherandygrove.com/octasonic/ yang sekarang menyertakan informasi tentang versi Python dari proyek ini (instruksi ini ditulis untuk versi Rust).

Langkah 1: Bahan

Untuk instruksi ini, Anda membutuhkan bahan-bahan berikut:

  • Raspberry Pi (2 atau 3) dengan kartu SD
  • 8 sensor ultrasonik HC-SR04
  • Papan Breakout Octasonic
  • Konverter Level Logika Dua Arah
  • 32 x 12 "Kabel Jumper Wanita-Wanita untuk menghubungkan sensor ultrasonik
  • 13 x 6" Kabel Jumper Wanita-Wanita untuk menghubungkan Raspberry Pi, Octasonic, dan Konverter Level Logika
  • Catu daya yang cocok untuk Raspberry Pi
  • Speaker PC atau sejenisnya

Saya akan merekomendasikan menggunakan Raspberry Pi 3 jika memungkinkan karena memiliki daya komputasi yang lebih besar, menghasilkan suara yang lebih responsif dan menyenangkan. Ini dapat bekerja dengan baik dengan Raspberry Pi 2 dengan sedikit penyesuaian tetapi saya tidak akan mencoba menggunakan Raspberry Pi asli untuk proyek ini.

Sensor ultrasonik HC-SR04 memiliki 4 koneksi - 5V, GND, Trigger, dan Echo. Biasanya, Trigger dan Echo terhubung ke pin terpisah pada mikrokontroler atau Raspberry Pi tetapi itu berarti Anda perlu menggunakan 16 pin untuk menghubungkan 8 sensor, dan ini tidak praktis. Di sinilah papan breakout Octasonic masuk. Papan ini terhubung ke semua sensor dan memiliki mikrokontroler khusus yang memantau sensor dan kemudian berkomunikasi dengan Raspberry Pi melalui SPI.

HC-SR04 membutuhkan 5V dan Raspberry Pi hanya 3.3V, jadi inilah mengapa kami juga membutuhkan konverter level logika yang akan menghubungkan Raspberry Pi ke papan breakout Octasonic.

Langkah 2: Hubungkan Sensor Ultrasonik ke Papan Octasonic

Hubungkan Sensor Ultrasonik ke Papan Octasonic
Hubungkan Sensor Ultrasonik ke Papan Octasonic
Hubungkan Sensor Ultrasonik ke Papan Octasonic
Hubungkan Sensor Ultrasonik ke Papan Octasonic

Gunakan 4 kabel jumper wanita-wanita untuk menghubungkan setiap sensor ultrasonik ke papan, berhati-hatilah untuk menghubungkannya dengan cara yang benar. Papan dirancang agar pin berada dalam urutan yang sama dengan pin pada sensor ultrasonik. Dari kiri ke kanan di papan, pinnya adalah GND, Trigger, Echo, 5V.

Langkah 3: Hubungkan Konverter Level Logika ke Papan Octasonic

Hubungkan Konverter Level Logika ke Papan Octasonic
Hubungkan Konverter Level Logika ke Papan Octasonic

Raspberry Pi dan Octasonic Board berkomunikasi melalui SPI. SPI menggunakan 4 kabel:

  • Master Masuk, Budak Keluar (MISO)
  • Master Keluar, Budak Masuk (MOSI)
  • Jam Serial (SCK)
  • Pilihan Budak (SS)

Selain itu, kita perlu menghubungkan daya (5V dan GND).

Konverter level logika memiliki dua sisi - tegangan rendah (LV) dan tegangan tinggi (HV). Raspberry akan terhubung ke sisi LV karena 3.3V. Octasonic akan terhubung ke sisi HV karena 5V.

Langkah ini untuk menghubungkan Octasonic ke sisi HV dari konverter level logika

Lihat foto yang terlampir pada langkah ini yang menunjukkan pin mana yang harus dihubungkan ke konverter level logika.

Koneksi dari konverter Octasonic ke Level Logika harus sebagai berikut:

  • 5V ke HV
  • SCK ke HV4
  • MISO ke HV3
  • MOSI ke HV2
  • SS ke HV1
  • GND ke GND

Langkah 4: Hubungkan Konverter Level Logika ke Raspberry Pi

Hubungkan Konverter Level Logika ke Raspberry Pi
Hubungkan Konverter Level Logika ke Raspberry Pi

Raspberry Pi dan Octasonic Board berkomunikasi melalui SPI. SPI menggunakan 4 kabel:

  • Master Masuk, Budak Keluar (MISO)
  • Master Keluar, Budak Masuk (MOSI)
  • Jam Serial (SCK)
  • Pilihan Budak (SS)

Selain itu, kita perlu menghubungkan daya (3.3V dan GND). Konverter level logika memiliki dua sisi - tegangan rendah (LV) dan tegangan tinggi (HV). Raspberry akan terhubung ke sisi LV karena 3.3V. Octasonic akan terhubung ke sisi HV karena 5V.

Langkah ini untuk menghubungkan Raspberry Pi ke sisi LV dari konverter level logika

Koneksi dari Raspbery Pi ke konverter Level Logika harus sebagai berikut:

  • 3.3V ke LV
  • GPIO11 (SPI_SCLK) ke LV4
  • GPIO09 (SPI_MISO) ke LV3
  • GPIO10 (SPI_MOSI) ke LV2
  • GPIO08 (SPI_CE0_N) SS ke LV1
  • GND ke GND

Gunakan diagram yang terlampir pada langkah ini untuk menemukan pin yang benar pada Raspberry Pi!

Langkah 5: Hubungkan Raspberry Pi 5V ke Octasonic 5V

Hubungkan Raspberry Pi 5V ke Octasonic 5V
Hubungkan Raspberry Pi 5V ke Octasonic 5V
Hubungkan Raspberry Pi 5V ke Octasonic 5V
Hubungkan Raspberry Pi 5V ke Octasonic 5V

Ada satu kawat terakhir untuk ditambahkan. Kita harus benar-benar memberi daya pada papan Octasonic dengan 5V, jadi kita melakukannya dengan menghubungkan salah satu pin Raspberry Pi 5V ke pin 5V pada header Octasonic AVR. Ini adalah pin kiri bawah di blok header AVR (ini adalah blok 2 x 3 di kanan atas papan). Lihat foto terlampir yang menunjukkan di mana blok AVR berada.

Lihat diagram terlampir lainnya untuk menemukan pin 5V pada Raspberry Pi.

Langkah 6: Instal Perangkat Lunak

Instal Raspian

Mulailah dengan instalasi Raspbian Jessie yang bersih, lalu perbarui ke versi terbaru:

sudo apt-get update

sudo apt-get upgrade

Aktifkan SPI

Anda harus mengaktifkan SPI di Raspberry Pi agar proyek ini berfungsi! Gunakan utilitas Konfigurasi Raspberry Pi untuk melakukan ini.

Penting juga untuk me-reboot Pi setelah mengaktifkan SPI agar berlaku

Instal FluidSynth

Fluidsynth adalah software MIDI synth gratis yang luar biasa. Anda dapat menginstalnya dari baris perintah dengan perintah ini:

sudo apt-get install fluidynth

Instal Bahasa Pemrograman Rust

Piano Ultrasonic Pi diimplementasikan dalam Bahasa Pemrograman Rust dari Mozilla (seperti C++ tetapi tanpa bit buruk). Itu yang digunakan semua anak keren akhir-akhir ini.

Ikuti petunjuk di https://rustup.rs/ untuk menginstal Rust. Untuk menghemat waktu Anda, petunjuknya adalah menjalankan perintah yang satu ini. Anda dapat menerima jawaban default untuk pertanyaan apa pun selama penginstalan.

CATATAN: Sejak memposting instruksi ini, ada beberapa masalah dengan menginstal Rust pada Raspberry Pi. Waktu yang buruk:-/ tetapi saya telah memodifikasi perintah di bawah ini untuk mengatasi masalah tersebut. Semoga mereka akan segera memperbaikinya. Saya sedang berusaha membuat gambar yang dapat diunduh dan dibakar orang ke kartu SD. Jika Anda menginginkannya, silakan hubungi saya.

ekspor RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | NS

Unduh kode sumber Ultrasonic Pi Piano

Kode sumber untuk kode sumber Ultrasonic Pi Piano di-host di github. Ada dua opsi untuk mendapatkan kode. Jika Anda terbiasa dengan git dan github, Anda dapat mengkloning repo:

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

Atau, Anda dapat mengunduh file zip dari kode terbaru.

Kompilasi kode sumber

cd UltrasonicPiPiano

pembuatan kargo --release

Uji kodenya

Sebelum kita beralih ke pembuatan musik pada langkah berikutnya, mari pastikan bahwa perangkat lunak berjalan dan kita dapat membaca data yang valid dari sensor.

Gunakan perintah berikut untuk menjalankan aplikasi. Ini akan membaca data dari sensor dan menerjemahkannya ke dalam catatan MIDI yang kemudian dicetak di konsol. Saat Anda menggerakkan tangan di atas sensor, Anda akan melihat data dihasilkan. Jika tidak, lewati bagian pemecahan masalah di akhir instruksi ini.

pengiriman kargo --release

Jika Anda penasaran, tanda "--release" memberi tahu Rust untuk mengkompilasi kode seefisien mungkin, berbeda dengan pengaturan default "--debug".

Langkah 7: Buat Musik

Pastikan Anda masih berada di direktori tempat Anda mengunduh kode sumber dan jalankan perintah berikut.

Skrip "run.sh" ini memastikan bahwa kode telah dikompilasi dan kemudian menjalankan kode, menyalurkan output ke fluidynth.

./run.sh

Pastikan Anda memiliki pengeras suara yang terhubung ke jack audio 3,5 mm pada Raspberry Pi dan Anda akan mendengar musik saat Anda menggerakkan tangan di atas sensor.

Jika Anda tidak mendengar musik dan Anda memiliki monitor HDMI yang terpasang, maka output audio mungkin ada di sana. Untuk memperbaikinya, cukup jalankan perintah ini lalu mulai ulang Pi Piano:

sudo amixer cset numid=3 1

Mengubah volume

Volume (atau "gain") ditentukan dengan parameter "-g" ke fluidynth. Anda dapat memodifikasi skrip run.sh dan mengubah nilai ini. Harap dicatat bahwa perubahan kecil pada parameter ini menghasilkan perubahan volume yang besar, jadi cobalah meningkatkannya dengan jumlah kecil (seperti 0,1 atau 0,2).

Langkah 8: Kontrol Gerakan

Lihat video yang dilampirkan pada langkah ini untuk demonstrasi penuh proyek, termasuk cara kerja kontrol gerakan.

Konsepnya sangat sederhana. Perangkat lunak melacak sensor mana yang tercakup (dalam jarak 10cm) dan mana yang tidak. Ini diterjemahkan menjadi 8 bilangan biner (1 atau 0). Ini sangat nyaman, karena urutan 8 angka biner membuat "byte" yang dapat mewakili angka antara 0 dan 255. Jika Anda belum tahu tentang angka biner maka saya sangat menyarankan mencari tutorial. Bilangan biner adalah keterampilan dasar untuk dipelajari jika Anda ingin mempelajari lebih lanjut tentang pemrograman.

Perangkat lunak memetakan status sensor saat ini ke satu byte yang mewakili gerakan saat ini. Jika angka itu tetap sama untuk beberapa siklus, maka perangkat lunak akan bertindak berdasarkan gerakan itu.

Karena sensor ultrasonik tidak terlalu andal dan dapat terjadi gangguan antar sensor, Anda perlu bersabar saat menggunakan gerakan. Cobalah memvariasikan jarak yang Anda pegang tangan dari sensor serta sudut yang Anda pegang tangan Anda. Anda juga mencoba memegang sesuatu yang datar dan kokoh di atas sensor untuk memantulkan suara dengan lebih baik.

Langkah 9: Membuat Enklosur

Jika Anda ingin menjadikan ini pameran permanen dan dapat memamerkannya kepada orang-orang, Anda mungkin ingin membuat semacam kandang. Ini bisa dibuat dari kayu, karton, atau banyak bahan lainnya. Berikut adalah video yang menunjukkan enklosur yang sedang kami kerjakan untuk proyek ini. Ini terbuat dari kayu, dengan lubang yang dibor untuk menahan sensor ultrasonik di tempatnya.

Langkah 10: Pemecahan Masalah dan Langkah Selanjutnya

Penyelesaian masalah

Jika proyek tidak berfungsi, biasanya karena kesalahan pengkabelan. Luangkan waktu Anda untuk memeriksa ulang semua koneksi.

Masalah umum lainnya adalah gagal mengaktifkan SPI dan me-reboot pi.

Silakan kunjungi https://theotherandygrove.com/octasonic/ untuk dokumentasi lengkap termasuk tips pemecahan masalah, dengan artikel khusus Rust dan Python, dan juga informasi tentang cara mendapatkan dukungan.

Langkah selanjutnya

Setelah proyek Anda berhasil, saya sarankan untuk bereksperimen dengan kode dan mencoba berbagai alat musik. Kode instrumen MIDI antara 1 dan 127 dan didokumentasikan di sini.

Apakah Anda ingin alat musik tunggal dengan masing-masing sensor memainkan oktaf yang berbeda? Mungkin Anda ingin setiap sensor menjadi instrumen yang terpisah? Kemungkinannya hampir tidak terbatas!

Saya harap Anda menikmati instruksi ini. Silakan suka jika Anda melakukannya, dan pastikan untuk berlangganan saya di sini dan saluran YouTube saya untuk melihat proyek masa depan.

Direkomendasikan: