KerbalController: niestandardowy panel sterowania do gry rakietowej Kerbal Space Program: 11 kroków (ze zdjęciami)

KerbalController: niestandardowy panel sterowania do gry rakietowej Kerbal Space Program: 11 kroków (ze zdjęciami)

Spisu treści:

Anonim

Po co budować kontroler KerbalController?

Cóż, ponieważ naciskanie przycisków i rzucanie fizycznych przełączników jest o wiele bardziej istotne niż klikanie myszką. Zwłaszcza gdy jest to duży czerwony wyłącznik bezpieczeństwa, w którym najpierw trzeba otworzyć pokrywę, przełączyć przełącznik, aby uzbroić rakietę, uruchomić odliczanie i 3.. 2.. 1.. mamy start!

Co to jest kontroler KerbalController?

Sterownik KerbalController, nazywany także Panelem Sterowania, Simpitem (symulowany kokpit), DSKY (klawiatura wyświetlacza) lub joystick niestandardowy, to dostosowane urządzenie wejściowe do sterowania popularnym budowaniem rakiet i lataniem - i, miejmy nadzieję, nie eksplodującym gra Kerbal Space Program w połączeniu z opcjonalnym wyjściem z gry, takim jak lampki stanu, wyświetlacze telemetryczne i / lub wskaźniki paliwa.

Ta konkretna wersja obejmuje wejścia, takie jak sterowanie obrotami i translacją za pomocą joysticków, suwak przepustnicy, mnóstwo przycisków ze wskaźnikami stanu, wskaźniki paliwa LED i wyświetlacz LCD z wieloma trybami.

Ten przewodnik będzie zawierał wszystko, czego potrzebujesz do zbudowania identycznej kopii, lub dokonywania zmian i ulepszeń po drodze, zgodnie z potrzebami. Zawarte są:

  • lista części
  • cyfrowe rysunki projektowe gotowe do cięcia laserowego
  • instrukcje dotyczące okablowania
  • Kod Arduino
  • Kod dołączonej wtyczki KSP
  • Wiele zdjęć

Gotowy do startu? Chodźmy!

Kieszonkowe dzieci:

Krok 1: Narzędzia

Najważniejszym narzędziem, które musisz mieć do tej budowy, jest lutownica. Obejmuje to lutowie, metalową gąbkę do czyszczenia końcówki lutownicy i „trzecią rękę”.

Inne narzędzia to: ściągacz izolacji, przecinak do drutu, pęseta i niektóre małe wkrętaki.

Krok 2: Części i układ podstawowy

Dla najlepszego kontrolera ty oznacza wybór dokładnie, które przyciski i przełączniki chcesz wdrożyć. Ponieważ wszyscy grają inaczej. Niektórzy ludzie latają samolotami i budują SSTO (jednostopniowy na orbitę). Inni wolą łaziki stacji kosmicznych. A niektórzy chcą po prostu spektakularnie eksplodować!

Pomaga narysować wszystkie części w przybliżonym rozmiarze i przeciągnąć je w programie do rysowania wektorowego (np. W programie Affinity Designer lub Inkscape) lub w programie do rysowania 3D (np. SketchUp).

Jeśli chcesz łatwiejszej kompilacji, możesz po prostu skopiować mój kontroler i pobrać części wymienione na stronie przywiązany Lista części.

Krok 3: Utwórz prototyp (opcjonalnie)

Jeśli kopiujesz mój kontroler, możesz pominąć ten krok.

Jeśli wybierasz niestandardowy układ, polecam najpierw użycie pudełka na buty, aby stworzyć działający prototyp z głównymi elementami sterującymi. Naprawdę pomaga precyzyjnie dostroić pozycję głównych elementów sterujących. Miło jest również mieć pewność, że możesz go uruchomić, zanim będziesz kontynuować inwestowanie czasu i pieniędzy w ostateczną wersję. Grałem w tę grę przez jakiś czas z moim kontrolerem do butów. Czy nie jest to sposób, w jaki Kerbal wykorzystuje uratowane części, by włamać coś do siebie?

Krok 4: Wskazówki dotyczące okablowania

Podczas tworzenia prototypu nie lutuj wszystkich przycisków, chyba że chcesz je odlutować, gdy dotrzesz do ostatecznej obudowy. Przylutowałem kilka drutów do guzików i użyłem bezlutowej płyty do wykonania tymczasowych połączeń z Arduino.

Po podłączeniu całej elektroniki do końcowej płyty czołowej można ograniczyć bałagan, tworząc pętle dla napięcia 5 V i masy. Nie podłączasz wszystkich pinów uziemienia bezpośrednio do Arduino, ale raczej podłączasz uziemienie do jednego przycisku do uziemienia na następnym przycisku i pętlę dookoła. W końcu łączysz się z Arduino.

Po utworzeniu pętli zasilania i uziemienia wszystkie połączenia ze stykami Arduino pozostają. Polecam zdobyć kilka pasków szpilek i lutować do nich przewody. Możesz ich użyć jako dużego złącza, więc nadal możesz odłączyć Arduino do testowania.

Długość przewodów jest działaniem równoważącym na tyle krótkim, aby utrzymać obudowę w stanie wolnym od nadmiaru splotów drutu (co może uniemożliwić zamknięcie pudełka) i wystarczająco długim, aby móc przesuwać części z drogi do lutowania inne części, dokręć śruby i obijaj multimetr podczas debugowania.

Krok 5: Zdobycie lasera czołowego

Uzyskanie czystego, profesjonalnego wyglądu jest bardzo trudne podczas ręcznego cięcia i malowania. Na szczęście cięcie laserowe nie jest już zbyt drogie. Pozwala na ekstremalną precyzję, o ile projekt jest dokładny.

Dołączony jest mój projekt płyty czołowej, w formatach odpowiednich dla Affinity Designer i innych programów do rysowania wektorów, takich jak bezpłatny InkScape.

Miałem lasercut w panelu czołowym w Holandii w Lichtzwaard. Od tego czasu zostały zamknięte, a działania zostały przejęte przez Laserbeest, gdzie miałem wycięte laserowo pudełko. Każdy sklep może mieć inne wymagania dotyczące projektu, więc przed złożeniem zamówienia sprawdź w sklepie. Prawie zawsze oferują pomoc projektową w stawce godzinowej.

Ważne rzeczy, o których należy pamiętać:

  • Wszystko musi być oparte na wektorze. Dlatego logo w moim projekcie płyty czołowej nie zostało wytrawione. Pamiętaj, że tak jest nie naprawione w załączonych projektach.
  • Nawet tekst ma być oparty na wektorze. Więc zamień te litery na krzywe!
  • Zmierzyć. Zmierzyć. Zmierzyć. Nie wziąłem pod uwagę rozmiaru wymaganego do zamontowania joysticków i musiałem go zhakować. Okazało się dobrze, na szczęście. Zauważ to jest zamocowane w załączonych projektach.

Po dokładnym sprawdzeniu wszystkiego wyślij go do sklepu laserowego. Spodziewaj się zapłacić 40-50 euro w Holandii i otrzymaj ten piękny wynik w mailu następnego dnia!

Krok 6: Podłączanie przycisków i przełączników

Większość przełączników i przycisków ma złącza oznaczone C, NO, NC, +, -. Oto jak je podłączyć do Arduino.

Prosty przełącznik lub przycisk:

  • Ziemia -> C (często)
  • Pin cyfrowy Arduino -> NO (normalnie otwarty)

Skonfigurujemy cyfrowy pin jako INPUT_PULLUP, co oznacza, że ​​Arduino utrzyma pin 5V i wykryje, kiedy pin zostanie uziemiony i traktuje to jako wejście. Złącze NO na przełączniku lub przycisku jest normalnie otwarte, więc obwód nie jest podłączony. Gdy naciśniesz przycisk lub przełączysz przełącznik, obwód zostanie zamknięty, a pin zostanie uziemiony.

Przycisk z diodą LED:

Część przycisku jest taka sama jak powyżej. W przypadku diody LED dołączasz dodatkowe przewody:

  • Ziemia -> - (negatyw)
  • Pin cyfrowy Arduino -> + (dodatni)

Ta część jest całkiem prosta. Wykorzystamy pin Arduino w normalnym trybie OUTPUT.

Wyłączniki bezpieczeństwa z diodą LED:

Są nieco inne i nie pozwalają na niezależne sterowanie diodą LED od pozycji przełącznika. Dioda LED będzie zawsze świecić tylko wtedy, gdy przełącznik jest włączony. Mają złącze +, - i sygnałowe.

  • Ziemia -> - (negatyw)
  • 5V -> + (dodatni)
  • Pin cyfrowy Arduino -> S (sygnał)

Wykorzystamy pin Arduino w trybie INPUT. Po włączeniu przełącznika dioda LED zapala się, a pin sygnału podnosi się.

Krok 7: Podłączenie joysticków i wyświetlacza LCD

LCD

Wyświetlacz LCD jest bardzo prosty. Potrzebuje tylko zasilania, uziemienia i szeregowego.

  • 5V -> VDD
  • Ground -> GND
  • Arduino Tx PIN -> RX

Możesz użyć złącza JST lub przylutować przewody bezpośrednio do płytki.

Joysticki

Joysticki mogą początkowo wyglądać zniechęcająco, ale łatwo się z nimi połączyć. Istnieją trzy osie, które są połączone w ten sam sposób. Dwa z nich używają złączy na spodzie joysticka. Trzeci używa niektórych przewodów.

  • Ziemia
  • Wiper -> Pin wejścia analogowego Arduino
  • 5V

Złącza można dołączyć w tej kolejności. Nie przejmuj się, że będziesz go cofać, wycieraczka zawsze jest środkowa. Jeśli moc i masa zostaną zamienione, możemy później obrócić oś w kodzie Arduino.

Przewody mogą mieć inny schemat kolorowania na joysticku, ale ogólnie: dwa przewody o identycznych kolorach dotyczą przycisku na górze. Czerwony lub pomarańczowy to 5V, czarny lub brązowy to Ground. Pozostały drut to wycieraczka.

Krok 8: Wskaźniki paliwa w pasku LED

W porządku. To najtrudniejsza część całej kompilacji. Zapomnij o tym podczas pierwszej kompilacji lub ulepsz ją i daj mi znać!

Mam te świetne paski LED, których chcę używać jako wskaźników paliwa. Górna dioda LED jest niebieska, następnie zielona, ​​następnie pomarańczowa i wreszcie czerwona. Jeśli możemy zapalić jedną diodę LED na raz, możemy pozwolić jej reprezentować poziom paliwa w naszym statku kosmicznym.

Początkowo zamówiłem układ scalony sterownika z nimi. Działają świetnie! Możesz wybrać tryb punktowy lub tryb słupkowy i wyświetli analogowe napięcie wejściowe jako pojedynczą diodę LED (kropkę) lub szereg diod LED (pasek). Ale Arduino nie wysyła analogowego napięcia! Funkcja PWM, która pozwala przyciemnić diodę LED poprzez emulację napięcia analogowego, nie działa z tymi układami scalonymi sterownika.

Plan 2: rejestry zmianowe. Możesz pracować z nimi w każdym zestawie startowym Arduino. Możesz dowiedzieć się więcej o nich tutaj:

Plan polega na tym, aby jakoś zamienić poziomy paliwa w odpowiedni ciąg bitów, który będzie reprezentował poziomy paliwa na listwach LED. Przy 5 wskaźnikach paliwa wszystkie napełnione poziomy paliwa musiałyby wynosić 10000000001000000000100000000010000000001000000000. Gdy monopropellant byłby pusty, stawałby się: 10000000001000000000100000000010000000000000000001.

Brzmi dość prosto. Istnieją pewne komplikacje. Rejestry zmiany mają 8 pinów, podczas gdy paski LED mają 10 diod LED. Używam 7 rejestrów zmianowych, aby uzyskać 56 wyjść. Podłączając je, pominąłem gdzieś szpilkę IC (dopasujemy ją w kodzie). I podłączam jeden pasek LED, zaczynając od drugiego końca (naprawimy to w kodzie). O, a matematyka Arduino, której potrzebujemy, czasami używa arytmetyki zmiennoprzecinkowej, co powoduje błędy zaokrąglania (naprawimy to w kodzie). Pamiętaj, że udostępniam kod w późniejszym kroku.

Moja ostatnia kompilacja nie pasowała do załączonego schematu okablowania, więc jeśli przebudujesz ten kontroler, wymagane będą pewne aktualizacje kodu. Komentarz poniżej, jeśli potrzebujesz pomocy.

Każda dioda LED wymaga własnego rezystora. Wypróbuj różne wartości, aby dopasować jasność. Zielony wydaje się dużo jaśniejszy niż czerwony z tymi samymi rezystorami, więc pomaga to zrównoważyć.

Wynik końcowy: zamiast 50 pinów cyfrowych potrzebnych do zasilania 5 pasków LED, zmniejsza się do 3: sygnał zegara, sygnał zatrzasku i sygnał danych.

Krok 9: Budowanie obudowy

Czas zemścić się na tych logo!

Przekształciłem logo w odpowiednie rysunki wektorowe, więc są dobrze wyryte. Tym razem mam inny problem. Otwory na wkręty nie są we właściwych miejscach do prawidłowego montażu skrzynki. Do pudła użyłem 6 mm MDF. Niestety przykręcenie gwoździ do krawędzi powoduje ich rozszczepienie. Zrobiłem to razem z dodatkowymi kawałkami drewna i klejem. Dużo kleju.

Dla tych, którzy są lepsi w przypadku drewna, kleju i / lub gwoździ, dołączyłem wersję wzorów bez otworów na śruby.

Pomimo trudności wynik końcowy jest dość sprytny.

Krok 10: Oprogramowanie i testowanie

Pobierz następujące oprogramowanie, aby kontroler współpracował z programem kosmicznym Kerbal:

Wtyczka KSP:

Plik ZIP to skompilowana wtyczka. Reszta to kod źródłowy, którego możesz użyć do modyfikacji wtyczki i skompilowania własnej wersji. Rozpakuj wtyczkę do katalogu GamaData.

Kod Arduino:

Użyj Arduino IDE, aby załadować kod do Arduino Mega w kontrolerze.

Spójrz na prawy dolny róg IDE Arduino, aby dowiedzieć się, który port szeregowy kontroler jest włączony (np. /Dev/cu.usbmodem1421). Otwórz plik config.xml z katalogu wtyczek i upewnij się, że Twój port jest wypełniony. Teraz możesz iść!

Możesz użyć trybu debugowania, umieszczając mały włącznik / wyłącznik w lewym górnym rogu w pozycji ON. Wyświetlacz LCD powinien wyświetlać ciąg liter. Każda litera reprezentuje przycisk lub przełącznik i przełącza między małymi i dużymi literami po naciśnięciu przycisku lub przełączeniu przełącznika. Ustawienie przełączników xyz w Xyz (włącz / wyłącz / wyłącz) spowoduje również wyświetlenie wartości suwaka przepustnicy. xYz wyświetla wartości joysticka dla joysticka tłumaczenia (po lewej). xyZ dla joysticka Obrót (prawy).

Tryby LCD

Następujące tryby wyświetlania można wybrać do wyświetlania na wyświetlaczu LCD za pomocą przełączników x, y i z.

Tryb TakeOff: Suface Velocity / Acceleration (G)

Tryb Orbity: Apoapsis + Czas do Apoapsis / Periapsis + Czas do Periapsis

Tryb manewru: Czas do następnego węzła manewru / Pozostały Delta-V dla następnego węzła

Tryb Rendezvous: Odległość do celu / prędkości względem celu

Tryb ponownego wejścia: procentowe przegrzanie (maks.) / Opóźnienie (G)

Tryb latania: wysokość / liczba Macha

Tryb lądowania: wysokość radaru / prędkość pionowa

Tryb dodatkowy: nie zaimplementowano (jeszcze)

Aby zobaczyć różne tryby działania, spójrz na wideo na końcu instrukcji.

Krok 11: Na księżyc!

Odpal KSP, załaduj swój ulubiony statek lub zbuduj nowy i odejdź!

Wskazówki:

  • Użyj niestandardowej grupy akcji 5 dla swoich drabin
  • Użyj niestandardowej grupy akcji 6 dla swoich paneli słonecznych
  • Użyj niestandardowej grupy działania 7 dla spadochronów lub rynien drogowych
  • Przypisz system ucieczki startowej i odpowiednie odsprzęgacze do grupy akcji Przerwij
  • Nie zapomnij o uzbrojeniu przycisku Staging

Runner Up w

Arduino Contest 2017

Runner Up w

Konkurs autorski po raz pierwszy 2018