Daftar Isi:

Arduino Keyboard Joystick Extender Box dan Sound Controller Thing Menggunakan Deej: 8 Langkah
Arduino Keyboard Joystick Extender Box dan Sound Controller Thing Menggunakan Deej: 8 Langkah

Video: Arduino Keyboard Joystick Extender Box dan Sound Controller Thing Menggunakan Deej: 8 Langkah

Video: Arduino Keyboard Joystick Extender Box dan Sound Controller Thing Menggunakan Deej: 8 Langkah
Video: #184 Make an Arduino USB Volume Control - Ideal Beginner's Project 2024, Desember
Anonim
Kotak Extender Joystick Keyboard Arduino dan Pengontrol Suara Menggunakan Deej
Kotak Extender Joystick Keyboard Arduino dan Pengontrol Suara Menggunakan Deej

Proyek Tinkercad »

Mengapa

Untuk sementara saya ingin menambahkan joystick kecil ke keyboard saya untuk mengontrol elemen antarmuka, atau tugas kecil lainnya dalam game dan simulator (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, dll).

Juga, untuk Elite: Dangerous, saya telah berjuang dengan mencampur tingkat volume dari audio eksternal (musik bawaan, meskipun bagus, berulang setelah berjam-jam dalam kegelapan), audio dalam game, dan dukungan paket suara eksternal.

Mixer sumber bawaan Windows 'ok', tetapi sulit untuk mengganti layar dan slider kontrol mouse di tengah-tengah permainan. Memiliki kotak kontrol keyboard yang diperluas sepertinya merupakan cara yang tepat. Deej adalah solusi yang saya temukan.

Bagaimana

Saya baru-baru ini belajar tentang Arduino, dan menemukan proyek deej di reddit. Sepertinya ini akan menyelesaikan kedua masalah itu dalam satu paket praktis. Dan itu akan membuat saya mendesain dan mencetak kasing 3d yang bagus.

Apa itu deej?

(dari situs) deej adalah **pencampur volume perangkat keras sumber terbuka** untuk PC Windows dan Linux. Ini memungkinkan Anda menggunakan penggeser kehidupan nyata (seperti DJ!) untuk **mengontrol volume berbagai aplikasi dengan mulus** (seperti pemutar musik, game yang Anda mainkan, dan sesi obrolan suara) tanpa harus menghentikan apa kamu lakukan.

versi saya

Untuk menjaga agar kotak tetap kecil, saya memilih kenop (potensiometer linier putar (pot = resistor)) daripada penggeser. Secara fungsional mereka bekerja sama. Desain deej saat ini dan populer tidak menyertakan joystick, jadi ini akan menjadi sedikit hibrida desain. Jika tidak, ini adalah bangunan yang cukup lurus ke depan.

Deej akan bekerja dengan Arduino Nano, Pro Micro atau Uno, tetapi Nano dan Pro Micro 'direkomendasikan secara resmi' oleh pengembang. Saya memilih Arduino Pro Micro karena saya menginginkan joystick, dan Perpustakaan Joystick Arduino mendukungnya. Saya juga dapat menggunakan Perpustakaan Keyboard Arduino ketika saya ingin menggunakan fungsi mute keyboard media (bukan 'soft mute') dengan tombol joystick, tapi itu lebih jauh.

Langkah 1: Persediaan

Perlengkapan
Perlengkapan
Perlengkapan
Perlengkapan
Perlengkapan
Perlengkapan

Kotak

Unduh file STL (dirancang di Tinkercad):

  • Enclosure file di Prusa (https://www.prusaprinters.org/)
  • Thingiverse (segera hadir)

Perangkat keras (unit produksi)

  • 1x Arduino Pro Mikro
  • 4x 10k Rotary (knob) Potensiometer (bukan Rotary Controller, gunakan pot)
  • 1x Arduino KY-023 Joystick
  • 5ft kabel jaringan cat5 memo
  • 1x USB A ke USB B kabel mikro (USB A adalah konektor persegi besar, USB B mikro adalah apa yang ada di Arduino Pro Micro)
  • 1x5mm LED merah
  • 1x220 ohm resistor

Saya memiliki beberapa bagian tambahan, jadi saya pikir saya akan membangun unit pengembangan untuk mengujinya. Hanya menghubungkan berbagai hal ke papan tempat memotong roti membuatnya lebih mudah untuk memvisualisasikan hal terakhir.

  • 1x Arduino Pro Mikro
  • 4x 10k Rotary (knob) Potensiometer (bukan Rotary Controller, gunakan pot)
  • 1x sakelar tombol tekan sesaat (saklar reset keras)
  • 1x USB A ke USB B kabel mikro (USB A adalah konektor persegi besar, USB B mikro adalah apa yang ada di Arduino Pro Micro)
  • berbagai macam kabel jumper
  • papan tempat memotong roti
  • 1x5mm LED merah
  • 1x220 ohm resistor

Langkah 2: Kandang

Kandang
Kandang
Kandang
Kandang
Kandang
Kandang
Kandang
Kandang

Desain

Saya menyukai beberapa desain lain yang diprofilkan di galeri komunitas deej, jadi berdasarkan fitur yang saya sukai:

  • Mudah dirancang dan dicetak
  • Tidak menghalangi periferal desktop saya yang lain
  • Tidak menggunakan sekrup atau pengencang untuk mengamankan enklosur
  • Estetika desain serupa dengan keyboard

Saya merancang dan mencetak dua prototipe sebelum menyelesaikan desain akhir ini. Saya suka memiliki versi fisik untuk dimainkan di ruang tempat saya menggunakannya karena memberi saya pemahaman yang lebih baik tentang bagaimana objek akhir akan bekerja.

Saya secara singkat mulai mendesain di Fusion360, tetapi tidak mengetahuinya sebaik Tinkercad jadi beralih dan bekerja di sana.

Karena saya menginginkan desain tanpa sekrup, saya membuat kotak bersarang. Prototipe pertama memiliki tutup tipis dan kotak yang dalam untuk semuanya. Desain kedua menukarnya dengan tutup yang dalam dan kotak bawah yang dangkal. Cukup untuk menahan Arduino Pro Mini jadi tidak perlu besar-besar. Juga memasukkan ikon timbul.

Desain ketiga diubah ukurannya agar sesuai dengan ruang di samping keyboard saya.

Cetakan

Saya mencetak kotak di PLA, memprogram pertukaran filamen / lapisan dari Hitam ke Merah untuk tutupnya di mana ikon akan mulai terlihat, dan kembali lagi ke Hitam untuk sisa tutupnya.

Masalah

Selama ini, joystick mount bermasalah. Bahkan dalam desain ketiga, tongkat menabrak dudukan di satu tempat. Iterasi berikutnya akan memiliki izin yang lebih baik. Saya bisa saja bekerja lebih banyak pada desain tetapi ingin melanjutkan ke fase berikutnya, instalasi.

Langkah 3: Sirkuit

Sirkuit
Sirkuit
Sirkuit
Sirkuit
Sirkuit
Sirkuit

Pekerjaan kabel terburuk yang pernah ada

Ok, ini adalah proyek Arduino full-up pertama saya. Ya, saya telah melakukan banyak hal di papan tempat memotong roti sebelumnya dan menggunakannya untuk membangun versi Pengembangan ini, tetapi untuk fabrikasi dan perakitan sebenarnya, ini adalah yang pertama bagi saya. Jadi kabel saya terlihat seperti omong kosong. Di sana, itu keluar dari jalan:)

Pembaruan: Sejak itu saya membangun yang lain dan kabelnya jauh lebih bagus di sana. Lihat gambar:)

Unit produksi -- Apa yang terjadi di mana

Arduino Pro Micro adalah papan kecil kecil dan akan muat di bagian cetakan di dasar. Kenop dan joystick pas di lubangnya masing-masing di tutupnya. Tetapi jangan memasang apa pun sampai Anda mendapatkan persaingan penyolderan.

Pengkabelan

Saya tidak memiliki kabel sirkuit yang tepat, tetapi memiliki gulungan kabel jaringan cat5 inti padat, jadi itulah yang saya gunakan. Ini sedikit lebih kaku dan mungkin lebih rapuh daripada kabel sirkuit yang terdampar, tetapi berfungsi.

Meletakkan komponen dalam perkiraan posisi pemasangan akhir, saya memperkirakan jarak, untuk setiap kawat, menambahkan sedikit lebih banyak untuk kendur, dll, kemudian memotong dan memangkas kawat. Saya meninggalkan banyak kelonggaran.

Mengacu pada diagram pengkabelan, saya menjalankan kesamaan (Hitam) dan VCC (Merah) ke kenop dan joystick di tempat yang ditunjukkan. Karena kabel jaringan tidak memiliki warna-warna ini, saya hanya memilih warna dan menjaga kabel saya tetap konsisten dengan fungsinya.

Pot individu. jalur analog (Kuning) berlari ke pin A0 - A3. Garis Joystick (Oranye), juga analog, mengalir ke pin I/O 8 dan 9. Ini harus ditetapkan sebagai Analog dalam kode Arduino sebagai A8 dan A9.

Pin sakelar joystick (Biru) berlari ke pin 7. Ini akan menjadi pin digital dalam kode.

Isolasi

Karena kawat kaku ini akan dimasukkan ke dalam ruang kecil, saya memilih untuk mengisolasi koneksi solder saya dengan sesendok lem panas meleleh yang sehat. Kemudian selipkan semuanya ke tempatnya dan jalankan tes sederhana di papan dan pot menggunakan versi kode Arduino Contoh AnalogInput -- dimodifikasi untuk membaca semua pot.

Versi kedua

Dua gambar terakhir di atas menunjukkan kotak berikutnya yang sedang saya buat. Yang ini akan memiliki 5 kenop dan satu tombol tekan sesaat untuk bisu. Tidak ada joystick. Kotak dengan ukuran yang sama.

Langkah 4: Menyelesaikan Perangkat Keras

Menyelesaikan Perangkat Keras
Menyelesaikan Perangkat Keras

Pada saat saya memasang Joystick, saya menyadari bahwa tidak ada banyak jarak antara papan dan pin header yang tersisa di Pro Micro.

Setelah sedikit menekuk kepala pin dengan hati-hati, dan menerapkan kembali lem lelehan panas (untuk insulasi), selungkup ditutup dengan benar.

Memasang pot berjalan tanpa hambatan.

Sekali lagi dengan kabel

Kabel inti padat agak kaku, dan bisa rapuh jika terlalu sering ditekuk, jadi lipatlah dengan hati-hati (tanpa sudut tajam) ke dalam ruang yang tersedia. Beberapa milik saya terlalu panjang dan membutuhkan sedikit lipatan ekstra.

Setelah semuanya terselip di tempatnya, paskan alasnya ke atas dan Anda harus menyelesaikan perangkat kerasnya….

Tapi tunggu, masih ada lagi

Tentu saja, setelah beberapa minggu penggunaan, saya memutuskan bahwa saya memerlukan indikator untuk memberi tahu saya status fungsi MUTE kode lunak.

Setelah mengedit kode untuk menambahkan fungsionalitas LED (lihat bagian berikutnya), saya segera menyolder LED / kabel / resistor dan menghubungkannya ke papan.

Saya menghabiskan lebih banyak waktu untuk mengebor lubang melalui bagian atas kasing karena saya tidak ingin merusak lapisan atas. Saya menandai titik tengah, penyok, lalu tangan memutar mata bor untuk membuat lubang.

Pengarsipan tambahan yang hati-hati membersihkan lubang dan memastikan tekanan yang pas untuk memastikan LED tidak menonjol terlalu jauh di atas permukaan atas.

Langkah 5: Perangkat Lunak

Perangkat Lunak
Perangkat Lunak
Perangkat Lunak
Perangkat Lunak
Perangkat Lunak
Perangkat Lunak

Gambaran

Jadi, ini adalah proses dua bagian.

  1. Dapatkan dan pahami cara kerja Deej dan edit file Config.yaml
  2. Edit kode Arduino agar sesuai dengan perangkat keras dan fitur yang diinginkan
  3. Dapatkan perpustakaan Arduino Joystick

Dalam kasus saya, saya menginginkan fitur-fitur ini:

  • Kenop yang mengontrol level (Mic dan output)
  • Sakelar bisu
  • Joystick 2 sumbu yang dikenali oleh Windows untuk penggunaan aplikasi

tingkat

Deej cukup banyak menangani poin pertama yang datang. Saya tidak mengubah fungsi ini

Sakelar bisu

Saya telah memutuskan sejak awal bahwa saya akan menggunakan tekan/saklar di Joystick sebagai tombol bisu yang berfungsi.

Ketika Anda memeriksa kode, Anda akan melihat bahwa saya telah memilih (awalnya) untuk menggunakan 'lembut' bisu - ketika tombol ditekan, volume MIC dikurangi menjadi nol (dan LED menyala). Ketika ditekan lagi, volume MIC kembali ke pengaturan sebelumnya dan LED padam.

Akhirnya saya akan melihat penerapan perpustakaan keyboard Arduino untuk mengaktifkan status Mute melalui set kode Keyboard media yang diperluas.

Implementasi joystick

Ini memerlukan penggunaan perpustakaan Joystick Arduino untuk memastikan joystick dikenali sebagai perangkat HID oleh Windows dan oleh karena itu oleh game/aplikasi apa pun.

Saya sedikit noob dalam hal pengkodean dan menemukan dokumentasi perpustakaan Joystick agak jarang di sisi implementasi yang sebenarnya - tetapi sedikit googling yang terfokus membawa saya ke contoh lain yang membantu saya memahami apa yang terjadi. Periksa bagian sumber daya di bagian akhir untuk detailnya.

Yang harus saya lakukan adalah mengidentifikasi pin X/Y, membaca statusnya dan mengirimkannya ke perpustakaan Joystick. Arduino muncul sebagai Leonardo untuk Windows, dan dikonfigurasi dengan benar sebagai perangkat Joystick.

Saya dapat mengaturnya di Elite Dangerous, di samping pengaturan HOTAS saya yang ada dan memiliki Joystick yang mengontrol berbagai hal dengan benar dan tidak bertentangan dengan HOTAS. Ini juga bekerja dengan baik di Star Wars: Skuadron -- Saya mengaturnya sebagai sakelar cepat untuk mengatur perisai saat dalam pertempuran.

File yang berfungsi dengan pengaturan Joystick saya

Saya telah mengunggah file saya saat ini (Oktober 2020) ke Codepile.

  • Kode Arduino (file.ino)
  • Deej config.yaml

Langkah 6: Akhir

Akhir
Akhir

Nah, yang ini selesai. Ini bekerja dan saya agak senang dengan bagaimana itu datang bersama-sama. Dan saya belajar lebih banyak tentang desain perangkat keras, integrasi, dan pemrograman Arduino.

Langkah 7: Tambahan..dum..dum

Tambahan..dum..dum
Tambahan..dum..dum

VLC -- pemutar audio dan video yang mengagumkan itu memiliki sedikit keanehan di mana tingkat volume, ketika dikontrol secara eksternal, melonjak dari 0% menjadi 27%. Ini tidak terjadi saat menyesuaikan level menggunakan kontrol volume antarmuka dalam aplikasi, hanya dengan kontrol eksternal seperti Deej.

Pengembang Deej dengan cepat menemukan solusi dalam-VLC yang berfungsi, lihat gambar di atas:

"…jika Anda ingin menonaktifkan perilaku "Pelacakan" ini, Anda dapat melakukannya dengan mengubah modul output audio VLC. Saya menggunakan DirectX dalam upaya saya di sini. Anda harus memulai ulang VLC agar perubahan diterapkan. (Anda masih akan memiliki sesi audio windows dan dapat mengontrolnya melalui deej, ini hanya akan mencegah bilah volume VLC bergerak dengannya)"

Langkah 8: Sumber Daya Tambahan

Sumber daya tambahan
Sumber daya tambahan

Ditemukan melalui Goog yang perkasa, terdaftar tanpa urutan tertentu…

  • Perpustakaan Joystick Arduino (v2) - diperlukan untuk mengintegrasikan joystick
  • Panduan hookup Sparkfun Pro Micro - sumber yang bagus tentang Arduino ini
  • deej - perangkat lunak yang menggerakkan kenop
  • Jenis Konektor USB - siapa yang tahu ada begitu banyak varian?
  • Pinout Analog Mikro Arduino Pro
  • Arduino Leonardo Gaming Joystick - Leonardo mirip dengan Pro Micro, hanya lebih besar
  • Port Arduino Pro Micro (Clone) tidak terdeteksi (Solusi) - ketika Anda mem-brick Pro Micro Anda (saya melakukannya)
  • Arduino Leonardo/Micro sebagai Game Controller/Joystick
  • Contoh penggunaan kunci multimedia untuk mematikan suara - menggunakan perpustakaan Proyek HID
  • Kode contoh perpustakaan Proyek HID untuk menjeda / memutar media
  • Contoh kode lain yang menunjukkan pengontrol gamepad.
  • ArduinoGamingController_updated - deskripsi kode yang baik tentang penggunaan Joystick Library
  • kalkulator resistor LED - untuk mengetahui seberapa besar resistor yang Anda perlukan dalam proyek Anda
  • Perpustakaan ikon - flaticon.com - sumber gambar yang digunakan di atas tombol
  • Decoder Warna Resistor Lain - klik pada warna dan biola!

Direkomendasikan: