İçindekiler:
- Adım 1: Sarf Malzemeleri
- 2. Adım: Muhafaza
- Adım 3: Devre
- Adım 4: Donanımı Bitirme
- Adım 5: Yazılım
- 6. Adım: Bitir
- Adım 7: Ek..dum..dum
- 8. Adım: Ek Kaynaklar
Video: Arduino Klavye Joystick Genişletici Kutusu ve Ses Kontrolörü Deej Kullanan Şey: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
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
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
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
Ş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
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
genel bakış
Yani bu iki parçalı bir süreç.
- Deej'in nasıl çalıştığını öğrenin ve anlayın ve Config.yaml dosyasını düzenleyin
- Arduino kodunu istenen donanım ve özelliklere uyacak şekilde düzenleyin
- 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
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
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
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:
Deej Kutusu - 5 Sürgü: 8 Adım (Resimlerle)
Deej Kutusu - 5 Kaydırıcı: Bu, PC program hacimlerini tek tek kontrol etmenize izin veren ve bireysel ihtiyaçlara göre tamamen kolayca yapılandırılabilen Deej projesine benim bakış açım. Tasarımım, her bir kaydırıcıyı tanımlamak için manyetik, değiştirilebilir rozetlere sahip 5 kaydırıcıya sahiptir. Bu kon
Ses Çıkışlı Braille Klavye: 7 Adım
Ses Çıkışlı Braille Klavye: Bu dünyada yaklaşık 39 milyon Kör olmak üzere yaklaşık 286 Milyon Görme engelli var. Bu insanların teknolojiye erişimi çok nadirdir. Bu nedenle eğitim alanında geride kalmışlardır. Bu benim
Hızlı ve Kirli Das Klavye (Boş Klavye): 3 Adım
Hızlı ve Kirli Das Klavye (Boş Klavye): Das Klavye, tuşlarında yazı olmayan en popüler klavyenin adıdır (boş klavye). Das Klavye 89,95 $ için perakende satış yapıyor. Bu talimat, etrafta yattığınız herhangi bir eski klavyeyi kendiniz yapmanıza rağmen size rehberlik edecektir
Ev yapımı Can sıkıcı bir şey (Can sıkıcı bir şey): 4 Adım (Resimlerle)
Ev yapımı Can sıkıcı bir şey (Annoy-a-tron): Thinkgeek.com annoy-a-tron adlı bir şey satıyor. Temel olarak, etkinleştirildiğinde çeşitli aralıklarla bip sesi çıkaran bir cihazdır. Bu talimat, düşünce geek'in sinir bozucu bir tronunun tam bir kopyasını oluşturmasa da, malzemeleriniz ve k
Nane Kutusu Ses Seçici: 3,5 mm Ses Anahtarı: 6 Adım
Nane Kutusu Ses Seçici: 3,5 mm Ses Anahtarı: Sorun: Çoğu zaman masaüstümde, diğer insanlar odadayken oyun oynamak veya müzik dinlemek için kulaklık kullanmam gerekiyor ve sonra komik bir şey göstermek istersem hoparlörlere geçmem gerekiyor. uzaktaki bir akrabanızla video veya internet araması yapın. NS