BMW Ibus project

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 2
Geregistreerd: 05 Jun 2018, 13:20
Woonplaats: Groesbeek

BMW Ibus project

Berichtdoor luckhermsen » 05 Jun 2018, 14:08

Hallo allemaal,

Allereerst, fijn dat er ook een Nederlands Arduino forum is. Dat communiceert toch net wat makkelijker!

Ik probeer het kort te houden, maar dat wordt ben ik bang toch lastig. Dus bij deze alvast hartelijk dank voor het geduld!
Momenteel ben ik bezig met een project dat er voor moet zorgen dat mijn Arduino met de canbus van mijn BMW e46 kan communiceren. Hierover communiceren de radio, lichtmodule, General Module, etc.
Hiervoor heb ik het Blog van Curious Ninja gevolgd: http://curious.ninja/blog/arduino-bmw-i ... ace-intro/
Daarmee zou alles op basis niveau moeten werken.

Dit is alles redelijk goed gelukt. De Arduino herkent ondertussen berichten en kan ook berichten sturen.
Zo heb ik bijvoorbeeld een test gedaan waarbij de ramen open gaan als de Volume + knop in de auto wordt ingedrukt. (Nutteloos natuurlijk, maar hey, it's for testing purposes :D )

Nu loop ik echter tegen een probleem aan waar ik met mijn beperkte C++ kennis absoluut niet uit kom.
Zodra ik langere berichten probeer te versturen (Bijvoorbeeld voor het aan doen van lampen) komt het bericht niet goed door.
Ik gebruik een 2de chip (dezelfde) die aan de computer hangt met een Serial/TTL converter om te debuggen. Het programma wat ik hiervoor gebruik (Navcoder) laat zien dat het bericht in stukjes aankomt.
Stuur ik het bericht sneller/vaker dan laat Navcoder het bericht wel correct zien. (de vraag is natuurlijk of het ook echt correct door komt naar de auto). Echter... Geen van de modules in de auto reageert.

Maar het gekste komt nog: Ik heb dit daarna met een ander bericht geprobeerd, waarop normaliter 4 units in de auto reageren. Stuur ik dit bericht met de Arduino, dan reageert slechts 1 van de 4 units in de auto...

Dit is hoe het er ongeveer uit ziet:

Code: Alles selecteren
Voorbeeld 1
Via Navcoder reageert de lichtmodule (LCM). De lampen gaan aan.
Waneer de Arduino/Module hetzelfde bericht verstuurt komt deze bij de eerste poging in stukjes aan, 2de en 3de poging in zijn geheel (althans, dat zegt Navcoder..)
Echter geen respons van de LCM.

NavCoder sent:
2018-05-18 17:02:56.684   3F 12 D0 0C 00 00 FF FF 62 3E 00 80 00 80 80 00 00 00 00 2D   DIA   LCM   Set IO status   Data="00 00 FF FF 62 3E 00 80 00 80 80 00 00 00 00"    [  ÿÿb> € €€    ]
2018-05-18 17:02:56.701   D0 03 3F A0 4C                     LCM   DIA   Diagnostic command acknowledged   Data=""    []

Arduino sent (reaction to Volume + button)
2018-05-18 17:03:57.184   50 04 68 32 11 1F                  MFL   RAD   Volume Control   Increase 1 step
2018-05-18 17:03:57.232   12                                    WARNING: Discarded data
2018-05-18 17:03:57.279   D0 0C 00 00 FF FF 62 3E 00 80 00 80 80 00         LCM   GM   Cmd_0x00   Data="FF FF 62 3E 00 80 00 80 80"
2018-05-18 17:03:57.296   00 00 00 2D                                 WARNING: Discarded data
2018-05-18 17:03:57.343   50 04 68 32 11 1F                  MFL   RAD   Volume Control   Increase 1 step
2018-05-18 17:03:57.367   50 04 68 32 11 1F                  MFL   RAD   Volume Control   Increase 1 step
2018-05-18 17:03:57.500   3F 12 D0 0C 00 00 FF FF 62 3E 00 80 00 80 80 00 00 00 00 2D   DIA   LCM   Set IO status   Data="00 00 FF FF 62 3E 00 80 00 80 80 00 00 00 00"    [  ÿÿb> € €€    ]
2018-05-18 17:03:57.552   50 04 68 32 11 1F                  MFL   RAD   Volume Control   Increase 1 step
2018-05-18 17:03:57.691   3F 12 D0 0C 00 00 FF FF 62 3E 00 80 00 80 80 00 00 00 00 2D   DIA   LCM   Set IO status   Data="00 00 FF FF 62 3E 00 80 00 80 80 00 00 00 00"    [  ÿÿb> € €€    ]
2018-05-18 17:03:57.736   50 04 68 32 11 1F                  MFL   RAD   Volume Control   Increase 1 step



Voorbeeld 2
Bij versturen via Navcoder reageren de correct modules. LCM is degene die daadwerkelijk de lampen aan doet.
Als de Arduino/Module verstuurd, reageren gek genoeg alleen de EWS en GM.

Het laatste bericht van de LCM (Light dimmer Data="XX XX XX XX") is een status update die in een vaste interval wordt verzonden. Dit is dus geen reactie op het eerder verzonden commando om de lampen aan te doen.

Navcoder sent:
2018-05-18 17:53:05.586   3F 0B BF 0C 00 00 00 00 02 48 0A 06 C1   DIA   GLO   Set IO status   Data="00 00 00 00 02 48 0A 06"    [     H  ]
2018-05-18 17:53:05.623   9C 03 3F A0 00            CVM   DIA   Diagnostic command acknowledged   Data=""    []
2018-05-18 17:53:05.658   D0 03 3F A0 4C            LCM   DIA   Diagnostic command acknowledged   Data=""    []
2018-05-18 17:53:05.694   44 03 3F A0 D8            EWS   DIA   Diagnostic command acknowledged   Data=""    []
2018-05-18 17:53:05.728   00 03 3F B0 8C            GM   DIA   Diagnostic parameter error   
2018-05-18 17:53:05.763   F5 03 3F A0 69            CSU   DIA   Diagnostic command acknowledged   Data=""    []
2018-05-18 17:53:05.797   5B 03 3F FF 98            IHKA   DIA   Diagnostic command not acknowledged   
2018-05-18 17:53:07.046   D0 07 BF 5C FF FF A0 00 94      LCM   GLO   Light dimmer   Data="FF FF A0 00"


Arduino sent (reaction to Volume + button)
2018-05-18 17:53:07.311   50 04 68 32 11 1F         MFL   RAD   Volume Control   Increase 1 step
2018-05-18 17:53:07.352   3F 0B BF 0C 00 00 00 00 02 48 0A 06 C1   DIA   GLO   Set IO status   Data="00 00 00 00 02 48 0A 06"    [     H  ]
2018-05-18 17:53:07.388   44 03 3F A0 D8            EWS   DIA   Diagnostic command acknowledged   Data=""    []
2018-05-18 17:53:07.426   00 03 3F B0 8C            GM   DIA   Diagnostic parameter error   
2018-05-18 17:53:07.511   3F 0B BF 0C 00 00 00 00 02 48 0A 06 C1   DIA   GLO   Set IO status   Data="00 00 00 00 02 48 0A 06"    [     H  ]
2018-05-18 17:53:07.555   44 03 3F A0 D8            EWS   DIA   Diagnostic command acknowledged   Data=""    []
2018-05-18 17:53:07.592   00 03 3F B0 8C            GM   DIA   Diagnostic parameter error   
2018-05-18 17:53:08.786   D0 07 BF 5C FF C4 00 00 0F      LCM   GLO   Light dimmer   Data="FF C4 00 00"



Ik ben ondertussen aardig bekend met het systeem, maar voor iemand die hier niet eerder mee van doen heeft gehad zal het allemaal wat wazig zijn.
De Library met de C++ code en de info die hierboven staat zijn allemaal in de .zip te vinden die ook op de website staat, http://e46mods.com/#buginfoGo
De .zip is hier direct te downloaden (http://gofile.me/6uip3/HG7BHih4R).


Gezien het een vrij complex scenario is en ik zeer zeer dankbaar zou zijn voor de gouden tip / oplossing krijgt de persoon die het "oplost" €250 van mij.
Ik heb ook wat mede-studenten gevraagd of zij er naar willen kijken. Als daar reacties op komen zal ik ze hier posten.
De €250 heb ik er voor over gezien het een klein projectje (voor mede E46 liefhebbers) is waarvan ik hoop dat het een kant en klaar kastje kan worden. Dit moet dan voor een schappelijk bedrag aan te schaffen zijn.
En natuurlijk hoop ik dat dit bedrag ietwat stimuleert om er wat tijd in te stoppen.

Het is geen wereldbedrag, maar toch..


Iedereen bij voorbaat ontzettend bedankt voor de geïnvesteerde tijd en hulp!

Vriendelijke groet,
Luck

Advertisement

Gebruikers-avatar
Berichten: 1776
Geregistreerd: 06 Aug 2016, 01:03

Re: BMW Ibus project

Berichtdoor Koepel » 05 Jun 2018, 15:41

Hallo luckhermsen,

Dit forum werkt anders. Wanneer je een sketch laat zien, dan proberen we de vinger op de zere plek te leggen zodat je weer verder kunt.

Verbeter me als ik het verkeerd heb, maar dit lijkt aan de hand:
Via die link die je gaf (http://curious.ninja/blog/arduino-bmw-i-bus-interface-intro/) is er een link bij "Resources & Downloads" naar de libraries. Daar zijn verschillende versies van de library te vinden.

Je hebt daar een library gedownload, en die zelf weer online gezet, zonder te vermelden welke versie je hebt gepakt. Je geeft geen sketch en geen voorbeeld hoe je die library gebruikt en verder niets dat wij zouden kunnen uitproberen. Ik heb nog geen documentatie kunnen vinden hoe die library gebruikt moet worden.
Die library is onder andere gebaseerd op code van iemand die voor het eerst een stukje code maakte: https://forum.arduino.cc/index.php?topic=234125.0. De code is typisch code van een beginner. In de code is niet te lezen waarom de code op die manier is gemaakt en wat de bedoeling van de code is. Er zal best over de code nagedacht zijn, maar het inspringen is een rommeltje en daardoor is de code slecht te lezen. Er is geen rekening mee gehouden dat anderen het ook lezen, laat staan dat anderen er een fout in kunnen ontdekken.

Het zou geschikt zijn voor verschillende Arduino boards, maar ik heb niet kunnen vinden of de laatste versie ook op al die Arduino boards getest is. Ik weet ook niet welk board jij gebruikt.

De code is onnodig complex gemaakt, maar dat is het kenmerk van een beginner die vol aan code gaat intikken. Het probleem is echter niet dat de code complex is, maar dat het een rommeltje is.

Dit ziet er beter uit: https://github.com/harryberlin/Arduino-BMW-IBus-SerialInterface-MCP2025, maar toch zie ik daar een fout met het gebruikt van millis(), een zeer slordige "goto", een fout in het vermenigvuldigen van constanten, en onhandig gebruik van de String class die overal geconverteerd wordt naar gewone tekst.
Misschien zijn er nog andere.

Berichten: 2
Geregistreerd: 05 Jun 2018, 13:20
Woonplaats: Groesbeek

Re: BMW Ibus project

Berichtdoor luckhermsen » 05 Jun 2018, 17:09

Dank voor je uitgebreide bericht!

Ik begrijp dat dit forum niet bedoeld is om tegen betaling een probleem neer te gooien en te vragen of een ander het kan oplossen. Mijn welgemeend excuus als mijn bericht zo over kwam.

Ik ben me er niet bewust van geweest dat de maker van de code een beginner is. Dat zou inderdaad ook wel eens kunnen verklaren waarom het niet werkt.
Wat ik ondertussen wel heb geleerd is dat de chip die hier wordt gebruikt de betere keuze is. Al is de MCP2025 ook een optie ja.
Wellicht is het inderdaad beter om gebruik te maken van een andere library of code.

Ik heb zelf voldoende kennis om de functionaliteit te creëren die het project nodig heeft, echter kan ik niet goed genoeg programmeren om de code te schrijven die het canbus signaal omzet naar bruikbare code.
Ook moet ik er bij zeggen dat ik vooral op deze code heb gefocust omdat hier al min of meer een kant en klaar project voor was.

Ik zal eens gaan uitzoeken welke bestaande code er al beschikbaar is en deze samenvatten.
Zou je me dan kunnen helpen bij het maken van een geschikte keuze?

Ik gebruik momenteel overigens een Arduino Nano gezien het formaat.

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten