Výroba vlastního volantu Thrustmaster

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Odpovědět
mazy85
Příspěvky: 3
Registrován: 16 kvě 2018, 15:51
Reputation: 0

Výroba vlastního volantu Thrustmaster

Příspěvek od mazy85 » 17 bře 2023, 10:31

:arrow: ÚVOD:
Dobrý den, po dlouhých hodinách méně úspěšných pokusů o vlastní modifikaci a pochopení projektů jiných, jsem se rozhodl požádat o radu. Internet jsem se snažil prozkoumat co to šlo a ke generování kodu a rad jsem zkoušel používat i moderní technologie strojového učení chatgpt. Řešení jsem se ale nedopátral a sám si nevím rady. Projekt je následující a týká se simracingu, takže pokud se zde najde člověk, který rád závodí na PC a rád se hrabe v elektronice a výrobě vlastních nástavců na oficiání základny výrobců PC volantů, bude to nejlepší kombinace člověka, který by mi mohl pomoct:

:arrow: POPIS PROBLÉMŮ:
Základna volantu je Thrustmaster T300, na kterou mám od výroby připojenou GT verzi volantu s rozhraním pro PS4. Během brouzdání jsem narazil na projekty zabývající se výrobou vlastních věnců na tuto základnu a jako bonus některé projekty využívaly oficiálního 6-pin konektoru pro připojení věnce k základně, takže odpadala dodatečná kabeláž pomocí externíxch USB. Takovéto řešení mne nadchlo a pustil jsem se v nedávné době do uskutečnění projektu. Volant jsem vyrobil a funguje na výbornou, jen se mi podle prvního projektu, podle kterého jsem potupoval, podařilo vyrobit stejné rozhraní jako má originální volatn, což bylo 15 aktivních tlačítek. Zde začlo pátrání po možnosti využití tlačítek většího počtu, protože vím, že thrustmaster vyrábí oficiální addon pro F1, který používá na stejném 6-pin konektoru kombinaci až ke 30-ti tlačítkám. I tento projekt na internetu už někdo řešil a revezrním inženýrstvím dokázal dotyčný do arduina dostat software, který perfektně dokáže simulovat volant F1 při připojení k základně. Projekty jsem na internetu na tenhle problém objevil 2, ale zde začíná můj požadavek na úpravu pro mne vyhovující, protože jeden projekt pracoval s jinou vývojovou deskou než mám já, druhý už pracoval s deskou která mne vyhovovala, ale volant měl přiliš pro mne zbytečných a nevyužitelných vychytávek. Nicméně jsem využil druhý z projektů a přes nepajivé pole jsem se ho pokusil replikovat na využití pouze tlačítek, což se mi částečně podařilo, jen mi volant hlásil trvale opakující se stračování tlačítka, což jsem ale zkusil přičíst možná špatným kontaktům v nepájivém poli. Nicméně jak jsem zmínil výše, projekt je pro mé účely zbytečně složitý a ambiciózní, proto jsem toužil pro jeho úpravu a zjednodušení, kde jsem skončil a obrátil se na Váš.

:?: POŽADAVEK NA ŘEŠENÍ:
Požadavek na emulování volantu Thrustmaster F1 wheel addon pro desku Arduino Nano ATmega328P. Víceméně mi pro začátek a otestování stačí k tomuto programu vytvořit v kodu matici na tlačítka 5sloupců a 5řádků, což podle mých počtů vychází na 25 tlačítek, které by pro můj volant měly stačit. K tlačítkám se ale pravděpodobně můsí v kodu přiřadit funkce podle kterých jsou asi namapována tlačítka na F1 wheel addonu (myslím tímto spíš nesrozumitelným vysvětlením, že každá pozice v matici má přiřazenou funki jako R1,L1,SELECT,R1,CROSS,TRIANGLE,....)

:arrow: ZÁVĚR:
Pokud by se zde našel člověk, který my s mým problémem uměl pomoct, byla by to pro mne spása, pokud by jste alespoň někdo věděl kam mne nasměrovat, budu určitě rád za každou pomoc, problém ovšem může být, že programování rozumím asi tak na úrovni 1z10 kdy umím rozeznat v kodu šedý text, kterým se většinou píšou poznámky...Proto budu potřebovat komunikaci jak s amatérem, za tohle se omlouvám a zároveň děkuji človeku, který se do toho semnou pustí.

:idea: ZDROJE ODKUD JSEM ČERPAL:
https://rr-m.org/blog/thrustmaster-t300 ... -emulator/ - projekt který jsem úspešně dokončil a je momentálně funkční
https://github.com/cdemetriadis/Thrustm ... l-Emulator - projekt ve kterém využívají Arduino Nano ATmega328P,
ale je zbytečně složitý
https://www.thingiverse.com/thing:5103880 - projekt ve kterém má řešení tlačítek víceméně tak jak potřebuji, až na ten ledbar, který také nechci,
ale používá jinou vývojovou desku, tuším Arduino Pro Micro s čipem ATMega32U4
:!: Kody pro arduino jsou v jednotivých projektech zvlášť, pokud by ale někdo věci z projektů přiložených nechtěl stahovat, můžu zaslat třeba na mail nebo pokud to jde přímo zde ve vláknu :!:

Uživatelský avatar
kiRRow
Příspěvky: 1007
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Výroba vlastního volantu Thrustmaster

Příspěvek od kiRRow » 17 bře 2023, 17:06

Kód do příspěvku se vkládá pomocí tagu "code" (pátá ikonka zleva vypadá </>)
Co jsem tak rychle proletěl ten funkční a postavený kód, tak komunikuje to přes SPI sběrnici. Volant po tobě chce 8 bajtů v jakém je stavu na základě nějakého dotazu, který není popsán, v kódu je popsáno jen pár bitů v těch bajtech. Když zjistíš co který bit a bajt znamená, pak už nebude těžké nasnímat nějaký vstup, vytvořit z toho datový výstup a ten po SPI zaslat zpátky.

Je dosti možné, že ten první bajt popisuje jaký je typ zařízení a že má jen 16tlačítek, druhá strana tedy očekává další dva bajty se stavy jednotlivých tlačítek a zbytek pak bude vesele ignorovat, protože má to poslat sice 8x bajt, ale po přečtení toho prvního se to nastaví že ho zajímají jen ty další dva.

mazy85
Příspěvky: 3
Registrován: 16 kvě 2018, 15:51
Reputation: 0

Re: Výroba vlastního volantu Thrustmaster

Příspěvek od mazy85 » 17 bře 2023, 19:31

Děkuji za reakci, to co popisuješ a podle toho co jsem z toho pochopil, vypadá že dotyčný řeší v tomhle příspěvku: https://rr-m.org/blog/hacking-a-thrustm ... no-part-1/ angličtinou se překoušu, ale to je tak vše, jestli to v něčem pomůže vyřešit tento problém netuším.

Z kodu který se týka emulace volatnu F1 jsem okopíroval tohle, jestli chápu správně o čem si mluvil:

// the default wheel state
void resetWheelState() {
// Default Wheel State for the Thrustmaster F1
wheelState[0] = B11001111;
wheelState[1] = B11111111;
wheelState[2] = B11111111;
wheelState[3] = B11111111;
wheelState[4] = B00000000;
wheelState[5] = B00000000;
wheelState[6] = B01100000;
wheelState[7] = B01000000;
buttonValue = 0;

celý ten kod je vypsán na github kde se dá rozkliknout: https://github.com/cdemetriadis/Thrustm ... l_emulator

Uživatelský avatar
kiRRow
Příspěvky: 1007
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Výroba vlastního volantu Thrustmaster

Příspěvek od kiRRow » 18 bře 2023, 11:18

Když se na to podíváš, tak oproti tomu prvnímu funkčnímu kódu je popsán navíc poslední bit prvního byte - je to stisk tlačítka GearUP a sám tvůrce poznamenává : "First 7 bits are constants, may be they encode the wheel type?"
A to bude možná problém, pokud se to zařízení bude hlásit jako tento typ (mám 17tlačítek), tak zbytek informací které pošle může být ignorován protože se nehlásí jako zařízení s 25ti tlačítky.

Jinak k té matici, máš 5řádků a 5sloupců ... je jedno co, ale dejme tomu že sloupce budou výstupy a řádky vstupy. Vždy pouze jeden výstup nastavíš na HIGH a ostatní na LOW a přečteš všech 5 řádků. Pokud víš že do 3tího výstupu pouštíš HIGH a přitom ho čteš na 4tém vstupu, pak můžeš říct že bylo stisknuto tlačítko na pozici matice [3,4] - problém nastává při stisku více tlačítek najednou.

Klávesnice počítače je taky zapojená do matice a pamatuji, že jako děti hrát počítačovou hru ve dvou na jedné klávesnici byl problém.

Uživatelský avatar
gilhad
Příspěvky: 671
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Výroba vlastního volantu Thrustmaster

Příspěvek od gilhad » 18 bře 2023, 19:08

Proto se do série s těmi tlačítky zapojují diody, aby ten proud pak netekl kam nemá.
Obrázek

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti