Spisu treści:
- Krok 1: Materiały eksploatacyjne
- Krok 2: Obudowa
- Krok 3: Obwód
- Krok 4: Wykańczanie sprzętu
- Krok 5: Oprogramowanie
- Krok 6: Koniec
- Krok 7: Dodatek…dum…dum
- Krok 8: Dodatkowe zasoby
Wideo: Arduino Keyboard Joystick Extender Box i kontroler dźwięku Rzecz za pomocą Deej: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:26
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
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
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
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
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
Przegląd
Jest to więc proces dwuczęściowy.
- Dowiedz się, jak działa Deej i edytuj plik Config.yaml
- Edytuj kod Arduino, aby dopasować go do pożądanego sprzętu i funkcji
- 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
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
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
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:
Stwórz słuchawki z izolacją dźwięku za pomocą sterowników Sennheiser IE80: 6 kroków
Zrób słuchawki izolujące dźwięk ze sterownikami Sennheiser IE80: Służy do zbudowania słuchawki izolującej dźwięk za pomocą zestawu DIY ze strony www.earphonediylabs.com. Słuchawki mają fenomenalny kryształowy wygląd, a dźwięk jest świetny dzięki 2 dynamicznym przetwornikom Sennheiser IE80S. Posiadając podstawowe lutowanie i klejenie nart
Wskaźnik poziomu dźwięku/dźwięku: 10 kroków
Wskaźnik poziomu dźwięku/dźwięku: W tym projekcie pokażę, jak zbudować prosty wskaźnik poziomu dźwięku przy użyciu wzmacniaczy operacyjnych. Uwaga: Aby zadawać pytania, odwiedź moją witrynę pod adresem Zapytaj eksperta. Pomocne filmy uzupełniające: symulowana konfiguracja obwodu na płycie do chleba (proto
Fan samochodów rzecz: 6 kroków
Fan Car Thing…: ta instrukcja pokaże Ci, jak zrobić samobieżny pojazd z samochodu-zabawki i silnika prądu stałego
Jak zrobić brzęczącą żabę, najbardziej przypadkową i bezsensowną rzecz --- KIEDYKOLWIEK!!: 6 kroków
Jak zrobić brzęczącą żabę, najbardziej przypadkową i bezsensowną rzecz wszech czasów! przełącznik kołyskowy (lub dowolny przełącznik, twój wybór), a gdy go włączysz, żaba będzie brzęczać. Fajny przedmiot i bardzo mało!Przedział cenowy fr
Snowmanthesizer - Rzecz dziennie - Dzień 2: 8 kroków (ze zdjęciami)
Snowmanthesizer - Rzecz dziennie - Dzień 2: Pewnego wieczoru wycinałem niekończące się arkusze naklejek z robotami, aby uszczęśliwić wszystkie dzieci. Tak, po prostu odcinam się, pilnując własnych spraw, a właśnie wtedy nasz nieustraszony przywódca Eric podaje mi trzy dziwnie wyglądające plastikowe rzeczy. Informuje mnie, że