Inhoudsopgave:

KerbalController: een aangepast bedieningspaneel voor Rocket Game Kerbal Space-programma - Ajarnpa
KerbalController: een aangepast bedieningspaneel voor Rocket Game Kerbal Space-programma - Ajarnpa

Video: KerbalController: een aangepast bedieningspaneel voor Rocket Game Kerbal Space-programma - Ajarnpa

Video: KerbalController: een aangepast bedieningspaneel voor Rocket Game Kerbal Space-programma - Ajarnpa
Video: Complete Guide to the KAL Controller in Kerbal Space Program! Part 1 2024, Juli-
Anonim
KerbalController: een aangepast configuratiescherm voor Rocket Game Kerbal Space Program
KerbalController: een aangepast configuratiescherm voor Rocket Game Kerbal Space Program

Waarom een KerbalController bouwen?

Nou, omdat het indrukken van knoppen en het gooien van fysieke schakelaars zoveel wezenlijker aanvoelt dan klikken met je muis. Vooral als het een grote rode veiligheidsschakelaar is, waarbij je eerst het deksel moet openen, de schakelaar moet indrukken om je raket te bewapenen, het aftellen begint en 3.. 2.. 1.. we hebben de lancering!

Wat is een KerbalController?

Een KerbalController, ook wel Control Panel, Simpit (gesimuleerde cockpit), DSKY (displaytoetsenbord) of aangepaste joystick genoemd, is een aangepast invoerapparaat voor het besturen van de populaire raket-bouwen-en-vliegen-en-hopelijk-niet-exploderende game Kerbal Space Program gecombineerd met optionele output van de game, zoals statuslampjes, telemetriedisplays en/of brandstofmeters.

Deze specifieke build bevat inputs zoals rotatie- en translatiecontroles via joysticks, een gasschuifregelaar, heel veel knoppen met statuslampjes, LED-brandstofmeters en een telemetrisch LCD-scherm met meerdere modi.

Deze gids bevat alles wat je nodig hebt om een identieke kopie te maken, of om onderweg aanpassingen en verbeteringen aan te brengen, zoals je wilt. Inbegrepen zijn:

  • een onderdelenlijst
  • digitale ontwerptekeningen klaar voor lasercutting
  • Bedrading instructies
  • Arduino-code
  • Code voor de bijbehorende KSP-plug-in
  • Veel foto's

Klaar voor de start? Laten we gaan!

Stap 1: Het gereedschap

Het gereedschap
Het gereedschap

Het belangrijkste gereedschap dat je nodig hebt voor deze build is een soldeerbout. Dat omvat wat soldeer, een metalen reinigingsspons om de punt van de soldeerbout schoon te maken en een "derde hand".

Andere hulpmiddelen zijn een draadstripper, een draadknipper, een pincet en enkele kleine schroevendraaiers.

Stap 2: Onderdelen en basislay-out

Onderdelen en basislay-out
Onderdelen en basislay-out
Onderdelen en basislay-out
Onderdelen en basislay-out

Om de best mogelijke controller voor u te maken, moet u precies selecteren welke knoppen en schakelaars u wilt implementeren. Omdat iedereen het spel anders speelt. Sommige mensen vliegen vliegtuigen en bouwen SSTO's (single-stage-to-orbit). Anderen geven de voorkeur aan rovers van ruimtestations. En sommigen willen gewoon dat dingen spectaculair exploderen!

Het helpt om alle onderdelen in hun geschatte grootte te tekenen en ze rond te slepen in een vectortekenprogramma (zoals Affinity Designer of Inkscape) of 3D-tekenprogramma (zoals SketchUp).

Als je een eenvoudigere build wilt, kun je gewoon mijn controller kopiëren en de onderdelen op de bijgevoegde onderdelenlijst krijgen.

Stap 3: Maak een prototype (optioneel)

Maak een prototype (optioneel)
Maak een prototype (optioneel)
Maak een prototype (optioneel)
Maak een prototype (optioneel)

Als je mijn controller kopieert, kun je deze stap overslaan.

Als je voor een aangepaste lay-out gaat, raad ik aan om eerst een schoenendoos te gebruiken om een werkend prototype te maken met de belangrijkste bedieningselementen. Het helpt echt om de positie van de belangrijkste bedieningselementen te verfijnen. Het is ook prettig om het vertrouwen te krijgen dat u het aan het werk kunt krijgen voordat u tijd en geld blijft investeren in de uiteindelijke build. Ik heb het spel eigenlijk een hele tijd gespeeld met mijn schoenendooscontroller. Is het niet de Kerbal-manier om geborgen onderdelen te gebruiken om iets samen te hacken?

Stap 4: Tips voor bedrading

Tips voor bedrading
Tips voor bedrading
Tips voor bedrading
Tips voor bedrading
Tips voor bedrading
Tips voor bedrading

Wanneer u een prototype maakt, soldeer dan niet al uw knoppen erin, tenzij u ze wilt lossolderen wanneer u bij de definitieve behuizing bent. Ik heb wat draden aan de knoppen gesoldeerd en een soldeerloze breadboard gebruikt om de tijdelijke verbindingen met de Arduino te maken.

Wanneer u alle elektronica aansluit op de uiteindelijke frontplaat, kunt u rommel verminderen door lussen te maken voor 5V en aarde. Je sluit niet alle aardpennen rechtstreeks aan op de Arduino, maar verbindt aarde op de ene knop met aarde op de volgende knop en lus rondom. Ten slotte maak je verbinding met de Arduino.

Na het maken van lussen voor stroom en aarde, blijven alle verbindingen met de Arduino-pinnen behouden. Ik raad aan om een paar stroken header-pinnen te krijgen en de draden daaraan te solderen. Je kunt deze als een grote connector gebruiken, zodat je je Arduino nog steeds kunt loskoppelen om te testen.

De lengte van de draden is een evenwichtsoefening tussen kort genoeg om de behuizing vrij te houden van overtollige klitten (waardoor je de doos misschien niet kunt sluiten) en lang genoeg om onderdelen uit de weg te kunnen verplaatsen om te solderen andere onderdelen erin, schroeven aandraaien en rondneuzen met je multimeter tijdens het debuggen.

Stap 5: De voorplaat lasercut krijgen

De voorplaat lasercut krijgen
De voorplaat lasercut krijgen
De voorplaat laten lasersnijden
De voorplaat laten lasersnijden
De voorplaat laten lasersnijden
De voorplaat laten lasersnijden

Het bereiken van een schone, professionele uitstraling is erg moeilijk bij het met de hand zagen en schilderen. Gelukkig is lasersnijden niet zo heel duur meer. Het zorgt voor extreme precisie, zolang uw ontwerp maar nauwkeurig is.

Bijgevoegd is mijn voorplaatontwerp, in formaten die geschikt zijn voor Affinity Designer en andere vectortekenprogramma's zoals het gratis InkScape.

Ik heb de faceplate laten lasercutten in Nederland bij Lichtzwaard. Inmiddels zijn ze gesloten en zijn de activiteiten overgenomen door Laserbeest, waar ik de box heb laten lasersnijden. Elke winkel heeft mogelijk andere vereisten voor het ontwerp, dus neem contact op met uw winkel voordat u deze indient. Ze bieden ook bijna altijd ontwerphulp tegen een uurtarief.

Belangrijke zaken om rekening mee te houden:

  • Alles moet vectorgebaseerd zijn. Daarom is het logo in mijn faceplate-ontwerp niet geëtst. Let op: dit is niet vast in de bijgevoegde ontwerpen.
  • Zelfs tekst is gebaseerd op vectoren. Zet die letters dus om in bochten!
  • Meeteenheid. Meeteenheid. Meeteenheid. Ik hield geen rekening met de grootte die nodig was voor het monteren van de joysticks en moest het hacken. Ging goed, gelukkig. Let op dit is vast in de bijgevoegde ontwerpen.

Nadat je alles grondig hebt gecontroleerd, stuur je het naar de lasercutting-winkel. Reken op 40-50 euro in Nederland en ontvang dit prachtige resultaat de volgende dag in de post!

Stap 6: Knoppen en schakelaars aansluiten

Knoppen en schakelaars aansluiten
Knoppen en schakelaars aansluiten
Knoppen en schakelaars aansluiten
Knoppen en schakelaars aansluiten
Knoppen en schakelaars aansluiten
Knoppen en schakelaars aansluiten

De meeste schakelaars en knoppen hebben de connectoren met het label C, NO, NC, +, -. Hier leest u hoe u ze aansluit op de Arduino.

Eenvoudige schakelaar of drukknop:

  • Aarde C (gemeenschappelijk)
  • Arduino digitale pin NO (normaal open)

We zullen de digitale pin configureren als INPUT_PULLUP, wat betekent dat de Arduino de pin op 5V houdt en detecteert wanneer de pin wordt geaard en die als invoer behandelt. De NO-connector op de schakelaar of knop is normaal open, dus het circuit is niet aangesloten. Wanneer u op de knop drukt of de schakelaar omschakelt, wordt het circuit gesloten en wordt de pin geaard.

Drukknop met LED:

Het knopgedeelte is hetzelfde als hierboven. Voor de LED bevestig je extra draden:

  • Grond - (negatief)
  • Arduino digitale pin + (positief)

Dit deel is vrij eenvoudig. We zullen de Arduino-pin gebruiken in de normale OUTPUT-modus.

Veiligheidsschakelaars met LED:

Deze zijn een beetje anders en laten geen controle over de LED toe onafhankelijk van de schakelaarpositie. De LED zal altijd alleen oplichten als de schakelaar is ingeschakeld. Ze hebben een +, - en signaalconnector.

  • Grond - (negatief)
  • 5V + (positief)
  • Arduino digitale pin S (signaal)

We zullen de Arduino-pin gebruiken in de INPUT-modus. Wanneer de schakelaar is ingeschakeld, gaat de LED branden en wordt de signaalpin hoog.

Stap 7: Joysticks en het LCD-scherm aansluiten

Joysticks en het LCD-scherm aansluiten
Joysticks en het LCD-scherm aansluiten
Joysticks en het LCD-scherm aansluiten
Joysticks en het LCD-scherm aansluiten
Joysticks en het LCD-scherm aansluiten
Joysticks en het LCD-scherm aansluiten

LCD

Het LCD-scherm is heel eenvoudig. Het heeft alleen stroom, aarde en serieel nodig.

  • 5V VDD
  • Massa GND
  • Arduino Tx PIN RX

U kunt een JST-connector gebruiken of de draden rechtstreeks op het bord solderen.

Joysticks

De joysticks zien er op het eerste gezicht misschien ontmoedigend uit, maar ze zijn vrij eenvoudig aan te sluiten. Er zijn drie assen die op dezelfde manier zijn verbonden. Twee van hen gebruiken de connectoren aan de onderkant van de joystick. De derde gebruikt wat draden.

  • Grond
  • Wisser Arduino analoge ingangspin
  • 5V

De connectoren kunnen in deze volgorde worden bevestigd. Maak je geen zorgen over het achteruit krijgen, de wisser is altijd de middelste. Als stroom en aarde worden verwisseld, kunnen we de as later in de Arduino-code omdraaien.

De draden hebben misschien een ander kleurschema op je joystick, maar in het algemeen: de twee draden met identieke kleuren zijn voor de knop bovenaan. Rood of oranje is 5V, zwart of bruin is aarde. De resterende draad is de wisser.

Stap 8: LED-balk brandstofmeters

LED-balk brandstofmeters
LED-balk brandstofmeters
LED-balk brandstofmeters
LED-balk brandstofmeters
LED-balk brandstofmeters
LED-balk brandstofmeters

Oke. Dit is het moeilijkste deel van de hele build. Sla dit gerust over bij je eerste build, of verbeter het en laat het me weten!

Ik heb deze geweldige LED-balken die ik als brandstofmeters wil gebruiken. De bovenste LED is blauw, dan wat groen, dan oranje en tenslotte rood. Als we één LED tegelijk kunnen laten branden, kunnen we deze het brandstofniveau op ons ruimtevaartuig laten vertegenwoordigen.

Ik bestelde in eerste instantie driver IC's bij hen. Ze werken geweldig! U kunt de dot-modus of bar-modus selecteren en het zal een analoge ingangsspanning weergeven als een enkele LED (dot) of een reeks LED's (bar). Maar een Arduino geeft geen analoge spanning af! En de PWM-functie waarmee je een LED kunt dimmen door een soort analoge spanning te emuleren, werkt niet met deze driver-IC's.

Op naar plan 2: schuifregisters. In elke Arduino starterskit ga je hiermee aan de slag. En je kunt er hier meer over leren:

Het plan is om op de een of andere manier de brandstofniveaus om te zetten in de juiste reeks bits die de brandstofniveaus op de LED-balken vertegenwoordigen. Met 5 brandstofmeters zouden alle gevulde brandstofniveaus 10000000001000000000100000000010000000001000000000 moeten zijn. Met lege monostuwstof zou dit worden: 10000000001000000000100000000010000000000000000001.

Klinkt eenvoudig genoeg. Er zijn enkele complicaties. De schuifregisters hebben 8 pinnen, terwijl de LED-balken 10 LED's hebben. Ik gebruik 7 schuifregisters om 56 uitgangen te krijgen. Bij het bedraden heb ik ergens een IC-pin overgeslagen (die passen we in de code). En ik bedraad een LED-balk aan het andere uiteinde (we zullen dat in code oplossen). Oh en Arduino-wiskunde die we nodig hebben, gebruikt soms drijvende-kommaberekeningen die afrondingsfouten veroorzaken (we zullen dat in code oplossen). Merk op dat ik de code in een latere stap deel.

Mijn uiteindelijke build kwam niet overeen met het bijgevoegde bedradingsschema, dus als je deze controller opnieuw opbouwt, zijn enkele updates van de code vereist. Reageer hieronder als je hulp nodig hebt.

Elke LED heeft zijn eigen weerstand nodig. Probeer een aantal verschillende waarden om de helderheid te evenaren. Groen lijkt veel helderder dan rood met dezelfde weerstanden, dus het helpt om dat in evenwicht te brengen.

Eindresultaat: in plaats van 50 digitale pinnen die nodig zijn om de 5 LED-balken van stroom te voorzien, is dat teruggebracht tot 3: een kloksignaal, een grendelsignaal en een datasignaal.

Stap 9: De behuizing bouwen

De behuizing bouwen
De behuizing bouwen
De behuizing bouwen
De behuizing bouwen
De behuizing bouwen
De behuizing bouwen
De behuizing bouwen
De behuizing bouwen

Tijd om me te wreken met die logo's!

Ik heb de logo's geconverteerd naar de juiste vectortekeningen zodat ze prima geëtst worden. Deze keer heb ik een ander probleem. De schroefgaten zitten niet op de goede plek voor een goede montage van de doos. Ik gebruikte 6 mm MDF voor de doos. Helaas zorgt het vastschroeven of spijkeren in de randen ervoor dat ze splijten. Ik heb het samen gehackt met extra houtresten en lijm. Veel lijm.

Voor degenen onder u die beter zijn met hout, lijm en/of spijkers, heb ik een versie van de ontwerpen bevestigd zonder de schroefgaten helemaal.

Ondanks de moeilijkheden is het eindresultaat best strak.

Stap 10: Software en testen

Image
Image
Software en testen
Software en testen

Download de volgende software om de controller te laten werken met Kerbal Space Program:

KSP-plug-in:

Het ZIP-bestand is de gecompileerde plug-in. De rest is broncode die u kunt gebruiken om de plug-in aan te passen en uw eigen versie te compileren. Pak de plug-in uit in de GamaData-map.

Arduino-code:

Gebruik de Arduino IDE om de code te uploaden naar de Arduino Mega in je controller.

Kijk rechtsonder in de Arduino IDE om erachter te komen op welke seriële poort de controller staat (bijv. /dev/cu.usbmodem1421). Open het bestand config.xml uit de map met plug-ins en zorg ervoor dat uw poort is ingevuld. Nu bent u klaar om te gaan!

U kunt de debug-modus gebruiken door de kleine aan/uit-schakelaar linksboven in de AAN-stand te zetten. Het LCD-scherm moet een reeks letters weergeven. Elke letter vertegenwoordigt een knop of schakelaar en schakelt tussen kleine letters en hoofdletters wanneer u op de knop drukt of de schakelaar omschakelt. Als u de xyz-schakelaars in Xyz (aan/uit/uit) zet, worden ook de waarden van de gasschuifregelaar weergegeven. xYz geeft joystickwaarden weer voor de Translation (linker) joystick. xyZ voor de Rotatie (rechts) joystick.

LCD-modi

De volgende weergavemodi kunnen worden geselecteerd voor weergave op het LCD-scherm met behulp van de x-, y- en z-schakelaars

Opstijgmodus: Oppervlaktesnelheid / acceleratie (G)

Baanmodus: Apoapsis + Tijd tot Apoapsis / Periapsis + Tijd tot Periapsis

Manoeuvremodus: Tijd tot het volgende manoeuvreknooppunt / Resterende Delta-V voor het volgende knooppunt

Rendezvous-modus: afstand tot doel / snelheid ten opzichte van doel

Terugkeermodus: Percentage oververhitting (max) / Vertraging (G)

Vliegmodus: Hoogte / Mach-nummer

Landingsmodus: radarhoogte / verticale snelheid

Extra Mode: (nog) niet geïmplementeerd

Bekijk de video aan het einde van de instructable om de verschillende modi in actie te zien.

Stap 11: Naar de maan

Image
Image
Naar de maan!
Naar de maan!

Start KSP, laad je favoriete vaartuig of bouw een nieuwe en je kunt beginnen!

Tips:

  • Gebruik aangepaste actiegroep 5 voor uw ladders
  • Gebruik actiegroep 6 op maat voor je zonnepanelen
  • Gebruik aangepaste actiegroep 7 voor parachutes of sleepparachutes
  • Wijs het start-ontsnappingssysteem en de juiste ontkoppelaars toe aan de actiegroep Afbreken
  • Vergeet niet dat je de Staging-knop moet inschakelen
Arduino-wedstrijd 2017
Arduino-wedstrijd 2017
Arduino-wedstrijd 2017
Arduino-wedstrijd 2017

Tweede plaats in de Arduino-wedstrijd 2017

Eerste keer auteurswedstrijd 2018
Eerste keer auteurswedstrijd 2018
Eerste keer auteurswedstrijd 2018
Eerste keer auteurswedstrijd 2018

Tweede plaats in de First Time Author Contest 2018

Aanbevolen: