Daftar Isi:

Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara: 7 Langkah
Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara: 7 Langkah

Video: Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara: 7 Langkah

Video: Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara: 7 Langkah
Video: Gak kebayang misteri hacker bjorka jadi begini?! 2024, November
Anonim
Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara
Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara
Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara
Teknologi yang Dapat Dipakai: Sarung Tangan Pengubah Suara

Yah, sepertinya sarung tangan dengan kekuatan luar biasa sedang populer akhir-akhir ini. Meskipun Infinity Gauntlet dari Thanos adalah sarung tangan yang cukup kuat, kami ingin membuat sarung tangan yang dapat melakukan sesuatu yang lebih luar biasa: mengubah suara pemakainya secara real-time.

Instruksi ini memberikan panduan tentang bagaimana kami merancang sarung tangan pengubah suara. Desain kami menggunakan berbagai sensor dan mikrokontroler di sarung tangan untuk mendeteksi gerakan, yang dikirim melalui kode Arduino ke patch Max, di mana sinyal audio kami kemudian diubah dan terdistorsi dengan cara yang menyenangkan. Sensor, gerakan, dan perubahan suara tertentu yang kami gunakan semuanya fleksibel untuk berbagai pertimbangan; ini hanyalah salah satu cara untuk membuat sarung tangan pengubah suara!

Proyek ini merupakan bagian dari kemitraan komunitas antara mahasiswa Pomona College dan Fremont Academy of Engineering Femineers. Ini adalah perpaduan yang sangat menyenangkan antara teknik elektronik dan elemen musik elektronik!

Langkah 1: Bahan

Bahan
Bahan
Bahan
Bahan
Bahan
Bahan

Bagian:

  • Mikrokontroler HexWear (ATmega32U4) (https://hexwear.com/)
  • Akselerometer MMA8451 (https://www.adafruit.com/product/2019)
  • Sensor Flex Pendek (x4) (https://www.adafruit.com/product/1070)
  • Sarung tangan lari ringan
  • #2 sekrup dan ring (x8)
  • konektor terminal crimp; pengukur 22-18 (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100pk)
  • Resistor 50kΩ (x4)
  • Kawat (~20 pengukur)
  • Pin pengaman berperekat
  • Kain kempa atau kain lainnya (~10 sq. in.)
  • Benang jahit
  • ritsleting
  • Laptop
  • Mikrofon USB

Peralatan

  • Perangkat solder
  • Penari telanjang kawat dan pemotong kawat
  • Pita listrik
  • Pistol udara panas
  • Obeng
  • Gunting
  • Jarum jahit

Perangkat lunak:

  • Maks dengan Bersepeda '74 (https://cycling74.com)
  • Perangkat lunak Arduino (https://www.arduino.cc/en/Main/Software)

Langkah 2: Menginstal Perangkat Lunak

Kita mulai dengan apa yang benar-benar merupakan bagian yang paling menggembirakan dari proyek apa pun: menginstal perpustakaan (dan banyak lagi).

Arduino:

Unduh dan instal perangkat lunak Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Hanya Windows, pengguna Mac dapat melewati langkah ini) Instal driver dengan mengunjungi https://www.redgerbera.com/pages/hexwear-driver-installation. Unduh dan instal driver (file.exe yang tercantum pada Langkah 2 di bagian atas halaman RedGerbera yang ditautkan).

2) Instal perpustakaan yang diperlukan untuk Hexware. Buka Arduino IDE-nya. Di bawah "File" pilih "Preferensi." Di tempat yang disediakan untuk URL Pengelola Papan Tambahan, tempel

github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.

Kemudian klik "Oke."

Buka Alat -> Papan: -> Manajer Papan. Dari menu pojok kiri atas, pilih "Kontribusi".

Cari, lalu klik Papan Gerbera dan klik Instal. Keluar dan buka kembali Arduino IDE.

Untuk memastikan bahwa perpustakaan diinstal dengan benar, buka Alat -> Papan, dan gulir ke bagian bawah menu. Anda akan melihat bagian berjudul “Papan Gerbera,” di mana setidaknya akan muncul HexWear (jika bukan papan seperti mini-HexWear).

Akselerometer:

Unduh dan instal pustaka akselerometer (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Langkah 3: Memasang Akselerometer

Memasang Akselerometer
Memasang Akselerometer
Memasang Akselerometer
Memasang Akselerometer

Kami membutuhkan dua jenis sensor utama untuk berinteraksi dengan proyek ini: akselerometer, dan sensor fleksibel. Kami akan memeriksa ini satu per satu, dimulai dengan akselerometer. Pertama, kita membutuhkan koneksi perangkat keras agar sesuai.

Untuk menghindari kerusakan pada Hex Anda, sebaiknya pasang sekrup #2 dan ring melalui port yang diinginkan, lalu pasang semua sambungan ke sekrup tersebut. Untuk mencegah apa pun terlepas saat bermain dengan sarung tangan, sambungan harus disolder dan/atau dikerutkan. Menggunakan beberapa inci kabel untuk setiap sambungan, buat sambungan berikut dari Hex ke akselerometer (lihat pinout di atas untuk referensi):

TEGANGAN MASUK VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

Dengan semuanya terhubung, kami siap untuk menguji!

Sebagai pengujian, jalankan kode sampel akselerometer di Arduino (File->Contoh->Adafruit_MMA8451->MMA8451demo), pastikan kode tersebut dapat ditampilkan ke monitor Serial. Ini harus menghasilkan akselerasi karena gravitasi (~ 10m/s) dalam arah z saat ditahan. Dengan memiringkan akselerometer, percepatan ini akan diukur dalam arah x atau y; kami akan menggunakan ini untuk memungkinkan pemakainya mengubah suara dengan memutar tangan mereka!

Sekarang, kita perlu menyajikan data accelerometer sedemikian rupa sehingga dapat dihubungkan dengan Max. Untuk melakukannya, kita harus mencetak nilai x dan y, mungkin dimodifikasi agar sesuai dengan rentang yang diinginkan (lihat Bagian 6). Dalam kode kami terlampir di sini, kami melakukan hal berikut:

//Mengukur arah-x dan arah-y. Kami membagi dan mengalikan untuk mendapatkan rentang yang tepat untuk MAX (kisaran 1000 dalam x dan kisaran 40 dalam y) xdir = event.acceleration.x/0.02; ydir = abs(event.acceleration.y)*2; //Cetak semuanya dalam format yang dapat dibaca untuk Max - dengan spasi di antara setiap nomor Serial.print(xdir); Serial.print("");

Ini harus memiliki Hex yang mencetak nilai modifikasi dari arah x dan y dari akselerometer setiap baris. Sekarang kami siap menambahkan sensor fleksibel!

Langkah 4: Memasang Sensor Flex

Memasang Sensor Fleksibel
Memasang Sensor Fleksibel
Memasang Sensor Fleksibel
Memasang Sensor Fleksibel
Memasang Sensor Fleksibel
Memasang Sensor Fleksibel

Pemakainya bisa mendapatkan banyak kontrol suara potensial jika kita bisa mendeteksi jari yang tertekuk. Sensor fleksibel akan melakukan hal itu. Setiap sensor fleksibel pada dasarnya adalah potensiometer, di mana tidak tertekuk memiliki resistansi ~25KΩ, sementara tertekuk penuh memiliki resistansi ~100KΩ. Kami menempatkan setiap sensor fleksibel dalam pembagi tegangan sederhana dengan resistor 50K, seperti yang ditunjukkan pada gambar pertama.

Sekali lagi menggunakan panjang kawat yang cukup pendek (perlu diingat ini semua akan dipasang ke bagian belakang sarung tangan), solder empat modul pembagi tegangan. Keempat modul akan berbagi Vin dan ground yang sama - kami memutar ujung kabel yang dilucuti sehingga kami hanya memiliki satu timah untuk disolder. Akhirnya, ambil empat modul dan buat koneksi yang ditunjukkan pada gambar kedua (jika ada yang tahu bagaimana melakukan ini tanpa membuat kekacauan yang mengerikan, tolong ungkapkan rahasia Anda).

Sekarang, kita membutuhkan kode Arduino untuk membaca tegangan dari masing-masing sensor. Untuk tujuan kami, kami memperlakukan sensor fleksibel sebagai sakelar; mereka hidup atau mati. Dengan demikian, kode kami hanya menetapkan ambang tegangan-di atas ambang batas ini, kami mengeluarkan 1 ke port Serial (artinya sensor bengkok), jika tidak, kami mengeluarkan 0:

// Ambil sejumlah

sampel analog dan menambahkannya untuk setiap sensor Flex

while (jumlah_sampel < NUM_SAMPEL) {

sum10 += analogRead(A10);

sum9 += analogRead(A9);

sum7 += analogRead(A7);

sum11 += analogRead(A11);

sampel_jumlah++;

// Penundaan singkat untuk tidak mengambilnya terlalu cepat

penundaan (5);

}

// menghitung tegangan, rata-rata atas sampel cepat

// gunakan 5.0 untuk ADC 5.0V

tegangan referensi

// 5.015V adalah yang dikalibrasi

tegangan referensi

tegangan10 = ((mengambang)jumlah10 /

(mengambang)NUM_SAMPLES * 5.015) / 1024.0;

tegangan9 = ((mengambang)jumlah9/

(mengambang)NUM_SAMPLES * 5.015) / 1024.0;

tegangan7 = ((float)sum7 /

(mengambang)NUM_SAMPLES * 5.015) / 1024.0;

tegangan11 = ((mengambang)jumlah11 /

(mengambang)NUM_SAMPLES * 5.015) / 1024.0;

//Periksa apakah setiap sensor fleksibel

lebih besar dari ambang (thresh) - jika demikian, atur nomornya

//jari kelingking

jika (tegangan10 > ambang)

{

//-5 untuk menaikkan

nada suara satu oktaf

flex10 = -10;

}

lain flex10 = 0;

//Jari manis

jika (tegangan9 >

(mengirik-0.4)) {

///5 untuk menurunkan

nada suara satu oktaf

fleksibel9 = 5;

}

lain flex9 = 0;

//Jari tengah

if (tegangan7 > ambang) {

// untuk mengatur

efek gema

fleksibel7 = 1;

}

lain flex7 = 0;

//Jari telunjuk

jika (tegangan11 > ambang)

{

//50 untuk mengatur

siklus ke 50

flex11 = 93;

}

lain flex11 = 0;

//Setel ulang semua penghitungan

variabel ke 0 untuk loop berikutnya

sampel_jumlah = 0;

jumlah10 = 0;

jumlah9 = 0;

jumlah7 = 0;

jumlah11 = 0;

Pada titik ini, port Serial harus menunjukkan nilai untuk orientasi akselerometer, dan juga apakah setiap sensor fleksibel bengkok. Kami siap untuk membuat kode Arduino kami berbicara dengan Max!

Langkah 5: Berinteraksi Dengan Max

Antarmuka Dengan Max
Antarmuka Dengan Max

Sekarang kode Hex mengeluarkan banyak angka melalui port Serial, kita memerlukan perangkat lunak Max untuk membaca sinyal ini. Blok kode yang digambarkan di atas melakukan hal itu! Terima kasih.

Catatan penting: setelah mengunggah kode ke Hex, tutup semua jendela port serial, lalu ubah huruf yang dilingkari di kode Max agar sesuai dengan port Hex. Jika Anda tidak yakin huruf mana yang harus disetel, menekan bagian "cetak" dari kode Max akan mencantumkan semua port yang terhubung.

Garis yang dicetak dari port serial Hex dibaca melalui blok kode Max, dan kemudian dibagi berdasarkan pembatas ruang. Output di akhir blok Max memungkinkan Anda untuk mengambil setiap nomor satu per satu, jadi kami akan menghubungkan ruang keluaran pertama ke tempat yang kami inginkan arah x dari akselerometer, ruang kedua akan menjadi arah y, dll. Untuk sekarang, cukup sambungkan ini ke blok angka untuk memastikannya berfungsi. Anda harus dapat menggerakkan sensor akselerometer dan flex dan melihat perubahan angka di perangkat lunak Max.

Langkah 6: Membangun Sisa Kode Maks

Mengingat kekuatan bahasa Max, Anda benar-benar dapat membiarkan imajinasi Anda menjadi liar di sini dengan semua cara Anda dapat mengubah sinyal suara yang masuk dengan sarung tangan kekuatan magis Anda. Namun, jika Anda kehabisan ide, di atas adalah ikhtisar tentang apa yang dilakukan kode Max kami dan cara kerjanya.

Untuk setiap parameter yang Anda coba ubah, Anda mungkin ingin dipusingkan dengan rentang nilai yang berasal dari kode Arduino untuk mendapatkan sensitivitas yang tepat.

Beberapa tip pemecahan masalah Max lainnya:

  • Jika Anda tidak mendengar suara
    • pastikan Max diatur untuk menerima audio dari mikrofon Anda (Perangkat Input Status Audio Opsi)
    • pastikan penggeser Volume Master di Max diaktifkan, dan kontrol volume lain yang mungkin Anda miliki dalam kode Anda
  • Jika kode sepertinya tidak melakukan apa-apa
    • pastikan tambalan Anda terkunci (simbol kunci di sudut kiri bawah)
    • pastikan melalui pembacaan di patch Max bahwa patch Max Anda masih mendapatkan data dari port serial Arduino. Jika tidak, coba atur ulang port serial (seperti yang dijelaskan pada Langkah 5) dan/atau periksa koneksi kabel fisik Anda.
  • Suara kliping yang aneh saat mengubah parameter

    ini ada hubungannya dengan cara kerja ~tapin dan ~tapout; khusus bahwa ketika Anda mengubah nilainya, mereka mengatur ulang, yang menyebabkan kliping. Mengingat pengetahuan kami yang terbatas tentang program ini, kami hampir yakin ada cara yang lebih baik untuk melakukan ini di Max dan menghilangkan masalah…

Langkah 7: Secara harfiah Menyatukan Semuanya

Secara harfiah Menyatukan Semuanya
Secara harfiah Menyatukan Semuanya
Secara harfiah Menyatukan Semuanya
Secara harfiah Menyatukan Semuanya
Secara harfiah Menyatukan Semuanya
Secara harfiah Menyatukan Semuanya
Secara harfiah Menyatukan Semuanya
Secara harfiah Menyatukan Semuanya

Yang tersisa sekarang adalah memasang sirkuit kami ke sarung tangan kami. Ambil kain tambahan Anda dan potong strip sedikit lebih besar dari sensor fleksibel. Jahit kain tambahan ke jari sarung tangan tempat buku jari tertekuk, sisakan semacam selongsong untuk sensor flex untuk duduk (kita tidak bisa hanya merekatkan sensor flex langsung ke sarung tangan karena kain sarung tangan meregang saat jari menekuk). Setelah selongsong sebagian besar dijahit, geser sensor flex ke dalam, dan dengan hati-hati jahit ujungnya ke sarung tangan, pasang sensor flex di tempatnya. Ulangi ini untuk setiap sensor fleksibel.

Selanjutnya, gunakan peniti berperekat untuk menempelkan Hex ke bagian belakang sarung tangan (Anda mungkin ingin mengoleskan lem panas pada peniti untuk memastikan tidak terlepas saat dipakai). Jahit akselerometer ke pergelangan tangan sarung tangan. Terakhir, gunakan keajaiban ikatan ritsleting untuk membersihkan kabel yang tidak sedap dipandang dengan indah.

Anda siap untuk menguji kemampuan bernyanyi terbaik Anda! (Semoga kami sangat merekomendasikan "Harder Better Faster Stronger" Daft Punk untuk sepenuhnya memamerkan kemampuan mengubah suara Anda)

Direkomendasikan: