PiBot: Robot Piano Berbasis Arduino untuk Pertunjukan Musik Presisi
Komponen dan Perlengkapan
Nama Bagian
Jumlah
Arduino 101
1
Texas Instruments 74HC595
11
IRFZ44N (N-Channel Mosfet)
88
Aki 12V
2
Kapasitor 100 µF
11
Kabel kawat OpenBuilds
1
Breadboard (generik)
11
Soket IC 8 kaki
11
Resistor 10k ohm
88
Diod 1N4007 (Tegangan Tinggi, Arus Tinggi)
88
Alat dan Mesin yang Diperlukan
Pistolet lem panas (generik)
Aplikasi dan Layanan Online
Processing
Python
Konversi File MIDI Biner ke Teks
Tentang Proyek
Bagaimana semuanya dimulai:
Banyak tahun lalu, Yamaha memperkenalkan piano otomatis. Saya yang masih muda dan tidak berpengetahuan melihat piano itu memainkan musik di balik jendela kaca toko alat musik.
Cukup obrolan kecil, sebenarnya tidak ada alasan besar mengapa saya memulai proyek ini selain karena saya hanya ingin melakukannya.
Ringkasan:
Papan tunggal Arduino Mega berbiaya sekitar $40 dan dua akan diperlukan untuk mengontrol 88 solenoid. Itu cukup mahal. Sebaliknya, dapatkan Arduino Uno yang murah dan 11 shift register. Shift Register adalah metode untuk mengontrol banyak output (biasanya LED) dengan sejumlah kecil pin output. Pada dasarnya, itu satu Arduino dengan 11 shift register dan mengontrol 88 Solenoid.
Karena kita menggunakan shift register, sebuah PC akan mengirim sekumpulan bit ke Arduino daripada komunikasi MIDI. File MIDI akan diterjemahkan menjadi sekumpulan bit sebelumnya.
Hardware:
Saat saya mendapatkan solenoid langsung dari China, saya menemukan bahwa solenoid ini tidak cukup kuat untuk mendorong tombol piano. Tentu saja mendorong tombol piano dari titik terdalam membutuhkan lebih banyak gaya, tetapi saya pikir itu metode terbaik yang tidak merusak piano. Akhirnya saya mendorong 24V melalui solenoid 12V untuk mendapatkan cukup daya.
88 Solenoid mengonsumsi banyak daya dan karena saya tidak bisa pergi membeli PSU mahal, saya memutuskan untuk menggunakan aki mobil ayah saya.
Setelah itu, setiap shift register dan MOSFET akan ditempatkan pada papan kontrol.
595 di kanan dengan sokongan untuk kasus saya membakarnya. Diagram rangkiran sama persis dengan contoh 2 dari sumber referensi. Ganti LED dengan gerbang MOSFET. Seperti yang Anda lihat, tidak ada resistor pull down karena resistor tambahan akan meningkatkan biaya dan memelatkannya pada papan itu akan melelehkan jari. MOSFET ini akan membuka pada 5V dan menutup di bawah 4V atau sekitarnya.
Terakhir, dapatkan sepotong plat plastik untuk melekatkan solenoid ke dalamnya. Menggunakan lem panas dan plat plastik adalah ide buruk mengingat itu akan menjadi panas, tetapi itu yang terbaik yang mampu saya beli.
Dan kemudian jalankan satu sisi kabel solenoid ke sisi positif aki.
Perangkat Lunak:
Langkah pertama adalah mendapatkan file MIDI.
Langkah kedua adalah mendapatkan MIDI dalam bentuk teks. Ini dapat dilakukan di situs web yang berguna ini: https://flashmusicgames.com/midi/mid2txt.php.
Untuk kesederhanaan, abaikan tanda waktu, tempo, dan par. Tempo dapat dikalikan ke waktu nanti. Pada dasarnya Anda ingin file seperti ini:
Sekarang, gunakan ini untuk membuat 11 set data 8 bit dengan waktu dengan menjalankannya melalui kode Python (dilampirkan).
Mereka siap dikirim ke Arduino melalui COM Processing.
Lihat lampiran untuk mengetahui cara Processing mengirim data ini dan bagaimana Arduino menanganinya.
Catatan: Kebiasaan coding saya buruk dan mungkin sulit dibaca. Processing mengirim data dari kanan ke kiri karena Arduino mendorong data ke kanan pada piano fisik.
Semuanya bekerja:
Pemecahan Masalah:
Jika insinyur profesional melihat posting ini, dia akan berpikir bahwa sistem ini akan memiliki banyak masalah. Dan ada banyak masalah.
Karena solenoid ditempel dengan lem panas pada plat, solenoid terlalu panas dan melelehkan lem panas adalah masalah besar. Solusinya adalah dengan mencabutnya dan menggantinya dengan lem dua sisi yang tahan panas hingga 150C.
Maaf untuk gambar yang tidak profesional. Ini adalah seluruh konsep. Tidak ada perbedaan antara diagram dokumen Arduino -ShiftOut kecuali untuk MOSFET. Saya merekomendasikan untuk melihat itu juga.