Spisu treści:

Arduino Keyboard Joystick Extender Box i kontroler dźwięku Rzecz za pomocą Deej: 8 kroków
Arduino Keyboard Joystick Extender Box i kontroler dźwięku Rzecz za pomocą Deej: 8 kroków

Wideo: Arduino Keyboard Joystick Extender Box i kontroler dźwięku Rzecz za pomocą Deej: 8 kroków

Wideo: Arduino Keyboard Joystick Extender Box i kontroler dźwięku Rzecz za pomocą Deej: 8 kroków
Wideo: Control Arduino with Python using Firmata / PyFirmata 2024, Listopad
Anonim
Arduino Keyboard Joystick Extender Box i kontroler dźwięku za pomocą Deej
Arduino Keyboard Joystick Extender Box i kontroler dźwięku za pomocą Deej

Projekty Tinkercad »

Dlaczego

Od jakiegoś czasu chciałem dodać mały joystick do mojej klawiatury, aby sterować elementami interfejsu lub innymi mniejszymi zadaniami w grach i symulatorach (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons itp.).

Ponadto w przypadku Elite: Dangerous miałem problemy z miksowaniem poziomów głośności z zewnętrznego dźwięku (wbudowana muzyka, choć dobra, staje się powtarzalna po wielu godzinach w czerni), dźwiękiem w grze i obsługą zewnętrznego pakietu głosowego.

Wbudowany mikser źródłowy Windows jest „w porządku”, ale trudno jest przełączać ekrany i suwaki sterowania myszą w środku gry. Posiadanie rozszerzonego pola sterowania klawiaturą wydawało się właściwą drogą. Deej to rozwiązanie, które znalazłem.

Jak

Niedawno uczyłem się o Arduino i natknąłem się na projekt deej na reddicie. Wyglądało na to, że rozwiąże to oba te problemy w jednym poręcznym pakiecie. I to pozwoliłoby mi zaprojektować i wydrukować ładne etui 3d.

Co to jest deej?

(ze strony) deej to **sprzętowy mikser głośności typu open source** dla komputerów z systemem Windows i Linux. Pozwala używać rzeczywistych suwaków (takich jak DJ!), aby **płynnie kontrolować głośność różnych aplikacji** (takich jak odtwarzacz muzyki, gra, w którą grasz i sesja czatu głosowego) bez konieczności zatrzymywania robisz.

Moja wersja

Aby pudełko było małe, wybrałem pokrętła (obrotowy potencjometr liniowy (potencjometry = rezystory)) zamiast suwaków. Funkcjonalnie działają tak samo. Obecne i popularne projekty deejów nie zawierają joysticka, więc będzie to trochę hybryda projektu. W przeciwnym razie jest to dość prosta kompilacja.

Deej będzie współpracował z Arduino Nano, Pro Micro lub Uno, ale Nano i Pro Micro są „oficjalnie polecane” przez dewelopera. Wybrałem Arduino Pro Micro, ponieważ chciałem joystick, a biblioteka Arduino Joystick go obsługuje. Mogę również użyć biblioteki klawiatur Arduino, gdy chcę użyć funkcji wyciszania klawiatury multimedialnej (zamiast „miękkiego wyciszenia”) za pomocą przycisku joysticka, ale to jest dalej.

Krok 1: Materiały eksploatacyjne

Kieszonkowe dzieci
Kieszonkowe dzieci
Kieszonkowe dzieci
Kieszonkowe dzieci
Kieszonkowe dzieci
Kieszonkowe dzieci

Pudełko

Pobierz pliki STL (zaprojektowane w Tinkercad):

  • Pliki załączników w Prusa (https://www.prusaprinters.org/)
  • Thingiverse (wkrótce)

Sprzęt (jednostka produkcyjna)

  • 1x Arduino Pro Micro
  • 4x potencjometry obrotowe 10k (pokrętło) (nie kontrolery obrotowe, użyj potencjometrów)
  • 1x Joystick Arduino KY-023;
  • 5ft złomowy kabel sieciowy cat5
  • 1x kabel micro USB A do USB B (USB A to duże kwadratowe złącze, USB B micro to to, co znajduje się w Arduino Pro Micro)
  • 1x5mm czerwona dioda LED
  • 1x rezystor 220 omów,

Miałem kilka dodatkowych części, więc pomyślałem, że zbuduję jednostkę programistyczną, aby przetestować różne rzeczy. Samo podłączenie rzeczy do płytki prototypowej ułatwiło wizualizację ostatecznej rzeczy.

  • 1x Arduino Pro Micro
  • 4x 10k potencjometrów obrotowych (pokrętło) (nie kontrolerów obrotowych, użyj potencjometrów)
  • 1x chwilowy przełącznik wciskany (przełącznik twardego resetu)
  • 1x kabel micro USB A do USB B (USB A to duże kwadratowe złącze, USB B micro to to, co znajduje się w Arduino Pro Micro)
  • różne przewody połączeniowe
  • płytka do krojenia chleba
  • 1x5mm czerwona dioda LED
  • 1x rezystor 220 omów

Krok 2: Obudowa

Załącznik
Załącznik
Załącznik
Załącznik
Załącznik
Załącznik
Załącznik
Załącznik

Projektowanie

Podobały mi się niektóre inne projekty profilowane w galerii społeczności deej, więc oparłem moje funkcje, które mi się podobały:

  • Łatwy do zaprojektowania i wydrukowania
  • Nie przeszkadzać innym moim stacjonarnym urządzeniom peryferyjnym
  • Nie używaj śrub ani elementów mocujących do zabezpieczenia obudowy
  • Podobny projekt estetyczny do klawiatury

Zaprojektowałem i wydrukowałem dwa prototypy, zanim zdecydowałem się na ostateczny projekt. Lubię mieć fizyczną wersję do zabawy w przestrzeni, w której jej używam, ponieważ daje mi to lepsze wyobrażenie o tym, jak będzie działał ostateczny obiekt.

Na krótko zacząłem projektować w Fusion360, ale nie znam go tak dobrze, jak Tinkercad, więc przerzuciłem się i tam pracowałem.

Ponieważ chciałem mieć konstrukcję bez śrub, stworzyłem budkę lęgową. Pierwszy prototyp miał cienką pokrywę i głębokie pudełko na wszystko. Drugi projekt zamienił to z głęboką pokrywą i płytkim dnem pudełka. Musiał tylko pomieścić Arduino Pro Mini, więc naprawdę nie musiał być duży. Uwzględniono również wytłoczone ikony.

Trzeci projekt został zmieniony, aby pasował do przestrzeni obok mojej klawiatury.

Wydruk

Wydrukowałem pudełko w PLA, programując zamianę filamentu / warstwy z czarnego na czerwony dla pokrywy, gdzie ikony po prostu zaczęłyby być widoczne, i ponownie z powrotem do czarnego dla pozostałej części pokrywy.

Problem

Przez cały ten problem mocowanie joysticka było problemem. Nawet w trzecim projekcie kij uderza w mocowania w jednym miejscu. Następna iteracja będzie miała lepsze luzy. Mogłem więcej popracować nad projektem, ale chciałem przejść do następnej fazy, instalacji.

Krok 3: Obwód

Obwód
Obwód
Obwód
Obwód
Obwód
Obwód

Najgorsza praca okablowania w historii

Ok, to mój pierwszy pełny projekt Arduino. Tak, robiłem już rzeczy na płytkach prototypowych i używam ich do zbudowania wersji rozwojowej tego, ale jeśli chodzi o faktyczne wytwarzanie i składanie, jest to mój pierwszy. Więc moje okablowanie wygląda jak gówno. Tam, to na uboczu:)

Aktualizacja: Od tego czasu zbudowałem kolejny i okablowanie jest tam znacznie ładniejsze. Zobacz zdjęcia:)

Jednostka produkcyjna -- Co i gdzie?

Arduino Pro Micro to niewielka płytka, która zmieści się w uformowanej części w podstawie. Pokrętła i joystick pasują do odpowiednich otworów w pokrywie. Ale nie montuj niczego, dopóki nie otrzymasz konkurencji lutowania.

Okablowanie

Nie miałem żadnego odpowiedniego przewodu, ale miałem resztki kabla sieciowego typu solid-core cat5, więc tego właśnie użyłem. Jest nieco sztywniejszy i być może bardziej kruchy niż przewód z linką, ale działa.

Rozmieszczając elementy w przybliżeniu w ich ostatecznej pozycji montażowej, oszacowałem odległość dla każdego przewodu, dodałem trochę więcej na luz itp., a następnie przeciąłem i przyciąłem przewód. Zostawiłem dużo luzu.

Odnosząc się do schematu okablowania, poprowadziłem wspólną masę (czarny) i VCC (czerwony) do pokręteł i joysticka tam, gdzie jest to wskazane. Ponieważ kabel sieciowy nie jest dostępny w tych kolorach, po prostu wybrałem kolor i utrzymywałem okablowanie zgodne z funkcją.

Pojedyncza doniczka. linie analogowe (żółte) biegły do pinów A0 - A3. Linie joysticka (pomarańczowe), również analogowe, biegły do pinów I/O 8 i 9. Będą one musiały być oznaczone jako analogowe w kodzie Arduino jako A8 i A9.

Pin przełącznika joysticka (niebieski) biegnie do pinu 7. Będzie to cyfrowy pin w kodzie.

Izolacja

Ponieważ ten sztywny drut zostanie upchnięty na małej przestrzeni, zdecydowałem się zaizolować moje połączenia lutowane zdrową porcją kleju termotopliwego. Następnie umieściłem wszystko na swoim miejscu i uruchomiłem prosty test na płytce i potencjometrach przy użyciu wersji kodu Arduino Przykład AnalogInput -- zmodyfikowanej tak, aby odczytać wszystkie potencjometry.

Druga wersja

Ostatnie dwa obrazy powyżej pokazują następne pudełko, które tworzę. Ten będzie miał 5 pokręteł i jeden chwilowy przycisk do wyciszania. Brak joysticka. Pudełko o tym samym rozmiarze.

Krok 4: Wykańczanie sprzętu

Wykańczanie sprzętu
Wykańczanie sprzętu

Zanim zainstalowałem Joystick, zdałem sobie sprawę, że nie ma zbyt dużego odstępu między jego płytą a gniazdami pinów pozostawionymi w Pro Micro.

Po lekkim ostrożnym wygięciu główki kołków i ponownym nałożeniu kleju termotopliwego (do izolacji) obudowa prawidłowo się zamknęła.

Instalacja garnków przebiegła bezproblemowo.

Znowu z przewodami

Druty z litym rdzeniem są nieco sztywne i mogą być kruche, jeśli zostaną zgięte zbyt wiele razy, więc ostrożnie złóż je (bez ostrych rogów) w dostępnej przestrzeni. Niektóre z nich były zbyt długie i wymagały trochę dodatkowego spasowania.

Gdy wszystko jest już na swoim miejscu, po prostu załóż podstawę na górę i powinieneś skończyć ze sprzętem….

Ale czekaj, jest więcej

Oczywiście po kilku tygodniach użytkowania zdecydowałem, że potrzebuję wskaźnika, który da mi znać, jaki jest stan funkcji MUTE zakodowanej programowo.

Po edycji kodu w celu dodania funkcjonalności LED (patrz następny rozdział), szybko przylutowałem LED/przewody/rezystor i podłączyłem je do płytki.

Więcej czasu poświęciłem na wywiercenie otworu w górnej części obudowy, ponieważ nie chciałem zepsuć górnego wykończenia. Zaznaczyłem środkowe miejsce, wgniotłem je, a następnie ręcznie obróciłem wiertłem, aby zrobić otwór.

Dodatkowe ostrożne piłowanie oczyściło otwór i zapewniło ładne, ciasne dopasowanie, aby dioda LED nie wystawała zbyt daleko ponad górną powierzchnię.

Krok 5: Oprogramowanie

Oprogramowanie
Oprogramowanie
Oprogramowanie
Oprogramowanie
Oprogramowanie
Oprogramowanie

Przegląd

Jest to więc proces dwuczęściowy.

  1. Dowiedz się, jak działa Deej i edytuj plik Config.yaml
  2. Edytuj kod Arduino, aby dopasować go do pożądanego sprzętu i funkcji
  3. Pobierz bibliotekę Arduino Joystick

W moim przypadku chciałem mieć te funkcje:

  • Pokrętła kontrolujące poziomy (mikrofon i wyjście)
  • Przełącznik wyciszenia
  • Joystick 2-osiowy rozpoznawany przez system Windows do użytku aplikacji

Poziomy

Deej właściwie zajmuje się pierwszym punktem, gdy się pojawia. Nie poprawiałem tej funkcjonalności

Przełącznik wyciszenia

Wcześnie ustaliłem, że zamierzam użyć przycisku/przełącznika w joysticku jako funkcjonalnego przycisku wyciszania.

Gdy przyjrzysz się kodowi, zobaczysz, że wybrałem (początkowo) „miękkie” wyciszenie - po naciśnięciu przycisku głośność mikrofonu zostaje zredukowana do zera (i dioda się świeci). Po ponownym naciśnięciu głośność mikrofonu powraca do poprzedniego ustawienia, a dioda LED gaśnie.

W końcu przyjrzę się zaimplementowaniu biblioteki klawiatury Arduino, aby przełączać stan wyciszenia za pomocą rozszerzonego zestawu kodów klawiatury multimedialnej.

Implementacja joysticka

Wymaga to użycia biblioteki Arduino Joystick, aby upewnić się, że joystick jest rozpoznawany jako urządzenie HID przez system Windows, a w konsekwencji przez dowolną grę/aplikację.

Jestem trochę noobem, jeśli chodzi o kodowanie, a dokumentacja biblioteki Joystick jest nieco rzadka po rzeczywistej stronie implementacji - ale trochę skoncentrowanego googlingu doprowadziło mnie do innych przykładów, które pomogły mi zrozumieć, co się dzieje. Sprawdź sekcję zasobów na końcu, aby uzyskać szczegółowe informacje.

Wszystko, co musiałem zrobić, to zidentyfikować piny X/Y, odczytać ich stan i wysłać je do biblioteki Joystick. Arduino pojawił się jako Leonardo dla Windows i został poprawnie skonfigurowany jako urządzenie typu Joystick.

Udało mi się skonfigurować go w Elite Dangerous wraz z moją istniejącą konfiguracją HOTAS i sprawić, by joystick prawidłowo kontrolował rzeczy i nie kolidował z HOTAS. Działa również dobrze w Star Wars: Squadrons - ustawiłem go jako szybki przełącznik, aby ustawić tarcze podczas walki.

Pliki, które działają z konfiguracją mojego joysticka

Przesłałem moje aktualne (październik 2020) pliki do Codepile.

  • Kod Arduino (plik.ino)
  • Deej config.yaml

Krok 6: Koniec

Kończyć się
Kończyć się

Cóż, ten jest skończony. Działa i jestem raczej zadowolony z tego, jak się udało. Dowiedziałem się trochę więcej o projektowaniu sprzętu, integracji i programowaniu Arduino.

Krok 7: Dodatek…dum…dum

Dodatek… dum… dum
Dodatek… dum… dum

VLC - ten niesamowity odtwarzacz audio i wideo ma trochę dziwaczne, gdy poziom głośności, gdy jest sterowany zewnętrznie, skacze od 0% do 27%. Nie dzieje się tak podczas dostosowywania poziomu za pomocą regulacji głośności interfejsu w aplikacji, tylko za pomocą zewnętrznych elementów sterujących, takich jak Deej.

Programista Deej szybko znalazł obejście w VLC, które wykonuje tę pracę, patrz obrazek powyżej:

„… jeśli chcesz wyłączyć to zachowanie „Śledzenia”, możesz to zrobić, zmieniając moduł wyjściowy audio VLC. Użyłem DirectX w moich próbach tutaj. Będziesz musiał ponownie uruchomić VLC, aby zmiana zaczęła obowiązywać. (nadal będziesz mieć sesję audio w systemie Windows i móc nią sterować przez deej, to po prostu zapobiegnie poruszaniu się paska głośności VLC)"

Krok 8: Dodatkowe zasoby

Dodatkowe zasoby
Dodatkowe zasoby

Znaleziony przez potężnego Googa, wymieniony w dowolnej kolejności…

  • Biblioteka Arduino Joystick Library (v2) - potrzebna do integracji joysticka
  • Przewodnik podłączania Sparkfun Pro Micro - dobre źródło informacji o tym Arduino
  • deej - oprogramowanie do obsługi pokręteł
  • Rodzaje złączy USB - kto wiedział, że jest tak wiele wariantów?
  • Wyprowadzenia analogowe Arduino Pro Micro
  • Arduino Leonardo Gaming Joystick - Leonardo jest podobny do Pro Micro, tylko większy
  • Port Arduino Pro Micro (Clone) nie został wykryty (rozwiązanie) - kiedy zamurujesz swój Pro Micro (ja to zrobiłem)
  • Arduino Leonardo/Micro jako kontroler gier/joystick
  • Przykład użycia klawisza multimedialnego do wyciszania - korzystanie z biblioteki HID Project
  • Przykładowy kod biblioteki projektu HID do wstrzymywania/odtwarzania multimediów
  • Kolejny przykład kodu pokazujący kontroler gamepada.
  • ArduinoGamingController_updated - dobry opis kodu użycia biblioteki joysticka
  • Kalkulator rezystorów LED - aby dowiedzieć się, jak dużego rezystora potrzebujesz w swoim projekcie
  • Biblioteka ikon - flaticon.com - źródło obrazów użytych nad pokrętłami
  • Inny Dekoder Koloru Rezystora - kliknij na kolor i altówkę!

Zalecana: