İçindekiler:

Arduino Klavye Joystick Genişletici Kutusu ve Ses Kontrolörü Deej Kullanan Şey: 8 Adım
Arduino Klavye Joystick Genişletici Kutusu ve Ses Kontrolörü Deej Kullanan Şey: 8 Adım

Video: Arduino Klavye Joystick Genişletici Kutusu ve Ses Kontrolörü Deej Kullanan Şey: 8 Adım

Video: Arduino Klavye Joystick Genişletici Kutusu ve Ses Kontrolörü Deej Kullanan Şey: 8 Adım
Video: Trendyol da ki satıcının çakallığı 2024, Kasım
Anonim
Arduino Klavye Joystick Genişletici Kutusu ve Deej Kullanan Ses Denetleyicisi Şey
Arduino Klavye Joystick Genişletici Kutusu ve Deej Kullanan Ses Denetleyicisi Şey

Tinkercad Projeleri »

Neden

Bir süredir, oyun ve simülatörlerdeki arayüz öğelerini veya diğer küçük görevleri kontrol etmek için klavyeme küçük bir joystick eklemek istiyordum (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, vb.).

Ayrıca, Elite: Dangerous için, harici sesten (yerleşik müzik iyi olsa da, siyahta saatler sonra tekrar ediyor), oyun içi sesten ve harici ses paketi desteğinden ses düzeylerini karıştırmakla uğraşıyorum.

Windows yerleşik kaynak karıştırıcı 'tamam', ancak oyunun ortasında ekranları ve fare kontrol kaydırıcılarını değiştirmek için bir acı. Genişletilmiş bir klavye kontrol kutusuna sahip olmak, gidilecek yol gibi görünüyordu. Deej bulduğum çözüm.

Nasıl

Son zamanlarda Arduino'yu öğreniyorum ve reddit'te deej projesine rastladım. Bu, bu sorunların her ikisini de kullanışlı bir pakette çözecek gibi görünüyordu. Ve şık bir 3d kasa tasarlamama ve basmama izin verecekti.

deej nedir?

(siteden) deej, Windows ve Linux PC'ler için bir **açık kaynaklı donanım hacim karıştırıcısıdır**. **Farklı uygulamaların ses düzeyini (müzik çalarınız, oynadığınız oyun ve sesli sohbet oturumunuz gibi) sorunsuz bir şekilde kontrol etmek için gerçek hayattaki kaydırıcıları (bir DJ gibi!) Yapıyoruz.

Benim versiyonum

Kutuyu küçük tutmak için kaydırıcılar yerine düğmeleri (döner doğrusal potansiyometre (potlar = dirençler)) seçtim. İşlevsel olarak aynı şekilde çalışırlar. Güncel ve popüler deej tasarımları joystick içermiyor, bu yüzden bu biraz tasarım melezi olacak. Aksi takdirde, oldukça basit bir yapıdır.

Deej, bir Arduino Nano, Pro Micro veya Uno ile çalışacak, ancak Nano ve Pro Micro, geliştirici tarafından 'resmen tavsiye ediliyor'. Arduino Pro Micro'yu seçtim çünkü joystick'i istedim ve Arduino Joystick Kütüphanesi bunu destekliyor. Joystick düğmesiyle medya klavyesi sessiz işlevini ('yumuşak sessiz' yerine) kullanmak istediğimde Arduino Klavye Kitaplığını da kullanabilirim, ancak bu daha ileride.

Adım 1: Sarf Malzemeleri

Gereçler
Gereçler
Gereçler
Gereçler
Gereçler
Gereçler

Kutu

STL dosyalarını indirin (Tinkercad'de tasarlanmıştır):

  • Prusa'daki ek dosyalar (https://www.prusaprinters.org/)
  • Thingiverse (yakında)

Donanım (üretim birimi)

  • 1x Arduino Pro Mikro
  • 4x 10k döner (düğme) Potansiyometreler (Döner Kontrolörler değil, tencere kullanın)
  • 1x Arduino KY-023 Kumanda Kolu
  • 5ft hurda cat5 ağ kablosu
  • 1x USB A - USB B mikro kablosu (USB A, büyük kare konektördür, USB B mikro, Arduino Pro Micro'da bulunan şeydir)
  • 1x 5mm kırmızı LED
  • 1x 220 ohm direnç

Bazı ekstra parçalarım vardı, bu yüzden bazı şeyleri test etmek için bir geliştirme birimi kuracağımı düşündüm. Sadece bir şeyleri bir breadboard'a bağlamak, son şeyi görselleştirmeyi kolaylaştırdı.

  • 1x Arduino Pro Mikro
  • 4x 10k döner (düğme) Potansiyometreler (Döner Kontrolörler değil, tencere kullanın)
  • 1x anlık basmalı düğme anahtarı (donanımdan sıfırlama anahtarı)
  • 1x USB A - USB B mikro kablosu (USB A, büyük kare konektördür, USB B mikro, Arduino Pro Micro'da bulunan şeydir)
  • çeşitli atlama telleri
  • ekmek tahtası
  • 1x 5mm kırmızı LED
  • 1x 220 ohm direnç

2. Adım: Muhafaza

Kuşatma
Kuşatma
Kuşatma
Kuşatma
Kuşatma
Kuşatma
Kuşatma
Kuşatma

Dizayn

Deej topluluk galerisinde profil verilen diğer tasarımlardan bazılarını beğendim, bu yüzden benim sevdiğim özellikleri temel aldım:

  • Tasarımı ve baskısı kolay
  • Diğer masaüstü çevre birimlerimin önüne geçmeyin
  • Muhafazayı sabitlemek için vida veya bağlantı elemanı kullanmayın
  • Klavyeye benzer tasarım estetiği

Bu son tasarıma geçmeden önce iki prototip tasarladım ve bastırdım. Son nesnenin nasıl çalışacağına dair bana daha iyi bir fikir verdiği için, kullandığım alanda oynamak için fiziksel bir versiyona sahip olmayı seviyorum.

Kısaca Fusion360'ta tasarlamaya başladım, ancak Tinkercad kadar iyi bilmiyorum, bu yüzden geçiş yaptım ve orada çalıştım.

Vidasız bir tasarım istediğim için yuvalama kutusu oluşturdum. İlk prototipin ince bir kapağı ve her şey için derin bir kutusu vardı. İkinci tasarım, bunu derin bir kapak ve sığ bir alt kutu ile değiştirdi. Sadece Arduino Pro Mini'yi tutması gerekiyordu, bu yüzden gerçekten büyük olmasına gerek yoktu. Ayrıca kabartmalı simgeleri dahil etti.

Üçüncü tasarım, klavyemin yanındaki boşluğa uyacak şekilde yeniden boyutlandırıldı.

Yazdır

Kutuyu PLA'da yazdırdım, simgelerin yeni görünmeye başlayacağı kapak için Siyah'tan Kırmızı'ya bir filament / katman değişimi programladım ve kapağın geri kalanı için tekrar Siyah'a döndüm.

Bir sorun

Bütün bunlar boyunca, joystick montajı bir problemdi. Üçüncü tasarımda bile, çubuk yuvalara tek bir yerde çarpıyor. Bir sonraki yineleme daha iyi izinlere sahip olacak. Tasarım üzerinde daha fazla çalışabilirdim ama bir sonraki aşama olan kuruluma geçmek istedim.

Adım 3: Devre

Devre
Devre
Devre
Devre
Devre
Devre

Şimdiye kadarki en kötü kablolama işi

Tamam, bu benim ilk tam Arduino projem. Evet, daha önce breadboard üzerinde bir şeyler yaptım ve bir tanesini bunun Geliştirme versiyonunu oluşturmak için kullanıyorum, ancak aslında imalat ve montaja gelince, bu benim ilkim. Yani kablolarım bok gibi görünüyor. İşte, yolun dışında:)

Güncelleme: O zamandan beri bir tane daha inşa ettim ve kablolama orada çok daha güzel. resimlere bakın:)

Üretim birimi -- Neler nereye gidiyor

Arduino Pro Micro, küçük bir tahtadır ve tabandaki kalıplanmış bölüme sığar. Düğmeler ve joystick, kapaktaki ilgili deliklere oturur. Ama lehimleme yarışmasını alana kadar hiçbir şey monte etmeyin.

kablolama

Uygun bir devre telim yoktu, ancak artık bir katı çekirdekli cat5 ağ kablosu rulosu vardı, bu yüzden kullandım. Çok telli devre telinden biraz daha sert ve belki de daha kırılgandır, ancak işe yarıyor.

Bileşenleri son montaj konumlarına yaklaşık olarak yerleştirirken, her tel için mesafeyi tahmin ettim, gevşeklik vb. için biraz daha ekledim, sonra teli kesip kestim. çok boşluk bıraktım.

Bağlantı şemasına atıfta bulunarak, ortak zemini (Siyah) ve VCC'yi (Kırmızı) belirtilen yerlerde düğmelere ve joystick'e koştum. Ağ kablosu bu renklerde gelmediğinden, sadece bir renk seçtim ve kablolamamı işleve uygun tuttum.

Bireysel Pot. analog hatlar (Sarı) A0 - A3 pinlerine koştu. Aynı zamanda analog olan Joystick hatları (Turuncu), G/Ç pinleri 8 ve 9'a koştu. Bunların Arduino kodunda Analog olarak A8 ve A9 olarak atanması gerekecek.

Joystick anahtarı pimi (Mavi) pim 7'ye koştu. Bu, koddaki dijital bir pim olacaktır.

yalıtım

Bu sert tel küçük bir alana doldurulacağından, lehim bağlantılarımı sağlıklı bir sıcak eriyik yapıştırıcı dolgusu ile yalıtmayı seçtim. Ardından her şeyi yerine oturttu ve Arduino Örnek AnalogGiriş kodunun sürümünü kullanarak tahtada ve tencerelerde basit bir test yaptı - tüm tencereleri okumak için değiştirildi.

İkinci versiyon

Yukarıdaki son iki resim, inşa edeceğim bir sonraki kutuyu gösteriyor. Bu, 5 düğme ve sessiz için bir anlık basma düğmesine sahip olacaktır. Oyun çubuğu yok. Aynı boyutta kutu.

Adım 4: Donanımı Bitirme

Donanımı Bitirmek
Donanımı Bitirmek

Joystick'i kurduğumda, anakartı ile Pro Micro'da kalan pin başlıkları arasında çok fazla boşluk olmadığını fark ettim.

Pim başlıklarının biraz dikkatli bir şekilde bükülmesinden ve (yalıtım için) sıcak eriyik yapıştırıcının yeniden uygulanmasından sonra, muhafaza düzgün bir şekilde kapandı.

Tencerelerin montajı sorunsuz geçti.

Yine teller ile

Tek damarlı teller biraz serttir ve çok fazla bükülürse kırılgan olabilir, bu nedenle bunları (keskin köşeler olmadan) uygun alana dikkatlice katlayın. Bazıları çok uzundu ve biraz ekstra katlama gerektiriyordu.

Her şey yerine oturduğunda, tabanı üste oturtun ve donanımla işiniz bitmeli….

Ama bekle, dahası var

Tabii ki, birkaç haftalık kullanımdan sonra, yazılımla kodlanmış MUTE işlevinin durumunun ne olduğunu bana bildirecek bir göstergeye ihtiyacım olduğuna karar verdim.

LED işlevselliğini eklemek için kodu düzenledikten sonra (sonraki bölüme bakın), LED / kabloları / rezistörü hızlıca lehimledim ve karta bağladım.

Üst kaplamayı bozmak istemediğim için kasanın üst kısmındaki deliği delmek için daha fazla zaman harcadım. Bir orta noktayı işaretledim, çukurlaştırdım, sonra deliği açmak için elle bir matkap ucu döndürdüm.

Ek dikkatli eğeleme deliği temizledi ve LED'in üst yüzeyden çok fazla dışarı çıkmadığından emin olmak için güzel bir şekilde sıkı bir şekilde oturmasını sağladı.

Adım 5: Yazılım

Yazılım
Yazılım
Yazılım
Yazılım
Yazılım
Yazılım

genel bakış

Yani bu iki parçalı bir süreç.

  1. Deej'in nasıl çalıştığını öğrenin ve anlayın ve Config.yaml dosyasını düzenleyin
  2. Arduino kodunu istenen donanım ve özelliklere uyacak şekilde düzenleyin
  3. Arduino Joystick kitaplığını edinin

Benim durumumda şu özellikleri istedim:

  • Seviyeleri kontrol eden düğmeler (Mikrofon ve çıkış)
  • Sessiz anahtarı
  • Uygulama kullanımı için Windows tarafından tanınan 2 eksenli joystick

Seviyeler

Deej, geldiği gibi ilk noktayı hemen hemen hallediyor. Bu işlevi değiştirmedim

Sessiz anahtarı

Joystick'teki basma/anahtar düğmesini işlevsel bir sessiz düğmesi olarak kullanacağıma erkenden karar vermiştim.

Kodu incelediğinizde, (başlangıçta) 'yumuşak' bir sessiz kullanmayı seçtiğimi göreceksiniz - düğmeye basıldığında, MIC ses seviyesi sıfıra iniyor (ve LED yanıyor). Tekrar basıldığında, MIC sesi önceki ayarına döner ve LED söner.

Sonunda, genişletilmiş medya Klavye kod seti aracılığıyla Sessiz durumunu değiştirmek için Arduino klavye kitaplığını uygulamaya çalışacağım.

Joystick uygulaması

Bu, joystick'in Windows tarafından ve dolayısıyla herhangi bir oyun/uygulama tarafından bir HID cihazı olarak tanınmasını sağlamak için Arduino Joystick kitaplığının kullanılmasını gerektirir.

Kodlama konusunda biraz acemiyim ve gerçek uygulama tarafında Joystick kitaplığı belgelerini biraz seyrek buldum - ancak biraz odaklanmış googling, neler olduğunu anlamama yardımcı olan başka örneklere yönlendirdi. Ayrıntılar için sonundaki kaynaklar bölümünü kontrol edin.

Tek yapmam gereken X/Y pinlerini belirlemek, durumlarını okumak ve bunu Joystick kitaplığına göndermekti. Arduino, Windows için bir Leonardo olarak göründü ve bir Joystick cihazı olarak düzgün bir şekilde yapılandırıldı.

Mevcut HOTAS kurulumumun yanı sıra Elite Dangerous'ta kurmayı başardım ve Joystick'in işleri düzgün bir şekilde kontrol etmesini ve HOTAS ile çelişmemesini sağladım. Ayrıca Star Wars: Squadrons'da da iyi çalışıyor -- Savaşta kalkanları kurmak için hızlı bir geçiş olarak ayarladım.

Joystick kurulumumla çalışan dosyalar

Mevcut (Ekim 2020) dosyalarımı Codepile'a yükledim.

  • Arduino kodu (.ino dosyası)
  • Deej yapılandırma.yaml

6. Adım: Bitir

Son
Son

Peki, bu yapıldı. Çalışıyor ve nasıl bir araya geldiğinden oldukça memnunum. Donanım tasarımı, entegrasyon ve Arduino programlama hakkında biraz daha fazla şey öğrendim.

Adım 7: Ek..dum..dum

Ek..dum..dum
Ek..dum..dum

VLC -- bu harika ses ve video oynatıcı, harici olarak kontrol edildiğinde ses seviyesinin %0'dan %27'ye yükseldiği küçük bir tuhaflığa sahip. Bu, uygulama içi arabirim ses kontrolü kullanılarak seviye ayarlanırken olmaz, yalnızca Deej gibi harici kontrollerle olur.

Deej geliştiricisi, işi yapan bir VLC içi geçici çözümü hızla buldu, yukarıdaki resme bakın:

"…bu "İzleme" davranışını devre dışı bırakmak istiyorsanız, bunu VLC'nin ses çıkış modülünü değiştirerek yapabilirsiniz. Buradaki denemelerimde DirectX kullandım. Değişikliğin etkili olması için VLC'yi yeniden başlatmanız gerekecek. (yine de bir windows ses oturumuna sahip olmak ve onu deej aracılığıyla kontrol edebilmek, bu sadece VLC ses çubuğunun onunla hareket etmesini engelleyecektir)"

8. Adım: Ek Kaynaklar

Ek kaynaklar
Ek kaynaklar

Belirli bir sırayla listelenmemiş güçlü Goog aracılığıyla bulundu…

  • Arduino Joystick Kitaplığı (v2) - joystick'i entegre etmek için gerekli
  • Sparkfun Pro Micro bağlantı kılavuzu - bu Arduino hakkında iyi bir kaynak
  • deej - düğmeleri çalıştıran yazılım
  • USB Konektör Tipleri - bu kadar çok varyant olduğunu kim bilebilirdi?
  • Arduino Pro Mikro Analog Pin Çıkışları
  • Arduino Leonardo Oyun Joystick - Leonardo, Pro Micro'ya benzer, sadece daha büyük
  • Arduino Pro Micro (Klon) bağlantı noktası algılanmadı (Çözüm) - Pro Micro'nuzu tuğlaladığınızda (Yaptım)
  • Oyun Denetleyicisi/Joystick Olarak Arduino Leonardo/Micro
  • Sesi kapatmak için bir multimedya anahtarı kullanma örneği - HID Proje kitaplığını kullanma
  • Medyayı duraklatmak / oynatmak için HID Proje kitaplığı örnek kodu
  • Gamepad denetleyicisini gösteren başka bir kod örneği.
  • ArduinoGamingController_updated - Joystick Kitaplığı kullanımının iyi kod açıklaması
  • LED Direnç hesaplayıcı şey - projenizde ne kadar büyük bir dirence ihtiyacınız olduğunu öğrenmek için
  • Simge kitaplığı - flaticon.com - düğmelerin üzerinde kullanılan görüntülerin kaynağı
  • Başka bir Direnç Renk Çözücü - bir renge tıklayın ve viyola!

Önerilen: