Bevezető
Hosszabb kihagyás után, újra foglalkozni kezdtem házi készítésű autószimulátor összerakásával, szöszmötöléssel, saját magam szórakoztatására. Az elmúlt tizenpár évben olyan hatalmas változás történt a kínálatban, például a szimulátorba való ülések között már számolatlanul lehet válogatni, komoly piacág lett rájuk, régen a bontó volt szinte csak opció. A kész mozgó "motion cockpit" is csak a pénztárca kérdése, nem az építés az egyetlen lehetőség. Igazából már bennfentes segítség kell eligazodni a kínálatban. Azon sem csodálkoznék, ha a Lidlben is találkoznék autós szimulátor kiegészítővel. Az 'apróbb' kiegészítők is bámulatosak, autóból bontott - részletekbe menően életre keltett - hibátlanul működő műszerfal, óracsoporttal USB csatlakozóval. Csak hogy minél élethűbb legyen a látvány otthon a nappaliban. Vagy említhetném a menetszél generátort, ami remek megoldás egy VR headset mellett, főleg ha itt a nyár, és napestig sorolhatnám.
Én a magam részéről úgy érzem, megtaláltam azt a igazi piaci rést, amit még nem nagyon sikerült senkinek sem kiaknáznia, bár én sem hiszem, hogy egyhamar találkoznék vele dobozos termékként a Simhome vagy a PAZA tech kínálatában. Ennek az okára is hamar rájön az ember, ugyanis tökéletesen értelmetlen kiegészítő, még a legtrükkösebb belemagyarázással sem lehetne a hasznát megfogalmazni. Készen még nem kínálják, ezt is otthon kell megépíteni, és ha tizenhárom évvel ezelőtt sikerült ilyet építeni, akkor ma már csak nem lehet akadály.
Annak a gyereknek aki ilyet kérne magának karácsonyra, nem tudnék ötletet adni, mit mondjon a szüleinek, amikor azok visszakérdeznek: "minek ez neked?"
Lehet pont ez volt a fő ok amiért ennyire megtetszett, szerencsére nem is túl nagy anyagi beruházás, és kevés ember van, aki ne értené, mit lát. Aki a '90-es években volt gyerek, az tuti látott ilyen szép fenyőt lengedezni a szülei, vagy a szomszédbácsi autójában. Még az asszony is jól érti, amit éppen lát, sőt, teljesen jogosan fogy lehülyézni, amit az én esetemben meg is tett.
Egy cockpit látványának komolysága és néha már bonyolultsága mellett talán a legtöbb embernek leesik, hogy ez itt a poén helye.
Természetesen nem saját ötlet, nem szeretném senki érdemét sem elvenni, nemrég láttam róla egy videót, és egyből tudtam, hogy nekem ilyen kell.
És ahogy olvasgattam utána, még egy:
Próbáltam utánaolvasni, kiderült, nem is olyan új projekt, de csak ígéretek voltak egy részletes publikált leírásra, bár fórumokon sikerült kis keresgéléssel iránymutatásra lelni. Ennek egy formáját írom itt le, ez szerintem kielégítően működik. Leginkább a Wunderbaum projekt néven emlegették, találó név, kevés magyarázatra szorul.
Hozzávalók
Igaz, sokat fejlődött a technika, de senki nem fog semmit sem fejleszteni hosszas éveken át ingyen, ezt nem várhatjuk el (kivétel a WinRAR). Még 2008-ban, ami program ingyen volt elérhető, az mostanra elég borsos árat kér, közel 100$ egy liszenszért, amivel minden létező mozgó szimulátort ki lehet szolgálni. Minden erőt, amit autós játékból ki lehet nyerni szám formájában, valami megmozgatására fel tudunk használni, akármilyen típust is építünk. Ez így egy "motion cockpit" részletezett számláján vélhetően a legelenyészőbb tétel lenne a hosszú listán, viszont itt nekünk többszöröse a többi hozzávalónak. Bár ingyenesen engedi használni / kipróbálni magát, a szigorítás, hogy csak az LFS autós játékkal. Aki még emlékszik erre a remek autószimulátorra, (amúgy még most is fejlesztgetik) annak tuti csak szép emléke fog beugrani. Már csak azért is jó kis játék ez, mert akár még egérrel is tudjuk vezetni, és tesztelni, alig pár száz megabájt, és ablakban is elfut stabilan.
A fent említett program a régi x-sim program, amit most simtools-nak hívnak. Mivel évente akár több autós játék is megjelenik, elengedhetetlen, hogy folyamatosan fejlesszék ezt az összekapcsoló felületet, is ami a játékokat és az otthoni hardver kommunikációját végzi, rengeteg finomhangolást biztosítva.
Van egy másik kezdeményezés, ami a SimHUB névre hallgat. Ezzel talán többet találkozhat a szimulátorral foglalkozó ember, mert ha egy menetszelet, vagy műszerfalat akarunk életre kelteni, vagy egy kormány kijelzőt vagy zászló jelzőt, netán az ülés/pedál/cockpit vázra tervezünk rezgőt rakni (Bass Shaker ismertebb néven), hogy remegjen és éljen a cockpit, akkor nekik lesz rá egy receptjük leírással, és kezelni fogja stabilan, megbízhatóan, sőt még fel is programozza az arduinót. Az övfeszítőt el is felejtettem említeni, épp most láttam a cikk írása alatt egy kis tesztet róla, ezt is lehet házilag.
Ha már SimHUB liszenszünk van - ami most ha jól látom 8€-ért meg lehet venni -, mert netán a fentiek közül valamit már használunk, akkor már csak a motion résznek kell megfizetni a díját, ami még 35€. Ennél olcsóbb megoldásra sajnos nem bukkantam.
Hirdetés
Amire hardver oldalról szükségünk lesz:
ha már a 3D nyomtatással ennyi csoda készíthető, akkor megpróbáltam a csuklókat és a szervó motorokat kulturáltan elhelyezni, helyet találni az Arduino-nak is.
- itt találhatóak a modellek, illetve az UNO-hoz egy felragasztható egyszerű de praktikus alap, és illik itt is megjegyeznem, hogy jó pár része, a 'gömb' csuklók és a forgáspont nem saját tervezés.
- teljesen csavar mentesen nem sikerült megoldanom, a szervo motorhoz járó csavar mellett kelleni fog kettő darab 12mm-es M3-as csavar imbusz fejjel
- kelleni fog egy Arduino UNO panel
- kettő darab szervó motor, a felépítéshez 180°-os elfordulású, "MG90S Metal Gear Servo" -néven akár Aliexpress-en könnyen megtalálható, a motor felfogató csavarjaira és a forgótengelyre rögzítő csavarra szükség lesz, ami a készlet része
- pár csepp pillanat ragasztó, kis csiszoló papír, hogy a forgáspont jól járjon
- egy illatosító fenyőre, négy hét teraszon eltöltött idő után már alig érezni az almás illatát
Összeszerelés
Valami ilyesmi kinézet felé kellene törekednünk:
A monitorra való felfogatásra nincs jó receptem, az mindenkinek egyedi módon kell megoldani, ezért is modulárisan szétszedhető, na meg persze a 3D nyomtatást segítve.
A felépítés talán ismerős lehet, a klasszikus szék mögött elhelyezett mozgató motorok felépítés:
A nyomtatott alkatrészek és a szervók összeszerelése a képek alapján adja magát, jelöltem pirossal, hol kellhet pár csepp ragasztóval összeilleszteni a szerkezetet.
Illetve az a csavarkötés helye a mozgó részen.
Kábelezés
Tehát ha majd valami történik az Arduinoval, akkor az alap beállításokkal, a négyes és ötös lábon fog jeleket kiküldeni.
Aki még nem foglalkozott szervó motorokkal, annak elég annyit tudni a bekötésről leegyszerűsítve, hogy van három lába. Kell neki a nulla és az 5V, ez lesz a fekete és a piros vezeték, illetve van egy sárga vezeték, ami azt mondja meg a motornak, hogy merre járjon a végállások között. Ez a vezérlés négyszögjel formájában fog neki érkezni, ami egy elég gyors és pontos helyzetbe fogja a tengelyt forgatni. Elég sok szakirodalomban találkoztam azzal a figyelmeztetéssel, hogy a számítógép USB-csatlakozójából érkező (alap esetben) maximális 500mA kevés lehet két szervó motor és az Arduino működéséhez. Ugyan nekem elindult és működött, de inkább egy dedikált 5V-os tápegységet kötöttem be a motorokhoz.
Az Arduino USB csatlakozásán át, a nulla pontot közösítsük a tápegységével.
Tudom, tudom, nekem az 5 és 9-es láb van bekötve
Szoftver beállítás
Az Arduino UNO szerencsére ma már programozható a normál USB kábelével, nincs szükség külön hardverre. A feltöltendő program sorok letölthetőek, pár érték megváltoztatása lehet érdekes belőle, a magunk igényeire szabhatjuk:
const int kActuatorCount = 2; // how many Actuators we are handling
// the letters ("names") sent from Sim Tools to identify each actuator
// NB: the order of the letters here determines the order of the remaining constants kPins and kActuatorScale
const char kActuatorName[kActuatorCount] = { 'R', 'L' };
const int kPins[kActuatorCount] = {4, 5}; // pins to which the Actuators are attached
const int kActuatorScale[kActuatorCount][2] = { { 0, 179 } , // Right Actuator scaling
{ 179, 0 } // Left side
Ha valakinek szuper ötlete lenne, és akár 6 szervó motort is megtudna mozgatni, akkor a 'kActuatorCount' értéket írhatja át nagyobbra, persze pár sorral lejjebb, az { 'R', 'L' };, részénél a többi tengelynek is adjunk betűjelet, amire majd még később hivatkozni fogunk a vezérlő programban. És a következő sorban adjuk meg, melyik lábakon fog az említett tengely vezérléséhez a jel megjelenni az Arduino-n. Jelenleg a 4 és 5-ös lábon jelenik meg az R és L nevű tengely vezérlése.
Amik a következő sorban láthatóan 180 különböző állapotra fognak kapni vezérlő jelet.
Itt szemmel láthatóan a bal és a jobb tengely vezérlése inverz egymáshoz képest, 0-179 ig van skálázva, míg a szemben lévő 179-0-ig. Ezt a 2DOF felépítés miatt van csak, a programban a tesztnél is meg tudjuk majd fordítani. itt már eléggé előre készülve lettek ezek az értékek így beírva, lehetne mind a kettő 0-179 is.
A Simhub programban ezek alapján kell felvenni a tengelyeket, amikhez később majd a mozgásokat kapcsoljuk.
Az Arduino emulált com portját könnyen megtalálhatjuk, akár egyszerű USB lecsatlakozással az eszközkezelőben figyelve.
Ha már tudjuk melyik soros port, amivel kommunikálunk, akkor a Simhub-ban a megfelelő felépítésű szimulátor típust kiválasztva (2DOF) soros portos kommunikációval. A soros port beállításait így kellene módosítanunk:
A tengelyek száma alap esetben kettő, az "output format"-ra a "Decimal" változó típust válasszuk, és csak "motion update commands"-ot töltsük ki így: R<Axis1>~L<Axis2>~
Vagy ha több tengelyünk van így: R<Axis1>~L<Axis2>~F<Axis3>~.....
Ugye itt a példában említett 'R' és 'L' tengelyekre fog küldeni adatot a program, ezeknek az elnevezéseknek kell egyeznie a firmware-ben, avagy nevezzük az arduinoba feltöltött programocska sorainak csak.
Felajánl a program egy tesztet is ilyenkor, itt lehet például inverzre váltani a végpontokat.
Itt már a program szigorúan az ülés mögötti 2DOF felépítésű mozgással számol. Lehet is rengeteg méretet állítani, hogy mekkora a szimulátorunk, forgáspont távolsága a motoroktól, magasság stb. Nekünk ez itt nem igazán érdekes, az alap beállításokkal is kellemesen beállítható a szerkezet.
Összefoglalva, ezzel a beállítással az 'R' elnevezésű arduino értéken, - avagy a 4-es lábon - fog megjelenni az a változó, amit a Simhubn 'Axis 1' tengelynek hív, amit a játékból érkező mozgások fognak majd változtatni. Olyan mértékben, amit mi beállítunk.
Négy olyan mozgás van, amivel jól megtudjuk mozgatni a "fánkat", a PITCH., a ROLL, a SURGE TO PITCH és a SWAY TO ROLL.
A program elég jól elmagyarázza kék kicsi képekkel is, az elnevezések könnyen érthetőek.
Mivel nincs a fának túl nagy tehetetlensége, ezért elég sok értéket visszavehetünk, és nyugodtan túlozhatunk, nem fogunk kiesni az ülésből. A "smoothing" értéket lehúzhatjuk mind a négy esetben, és a görbét sem kell lineáris közelében hagyni.
Majd a mozgások fő csúszkájával finomhangolhatunk.
Ez lett az első éles futás:
Egy kicsit merevnek tűnik, kevés a káosz a mozgásában.
Egy itthon talált nyomórúgó felhasználásával, kicsit több élet került a végeredménybe.
Mint említettem, nem saját találmány, elég sok információ innen ered: xsimulator.net
Egyik barátom kérdezte, - amikor meséltem neki eme nemes projektemről - hogy "szimulátorodban a bólogatós kutyával aztán pedig mi lesz, hogy lesz, mikor lesz?"
Úgy érzem, ez is egy piaci rés, hát nem mondom, hogy nincs a kivitelezésre máris ötletem, de most inkább a házi készítésű övfeszítő után olvasgatok.