Cessna 172 cockpit otthon

Építsünk szimulátort

Építsünk szimulátort

A gyújtáskapcsoló

2018. október 25. - C172Peti

Keresem a műszerfalon azokat a dolgokat, amivel elkezdhetek dolgozni és akár a prototípus beépíthető lenne majd a cockpitbe. Az első ilyen egyszerűnek tűnő dolog a magnetos, azaz a gyújtáskapcsoló.

magnetos_gyujtaskapcsolo.jpg

A repülőgép motorok kétkörös mágneses gyújtással rendelkeznek. Ezek a mágnesek teljesen le vannak választva a légijármű elektronikájától, így bármi miatt áramtalanítania kell a pilótának, a motor attól még tovább járhat. A két körös rendszer (jobb és bal kör) nem csak a mágneses gyújtásban, hanem a gyertyák számában is visszaköszön. Az 5 állású kapcsolóval ezeket lehet kapcsolni:

  • OFF - a gyújtás le van kapcsolva
  • R -  jobb kör
  • L -  bal kör
  • BOTH - R+L - jobb és bal kör
  • START - indítózás (indító motor pörgetése) 

A kapcsolók talán a legegyszerűbb áramköri elemek a kabinunkban. Bináris, tehát két állapota van KI/BE. Ez a gyújtáskapcsoló felfogható 5 egymás mellett levő kapcsolónak, amiről azt tudjuk, ha 1 BE van kapcsolva, akkor a többi bizonyosan KI állapotban van (persze ez csak a szimulátor szempontjából igaz, a valós gépen nem. Ott a BOTH állás voltaképp az R+L-t kapcsolja egyszerre, START esetén pedig R+L+START).

A kapcsolót Arduinóval kezelni hasonló módon lehet, mint azt mutattam az Arduino Micro - USB Joystick postban. Két különbség van: analogRead() helyett a digitalRead() függvényt kell használni, a visszatérési értéke pedig nem egy 0-1023 közötti szám, hanem LOW vagy HIGH lesz. 

Kétféle megoldás van a fejemben a gyújtáskapcsolóra: kapcsolóként kezelve, tengelyként kezelve.

Gyújtáskapcsoló kapcsolóként kezelve

Ez lenne talán a legegyszerűbb megoldás. Az Arduino 5 digitális bemenetére rákötjük az 5 állását a kapcsolónak, és egyszerűen leolvassuk a bemenetekről, épp hol áll a kapcsoló. Ezt beállíthatjuk az USB játékvezérlőnk 5 nyomógombjára, amit majd a szimulátorban a kapcsoló állapotaihoz rendelünk.

Ezzel a megoldással az a bajom, hogy 5 bemenetet elvesz a kis Arduino boardunktól. Az Arduino Micro 14 digitális és 4 analóg bemenettel rendelkezik. 14 digitális bemenetből 5-öt elhasználni egyetlen kapcsolóhoz... hát nekem ez soknak tűnik.

Gyújtáskapcsoló tengelyként kezelve

Azt már mutattam, egy potméterrel milyen egyszerű egy tengelyt lekezelni. Lehetne ezt használni a gyújtáskapcsolónál is. A kérdés igazából az, hogy a szimulátor tudja-e tengelyként értelmezni. Akkor sincs nagy gond ha nem, mert Arduino-ra írni egy kis programot, ami a Joystickunk egy gombjához hozzárendel egy potméter állapotot, nem tűnik nehéz feladatnak. Így ott lennénk, mintha kapcsolóként kezelnénk, viszont 5 bemenet helyett csak egyetlen egyet használunk fel.

Összerakok egy kapcsolós és egy analóg verziót is, meglátjuk eldől-e egyértelműen melyik a jobb út.

 

 

 

Arduino Micro - USB Joystick

Összraktam egy Arduino - Joystickot, amit a Windows felismer és pazarul kezel, ennek a (meglepően gyors) tesztnek a folyamatát írom most le.

arduino micro joystick

Mindez egy rövid videóban: 

 Szükséges hardver:

  1. Arduino Leonardo vagy Micro
  2. 10K potméter (lehet ez 20k, 100k is)
  3. breadboard
  4. vezetékek
  5. Micróhoz általában külön kell USB kábelt szerezni, a Leonardóhoz szoktak adni

Szükséges szoftver:

  1. Arduino IDE - ArduinoJoystickLibrary-vel

Hardver

Pakoljuk össze a hardvert először. Ha Arduino Micro lett a választás, a breadbordon helyezzük el. Szúrjuk le a potmétert, egy kis breadboardon még pont elfér a Micro mellett.  

A poti egyik szélső lábát kössük össze az Arduino föld (GND) lábával, a másik szélső lába menjen az Arduino 5V-ot leadó lábára (VCC), a poti középső lábát pedig az Arduino A0 lábával.

Kész is a hardver! Már csak egy USB kábel kell és dughatjuk a gépre.

Szoftver

Indítsuk el az Arduino fejlesztő környezetét. Egyből egy üres vázlattal kezd, innen törölhetünk mindent, nem sok kódra van szükségünk.

Javaslom, hogy mielőtt belevágunk a világmegváltó programozásba, mindig állítsuk be, hogy milyen eszközre fejlesztünk. Ezt a Tools/Board menüpontban tehetjük meg. Kilistázza a lehetséges Arduino boardokat, válaszzuk ki a sajátunkat. Ha már rádugtuk a gépre, akkor a Tools/Port menüpontnál meg is fog jelenni a COM port, ahova csatlakozik az Arduinónk. Válasszuk ki!

... és akkor jöhet a programozós rész ...

Programozzunk

Egy nagyon egyszerű programmal kezdünk, csak lássuk végre működni :)

A feladata a programnak annyi, hogy az USB-n rádugott számítógépnek azt mondja magáról, hogy ő egy Joystick, és az egyik tengelyének az értékét úgy változtassa, ahogy tekerjük a potit (pl tolóerőt adunk a gépünknek). Picit visszafogjuk a 16Mhz-es kütyünket és teszünk bele egy korlátot, hogy 25ms várakozásokkal küldje csak a gépnek a tolóerőkarunk aktuális pozícióját. Ez azt jelenti, hogy másodpercenként 40szer fogja ellenőrizni, hogy hol áll a potméter és elküldeni azt a gép felé.

Meg kell mondanunk a program elején, hogy használni akarjuk a Joystick libraryt. Aztán példányosítunk egy Joystickot, majd beállítunk néhány változót, amit arra fogunk használni, hogy ne folyamatosan, csak 25 ezredmásodpercenként küldjünk adatot. Ez így néz ki:

#include "Joystick.h"

Joystick_ Joystick;

const unsigned long cycleDelta = 25;
unsigned long nextTime = 0;

Most jön a setup(). Erről azt kell tudni, hogy egyetlen egyszer fut le, amikor elindult az Arduino (amikor áramot kap, inicializálja magát és meghívja ezt a funkciót). Itt végzünk el minden olyan beállítást, ami ahhoz szükséges, hogy a programunk ciklikusan tudjon utána futni. 

Itt beállítjuk, hogy a Throttle tengely értékkészlete 0-1023 tartományban lesz. Egyszerűen azért ez az intervallum, mert amikor az Arduino A0 lábáról analóg értéket olvasunk be, pont ezt a tartományt kapjuk vissza. 0 jelenti, hogy a potméter az egyik végállásáig van tekerve, 1023 pedig azt, hogy a másik végállásig.

Ahogy ezt beállítottuk, "megkérjük" az Arduinót, hogy mesélje el a gépnek, ő valójában egy Joystick.

void setup() {

  Joystick.setThrottleRange(0, 1023);

  //auto send mode false
  Joystick.begin(false);
}

Ez után jön a loop(). Ez a programunk vezérlője voltaképpen. Ez futkározik körbe-körbe mindaddig, amíg az Arduino áramot kap. Voltaképp itt kell a logikát lefejlesztenünk.

A ciklusban mindig kiszámoljuk, mi az a következő időpont (25ms-el később), amikor megint küldeni kell adatot a gépnek (nextTime). Minden egyes ciklusban ellenőrizzük, hogy eltelt-e már 25ms. Ha eltelt, akkor beállítjuk a tolóerőt arra az értékre, ahol épp áll a potméter, ami az A0-s lábra van kötve és elküldjük a joystick aktuális állapotát.

void loop() {

  if (millis() >= nextTime) {

    Joystick.setThrottle(analogRead(A0));

    Joystick.sendState();

    nextTime = millis() + cycleDelta;
  }

}

Ezek után nincs más hátra, mint a szerkesztő mező felett található "jobbra nyíl" megnyomásával feltöltjük az Arduinóra a programot. A sikeres feltöltés után a kütyü újraindul és a Windows örömmel értesít minket, hogy egy új játékvezérlő lett csatlakoztatva.

Nyissuk meg az USB Játékvezérlőket nagyszerű windowsunkban, tulajdonságokra kattintva látjuk is, hogy mennyi tengellyel és nyomógombbal rendelkezik.

A potmétert tekergetve pedig észrevehetjük ahogy a Throttle tengely értéke pontosan a poti állapotát adja vissza.

Ennyi az egész, csináltunk egy saját USB Joystickot, semmi sem állíthat meg minket, hogy egy teljes szimulátort építsünk! :)

 

USB Joystick

avagy készítsünk vezérlőt

Valamilyen Joystickot biztos használt már mindenki, USB-n rádugjuk a gépre, szimulátor indít, beállítgat, hogy melyik tengelyt, melyik gombot mire akarjuk használni és kész is vagyunk.

joystick

Készítsünk egy sajátot, amivel tudjuk majd állítani a műszereket, dúsítót, tolóerőt, bármit.

Nem túl hosszas keresgélés után ismerkedtem meg az Arduino családdal. Az Arduino Leonardo és a Micro lehet erre a célra alkalmas, mivel ezek ATMega32U4 mikrokontrollerrel vannak ellátva, ami támogatja az USB HID szabványt. 

USB HID (Human Interface Device)

Leegyszerűsítve: ez egy szabvány, amit implementálva a billentyűzet, egér, játékvezérlő kommunikál a számítógéppel. Ezt a szabványt követve nincs szükség külön driverek telepítésére a gépen, csak bedugjuk az USB-be és működik (gyakorlatilag bármilyen operációs rendszeren).

Pontosan ezt akarom most használni, a gépen csak a szimulátorban kelljen állítgatni bármit.

Arduino Leonardo

Részletesen itt találsz leírást róla. Aliexpress/Dealextreme-ről jelentősen olcsóbban hozzá lehet jutni valamilyen verziójához. Rendeltem már párat, egyikkel sem volt gondom. Arduino vagy Genuino néven célszerű keresni, de találkoztam már más nevekkel is. Figyeljünk vásárláskor, hogy legyen megadva a mikrokontroller: ATMega32U4.

Az arduino oldaláról le lehet tölteni ingyenesen egy IDE-t (fejlesztői környezet, amivel megírhatod a kódot és feltöltheted az arduinodra). Egyszerű használni, nagyon hasznos.

Szükségünk lesz egy Joystick Library-ra, van már készen a neten, felesleges időt tölteni a megírásával. Az ArduinoJoystickLibrary-t innen töltheted le.

Ezzel gyakorlatilag a szoftverkörnyezettel meg is vagyunk. Írhatunk remek kis programokat, amivel beolvassuk a vezérlőnk állapotát és azt továbbítjuk a gép felé. Ha minden jól megy, akkor a szimulátorban már csak hozzá kell rendelni valamit.

A következő bejegyzésben összerakok majd egy tolóerő kart, hogy kipróbáljuk hogyan is működik ez a gyakorlatban.

A műszerfal

A műszerfal a nevéhez hűen tele van műszerekkel. Lehet ezeket szépen csoportosítani funkciójuk szerint: motor-, repülésellenőrző műszerek, állapotjelzők, stb... A cockpit készítésénél ez a csoportosítás talán kevésbé hasznos. Ami fontosabb, hogy tudjuk mikor várunk a szimulátortól valamilyen adatot (amit meg akarunk jeleníteni) és mikor kell nekünk küldeni valamit a szimulátor felé, amitől azt várjuk, hogy az reagáljon rá.

C172 műszerfal

Műszerek

A műszerek megjelenítését és vezérlését több házikészítésű szimulátornál láttam, hogy az egyszerűség kedvéért nagyobb tabletekkel oldják meg. A tablet wifin megtalálja a szimulátort, megjeleníti a műszert, az érintőképernyőn állítgatni is lehet a vezérlőket.

Na ez az érintő képernyős megoldás nekem nagyon nem tetszik, itt hirtelen messze kerülünk a valóságos működéstől.

A legszebb megoldás az lenne, ha a műszereket is fizikailag elkészítenénk. Ebbe én most nem kezdenék bele. Borzasztóan soknak tűnik első ránézésre.

Több olyan remek megoldást láttam viszont, hogy monitort tesznek a műszerfal helyére, elé tesznek egy lemezt, bútorlapot, bármit... a műszerek helyét kivágják és egész jól néz ki. Ez tűnik számomra is a jó iránynak. Gyakorlatilag a teljes műszerfal lefedhető két 22''-os monitorral. Első körben semmi szükség túl nagy felbontásra vagy 180fokos betekintési szögre... a lényeg, hogy 16:9-es képarányú legyen (a felbontása szinte mindegy, a műszereknek 720p is elég). Egymás mellett két darab kiadja egy C172 műszerfalának a szélességét (kis csalással). Így gyakorlatilag mindent megjeleníthetünk monitoron. Ez nagy segítség, és gyanítom, hogy két lehasznált monitor olcsóbb lesz, mint megpróbálni fizikailag legyártani a műszereket.

A műszerek megjelenítéséhez tökéletes a Sim Innovations AirManager. Erről később még majd írok, ez sajnos nem olcsó. Bárkinek van jobb ötlete, azt várom, mert ezt még nekem is meg kell vennem. Egyelőre a próbaverziót használtam.

Vezérlők

Vezérlőkből van választék bőven. Elektronikai alkatrészekre leegyszerűsítve nagyjából ilyenekre lesz szükség:

  • kapcsolók (fények, főkapcsoló, avionics, alternator, stb...)
  • potméterek (kormányvezérlők, gázkar, keverékszabályzó, fészárny, stb... )
  • rotary encoderek (műszervezérlők, trim, stb... )

Persze valaminek össze kell szedni az adatokat és értelmezve továbbítani a szimulátor felé. Első gondolatom az volt, hogy csinálok egy saját játékvezérlőt (mint egy joystick), amit a windows felismer és már csak be kell állítani a szimulátorban. 

Másik lehetőség, hogy az AirManager a V3-tól támogatja az Arduinokat, ennek még részletesen nem néztem utána, de ez is ígéretesnek néz ki.

Állapotjelzők

Nem fogunk tudni mindent megjeleníteni a monitorokon. Például a fékszárny visszajelzője akkor lenne szép, ha ott a kar mozogna magától. A trim visszajelzője is mechanikus kell legyen és akkor még nem beszéltem az automata pilótáról, amit ha bekapcsolunk, életre kelnek a dolgok. Ezek picit összetettebbek lesznek, megérnek majd egy külön bejegyzést.

 

 

Cessna 172R

Pár gondolat magáról a repülő masináról, amit egy szobában szeretnénk lerakni.

A Cessna 172 típusról nem nagyon akarok írni, ez az egyik legismertebb, legtöbbet eladott/használt egy motoros, dugattyús gép. Egyszerű, könnyen kezelhető, tökéletesen alkalmas kiképzésre. Hatótávolsága miatt túrázni is kiváló.

A C172R Lycoming IO-360-as motorral rendelkezik. Részletesen nem mennék bele, nekünk a szimulátor szempontjából egy fontos tudnivaló akad: ez egy injektoros motor. Na de miért fontos ez nekünk? Az injektoros motoroknál nincs szükségünk porlasztófűtésre, egy vezérlővel kevesebb lesz a kabinban...

Mitől lesz jobb az A2A Cessnája, mint az, amit az FSX-el alapból kapunk?

Erre a kérdésre egy kisregénnyel lehetne válaszolni, összeszedem az általam tapasztalt legfontosabb dolgokat:

  • Minden (de tényleg), minden vezérlő le van benne kezelve - talán ez a legfontosabb a szimulátor szempontjából
  • motor indítás - egy élmény. Attól, hogy elfordítod a gyújtáskapcsolót, nem fog beindulni
  • utasok/súlyok elhelyezése valódi hatással van a reptulajdonságokra
  • meghibásodások igazán nagy részletességgel finomhangolhatóak - akár maguktól is megtörténnek
  • a külső hömérsékleti hatások nem csak a repülésre, de a motorra, műszerekre is hatással vannak
  • az akkumulátort is lemodellezték rendesen... lehet próbálkozni gyenge akksival repülni mondjuk fagypont alatt hibás alternátorral
  • olaj - az olajnyomás hőmérséklet, olajmennyiség függő - fogy az olaj is a gépből
  • lemodelleztek egy teljes Bendix King készletet (rádió stack, navigációs készlet)
  • mindennek egyedi hangja van - motor, rezgések, kapcsolók külön-külön. Számít pl, hogy nyitva van-e az ablak
  • a gép olyan állapotban marad, ahogy repültél vele (üzemanyag, sérülések, olaj, stb...), ezt vagy egy kattintással kijavítod a következő repülésed előtt, vagy csak teletöltöd üzemanyaggal/olajjal, aztán hajrá...

 A2A C172R

Mennyibe kerül?

Ennek bizony ára van, most épp 49.99 USD-ért lehet megvenni, ami nagyjából 14ezer forint. Ezt magamnak nem számolom költségként, hisz már megvan jóideje. Úgy gondolom ha valaki szimulátort épít, kell legyen egy olyan gép, amire lehet alapozni. Ha van esetleg olcsóbb alternatívátok, azt szívesen veszem. A fő szempont az, hogy lehetőleg minden vezérlő le legyen benne kezelve.

Itt megtalálható minden infó az A2A Cessnájáról, vannak youtube videói, érdemes megnézni őket. Számos videójuk szól arról, hogy miként vettek mintákat igazi gépről (gurulás, repülési tulajdonságok), hogyan rögzítették a hangokat. Nagyon meggyőző. Nincs más hátra, mint hasonló alapossággal készíteni hozzá hardvert!

 

 

 

süti beállítások módosítása