KerbalController: et brugerdefineret kontrolpanel til Rocket Game Kerbal Space Program: 11 trin (med billeder)

KerbalController: et brugerdefineret kontrolpanel til Rocket Game Kerbal Space Program: 11 trin (med billeder)

Indholdsfortegnelse:

Anonim

Hvorfor opbygge en KerbalController?

Nå, fordi du trykker på knapper og kaster fysiske omskiftere føles så meget større end at klikke med musen. Især når det er en stor rød sikkerhedsafbryder, hvor du først skal åbne dækslet, skal du trykke på kontakten for at armle din raket, starte nedtællingen og 3.. 2.. 1.. vi har liftoff!

Hvad er en KerbalController?

En KerbalController, der også betegnes som et kontrolpanel, Simpit (simuleret cockpit), DSKY (displaytastatur) eller brugerdefineret joystick, er en tilpasset indgangsenhed til styring af den populære raketbyggende og flyvende og forhåbentlig ikke eksploderende game Kerbal Space Program kombineret med valgfri output fra spillet, som f.eks. statuslys, telemetri-displays og / eller brændstofmålere.

Denne specifikke konstruktion omfatter indgange som rotations- og oversættelseskontrol via joysticks, en gasregulator, masser af knapper med statuslys, LED-brændstofmålere og en telemetrisk LCD-skærm med flere tilstande.

Denne vejledning indeholder alt, hvad du behøver for at opbygge en identisk kopi, eller foretage justeringer og forbedringer undervejs, som du finder passende. Inkluderet er:

  • en reservedelsliste
  • digitale design tegninger klar til laserskæring
  • ledningsvejledning
  • Arduino kode
  • Kode til den ledsagende KSP-plugin
  • Masser af billeder

Klar til at tage afsted? Lad os gå!

forsyninger:

Trin 1: Værktøjerne

Det vigtigste værktøj, du skal have til denne konstruktion, er et loddejern. Det omfatter nogle loddemetal, en metalrengøringssvamp for at rense lintjernets spids og en "tredje hånd".

Andre værktøjer er en wire stripper, en wire cutter, pincet og nogle små størrelse skruetrækkere.

Trin 2: Dele og grundlæggende layout

Gør den bedst mulige controller til du betyder at vælge præcis hvilke knapper og omskiftere du vil implementere. Fordi alle spiller spillet anderledes. Nogle mennesker flyver fly og bygger SSTO (single-stage-to-orbit). Andre foretrækker rovers af rumstationer. Og nogle vil bare have ting at spektakulært eksplodere!

Det hjælper med at tegne alle dele i deres omtrentlige størrelse og trække dem rundt i et vektor tegneprogram (som Affinity Designer eller Inkscape) eller 3D tegningsprogram (som SketchUp).

Hvis du vil have en lettere opbygning, kan du bare kopiere min controller og få de dele, der er angivet på vedhæftet liste over dele.

Trin 3: Opret en prototype (valgfrit)

Hvis du kopierer min controller, kan du springe over dette trin.

Hvis du går efter et brugerdefineret layout, anbefaler jeg først at bruge en skoboks først til at oprette en fungerende prototype med hovedkontrolerne. Det hjælper virkelig med at finjustere hovedkontrolens position. Det er også dejligt at få den tillid, du kan få det til at arbejde, før du fortsætter med at investere tid og penge i den endelige bygning. Jeg har faktisk spillet spillet i et stykke tid med min skobok controller. Er det ikke Kerbal måde at bruge bjærgede dele til at hacke noget sammen?

Trin 4: Tips om ledningsføring

Når du opretter en prototype, lod du ikke alle dine knapper ind, medmindre du vil deoldere dem, når du kommer til det afsluttende kabinet. Jeg loddede nogle ledninger til knapperne og brugte et loddetrøst brødbræt til at lave de midlertidige forbindelser til Arduino.

Når du tilslutter al elektronik til den endelige frontplade, kan du reducere rod ved at skabe sløjfer til 5V og jord. Du forbinder ikke alle jordstifter direkte til Arduino, men forbinder jorden på en knap til jorden på den næste knap og sløjfer rundt. Endelig forbinder du til Arduino.

Efter at have skabt sløjfer til kraft og jord forbliver alle forbindelserne til Arduino-tappene. Jeg anbefaler at få nogle strimler af header pins og lodning ledningerne til dem. Du kan bruge disse som en stor stik, så du kan stadig fjerne din Arduino til testning.

Ledningernes længde er en balance mellem kort nok til at holde kabinettet fri for overskydende trådflader (hvilket kan forhindre dig i at lukke boksen) og længe nok til at kunne flytte dele ud af vejen til loddet andre dele i, stram skruerne og pusse rundt med din multimeter mens fejlsøgning.

Trin 5: At få frontpladen Lasercut

At opnå et rent, professionelt udseende er meget svært ved savning og maling for hånd. Heldigvis er laserskæring ikke meget dyrere mere. Det giver mulighed for ekstrem præcision, så længe dit design er nøjagtigt.

Vedhæftet er mit faceplate design, i formater, der passer til Affinity Designer og andre vektor tegneprogrammer som den gratis InkScape.

Jeg havde glaspladen lasercut i Holland ved Lichtzwaard. De er siden lukket og aktiviteter er blevet overtaget af Laserbeest, hvor jeg havde boksen laser cut. Hver butik kan have forskellige krav til designet, så tjek med din butik, inden du sender. De tilbyder også næsten altid designhjælp til en timesats.

Vigtige ting at huske på:

  • Alt skal være vektorbaseret. Derfor blev logoet i mit faceplate design ikke ætset. Bemærk dette er ikke fastgjort i de vedhæftede designs.
  • Selv tekst har den vektorbaserede. Så konverter disse bogstaver til kurver!
  • Måle. Måle. Måle. Jeg undlod at tage højde for den størrelse, der var nødvendig for montering af joystickene og måtte hakke det. Det viste sig fint, heldigvis. Bemærk dette er fastgjort i vedlagte design.

Efter at have kontrolleret alt grundigt, send det til lasercutting shop. Forvent at betale 40-50 euro i Holland og få dette smukke resultat i posten næste dag!

Trin 6: Tilkobling af knapper og kontakter

De fleste kontakter og knapper har forbindelserne mærket C, NO, NC, +, -. Sådan knytter du dem til Arduino.

Enkel switch eller trykknap:

  • Ground -> C (fælles)
  • Arduino digital pin -> NEJ (normalt åben)

Vi konfigurerer den digitale stift som INPUT_PULLUP, hvilket betyder, at Arduino vil holde stiften ved 5V og opdage, når stiften bliver jordet og behandle det som input. NO-stikket på kontakten eller knappen er normalt åben, så kredsløbet er ikke tilsluttet. Når du trykker på knappen eller skifter kontakten, bliver kredsløbet lukket og stiften bliver jordet.

Trykknap med LED:

Knappen er den samme som ovenfor. Til LED'en tilføjer du ekstra ledninger:

  • Ground -> - (negative)
  • Arduino digital pin -> + (positiv)

Denne del er ret ligetil. Vi bruger Arduino-pin i normal udgangstilstand.

Sikkerhedsafbrydere med LED:

Disse er lidt forskellige og tillader ikke kontrol over LED'en uafhængig af omskifterpositionen. Lysdioden lyser altid kun, når kontakten tændes. De har en +, - og signalstik.

  • Ground -> - (negative)
  • 5V -> + (positiv)
  • Arduino digital pin -> S (signal)

Vi vil bruge Arduino-pin i INPUT-tilstand. Når tændingen tændes, tændes LED'en, og signalstiften går højt.

Trin 7: Tilslutning Joysticks og LCD

LCD

LCD'et er meget simpelt. Det behøver bare magt, jord og seriel.

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

Du kan bruge en JST-stik eller lodde ledningerne direkte til bordet.

Joysticks

Joystickene kan se skræmmende ud i starten, men de er ret nemme at forbinde. Der er tre akse, der er forbundet på samme måde. To af dem bruger stikene på bunden af ​​joysticket. Den tredje bruger nogle ledninger.

  • Jord
  • Visker -> Arduino analog indgangsstift
  • 5V

Tilslutningerne kan fastgøres i denne rækkefølge. Må ikke bekymre dig om at få det baglæns, viskeren er altid den midterste. Hvis strøm og jord skiftes, kan vi senere vende om akse i Arduino-koden.

Trådene kan have et andet farveskema på joysticket, men generelt: de to ledninger med ensfarvede farver er til knappen øverst. Rød eller orange er 5V, Sort eller brun er Ground. Den resterende ledning er viskeren.

Trin 8: LED bar brændstofmåler

Okay. Dette er den hårdeste del af hele bygningen. Du er velkommen til at springe over dette på din første bygning, eller forbedre det og lade mig vide!

Jeg har disse store LED-stænger, jeg vil bruge som brændstofmålere. Den øverste LED er blå, så nogle grønne, derefter orange og til sidst røde. Hvis vi kan tænde en LED ad gangen, kan vi lade det repræsentere brændstofniveauet på vores rumfartøj.

Jeg bestilte i første omgang driver IC med dem. De arbejder godt! Du kan vælge dot mode eller bar tilstand og det vil vise en analog indgangsspænding som en enkelt LED (punkt) eller en række LED'er (bar). Men en Arduino udsender ikke en analog spænding! Og PWM-funktionen, som giver dig mulighed for at dæmpe en LED ved at simulere en analog spænding, fungerer ikke med disse driver IC'er.

På plan 2: Skiftregister. Du kommer til at arbejde med disse i alle Arduino starter kit. Og du kan lære mere om dem her:

Planen er på en eller anden måde at konvertere brændstofniveauerne til den korrekte streng af bits, som vil repræsentere brændstofniveauet på LED-stængerne. Med 5 brændstofmålere skal alle brændstofniveauer være 10000000001000000000100000000010000000001000000000. Med monopropellant tomt vil det blive: 10000000001000000000100000000010000000000000000001.

Lyd simpelt nok. Der er nogle komplikationer. Skiftregisterene har 8 stifter, mens LED-stængerne har 10 LED'er. Jeg bruger 7 skiftregistre for at få 56 udgange. Når de ledes i, hoppede jeg over en IC-pin et sted (vi passer til det i kode). Og jeg ledning en LED-bar i start i den anden ende (vi fixer det i kode). Oh og Arduino matematik, som vi har brug for nogle gange, bruger flydende punkt aritmetik, der forårsager afrundingsfejl (vi fastsætter det i kode). Bemærk, at jeg deler koden i et senere trin.

Min sidste bygning matchede ikke det vedlagte ledningsdiagram, så hvis du genopbygger denne controller, kræves der nogle opdateringer til koden. Kommentér nedenfor, hvis du har brug for hjælp.

Hver LED kræver sin egen modstand. Prøv nogle forskellige værdier for at matche lysstyrken. Grønne synes meget lysere end rød med de samme modstande, så det hjælper med at balancere det ud.

Slutresultat: I stedet for 50 digitale stifter, der kræves til at drive 5 LED-stænger, der reduceres til 3: a kloksignal, et låsesignal og et datasignal.

Trin 9: Opbygning af kabinettet

Tid til at hævne mig med disse logos!

Jeg konverterede logoet til ordentlige vektor tegninger, så de bliver ætset bare fint. Denne gang har jeg et andet problem. Skruehullerne er ikke på de rigtige steder for korrekt montering af kassen. Jeg brugte 6mm MDF til boksen. Desværre får skruen af ​​spik i kanterne dem til at opdele. Jeg hacket det sammen med ekstra træskrot og lim. Masser af lim.

For de af jer, der er bedre med træ, lim og / eller negle, har jeg vedhæftet en version af designene uden skruehullerne helt.

På trods af vanskelighederne er slutresultatet ret flot.

Trin 10: Software og test

Download følgende software for at få controller til at arbejde med Kerbal Space Program:

KSP plugin:

ZIP-filen er det kompilerede plugin. Resten er kildekoden, du kan bruge til at ændre plugin og kompilere din egen version. Pak proppen i GamaData-mappen.

Arduino kode:

Brug Arduino IDE til at uploade koden på Arduino Mega i din controller.

Se nederst til højre på Arduino IDE for at finde ud af, hvilken seriel port controlleren er tændt på (for eksempel /dev/cu.usbmodem1421). Åbn config.xml-filen fra plugin-biblioteket og sørg for, at din port er udfyldt. Nu er du god at gå!

Du kan bruge fejlfindingstilstand ved at sætte den lille tænd / sluk-knap øverst til venstre i ON-position. LCD'et skal vise en række bogstaver. Hvert bogstav repræsenterer en knap eller skifte og skifter mellem nederste og store bogstaver, når du trykker på knappen eller skifter omskifteren. Indstilling af xyz-switches i Xyz (on / off / off) viser også gasregulatorens værdier. xYz viser joystickværdier for joysticket Oversættelse (venstre). xyZ for rotations (højre) joystick.

LCD-tilstande

Følgende visningsmetoder kan vælges til visning på LCD'et ved hjælp af x-, y- og z-omskifterne.

TakeOff Mode: Sufacehastighed / acceleration (G)

Orbit Mode: Apoapsis + Tid til Apoapsis / Periapsis + Tid til Periapsis

Manøvreringstilstand: Tid til næste manøvreknude / Resterende Delta-V for næste knudepunkt

Rendezvous Mode: Afstand til mål / Hastighed i forhold til mål

Re-Entry Mode: Procent overophedning (max) / deceleration (G)

Flyvetilstand: Højde / Mach nummer

Landing Mode: Radar Højde / Vertikal Hastighed

Ekstra Mode: Ikke implementeret (endnu)

For at se de forskellige tilstande i aktion, se videoen i slutningen af ​​den instruerbare.

Trin 11: Til månen!

Slå op KSP, indlæs dit yndlingsfartøj, eller bygg et nyt og gå væk!

Tips:

  • Brug brugerdefineret handlingsgruppe 5 til dine stiger
  • Brug brugerdefineret handlingsgruppe 6 til dine solpaneler
  • Brug brugerdefineret handlingsgruppe 7 til faldskærme eller dråber
  • Tildel lanceringsflukssystemet og de relevante decouplers til abort-aktionsgruppen
  • Glem ikke, at du har brug for at sætte armen på sceneknappen

Runner Up i

Arduino Contest 2017

Runner Up i

First Time Author Contest 2018