Jak zrobić swój simracingowy button box

Z czasem, gdy wirtualne ściganie bardziej mnie pochłonęło, zaczął doskwierać mi problem z dość dużą ilość przycisków do obsługi auta. Kiedy uruchamiałem różne gry, lub nawet inny samochód na tym samym symulatorze, potrzebowałem używać czasami innych przycisków do pełnego wykorzystania czterech kółek. Z tego powodu, na początku tego roku zbudowałem swój własny button box, czyli takie „pudełko” z 27 dodatkowymi przyciskami, które mogę dowolnie skonfigurować. Dla urozmaicenia dodałem obok przycisków prosty wyświetlacz, który pokazuje mi podstawowe informacje o sesji wyścigowej, jak np.: ilość paliwa w baku, średnie spalanie na okrążenie i pozostały czas do końca.

Z początku problem potrzeby dodatkowych przycisków chciałem rozwiązać, dodając je na kierownicy, jednak ceny takich gotowych rozwiązań, tak zwanych „button plate” na kierownicę są dość wybujałe; najdroższe, „topowe” wersje sięgają nawet około 1000 € za sztukę (oczywiście znajdziemy i takie za ~200€). Z tego powodu miałem szalony pomysł, aby zrobić swoją własną kierownicę, a dokładniej wykorzystać do tego druk 3D. Po obejrzeniu filmu 3D Printed Wheel Button Box Version, skontaktowałem się z autorem, który podesłał mi nawet swoje próbki wydruków. Po przymiarach okazało się, że jego rozwiązanie zupełnie nie pasowało do mojej obręczy, a dodatkowo układ przycisków mi nie „leżał”. Nigdy wcześniej nie robiłem nic związanego z elektroniką, ani drukiem 3D i czym więcej zbierałem o tym informacji, tym bardziej przekonywałem się, że bez własnej drukarki będzie cieżko. Zakup sprzętu 3D wydawał mi się odległy i pomysł ostatecznie spalił się na panewce.

To co pokazuje się na ekranie LCD można dowolnie edytować

Po jakimś czasie trafiłem na kolejny film "Make this button box" od amstudio, który mnie zainspirował do tego, aby sprawdzić czy uda mi się zrobić podobny button box. W opisie filmu znajdziecie linki do poszczególnych elementów w serwisie dx.com, ja zamówiłem między innymi pudełko, folię karbonową i dwa opakowania przycisków. W domu miałem jeszcze trochę elektroniki, Teensy 3.2 (Arduino) i „starter kit”, którą zamówiłem ze sklepu nettigo.pl, gdy chciałem zrobić button plate, w tym wyświetlacz znakowy 2x16.

Wyświetlacz podłączony pod SimHub podczas testów

Wspominam o wyświetlaczu, ponieważ ambitnie postanowiłem go wykorzystać go, do urozmaicenia swojej skrzynki. Zanim przyszła paczka ze wszystkimi przyciskami, ja w domu już testowałem na płytce stykowej podłączenie wyświetlacza i przekazywanie do niego danych z aplikacji SimHub (SimHub, DIY Sim racing Dash). Sprawa była dość uproszona, ponieważ SimHub niemal od ręki umożliwia podłączenie i obsługę ogromnej ilości urządzeń: przycisków, wskaźników i wyświetlaczy itp. do Ardiuno. Pobrałem kawałek kodu, który udostępnia SimHub i wyczyściłem go ze zbędnych bibliotek i funkcji, zostawiłem zaś kod, który obsługuje jedynie wyświetlacz I2C. Oczywiście nie obyło się bez problemów i testów kilku różnych bibliotek do obsługi wyświetlacza, lecz po 2-3 wieczorach udało się wszystko połączyć, a efekt był taki jak na zdjęciu poniżej.

Kiedy odebrałem z poczty wszystkie pozostałe elementy, zacząłem mierzyć dokładnie wszystkie przyciski, pudełko i eksperymentować z projektem całości na komputerze.

Prototyp układu button boxa

Kolejnym etapem pracy było lutowanie: to było dopiero wyzwanie, bo nigdy wcześniej tego nie robiłem. Na początku zlutowałem prosty układ z 6 przycisków dla testu, kolejny wieczór poświeciłem, aby przygotować oprogramowanie pod test. Okazało się, że wszystko działa i prace rozpoczeły się na poważnie. W ruch poszedł ołówek, linijka i wiertarka - trzeba było zrobić dziury na przyciski. Największy problem sprawiła dziura na wyświetlacz, ale tu z pomocą przyszedł mi pilnik. Ostateczny wynik prac nie był idealny, niektóre dziury nie wyszły w jednej linii, a najgorzej wyglądało miejsce na ekran.

Niekształtne dziury na przyciski

Na szczęście oklejenie folią „karbonową” i wkręcanie przycisków na miejsce, pozwoliło mi poprawić efekt wizualny, powoli całość zaczęła nabierać kształtów. Następne trzy wieczory spędziłem na żmudnym przygotowywaniu kabelków i lutowaniu wszystkiego ze sobą. Wyglądało, że wszystko idzie zgodnie z planem, ale przylutowując kabel do kontrolera uszkodziłem go. Zorientowałem się, że zabrałem się do lutowania Teensy od złej strony, dwa kable musiałem przylutować blisko jakiejś kości i pewnie wtedy uszkodziłem cały sprzęt, bo komputer przestał rozpoznawać urządzenie, a podłączone pod zasilanie z USB strasznie się grzało. Zamówiłem tego samego dnia nowe, do kolejnego lutowania kabli do kontrolera wybrałem już stronę, gdzie brzegi wydawały się bardziej bezpieczne i wykorzystałem też goldpiny.

Z drugim kontrolerem użyłem już goldpinów dla bezpieczeństwa

Wgrałem przygotowane wcześniej oprogramowanie i od pierwszego „odpalenia” całość działała jak trzeba. System Windows wykrywał dodatkowy kontroler, a wciśniecie przycisku skutkowało podświetleniem na ekranie (potwierdzenie działania). Od tej pory wszystkie gry wykrywają dodatkowe urządzenie i mogę spokojnie cieszyć się z dodatkowych 27 przycisków.

Dla niewprawionej osoby jak ja lutowanie może zająć sporo czasu.

Od kiedy używam button boxa pojawiły się dwa problemy. Pierwszy z nich odkryłem testując symulator RaceRoom. Nie mogłem poruszać się po menu, kursor myszy wędrował automatycznie w górę. Rozwiązanie okazało się banalne, domyślnie urządzenie wysyłało sygnał z Joistika, wystarczyła jedna linijka kodu, która wyłączała Joistik i wszystko wróciło do normy.

Drugi problem jest poważniejszy do zdiagnozowania, czasami druga linia wyświetlacza zanika, lub źle się odświeża. Problem leży gdzieś na styku mojego kodu i komunikacji z aplikacją SimHub. Tymczasowo rozwiązuje to tak, że w ustawieniach SimHub zmieniam prędkość wysyłania, tak aby druga linia wyświetlała się prawidłowo.

Reasumując całość, jestem bardzo zadowolony z tego, co udało mi się zrobić. Button box spełnia w 100% swoje zadanie i korzystam z niego podczas ścigania. Co do kosztowności takiego przedsięwzięcia. Na poszczególne elementy wydałem około:

  • przyciski ~ 60zł
  • pudełko ~ 45 zł
  • folia karbonowa ~ 20 zł
  • Teensy 3.2 ~ 110zł
  • narzędzia do lutowania ~ 20zł
  • wyświetlacz LCD 2X16 I2C ~ 15zł

W sumie wychodzi 270zł, doliczając zakup lutownicy oraz zmarnowany Teensy, to robi się znacznie więcej, chociaż z drugiej strony można obejść się bez folii, kupić taniej pudełko i wykorzystać tańszy kontroler Arduino. Ale jak to mówią niektóre reklamy, satysfakcji nie da się kupić. Bardzo dużo nauczyłem się pracując nad tym projektem, między innymi programowania na Arduino, podstaw elektroniki, lutowania, a przede wszystkim poczucia, że wystarczy chcieć.

Button box niemal gotowy.

Gdyby ktoś z was był zainteresowany zbudowaniem podobnego rozwiązania, to repozytorium kodu źródłowego znajdziecie pod adresem: https://github.com/sobocinski/button-box.


Przeczytaj jeszcze: