Jump to content

E-MFA Addon Homemade


DoCGarage
 Share

Postare recomandată

Salutare,

In primul rand sper ca am deschis topicul unde trebuie, daca nu, rog un moderator sa-l mute in aria corecta. Totul a inceput cand am vazut acest produs: E-MFA ADDON . Acest device se conecteaza in spatele head unit-ului si trimite catre instrument cluster diferiti parametrii: presiune turbo, cantitatea de motorina din rezervor, temp. ulei etc. Din pacate pretul este cam mare din punctul meu de vedere. Drept urmare mi-am propus sa incerc sa fac un device asemanator. 

 

Pentru inceput o sa incerc sa explic putin cum comunica “calculatoarele" din masina intre ele.

Protocolul folosit se numeste CAN BUS(Cotroller Area Network). Sunt folosite 2 fire: CAN_HI si CAN_LOW.

can wires.jpg 

Intr-o masina VW in care se foloseste protocolul CAN BUS exista mai multe retele CAN:

Drivetrain CAN data bus (high speed) with 500 kBit/s. Aici avem de exemplu: Engine ECU, ABS, Airbag, Calculator Coloana Volan, Instrument Cluster

Convenience CAN data bus (low speed) with 100 kBit/s Aici avem de exemplu: BCM, Central Convinience 

Infotainment CAN data bus (low speed) with 100 kBit/s Aici avem de exemplu: Navi, Radio, Modul Bluetooth, Telematics

Comunicarea intre toate retelele CAN dintr-o masina se face folosing un CAN GATEWAY. Toate mesajele trimise de catre "calculatoarele" din retea trec prin CAN Gateway. Cred ca il putem compara cu un network switch.

De exemplu: Head unit-ul trimite catre Instrument Cluster numele melodiei. Head unit-ul este in Infotainment CAN iar Instrument Cluster-ul este in Drivetrain CAN. Acest mesaj trimis de Head Unit ajunge in CAN Gateway si de acolo este trimis mai departe catre Instrument Cluster.

Daca tot am ajuns la "mesaje". Asa arata un mesaj trimis intr-o retea CAN:

Exemplu general: CanSend(ID, byte 1, byte 2, byte 3, byte 4, byte 5, byte 6, byte 7, byte 8) Mesajul contine ID-ul "Calculatorului" care trimite mesajul + 8 bytes de informatie. In reteaua CAN ID-urile "calculatoarelor" sunt alocate in functie de importanta lor. De exemplu ABS are ID-ul 0x1A0, Airbag controller are ID-ul 0x050

Exemplu mesaj real: CanSend(0x531, 0x0c, 0, 0, 0, 0, 0, 0, 0) Acest mesaj este trimis catre Instrument Cluster sa aprinda martorul pentru faza lunga.

Exista si mesaje mai mari de 8 bytes. De exemplu cand se trimite numele unei melodii sau numele postului radio. Pentru a trimite mesaje mai mari de 8 bytes VW foloseste un protocol proprietar numit VW Transport Protocol 2.0. Mesageria CAN nu este disponibila pe internet iar VW nu va face publica niciodata mesageria CAN a masinii din motive de securitate.  

 

Acum revenind la proiect.

Ca si hardware voi folosi o placa de dezvoltare Arduino si un shield CAN BUS:

20160401_163707731_iOS.jpg

Ce vreau eu este sa ma leg in reteaua CAN in locul modulului Bluetooth(oricum nu il am instalat pe masina), sa trimit catre Instrument Cluster mesaje folosind ID-ul modului Bluetooth. Asta in teorie. Pana acum am lucrat pe birou, cu un instrument cluster fara maxi-dot. L-am folosit sa imi dau seama cat de cat cum stau lucrurile. Am reusit sa trimit mesaje folosind diferite ID-uri. De exemplu am reusit sa sting martorii de ABS, Airbag si sa aprind martorul de faza lunga. De asemenea am reusit sa controlez si vitezometrul. Atasez un link cu un filmulet postat de mine pe youtube: 

Urmatorul pas este sa ma mut in masina, unde am Instrument Cluster cu Maxi-dot si sa incerc sa adaug un meniu pe langa cele existente: MFD, Audio, Navigation. Setup si sa afisez text. Pe masura ce voi avansa cu testele voi posta pe forum. :)

Modificat de Dobre Catalin
Link către comentariu
Distribuie pe alte siteuri

Salutare,

Stie cineva unde pot gasi un document cu pinout-ul pentru CAN Gateway (cel pentru Golf 5/Jetta)?

Multumesc.

Link către comentariu
Distribuie pe alte siteuri

Hello,

Revin cu un update. Inca nu am trecut la teste in masina. Am continuat sa caut frame-uri si mesaje de CAN. Am cumparat un Instrument Cluster de Passat B6 cu maxi-dot pe care sa testez. Am ales un Instrument Cluster de Passat B6 pentru ca nu are IMMO si pot avea acces la toate ecranele fara sa am afisat in permanenta mesajul de eroare immobilizer active. 

Am reusit sa controlez Instrument Cluster-ul, folosind mesajele CAN pe care le trimite calculatorul de coloana catre IC cand se apasa comenzile de pe volan.

Am atasat si un mic video pentru demo: 

 

Modificat de Dobre Catalin
Link către comentariu
Distribuie pe alte siteuri

  • 3 months later...

Salutare,

A trecut ceva timp de cand nu am mai postat aici dar am revenit cu un update:) :

Am trecut la teste pe masina. Initial voiam sa ma conectez pe infotainment CAN in locul modulului bluetooth, dar intre timp am instalat un astfel de modul si a trebuit sa caut alta solutie. Am scos 2 fire de CAN din mufa RNS-ului pe care le-am tras in torpedou sa pot conecta device-ul meu in paralel pe infotainment CAN folosind ID-ul modulului TELEMATICS. In acest fel nu se pierd nici meniurile Audio, Navigation, Phone. 

Am reusit sa adaug un menu entry pe instrument cluster-ul din masina. Initial a fost numit Test Menu, dupa care l-am redenumit mai sugestiv MFD plus+. 

 

20160731_105232513_iOS.jpg

Urmatorul pas este sa afisez ceva in pagina MFD Plus+(de ex. engine rpm sau oil temp.).

P.S. Daca vreun coleg cu experianta in programare microcontrollere vrea sa participe feel free to p.m. me.:)

Link către comentariu
Distribuie pe alte siteuri

  • 6 months later...

Hello,

Sa mai stergem putin praful de pe topic:

Simulatorul de butoane volan este functional si pot controla instrument cluster-ul foarte usor dupa cum se vede si in video. Martorii de bord aprinsi sunt controlati tot pe CAN la fel si turometrul care sta la 800rpm.

Still work in progress :)

Link către comentariu
Distribuie pe alte siteuri

Pe can drive te-ai jucat? Daca ai cruise control si posibilitatea de salvare a mesajelor, poti sa faci un log pt id 038A? De asemnea daca crezi ca te pot ajuta cu ceva info sa ma anunti.

Link către comentariu
Distribuie pe alte siteuri

Salut @terrabyt

Da pot sa fac sniffing pe can si sa salvez log-uri. Mi-am facut un can sniffer cu un arduino nano si un shield de can, iar ca si software am gasit un tool open source in care vezi toate informatiile de care ai nevoie:

Sniffing.thumb.jpg.98f0178a3b6adbedaeb8f61aca6c82bc.jpg

Iar pentru setup-ul din casa, am luat un can gateway la care am conectat pe convenience can "butoanele de pe volan" iar pe infotainment can device-ul meu fake telematics:

20170213_183824.thumb.jpg.27b05ba86afc2824314abf98bfb9f896.jpg

Totul functioneaza ok si pot lucra pe cluster.

Acum in baza log-urilor din masina de pe infotainment can am reusit sa afisez meniul meu Test Menu. Problema este ca nu persista. Daca intru in meniu dispare, dupa care apare din nou in lista. Banuiesc ca este o problema cu intervalul de timp la care eu trimit request-urile catre cluster. Problema este ca VW foloseste un protocol proprietar numit VW Transport Protocol 2.0 prin care trimit pe can mesaje mai mari de 8 bytes. Din ce am vazut eu pana acum protocolul acesta este cumva master-slave.

De exemplu asa afiseaza meniul Navigation in lista:

Pe id-ul 682 trimite rns-ul mesaje catre cluster. Pe 683 raspunde cluster-ul

682    A0 04 59 FF 32 FF           
683    A1 04 8A FF 32 FF           
682    10 00 4D 00 FF              
683    B1                          
683    20 20 01 11 00 11 00 11       
683    21 00 11 00 0A 00 0D 00     
683    12 11 00                    
682    B3                          
682    11 01 12                    
683    B2                          
683    13 21 00 04 00 6E 00 5B     
682    B4                          
682    12 01 23                    
683    B3                          
683    14 21 00 03 00 2D 00 14     
682    B5                          
682    23 02 70 4D 12 4E 61 76     
682    14 69 67 61 74 69 6F 6E     
683    B5                          
683    15 23 10 00 00

Tu ai ceva informatii despre cum functioneaza protocolul minunat? Ceva documentatie am gasit pe net dar nu este destul de clara...:banghead:

 

 

Link către comentariu
Distribuie pe alte siteuri

Tot asa mi-am facut si eu o interfata si tot cu canhacker ma uit la mesaje. La can de infotaiment nu m-am prea jucat, dar verifica sa nu trebuiasca sa trimiti un mesaj periodic sa stie bordul ca "esti" prezent. La cel de confort, exista un "ring"  intre toate calculatoarele de ex gateway trimite id 400, in primul byte  este id la urmatorul ecu(01 confort). Confortul trimite cu id 401 in primul byte id la urmatorul(02 usa sofer), usa sofer trimite cu id 402 si tot asa pan la ultimul , clima sau radio care trimite in primul byte id la primul.  la  infotaiment nu mai retin exact daca este inel asta sau cat este de important. Daca te descurci cu germana poti arunca un ochi aici https://tx-board.de/threads/passat-3c-tp-1-6-can-bus-telefonmodul-emulation.38635/ sau aici http://www.golfmkv.com/forums/showthread.php?s=249b53bcb908bd2fa533a861b040dfc1&p=3755956#post3755956 sau http://secuduino.blogspot.ro/2011/10/fis-seat-leon-cupra-english.html

 Legat de tp aici https://jazdw.net/tp20 explica foarte bine tipul asta.

O sa conectez si eu un radio la un bord sa vedem ce iese, dar deocamdata ma lupt cu cruise control, vreau sa fac functional un volan de g7 cu butoane de cruise, pe orice vag. 

5C1 vezi ca are dlc de 4 sau 1 pt butoane. 

primul byte are cam asa

              23-> down
               22-> up
               09-> pg stanga
               0A-> pg dreapta
               28-> ok
               29-> return
               07-> vol-
               06-> vol+
               02-> next
               03-> previous
               1A-> tel
               2b-> microfon/mute

la 65D ai km si timpul- 0FA5->4005km

la 35B ai rpm  hex->dec/4, temp la g62 hex->(dec-64)* 0.75, temp la ulei to ca la apa si parca si pedalele

Uite si un routing a gateway-ului. 

gateway routing.txt

Modificat de terrabyt
Link către comentariu
Distribuie pe alte siteuri

Da,

Pentru 5C1 ii trimit dlc 1, dar trebuie sa ii mai trimit inca un mesaj cu 0 peste tot pentru ca face keypress prea repede. Cred ca este o problema din libraria de can a shield-ului. 

Legat de acel "ring", pentru ce am eu nevoie nu trebuie sa faci register in "ring". Trebuie sa ii trimiti un mesaj periodic in cazul meu cu id-ul modului telematics:

Eu ii trimit (0x5A7, 0x80, 0x80, 0x00, 0x40, 0x00, 0x09, 0x00, 0x00) la 500ms. Asa gateway-ul crede ca telematics este prezent.

Link către comentariu
Distribuie pe alte siteuri

  • 2 weeks later...

Hello,

Imi puteti confirma ca acesta este pin out-ul corect pentru un modul bluetooth 5N0-035-730-C?

1 V+
2 V-
3 Telephone ON
8 Audio LF Signal out +
9 Audio LF Signal Out -
10 Screening Term 31
11 Mic in +
12 Mic in -
15 K Line
16 Mute
17 CAN Hi
18 Can Lo
37 Switched positive term for phone charging
39 Term 31 -ve
41 Interface to mob phone Term 30
42 Mic Out +
43 Mic out -
44 Screening Term 31
45 Audio LF Sig input +
46 Audio LF Sig Input -
47 Wakeup lead to phone bracket
49 Serial Tx comms with tele bracket +ve
50 Serial Tx comms with tele bracket -ve
51 Serial Rx comms with tele bracket +ve
52 Serial Rx comms with tele bracket -ve

Multumesc.

Link către comentariu
Distribuie pe alte siteuri

Ai schema atasata.  Alimentarile si comunicarea sunt la fel. Vrei sa-l montezi la tine sau vrei sa te joci cu mesajele de la el?

la 5c1 poti sa trimiti 0 tot timpu si valoarea pt buton apasat atata timp cat tii butonul apasat. 

schema.pdf

VID_20161030_211305.mp4

Link către comentariu
Distribuie pe alte siteuri

Salut,

Multumesc pentru schema.

Da vreau sa-l adaug la setup-ul din casa sa fac log-uri de can.

Link către comentariu
Distribuie pe alte siteuri

La tine merge sa schimbi meniurile cu comanda 0A sau 09 la id5c1? Te intreb deoarece m-am tot jucat si am observat ca doar daca bcm a configurat bordul pt comenzile astea merg, in rest merge doar daca tii apasat pe buton sus sau jos. 

Link către comentariu
Distribuie pe alte siteuri

Salut,

Nici la mine nu merge cu 0A sau 09. Trebuie sa tin apasat pe butonul de sus sau jos.

Link către comentariu
Distribuie pe alte siteuri

Am observat ca daca codez calc de coloana fara mfsw  cand pui contactul din nou, BCM seteaza bordul in modula acesta. Daca codezi la loc cu mfsw la o noua punere de contact se activeaza din nou. Dupa aceea poti sa scoti si bordul din alimentare si tot merge comana 0A/09. Daca scot bcm din circuit si las doar coloana de volan nu se activeaza/dezactiveaza daca codezi coloana cu sau fara. Ce am mai observat ca si BCM trimite ceva mesaje ca si radio/telefon etc cu id 6DF/6DE , probabil pt meniul de convenience si lights. Mai studiem :) 

bcm fara comenzicomenzi.trc

comenzi volan.txt

comenzi maneta.txt

Modificat de terrabyt
Link către comentariu
Distribuie pe alte siteuri

  • 2 weeks later...

Catalin daca vrei sa faci un modul mai mic, iti pot trimite un pcb ce am facut eu pt un modul  de volan. Are 45x35mm, si e in jurul la un atmega32/64m1. Ai o interfata de LIn, 1 Can intern al atmega-ului si un al 2-lea can cu un mcp2515 ca la arduino tau. Mai are 4 iesiri analogice 0-12V. Daca crezi ca te ajuta anunta-ma.

20170214_225634.jpg

schema.png

Link către comentariu
Distribuie pe alte siteuri

  • 3 months later...

Pentru ca vara nu dorm... :))

20170627_201710554_iOS.thumb.jpg.9c766e4d35553607cdd0d78f21304de8.jpg

20170627_201735861_iOS.thumb.jpg.fe58d3293623837e77b8bc9930dd061c.jpg

20170627_201818907_iOS.thumb.jpg.b8d2cd53016624032852a137c6b61538.jpg

Greu cu cercetarea, dar proiectul continua.

Link către comentariu
Distribuie pe alte siteuri

  • 4 weeks later...

Salut !

Meniul este facut ca si library pentru arduino ?

Daca da, ma poti ajuta si pe mine cu acel library?

Link către comentariu
Distribuie pe alte siteuri

Salut,

Am folosit o librarie pentru shield-ul de CAN, dar meniul nu are nici o legatura cu libraria. Meniul este dinamic si se creeaza folosind un protocol facut de VW peste CAN prin care se trimit mesaje mai mari de 8 bytes. De exemplu ca si inspiratie, asa comunica si RCD/RNS cu Instrument Cluster-ul.

Din pacate nu pot sa ofer detalii despre ce se intampla acolo la nivel de biti de informatie.

Daca vrei pot sa te ajut sa iti faci un sniffer de can si sa asculti comunicatia intre RCD si Cluster.

Link către comentariu
Distribuie pe alte siteuri

  • 4 weeks later...

Salut! Foarte frumos ce vad aici! Ai mai reusit sa faci ceva la proiectul asta?  Ceva noutati?

Link către comentariu
Distribuie pe alte siteuri

@Emy D 

Salut! Din pacate nu am mai reusit sa fac mare lucru. M-am lovit de niste probleme pe partea de programare.

De exemplu:

La inceput se trimit cateva mesaje de la Telematics catre Cluster in care ii spune ca Telematics este prezent pe masina si face un request sa afiseze continut pe display. Cluster-ul raspunde. Dupa care la fiecare 500ms se trimite un mesaj cu id-ul modulului telematic. Dupa care trebuie sa trimit ce vreau sa afisez pe display. 

Ideea este ca trebuie sa citesc si ce trimite cluster-ul catre telematics. Pentru asta am nevoie de intreruperi. Adica trebuie sa ascult mereu ce trimite cluster-ul si sa fac un filtru dupa id-urile care ma intereseaza. Si in momentul in care primesc un id care imi trebuie, executia programului se intrerupe si ii trimite cluster-ului mesajul corespunzator.

Daca vreun coleg stie cum sta treaba cu intreruperile la arduino si vrea sa dea o mana de ajutor este binevenit. :)

Link către comentariu
Distribuie pe alte siteuri

Catalin, la arduino nu ma prea pricep dar principiu trebuie sa fie acelasi. Banuiesc ca shield tau de can are ceva mcp2515, il poti configura sa te anunte cand s-a receptionat id care te intereseaza (are vreo 6 filtre) la pinii rx0bf sau rx1bf, care le legi la o intrerupere a microcontrollerului din arduino. Configurezi intreruperea pe low level , iar cand aparea interuperea citesti mesajul din mcp. Parca trebuie resetat flag dupa ce citesti registru. Id banuiesc ca este acelasi dar trebuie sa faci detectia la diferite lungimi. Incerc sa te ajut  cu cat ma pricep si eu, eventual posteaza cum arata o secventa.

Link către comentariu
Distribuie pe alte siteuri

  • 3 weeks later...

Hello

Ieri impreuna cu @GabiB77 ne-am jucat cu un IC cu display alb de Passat pe Jetta din semnatura. Am pornit masina cu cel original dupa care le-am schimbat intre ele. In prima faza am conectat doar firele de alimentare si CAN. Aparent pe CAN vine RPM corect. Pompa de ABS urla de zor dupa cum se vede si in filmulet. Ulterior am refacut toate conexiunile din mufa si am mai rezolvat din erori, in plus afiseaza temperatura apa si combustibilul din rezervor.

In schimb nu imi este clar de ce dupa cateva minute ventilatoarele de la motor pornesc la turatie maxima si nu se opresc decat cu IGNITION OFF. Chiar si cu motorul oprit cu ceasurile de Passat montate, pun contactul iar dupa cateva secunde pornesc ventilatoarele. Daca stie cineva please let me know.

As incerca un retrofit la asa ceva inclusiv montaj in bord cu tot cu rama adaptoare in jurul ceasurilor, eventual facuta custom, sau cea de Passat taiata pe dimensiunea bordului.

Dar trebuie sa vad ce se intampla cu ventilatoarele si eventual sa cercetez cu partea de IMMO Off.

 

p.s. Aceste ceasuri sunt in mile. Le-am cumparat doar pentru teste

Modificat de Dobre Catalin
Link către comentariu
Distribuie pe alte siteuri

Am rezolvat-o cu ventilatoarele. Mi-am facut mufa adaptoare de la 36 la 32 pini. Am facut si un test in mers. Din pacate ABS-ul face urat. In plus dupa ce trec de 35-40 km/h cade vitezometrul la 0. Mai cercetam:

IMG_0672.thumb.jpg.f73716b549153edf3c85ec9ba58f9909.jpg

IMG_0673.thumb.jpg.6cf0136d73ef1e696dc25774313d0e6d.jpg

 

Link către comentariu
Distribuie pe alte siteuri

Pentru a adăuga comentarii este necesară înregistrarea sau autentificarea

Trebuie să aveţi un cont de membru pentru a adăuga comentarii

Înregistrare membru

Înscrierea unui nou cont de membru. Este foarte uşor!

Înregistrare cont nou

Autentificare

Aveţi deja un cont de membru? Conectaţi-vă aici.

Autentificare în cont
 Share

  • Activi pe această pagină   0 membri

    • Niciun utilizator înregistrat nu vizualizează această pagină acum.
×
×
  • Create New...

 Functionarea acestui site este sustinuta de cele cateva bannere afisate intre posturi. Ar fi o placere pentru noi daca ar fi adaugat site-ul nostru in lista de exceptii ad-block in browserul tau. Promitem si veti vedea ca nu avem reclame intruzive si nici deranjante (nimic cu sunet,video sau all-screen). Multumim!