Isi kandungan:

Ultrasonik Pi Piano Dengan Kawalan Isyarat !: 10 Langkah (dengan Gambar)
Ultrasonik Pi Piano Dengan Kawalan Isyarat !: 10 Langkah (dengan Gambar)

Video: Ultrasonik Pi Piano Dengan Kawalan Isyarat !: 10 Langkah (dengan Gambar)

Video: Ultrasonik Pi Piano Dengan Kawalan Isyarat !: 10 Langkah (dengan Gambar)
Video: Ступни украли ► 1 Прохождение Signalis 2024, Julai
Anonim
Image
Image
Ultrasonik Pi Piano Dengan Kawalan Isyarat!
Ultrasonik Pi Piano Dengan Kawalan Isyarat!

Projek ini menggunakan sensor ultrasonik HC-SR04 yang murah sebagai input dan menghasilkan nota MIDI yang dapat dimainkan melalui synthesizer pada Raspberry Pi untuk bunyi berkualiti tinggi.

Projek ini juga menggunakan bentuk kawalan isyarat asas, di mana alat muzik dapat diganti dengan memegang kedua sensor terluar selama beberapa saat. Isyarat lain boleh digunakan untuk mematikan Raspberry Pi setelah anda selesai.

Video di atas menunjukkan produk siap dalam kandang laser-cut sederhana. Terdapat video yang lebih mendalam kemudian dalam arahan ini yang menerangkan bagaimana projek ini berfungsi.

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

Lihat juga dokumentasi dan tutorial terkini di https://theotherandygrove.com/octasonic/ yang kini merangkumi maklumat mengenai versi Python projek ini (arahan ini ditulis untuk versi Rust).

Langkah 1: Bahan

Untuk arahan ini, anda memerlukan bahan berikut:

  • Raspberry Pi (2 atau 3) dengan kad SD
  • 8 sensor ultrasonik HC-SR04
  • Papan Pemecahan Octasonic
  • Penukar Tahap Logik Dua Hala
  • Wayar Jumper Perempuan-Perempuan 32 x 12 "untuk menyambungkan sensor ultrasonik
  • Wayar Jumper Perempuan-Perempuan 13 x 6 "untuk menyambungkan Raspberry Pi, Octasonic, dan Logic Level Converter
  • Bekalan kuasa yang sesuai untuk Raspberry Pi
  • Pembesar suara PC atau yang serupa

Saya akan mengesyorkan menggunakan Raspberry Pi 3 jika mungkin kerana ia mempunyai kekuatan pengkomputeran yang lebih banyak, menghasilkan suara yang lebih responsif dan menyenangkan. Ia boleh berfungsi dengan baik dengan Raspberry Pi 2 dengan sedikit perubahan tetapi saya tidak akan berusaha menggunakan Raspberry Pi yang asli untuk projek ini.

Sensor ultrasonik HC-SR04 mempunyai 4 sambungan - 5V, GND, Trigger, dan Echo. Biasanya, Trigger dan Echo disambungkan ke pin yang terpisah pada mikrokontroler atau Raspberry Pi tetapi itu bermakna anda perlu menggunakan 16 pin untuk menyambungkan 8 sensor, dan ini tidak praktikal. Di sinilah papan pelarian Octasonic masuk. Papan ini menghubungkan ke semua sensor dan mempunyai mikrokontroler khusus yang memantau sensor dan kemudian berkomunikasi dengan Raspberry Pi melalui SPI.

HC-SR04 memerlukan 5V dan Raspberry Pi hanya 3.3V, jadi ini sebabnya kami juga memerlukan penukar tahap logik yang akan menghubungkan Raspberry Pi ke papan pelarian Octasonic.

Langkah 2: Sambungkan Sensor Ultrasonik ke Papan Octasonic

Sambungkan Ultrasonik Sensor ke Papan Octasonic
Sambungkan Ultrasonik Sensor ke Papan Octasonic
Sambungkan Ultrasonik Sensor ke Papan Octasonic
Sambungkan Ultrasonik Sensor ke Papan Octasonic

Gunakan 4 wayar pelompat wanita-wanita untuk menyambungkan setiap sensor ultrasonik ke papan, dengan berhati-hati untuk menghubungkannya dengan cara yang betul. Papan direka sedemikian rupa sehingga 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: Sambungkan Penukar Tahap Logik ke Papan Octasonic

Sambungkan Logic Level Converter ke Papan Octasonic
Sambungkan Logic Level Converter ke Papan Octasonic

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

  • Master In, Slave Out (MISO)
  • Master Out, Budak Masuk (MOSI)
  • Jam Bersiri (SCK)
  • Pilih Budak (SS)

Selain itu, kita perlu menyambungkan kuasa (5V dan GND).

Penukar tahap logik mempunyai dua sisi - voltan rendah (LV) dan voltan tinggi (HV). Raspberry akan bersambung ke sisi LV kerana ia adalah 3.3V. Octasonic akan bersambung ke sisi HV kerana ia adalah 5V.

Langkah ini adalah untuk menghubungkan Octasonic ke sisi HV penukar tahap logik

Lihat foto yang dilampirkan pada langkah ini menunjukkan pin mana yang harus disambungkan ke penukar tahap logik.

Sambungan dari penukar Octasonic ke Logik Level hendaklah seperti berikut:

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

Langkah 4: Sambungkan Logic Level Converter ke Raspberry Pi

Sambungkan Logic Level Converter ke Raspberry Pi
Sambungkan Logic Level Converter ke Raspberry Pi

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

  • Master In, Slave Out (MISO)
  • Master Out, Budak Masuk (MOSI)
  • Jam Bersiri (SCK)
  • Pilih Budak (SS)

Selain itu, kita perlu menyambungkan kuasa (3.3V dan GND). Penukar tahap logik mempunyai dua sisi - voltan rendah (LV) dan voltan tinggi (HV). Raspberry akan bersambung ke sisi LV kerana ia adalah 3.3V. Octasonic akan bersambung ke sisi HV kerana ia adalah 5V.

Langkah ini adalah untuk menyambungkan Raspberry Pi ke sisi LV penukar tahap logik

Sambungan dari Raspbery Pi ke penukar Tahap Logik hendaklah seperti berikut:

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

Gunakan rajah yang dilampirkan pada langkah ini untuk mencari pin yang betul pada Raspberry Pi!

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

Sambungkan Raspberry Pi 5V ke Octasonic 5V
Sambungkan Raspberry Pi 5V ke Octasonic 5V
Sambungkan Raspberry Pi 5V ke Octasonic 5V
Sambungkan Raspberry Pi 5V ke Octasonic 5V

Terdapat satu wayar terakhir untuk ditambahkan. Kita perlu benar-benar menghidupkan papan Octasonic dengan 5V, jadi kita melakukannya dengan menyambungkan 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 yang dilampirkan yang menunjukkan di mana blok AVR berada.

Lihat rajah lain yang dilampirkan untuk mencari pin 5V pada Raspberry Pi.

Langkah 6: Pasang Perisian

Pasang Raspian

Mulakan dengan pemasangan Raspbian Jessie yang bersih, kemudian kemas kini ke versi terbaru:

sudo apt-get kemas kini

sudo apt-get peningkatan

Dayakan SPI

Anda mesti mengaktifkan SPI pada Raspberry Pi agar projek ini dapat berfungsi! Gunakan utiliti Konfigurasi Raspberry Pi untuk melakukan ini.

Penting juga untuk menghidupkan semula Pi setelah mengaktifkan SPI agar ia berkuat kuasa

Pasang FluidSynth

Fluidsynth adalah perisian MIDI synth percuma yang luar biasa. Anda boleh memasangnya dari baris perintah dengan arahan ini:

sudo apt-get install fluidsynth

Pasang Bahasa Pengaturcaraan Karat

Ultrasonik Pi Piano dilaksanakan dalam Bahasa Pengaturcaraan Rust dari Mozilla (ia seperti C ++ tetapi tanpa bit buruk). Itulah yang digunakan oleh semua kanak-kanak keren hari ini.

Ikuti arahan di https://rustup.rs/ untuk memasang Rust. Untuk menjimatkan masa anda, arahannya adalah untuk menjalankan perintah yang satu ini. Anda boleh menerima jawapan lalai untuk sebarang pertanyaan semasa pemasangan.

CATATAN: Sejak menghantar arahan ini, terdapat beberapa masalah dengan memasang Rust pada Raspberry Pi. Masa yang tidak tepat: - / tetapi saya telah mengubah arahan di bawah untuk menyelesaikan masalah ini. Mudah-mudahan mereka menyelesaikannya tidak lama lagi. Saya sedang berusaha untuk membuat gambar yang boleh dimuat turun oleh orang lain dan dibakar ke kad SD. Sekiranya anda mahu, sila hubungi saya.

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

Muat turun kod sumber Ultrasonik Pi Piano

Kod sumber untuk kod sumber Ultrasonic Pi Piano dihoskan di github. Terdapat dua pilihan untuk mendapatkan kod tersebut. Sekiranya anda biasa dengan git dan github, anda boleh mengklon repo:

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

Sebagai alternatif, anda boleh memuat turun fail zip kod terkini.

Menyusun kod sumber

cd UltrasonikPiPiano

pembinaan kargo --melepaskan

Uji kodnya

Sebelum kita mulai membuat muzik pada langkah seterusnya, mari pastikan perisian berjalan dan kita dapat membaca data yang sah dari sensor.

Gunakan arahan berikut untuk menjalankan aplikasi. Ini akan membaca data dari sensor dan menerjemahkannya ke dalam nota MIDI yang kemudian dicetak di konsol. Semasa anda menggerakkan sensor anda, anda akan melihat data dihasilkan. Sekiranya tidak, lompat ke bahagian penyelesaian masalah pada akhir arahan ini.

larian kargo - melepaskan

Sekiranya anda ingin tahu, bendera "--rilis" memberitahu Rust untuk menyusun kod dengan seefisien mungkin, berbanding dengan tetapan "--debug" lalai.

Langkah 7: Buat Muzik

Pastikan anda masih berada di direktori di mana anda memuat turun kod sumber dan jalankan perintah berikut.

Skrip "run.sh" ini memastikan bahawa kod telah disusun dan kemudian menjalankan kod tersebut, memasukkan output ke fluidsynth.

./run.sh

Pastikan bahawa anda mempunyai pembesar suara yang disambungkan yang disambungkan ke bicu audio 3.5mm pada Raspberry Pi dan anda akan mendengar muzik semasa anda menggerakkan sensor anda.

Sekiranya anda tidak mendengar muzik dan anda memasang monitor HDMI, maka output audio mungkin akan berlaku di sana. Untuk memperbaikinya, jalankan perintah ini dan kemudian mulakan semula Pi Piano:

sudo amixer cset numid = 3 1

Menukar kelantangan

Volume (atau "gain") ditentukan dengan parameter "-g" hingga fluidsynth. Anda boleh mengubah skrip run.sh dan mengubah nilai ini. Harap perhatikan bahawa perubahan kecil dalam parameter ini menghasilkan perubahan jumlah yang besar, jadi cuba tingkatkannya dengan jumlah kecil (seperti 0.1 atau 0.2).

Langkah 8: Kawalan Isyarat

Lihat video yang dilampirkan pada langkah ini untuk demonstrasi penuh projek, termasuk bagaimana kawalan isyarat berfungsi.

Konsepnya sangat mudah. Perisian ini mengesan sensor mana yang dilindungi (dalam jarak 10cm) dan mana yang tidak. Ini diterjemahkan kepada 8 nombor binari (1 atau 0). Ini sangat mudah, kerana urutan 8 nombor binari membuat "bait" yang dapat mewakili nombor antara 0 dan 255. Sekiranya anda belum tahu mengenai nombor binari, maka saya sangat mengesyorkan mencari tutorial. Nombor binari adalah kemahiran asas untuk belajar jika anda ingin mengetahui lebih lanjut mengenai pengaturcaraan.

Perisian memetakan keadaan sensor semasa ke satu bait yang mewakili gerak isyarat semasa. Sekiranya nombor itu tetap sama untuk beberapa kitaran, maka perisian tersebut bertindak mengikut isyarat tersebut.

Kerana sensor ultrasonik tidak boleh dipercayai dan mungkin terdapat gangguan antara sensor, anda perlu bersabar ketika menggunakan gerak isyarat. Cuba ubah jarak yang anda pegang dari sensor dan juga sudut yang anda pegang. Anda yang sejuk juga cuba memegang sesuatu yang rata dan padat di atas sensor untuk memantulkan suaranya dengan lebih baik.

Langkah 9: Membuat Penutup

Sekiranya anda ingin menjadikannya pameran tetap dan dapat memamerkannya kepada orang lain, anda mungkin ingin membuat semacam kandang. Ini boleh dibuat dari kayu, kadbod, atau banyak bahan lain. Berikut adalah video yang menunjukkan kandang yang sedang kami jalankan untuk projek ini. Ini dibuat dari kayu, dengan lubang yang dibor untuk menahan sensor ultrasonik di tempatnya.

Langkah 10: Penyelesaian Masalah dan Langkah Seterusnya

Penyelesaian masalah

Sekiranya projek tidak berfungsi, biasanya terdapat kesalahan pendawaian. Luangkan masa anda untuk memeriksa semula semua sambungan.

Isu biasa lain adalah gagal mengaktifkan SPI dan memulakan semula pi.

Sila kunjungi https://theotherandygrove.com/octasonic/ untuk dokumentasi lengkap termasuk petua penyelesaian masalah, dengan artikel khusus Rust dan Python, dan juga maklumat mengenai cara mendapatkan sokongan.

Langkah seterusnya

Setelah projek berfungsi, saya cadangkan bereksperimen dengan kod dan mencuba alat muzik yang berbeza. Kod instrumen MIDI adalah antara 1 dan 127 dan didokumentasikan di sini.

Adakah anda mahukan satu alat muzik dengan setiap sensor memainkan oktaf yang berbeza? Mungkin anda mahu setiap sensor menjadi instrumen yang berasingan? Kemungkinan hampir tidak terbatas!

Saya harap anda menikmati pengajaran ini. Sekiranya anda suka, dan pastikan untuk melanggan saya di sini dan ke saluran YouTube saya untuk melihat projek masa depan.

Disyorkan: