Volant z Octavia IV, modul, pripojenie a obsluha

V jednom z predošlých článkov sme montovali nový volant z Octavia IV do staršej Octavia III. Na konci článku bolo spomínané nekompletné a nekompatibilné ovládanie nového volantu pre staršie generácie. Dnes sa skúsime pozrieť na druhý diel trilógie a zvyšné tlačidlá „dopojiť“ a spojazdniť.

Existujú aj hotové moduly pre ovládanie volantu vyrobené na zákazku, ktoré simulujú stlačenie tlačidiel a signál preklopia a preložia tak, aby im auto rozumelo. Ich cena je často ale presahujúca sumu 100-150 €. Našťastie existujú maniaci, čo sa vyznajú v programovaní a baví ich to, rovnako ako aj hrabanie sa v aute. Jedným z nich je aj Gabriel, ktorý dokázal cenu modulu/prevodníka/konvertera stiahnuť na prijateľnú hodnotu. Navyše je to aj čiastočne konfigurovateľné a funkčné! Rozmerovo sa nevyrovná niektorým modulom, o miesta v aute ale nie je núdza.

Prioritne sa budeme zameriavať na montáž v mojej Octavia III, príprava je rovnaká aj pre ostatné modely. Montáž môže byť mierne odlišná, otestované a overené to je minimálne na modeloch Fabia III, Octavia III a Superb III.

Zoznam dielov

  • 1x – modul Arduino nano, tu alebo tu
  • 1x – modul MCP2515, tu alebo tu
  • 1x – step-down menič, tu alebo tu
  • 1x – krabička KM27 alebo Z70U alebo Z68
  • 1x – textilná izolačná páska

Krabičiek existuje viacero druhov, všetky spomínané sa pre tento modul hodia. Komu sa nepáči krabička, siahnuť môže aj po zmršťovacej bužírke/fólii ako v tomto prípade.

V pôvodnom návrhu bol pre napájaciu časť použitý stabilizátor + chladič:

  • 1x – stabilizátor L78S05CV
  • 1x – chladič pre stabilizátor (DO1A pre púzdro TO220)

Osobne odporúčam a uprednostňujem hotové riešenie v podobe step-down meniča. Ten istý modul bol použitý aj pri predných duálnych svetlách na Fabiu. Jeho hlavnou výhodou je možnosť nastaviť požadované výstupné napätie na úroveň približne 5 V pre napájanie Arduino modulu. Meniču nevadí ale ani kolísanie vstupného napätia, typicky rozdiel pri zapnutom zapaľovaní – naštartovanom aute. Vtedy môže napätie kolísať od 11,5 V až po 14,7 V, výnimočne krátkodobo aj na 15 V.

Okrem tohto základu potrebujeme diely pre pripojenie modulu priamo v aute. Postupom času sa modul a jeho pripojenie menilo, skúsime si zhrnúť viaceré možnosti a k nim odpovedajúce súčiastky na pripojenie.

Verzia 1:

  • 1x – N 906 844 01 – pin pre poistku
  • 1x – poistka 3A
  • 1x – káblové oko M6x2,5
  • 2x – N 907 647 01 (000 979 009 E) – pin (samica)
  • 2x – 000 979 012 E – pin (samec)
  • 1x – 4E0 972 575 alebo 8E0 972 763 – konektor
  • 1x – 4B0 971 832 alebo 4B0 972 623 – konektor

Verzia 2:

  • 1x – 8K0 973 754 alebo 8E0 971 832 – konektor
  • 1x – 8K0 972 994 alebo 8E0 972 643 – konektor
  • 4x – N 907 647 01 (000 979 009 E) – pin (samica)
  • 4x – 000 979 012 E – pin (samec)

Pri tejto verzii je možné použiť rovnaký princíp aj konektory ako pri kontrolke pre stretávacie svetlomety. Opäť platí nutnosť dodržať farebné kombinácie a indexy.


Vlastný modul pre ovládanie volantu

Už na začiatku je dobré si zvoliť vhodnú finálnu montáž do krabičky. Mal som doma nevyužitú krabičku z modulu pre sklápanie spätného zrkadla s označením KM27. Rozloženie jednotlivých súčiastok by vyzeralo nasledovne.

Nespomenuli sme si zatiaľ schému zapojenia. Autor modulu počíta s využitím stabilizátora 7805, schéma priamo zo zverejneného postupu.

Pokiaľ sa rozhodneme využiť pre napájanie uprednostňovaný step-down menič, schéma bude mierne odlišná.

Zmení sa aj približné rozloženie v krabičke.

Popis

Arduino modul je v tomto prípade mozog celého systému a prevodník MCP2515 akýsi prekladač. MCP je pripojený na komunikačnú CAN linku komfortu auta a získava pre seba dôležité informácie zo špecifickej adresy – ovládania volantu. Okrem toho, že dáta si dokáže načítavať a konvertovať pre Arduino, dokáže v spolupráci s Arduinom a obslužným programom upravené a požadované dáta vysielať späť. Netreba sa však ničoho báť, Arduino+MCP sú ku CAN komfortu pripojené paralelne a vďaka obslužného kódu zasahujú iba do linky a údajov pre ovládanie multifunkčných tlačidiel na volante! Modul nezadržuje žiadne ďalšie údaje, len si vyberá tie, ktoré potrebuje. Nové volanty sú určené pre ovládanie spojené s tlačidlom View, na ktoré neboli staršie autá prispôsobené.

Napájanie celého modulu je (môže byť) riešené spínanou poistkou, ktorá sa dá v prípade potreby kedykoľvek vybrať a modul prestane s autom komunikovať.

Hardvérová príprava

Všetky tri plošné spoje prepojíme medzi sebou podľa schémy. Uprednostňujem spájkovanie pred prepájaním pomocou krimpovaných pinov. Preto z MCP modulu odstránime konektory. To isté urobíme aj pre Arduino modul, pokiaľ prišiel s osadenými DIP lištami.

Namiesto DIP lišty osadíme krátke vodiče, postačí aj 10 cm.

Podľa schémy zapojenia prepojíme pripravený MCP a Arduino modul. Pre správne fungovanie je nutné dodržať iba smerovanie vodičov, na ich farbe až tak nezáleží 😉 .

Na výstupné pozície step-down meniča prispájkujeme po dva vodiče. Step-down menič bude akýsi medzikus na spojenie s Arduinom aj MCP. Označenie vstupnej (IN+, IN-) aj výstupnej časti (OUT+, OUT-) je na spodnej časti plošného spoja. Na vstupnú časť potrebujeme dlhšie vodiče, odporúčam aspoň 50 cm, skrátiť sa dajú kedykoľvek.

Pokiaľ máme vstup aj výstup, nastavíme si požadované výstupné napätie. V našom prípade sa potrebujeme dostať na výstupné napätie približne 5 V:

U toho arduina na napájení máš tři vstupy – 3.3 in je pro 3,3 V; pak 5v in je jen na 5V; a pak je V in a v něm je predřazený měnič napětí co je rovnou na desce Arduina, ale má rozsah cca 3 – 12 V. Proto se v autě nedá použít.
Takže na tom přidaném měniči nemusíš nutně nastavovat 5 V, prostě stačí něco, co bude pod 12 V a zároveň to tedy nesmíš strčit třeba do vstupu na 3.3, jinak to spalis i tak 😀

Ako skúšobné napájanie použijeme zdroj, v krajnom prípade postačí aj 12 V akumulátor z auta. Výstupné napätie nastavujeme otáčaním potenciometra malým plochým skrutkovačom.

Ako vyplýva z animácie, step-down menič dokáže spoľahlivo udržať nastavené výstupné napätie, dokonca až do testovanej úrovne 16 V. Zvládne samozrejme viac, ale nepredpokladáme, že by auto dokázalo hoci len krátkodobo na túto úroveň zdvihnúť hodnotu napätia. Výhoda je hlavne v tom, že Arduino a MCP modul budú napájané konštantným napätím aj pri zapnutí zapaľovania, aj pri naštartovanom motore a bežiacom alternátore.

Nastavený menič pripojíme ako napájanie pre oba moduly, opäť dodržiavame schému zapojenia. Arduino mínus na GND, plus na VIN. MCP mínus na GND, plus na VCC. Na záver ešte na výstup MCP pripojíme dva CAN vodiče, dĺžka opäť aspoň 50 cm.

Umiestneniu do krabičky prvého kusu predchádzalo vyrezanie otvoru pre miniUSB konektor. Je to pravdepodobne zbytočné, ku konektoru je prístup po povolení 1-2 skrutiek na krabičke.

Ako už je naznačené, plošné spoje sú prichytené obojstrannou páskou.

Príklad použitia iných krabičiek…

Nahrávanie obslužného programu

Pre nahrávanie programu do Arduino modulu potrebujeme opäť prostredie Arduino IDE.

Po stiahnutí spustíme inštaláciu a riadime sa pokynmi na obrazovke.

Tento program umožňuje editáciu a nahrávanie programu do Arduino modulu. Po nainštalovaní program spustíme a načítame si zdrojový kód určený pre nahratie do modulu – MuFu_2021_Skoda.ino. Celý zdrojový kód na stránku kopírovať ako text nebudem, je dostupný na stiahnutie nižšie.

Pre doplnkový MCP modul potrebujeme aj doplnkovú knižnicu arduino-mcp2515-master.zip. Stiahneme si ju, zip archív nerozbaľujeme. Cez menu Projekt – Zahrnúť knižnice – Pridať .ZIP knižnicu vyhľadáme stiahnutý archív, ktorý zvolíme Open.

O pridaní knižnice je informácia v spodnej časti obrazovku. Skontrolovať si to môžeme opäť cez Projekt – Zahrnúť knižnice.

Pred nahrávaním programu modul pripojíme miniUSB káblom k počítaču, nastavíme typ dosky a port.

Nástroje – Doska a vyberieme z rozbaľovacieho menu, v našom prípade Arduino Nano.

Nástroje – Procesor volíme podľa špecifikácii v obchode pri nákupe modulu, označenie čipu je napísané aj priamo na module. Stretol som sa s ATmega328p aj ATmega168. Pre „čínske“ kópie (napr. Aliexpress) zvolíme ATmega328p (OldBootloader).

Nástroje – Port je závislé na počítači a jeho USB portoch.

Keď je všetko nastavené, klikneme na „“ (kompilovať) v ľavej hornej časti obrazovky pre kontrolu a kompiláciu programu, prípadne rovno na „“ pre kompiláciu+nahratie programu. Prostredie programu informuje o aktuálne prebiehajúcom kroku v spodnej časti obrazovky.

Pokiaľ neplánujeme nič meniť a program je už nahratý, odpojíme miniUSB kábel a vrhneme sa na montáž do auta.

Prispôsobenie obslužného programu

Na základe požiadaviek využitia jednotlivých tlačidiel si môžeme prispôsobiť pozície tlačidiel. K tomu slúži niekoľko riadkov v úvode programu, riadky mimo tohto úseku odporúčame meniť iba na vlastné riziko! 

//////////////////////////////////////////////////////
// Set your mapping                                 //
const uint8_t user_EnterMenu           = 0x00;      //
const uint8_t user_MenuBack            = 0x00;      //
const uint8_t user_heatedSteeringWheel = 0x00;      //
const uint8_t user_travelAssist        = 0x00;      //
const uint8_t user_assistSystems       = 0x00;      //
const uint8_t user_voice               = 0x00;      //
// bonus - if you want to disable startstop         //
// change false for true on line below              //
bool disableStartStop = false;                      //
//////////////////////////////////////////////////////
// Do not touch anything below, if you are not sure //
// what are you doing                               //
//////////////////////////////////////////////////////

K úprave pozície tlačidiel využijeme pripravené tabuľky. Zadávanie musí ostať vo formáte 0xNN, kde N je je hexadecimálna hodnota 0-9 alebo A-H.

Funkcia – starý volant Byte 0-1 [HEX]
koliesko hlasitosti hore 12
koliesko hlasitosti dole 12
koliesko hlasitosti stlačenie 13
šípka vľavo (dozadu, predošlá skladba/stanica) 16
šípka vpravo (dopredu, nasledujúca skladba/stanica) 15
hlasové ovládanie 19
zdroj hudby (rádio/USB/karta/Bluetooth) 14
telefón 1C
asistenti 0C
koliesko menu hore 06
koliesko menu dole 06
koliesko menu stlačenie 07
vstup do hlavného menu 08
tlačidlo view 23

Rozdielna je tabuľka pre nový volant.

Funkcia – nový volant Byte 0-1 [HEX]
koliesko hlasitosti hore 12
koliesko hlasitosti dole 12
koliesko hlasitosti stlačenie 13
šípka vľavo (dozadu, predošlá skladba/stanica) 16
šípka vpravo (dopredu, nasledujúca skladba/stanica) 15
hlasové ovládanie 19
výhrev volantu 25
telefón 1C
asistenti 0C
Travel Assist 74
koliesko menu hore 06
koliesko menu dole 06
koliesko menu stlačenie 07
šípka vpravo, vstup do hlavného menu 02
šípka vľavo 03

Na základe týchto hodnôt určíme, čo má ktoré tlačidlo na starosti. Napríklad nastavené hodnoty na Octavia III, vrátane poznámok:

//////////////////////////////////////////////////////
// Set your mapping                                 //
const uint8_t user_EnterMenu           = 0x08;      // šípka "vpravo", vstup do menu
const uint8_t user_MenuBack            = 0x08;      // šípka "vľavo", vstup do menu, návrat späť z telefónu a podobne
const uint8_t user_heatedSteeringWheel = 0x00;      // výhrev volantu, možné nastaviť vstup do menu, prípadne telefón
const uint8_t user_travelAssist        = 0x1C;      // pri väčšine áut nepoužívané, ideálne pre telefón (1C)/view tlačidlo (23)
const uint8_t user_assistSystems       = 0x00;      // odporúčam nechať asistentov bez zmeny
const uint8_t user_voice               = 0x00;      // pridané; pôvodne pre hlasové ovládanie, vhodné aj pre telefón (1C).
                                                    // pozor, pri aktívnom hlasovom ovládaní sa spustí zároveň s ponukou telefón!!

//////////////////////////////////////////////////////

Ľavá strana volantu ohľadom ovládania zvuku je bez zmeny, navyše je len ovládanie výhrevu volantu. Ak nie je výhrev vo výbave, kľudne si môžeme nastaviť napríklad vstup do menu, či menu telefónu. Zmena by vyzerala nasledovne:

pôvodný zápis nový zápis popis
const uint8_t user_heatedSteeringWheel = 0x00; const uint8_t user_heatedSteeringWheel = 0x00; funkcia bez zmeny, ostáva výhrev volantu
const uint8_t user_heatedSteeringWheel = 0x00; const uint8_t user_heatedSteeringWheel = 0x1C; telefón
const uint8_t user_heatedSteeringWheel = 0x00; const uint8_t user_heatedSteeringWheel = 0x02; vstup do hlavného menu

Dôležitá je pravá strana volantu, zaujíma nás predovšetkým vstup do menu. Na to využijeme spodné šípky, ktoré pri klasických budíkoch nemajú vlastnú funkciu. Pohyb v menu hore a dole zabezpečuje koliesko, potvrdenie stlačenie kolieska. Zmena sa bude týkať oboch šípok:

pôvodný zápis nový zápis popis
const uint8_t user_EnterMenu = 0x00; const uint8_t user_EnterMenu = 0x00; funkcia bez zmeny
const uint8_t user_MenuBack  = 0x00; const uint8_t user_MenuBack  = 0x00; funkcia bez zmeny
const uint8_t user_EnterMenu = 0x00; const uint8_t user_EnterMenu = 0x08; vstup do hlavného menu
const uint8_t user_MenuBack  = 0x00; const uint8_t user_MenuBack  = 0x08; vstup do hlavného menu, návrat späť z telefónu a podobne

Na pravej strane ostane vo väčšine prípadov (podľa výbavy auta) nevyužité tlačidlo Travel Assist. Práve týmto tlačidlom nahradíme chýbajúci telefónik pre vstup do menu Telefón.

pôvodný zápis nový zápis popis
const uint8_t user_travelAssist = 0x00; const uint8_t user_travelAssist = 0x00; funkcia bez zmeny
const uint8_t user_travelAssist = 0x00; const uint8_t user_travelAssist = 0x1C; telefón
const uint8_t user_travelAssist = 0x00; const uint8_t user_travelAssist = 0x23; tlačidlo View (pre Virtual cockpit)

Posledné tlačidlo na pravej strane volantu odporúčam ponechať na menu asistentov.

Vlastné hodnoty obslužného programu

Ako sme sa dostali ku HEX hodnotám jednotlivých tlačidiel? Na to okrem programu Arduino potrebujeme ďalší s názvom CANHacker. Stiahneme, rozbalíme a nainštalujeme podľa pokynov na obrazovke.

CANHacker umožňuje vyčítanie HEX hodnôt každého tlačidla na volante. Základné hodnoty sú uvedené v predošlej kapitole v tabuľke, kto má chuť sa učiť a hrať niečo nové, môže si to vyskúšať na vlastnom aute. Pre funkčnosť táto kapitola nemá veľký význam, nie je povinná ani potrebná! Len pre rozšírenie si obzorov…

Na začiatok okrem programu CANHacker potrebujeme aj iný zdrojový kód – CAN_Hacker.ino.

Nový zdrojový kód vyžaduje aj novú knižnicu arduino-canhacker-master.zip, postup pridania je rovnaký ako pri predošlej knižnici. Cez menu Projekt – Zahrnúť knižnice – Pridať .ZIP knižnicu vyhľadáme stiahnutý archív, ktorý zvolíme Open.

Projekt kompilujeme a nahráme do pripojeného modulu volantu.

Ovládanie volantu je momentálne neprístupné, zdrojový kód je nahradený iným, „špehovacím“ :D. Ale nie, špehovať nikoho nebudeme, len odpočúvať a sledovať pakety a signály posielané na CAN linke komfortu auta. Zameriavať sa budeme ale iba na volant.

Pokračujeme v dôležitom nastavení knižnice – aby Arduino vedelo, na akej frekvencii má s MCP komunikovať. Podľa autora to dalo zabrať najviac času, pretože sa o tom moc nepíše. V programe Arduino otvoríme Súbor – Vlastnosti. Po otvorení okna je hneď v úvode informácia o ceste, kam sa ukladajú nahrávané knižnice. Vyhľadáme si daný priečinok (napríklad u nás C:\Users\wirer\Documents\Arduino\libraries) cez ponuku Tento počítač, prípadne využijeme alternatívu v podobe Total Commander. Zaujíma nás knižnica (priečinok) arduino-canhacker-master, ktorý otvoríme a vyhľadáme v ňom CanHacker.h. Prostredníctvom Total Commander môžeme cez klávesovú skratku F3 súbor otvoriť, alebo rovno cez F4 aj upraviť.

Zaujíma nás riadok CAN_CLOCK canClock = MCP_16MHZ;. Hodnota tejto frekvencie je uvedená na kryštále (kovová súčiastka vedľa čipu), napríklad zápis EAS8.000 znamená hodnotu 8 MHz.

V otvorenom CanHacker.h jednoducho prepíšeme pôvodnú hodnotu 16MHz na novú hodnotu 8MHz. Pokiaľ je na kryštále uvedená hodnota 16 MHz, nemusíme meniť nič a pokračujeme v ďalších krokoch.

Pre pripojením k autu otvoríme nainštalovaný program CANHacker. Klikneme na Settings (Nastavenia) a nastavíme nasledujúce:

  • CAN Device – COM port pripojeného Arduino modulu, je totožný s tým, čo je v programe Arduino
  • COM Baudrate (rýchlosť COM) – 115200 bit/s
  • CAN Baudrate (rýchlosť CAN zbernice) – 500 Kbit/s
  • zrušíme začiarknutie Listen Only

Pre sledovanie (čítanie, odpočúvanie) pôvodných tlačidiel volantu musíme mať k autu pripojený pôvodný volant. Postačia tlačidlá a prepojovací kábel, ak už máme volant vymenený za nový. Airbag a prepojovací kábel nového volantu odstránime a namiesto toho pripojíme pôvodné tlačidlá. Pri vyberaní airbagu nesmieme zabudnúť na odpojenie batérie! Postup je totožný, akoby sme menili celý volant!

V programe CANHacker klikneme na pripojiť a čakáme na spojenie programu s Arduino modulom. Po nejakej dobe už vidíme v hlavnom okne nezmyselne sa meniace písmená a číslice. Pre multifunkčný volant hľadáme paket 5BF listovaním, alebo si ho vyfiltrujeme.

Výstupné zobrazovanie je možné prepínať medzi režimami Monitor alebo Tracer. Tracer zaznamenáva všetky stlačenia tlačidla (tlačidiel) na volante v závislosti na čase.

Z výstupných údajov potrebujeme prvú dvojicu znakov – Byte 0-1 v tvare HEX, napríklad:

CAN_ID [HEX] DLC Byte 0-1 [HEX] Byte 2-3 [HEX] Byte 4-5 [HEX] Byte 6-7 [HEX]
0x5BF 8 06 00 0F 13

Kde:

  • CAN_ID – jedinečná identifikácia odosielateľa, v našom prípade volant 5BF
  • DLC – určuje veľkosť dátovej časti paketu v bytoch
  • Byte 0-n – obsahuje dáta, ktoré odosielateľ chce poskytnúť komukoľvek/čokoľvek, čo má záujem počúvať
        • Byte 0-1 – určuje, o aké tlačidlo sa jedná
        • Byte 2-3 – sa pravdepodobne nevyužíva
        • Byte 4-5 – u ovládacích koliesok určuje na akú stranu se točia, 01/0F. Pri tlačidlách ako dlho sú stlačené, 01-06.
        • Byte 6-7 – starý volant posiela vždy hodnotu 13 nový vždy A4

Na základe týchto údajov vznikli tabuľky starého volantu uvedené v predošlej kapitole. Rovnakým systémom sa zisťovali aj údaje nového volantu. Vo finále bolo možné vytvoriť kód, ktorý tieto signály dokáže meniť do výslednej podoby na želanie majiteľa auta.

Odkazy na stiahnutie

Zdrojový kód pre ovládanie modulu sa budeme snažiť v prípade zmien aktualizovať a na stránke udržiavať aktuálny. Screeny a popis uvedený v predošlých kapitolách preto nemusia úplne odpovedať poslednej verzii programu! Nejedná sa o chybu, ale update za účelom vylepšenia… 😉 

1 komentár na článok “Volant z Octavia IV, modul, pripojenie a obsluha

  1. do textu v zozname materiálu doplnené na odkazy pre nákup „modulov“. netuším ako dlho budú aktuálne, google funguje snáď každému 🙂

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Táto webová stránka používa Akismet na redukciu spamu. Získajte viac informácií o tom, ako sú vaše údaje z komentárov spracovávané.

Začnite písať požadovaný hľadaný výraz a stlačte ENTER pre vyhľadávanie. Stlačením ESC hľadanie zrušíte.

Návrat hore