Isi kandungan:
- Bekalan
- Langkah 1: Memahami Aliran
- Langkah 2: Menetapkan Pelayan - Ngrok
- Langkah 3: Menetapkan Pelayan - Node-Red
- Langkah 4: Menetapkan Pelayan - MQTT (Mosquitto)
- Langkah 5: Kod
- Langkah 6: Cetak Model 3D
- Langkah 7: Pemasangan dan Pengelasan
- Langkah 8: Mainkan Beberapa Gelung Dengan Rakan Anda
Video: Melodi: 8 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:07
Di samping banyak kelebihan dan penyelesaian teknologi yang membolehkan kerja dari rumah, kesukaran untuk merumuskan dan mewujudkan sokongan hidup di kalangan rakan sekerja masih ada. MELODY adalah peranti digital-fizikal yang memungkinkan penciptaan jam muzik pendek kolaboratif. Rakan sekerja menyelaraskan masa dan peranti menetapkan sesi jam dengan giliran dan bunyi rawak yang berbeza. Peserta pertama menetapkan irama tertentu, selepas itu setiap peserta menambah bahagian muzik mereka sendiri sesuai dengan irama yang ditetapkan. Untuk mempermudah pengguna tanpa latar muzik, perisian ini menolong mereka mengikuti dengan mengambil sampel klik mereka dan menyesuaikan dengan irama yang sesuai. Sesi berakhir setelah kira-kira 3 minit apabila semua peserta selesai merakam bahagian mereka.
Bagaimanakah ia berfungsi?
Melody didasarkan pada perkakasan ESP2866, yang berkomunikasi dengan pelayan Node-Red melalui protokol MQTT. Peranti menerjemahkan nota pemain menjadi rentetan watak yang dihantar ke pelayan dan dari pelayan kembali ke pemain lain. Ini membolehkan semua orang bermain dan mendengar lagu tanpa gangguan dari sambungan rangkaian mereka.
Melody mempunyai dua petunjuk visual utama. Yang pertama adalah jalur LED yang membolehkan pemain mengetahui kapan Loop bermula dan kapan ia berakhir dan menunjukkan apakah giliran pemain. Yang kedua adalah paparan LED di bahagian tengah produk, yang digunakan untuk menampilkan lagu yang ada secara visual. Hitung mundur dari 3 hingga 1 menunjukkan untuk mula bermain dan paparan waktu mengarahkan pengguna kapan dan bagaimana dia ingin menyumbang kepada Melodi kumpulan. Rakaman disimpan secara automatik ke cloud syarikat untuk penggunaan di masa depan.
Projek ini dirancang oleh empat orang pelajar di makmal inovasi Media (MiLab) di Pusat interdisipliner Herzliya (IDC): Shahar Agassy, Eden Bar-Tov, Gal Eshchar, dan Gad Stern. Dengan bantuan Zvika Markfeld, Netta Ofer dan Michal Leschinsky dan bimbingan Noa Morag dan Oren Zuckerman.
terima kasih kepada Tom Granot kerana mencipta instruksional hebat yang membantu saya belajar bagaimana melaksanakan beberapa perkara di sini (beberapa langkah di sini dimodelkan selepas pengajaran hebat ini).
Bekalan
- Pencetak 3D
- ESP8266
- 7 butang
- Matriks LED 8X8
- Jalur LED WS2812B
- Penguat I2S
- Jack 1/4 "(3.5mm) Perempuan 4 Tiang Audio
- Perintang 4X 1K
- Perintang 1X3K
Langkah 1: Memahami Aliran
Dalam projek ini, kami cuba mengatasi beberapa masalah:
- Bagaimana kita membuatnya dalam talian, jadi pemain boleh bermain pada masa yang sama?
- Bagaimana kita dapat menggunakan latensi internet dan mencipta pengalaman yang lancar?
- Bagaimana kita dapat menjadikan muzik itu bagus walaupun bagi orang yang tidak mempunyai latar belakang muzik?
Masa dan siri muzik
Untuk menyelesaikan masalah pertama, kami melihat protokol MIDI dan cuba menggunakannya, tetapi kami melihat bahawa ia lebih mantap daripada apa yang sebenarnya kami perlukan dan kami juga ingin menjadikannya mudah supaya kami dapat membuat prototaip pertama yang berfungsi. Oleh itu, kami mendapat inspirasi dari MIDI dan menjadikan gelung muzik kami diwakili oleh rentetan nombor (dari 0-5) kali ganda gelung mengikut masa pemain (kami akan menerangkan semua matematik muzik kemudian).
Dalam muzik, kami membahagikan irama menjadi bar muzik. Setiap bar pada dasarnya adalah segmen kecil-kecil kami memilih untuk menggunakan 4/4 (bermaksud 4 ketukan di bar muzik) - yang paling biasa.
Setiap rentak kemudian dibagi menjadi 4 jendela sampel sehingga setiap catatan yang dimainkan akan diselaraskan secara otomatis ke posisi yang baik dan juga memungkinkan kita untuk mewakili lagu sebagai rentetan angka untuk dikirim ke pelayan.
Untuk bersahabat dengan pemain tanpa latar muzik, kami melakukan tiga perkara:
- Hadkan bilangan kekunci untuk menjadikan pemain fokus pada pilihan yang lebih sedikit.
- Kami mengambil nota pada skala yang sama yang bermain dengan baik sehingga tidak akan ada suara disonansi.
- Setiap tekan diatur ke "jendela" irama sehingga mengasingkan muzik pemain dengan irama
Protokol komunikasi
Oleh itu, setelah kita memahami logik di sebalik muzik, bagaimana kita dapat menyampaikannya di antara pemain kita?
untuk itu, kami menggunakan MQTT, protokol rangkaian penerbitan-langganan yang mengangkut mesej antara peranti.
setiap pemain dilanggan dua topik: gelung (dapatkan gelung terkini) dan giliran (mendapat id pemain semasa untuk tujuan penyegerakan).
Pada gilirannya apabila pemain selesai memainkan lagu, dia akan menekan butang UP dan gelung (yang diperbarui) akan dihantar ke broker MQTT, yang akan mengirimkannya kembali ke semua pemain di saluran gelung.
gelung ini akan kekal "tidak aktif" sehingga gelung semasa selesai dimainkan dan kemudian akan menggantikannya. oleh itu ia akan telus kepada pemain. kerana gelung baru kini disimpan secara tempatan di peranti pemain, tidak ada latensi internet untuk muzik sehingga kami menyelesaikan masalah kedua.
Langkah 2: Menetapkan Pelayan - Ngrok
ngrok adalah perkhidmatan terowong. Ini membolehkan kita memaparkan perkhidmatan yang dijalankan secara tempatan (dalam kes kita, Node-RED) ke dunia luar - tanpa perlu menyiapkan pelayan atau berurusan dengan rekod DNS. Anda hanya menjalankan Node-RED di komputer anda, dan kemudian jalankan ngrok pada port yang sama Node-RED sedang berjalan.
Itu sahaja - anda akan mendapat URL yang boleh anda gunakan untuk mengakses Node-RED dari mana sahaja di dunia, tanpa mengira rangkaian yang dihubungkan dengannya.
Pemasangan & Konfigurasi
- Muat turun ngrok untuk sistem operasi anda dari sini.
- Ikuti langkah di halaman muat turun, hingga langkah "Naikkannya".
- Dalam "Lancarkan langkah ke atas", tukar 80 untuk 1883 - dan http ke tcp seperti di,./ngrok tcp 1883 bergantung pada anda
- simpan URL dan nombor port (telah dilihat dalam gambar) yang kita perlukan kemudian.
Langkah 3: Menetapkan Pelayan - Node-Red
Logik pelayan projek, Node-RED adalah persekitaran pengaturcaraan visual yang membolehkan anda menyambungkan pelbagai perisian (dan perkakasan!).
Di sini kami membuat logik komunikasi antara semua pemain (berkongsi dan menerima gelung dan menyelaraskan giliran)
Pasang Node-Red
ikuti langkah berikut untuk memuat aliran Node-RED kami di komputer tempatan anda:
- Node-RED memerlukan Node.js, memasangnya dari sini
- pasang Node-RED sendiri menggunakan arahan di sini.
Setelah anda memasang Node-RED, jalankan dengan menggunakan arahan pada langkah di atas dan sahkan bahawa anda dapat melihat halaman kanvas kosong. Ia mesti berada di
Anda sekarang perlu mengimport aliran yang kami gunakan untuk projek ini, anda boleh mencarinya di sini dan tekan import tambah fail JSON dan tekan Terapkan.
Pasang Node-Red:
jika anda melihat gambar yang dilampirkan pada langkah ini, anda dapat melihat bahawa kami mempunyai 2 "tindakan" utama, kami menerima gelung semasa dari salah satu pemain kami dan kemudian kami menghantarnya ke semua pemain lain. sebagai tambahan, kami menyiarkan giliran baru kepada semua pemain. jadi permainan tetap selari.
Langkah 4: Menetapkan Pelayan - MQTT (Mosquitto)
Oleh kerana Node-RED tidak mempunyai broker MQTT sendiri, dan kami perlu berkomunikasi dengan sensor dan pengaktif kami melalui MQTT, kami akan menggunakan broker MQTT khusus. Oleh kerana Node-RED mengesyorkan Mosquitto, inilah yang akan kami gunakan. Lihat di sini untuk beberapa maklumat mengenai MQTT dan mengapa ia sering digunakan dalam projek IoT.
Pemasangan & Konfigurasi
- Muat turun Mosquitto dari sini dan pasangkannya, semuanya mengikut sistem operasi anda.
- Biasanya, anda perlu mengikuti arahan di sini untuk menghubungkan Node-RED ke Mosquitto. Namun, jika anda menggunakan aliran kami, ini sudah dikonfigurasikan untuk anda. Selagi anda memasang aliran dan Mosquitrro dengan betul, dan Mosquitto berjalan di port 1883 (di mana ia berjalan secara lalai), ia harus berfungsi di luar kotak.
- Perhatikan bahawa ini bermaksud bahawa broker MQTT dan pelayan Node-RED anda berjalan pada mesin yang sama. Ini berguna untuk memudahkan komunikasi di dalam sistem. Lihat nota di bawah untuk maklumat lebih lanjut.
Memantau trafik MQTT
Saya menggunakan MQTTfx untuk memantau lalu lintas, ini adalah alat yang hebat dengan GUI yang sangat sederhana.
Langkah 5: Kod
anda boleh mendapatkan kod di GitHub (dengan semua fail data dan config.h)
Kebergantungan:
sebelum memuatkan kod ke esp2866 anda perlu memasang beberapa perpustakaan:
- libmad-8266 (menyahkod muzik dari SPIFF dan ke I2S)
- Pelanggan EspMQTTC
- ESP8266WiFi
- Adafruit_NeoPixel
Muat naik suaranya ke ESP menggunakan SPIFF:
- ikuti petunjuk yang hebat ini.
- tambahkan folder data ke direktori kod sumber.
- Di Arduino IDE di bawah Alat ubah saiz Flash menjadi "4MB (FS: 3MB TOA: ~ 512KB)"
- Juga di bawah Tools Tekan ESP2866 Sketch Data Upload
Menetapkan parameter:
selepas itu pergi ke file config.h dan tambahkan data yang diperlukan seperti kelayakan WIFI dan URL dan port ngrok dari langkah sebelumnya (periksa foto yang dilampirkan untuk rujukan).
p.s - Saya belum menambahkan ciri sambung secara automatik untuk membantu anda menetapkan data WIFI dan ngrok dari telefon pintar anda, kerana ini hanyalah bukti konsep pertama, saya ingin menambahkannya beberapa hari.
Tetapkan jumlah pemain yang anda mahukan (permainan ini berfungsi paling baik untuk 2-3 pemain dan di luar kotak ia dimuat dengan pelbagai bunyi untuk 2 pemain). tetapi boleh disesuaikan dengan lebih mudah:
untuk setiap pemain menambah aliran lain dalam simpul-merah untuk menerbitkan gelung di bawah topik khusus pengguna.
juga, anda boleh mengedit suara muzik dengan memasukkan larik ini ke suara tersuai anda:
di sini anda dapat melihat 3 jenis instrumen (Chrod untuk pemain 0, Lead untuk pemain 1, dan Bass untuk pemain 2)
const char * paths [NUMofNotes] = {"/blank1.wav", "/Chords_Am.wav", "/Chords_F.wav", "/Chords_C.wav", "/Chords_G.wav", "/Chords_Dm.wav", "/blank2.wav", "/Lead_C.wav", "/Lead_D.wav", "/Lead_E.wav", "/Lead_G.wav", "/Lead_A.wav", "/blank0.wav", "/Bass_C3.wav", "/Bass_D3.wav", "/Bass_F3.wav", "/Bass_G3.wav", "/Bass_A3.wav"};
Langkah 6: Cetak Model 3D
Untuk langkah pertama, muat turun STL dan cetaknya.
setelah mengeluarkan sokongan dan mungkin pengamplasan sedikit (bergantung pada resolusi pencetak)
cat ke warna yang dikehendaki
Langkah 7: Pemasangan dan Pengelasan
Oleh itu, di sinilah sihir sebenar berlaku.
anda boleh mengikuti skema ini dan menggabungkan semuanya.
ingat bahawa anda boleh mengubah kedudukan PIN hanya ingat untuk mengubahnya dalam kod juga.
A0 dan I2S dipasang dengan betul:
kerana A0 adalah untuk jambatan perintang (kami menggunakan perbezaan arus untuk mengetahui butang mana dari 5 yang ditekan - serupa dengan Instructables ini.
I2S mempunyai pengekodan khusus yang anda dapati di sini
Langkah 8: Mainkan Beberapa Gelung Dengan Rakan Anda
Disyorkan:
Melodi ROS pada Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 Langkah
ROS Melodic pada Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: Artikel ini akan merangkumi proses pemasangan ROS Melodic Morenia pada Raspberry Pi 4 yang menjalankan Debian Buster terkini dan cara menggunakan RPLIDAR A1M8 dengan pemasangan kami. Sejak Debian Buster dilancarkan secara rasmi beberapa minggu yang lalu (buat masa ini
Melodi Nada Arduino Ringkas: 3 Langkah
Simple Arduino Tone Melody: Simple Arduino Tone Melody adalah cara untuk memulakan dengan projek Arduino kerana anda hanya akan memuat naik kod dari perisian Arduino secara langsung tanpa perlu menulis apa-apa
Suara Melodi: 4 Langkah
Melodi Suara: La conception de cet instrument est assez particuli è re et peu commune mais tr è sederhana à pemakai. Et pour ce faire, pada bien fait recours au circuit int é gr é. Dia oui! C'est le coeur m ê me de Melodic Voice
Kotak Melodi Pokemon: 10 Langkah
Pokemon Melody Box: Ini adalah cara membuat Pokemon Melody Box dengan mainan di dalamnya. Anda tidak perlu membuat kotak muzik anda berkaitan dengan Pokemon. Anda boleh kreatif dan membuat sebarang jenis kotak yang anda mahukan. Anda boleh membuat kod lagu kegemaran anda dan mengubahnya menjadi kotak perhiasan
Kotak Melodi: 4 Langkah (dengan Gambar)
Kotak Melodi: Halo, saya membuat kotak yang mempunyai 3 butang dengan masing-masing melodi yang berbeza. Setiap melodi mempunyai warna LED yang berbeza dan menyala semasa nota sedang dimainkan. Setiap kali anda menekan " maju " butang melodi berjalan lebih cepat. Perkara yang anda perlukan: