Es geht darum, einen Dreh/Tip-Schalter (BMW iDrive) mit einem Arduino auszulesen. Nur den Schalter für sich alleine, nix anderes ist auf dem Bus, evtl. Signalbeeinflussungen oder "nicht normgerechte" Tricksereien sind völlig egal. Hat man damit z.B. mit einem Arduino und ohne speziellem CAN-Controller irgend eine Chance? Erkannt werden sollen die absolute Drehposition und der Klick-Event. Soweit ich zum CAN-Bus gelesen habe, haben die Signale max. um die 1 MHz ... aber vermutlich rückt der iDrive nur quasi auf "Anweisung" vom Busmaster inrgendwelche Pakete heraus, oder? Wenn es notwendig sein sollte, beschäftige ich mich natürlich selber intensiver damit, könnte aber doch sein, dass hier im Forum jemand schon mal sowas gemach hat ... ? Danke für Tips.
Frank E. schrieb: > Hat man damit z.B. mit einem Arduino und ohne speziellem CAN-Controller > irgend eine Chance? CAN per Software/Bitbanging zu nutzen ist extrem aufwändig, da man sehr präzises Timing benötigt. Selbst wenn es irgendwie möglich ist, macht der Controller dann absolut nichts anderes mehr. Einen Mikrocontroller mit integriertem CAN-Controller zu verwenden hingegen ist super einfach, noch einfacher als z.B. I²C. Hier findest du z.B. ein Arduino-kompatibles Board mit CAN-Controller & Transceiver, da musst du nur noch Strippen anklemmen: https://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/open-source-hardware Durch die gigantische Investition von 20€ ersparst du dir eine Unmenge an Aufwand.
Selbst als Bastellösung würde ich das nicht ohne CAN-Treiber und CAN-Controller versuchen, da das CAN-Protokoll eine Arbitrierung und Handshake auf Bitebene erwartet, ggfs. mit Wiederholung. Das ist nicht einfach in Software nachzubilden. --> Der Olimexino stm32 ist eine gute Wahl. Anschließend muss natürlich der Teilnehmer korrekt angesprochen werden, um die interessante Information zu liefern. Wenn es dafür keine Informationen zu Deinem Schalter gibt, musst Du erstmal herausfinden wie das geht... Beides nicht unaufwendig.
Andreas schrieb: > Anschließend muss natürlich der Teilnehmer korrekt angesprochen werden, > um die interessante Information zu liefern. Wenn es dafür keine > Informationen zu Deinem Schalter gibt, musst Du erstmal herausfinden wie > das geht... > Beides nicht unaufwendig. Das ist nicht gesagt. Ich kenne die HW des TE nicht, aber es kann genauso gut sein, dass der Teilnehmer (es ist ein Taster mit CAN-Interface) bei Betätigung seine ID mit Nutzdaten (An oder Aus) oder eine ID für An und eine für Aus sendet und fertig. Dann braucht es nicht mehr als einen offenen Message-Filter und einen Blick in die Nutzdaten, schon kann man die Daten nach belieben weiterverarbeiten.
Es gibt ja nun auch ein CAN-Shield für den Arduino. Aber bevor man raus hat wie die Daten auf dem Bus auszulesen sind, hat man das Teil schon mehrmals aufgemacht und die Signale direkt abgegriffen. Vor allem, wenn da noch ein Netzwerk-Management mit im Spiel sein sollte. Ich hatte sowas in der Art schon mal in den Fingern, da kam dann nach kurzer Überlegung eine eigene Platine rein statt der verbauten. Von dem iDrive gibt es auch diverse Versionen.
Wenn der CAN Controller kein Gegenüber hat, wer soll dann das Acknowledge schicken? Ohne ACK wird er senden bis er in den Bus Off Modus geht. Ich bezweifle das man das ACK "nachbauen" kann.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.