Forum: Mikrocontroller und Digitale Elektronik OBD 2 Adapter als CAN interface


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Lars L. (lloesche)


Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen liebes Forum,

Ich spiele mit dem Gedanken, in meiner Bastelkistenumgebung mit CAN zu 
experimentieren.

Erstmal was verhältnismäßig simples, zwei oder drei Mikrocontroller die 
miteinander fröhlich kommunizieren.
Ich möchte auch gerne meinen Rechner irgendwie in den Bus hängen um 
Pakete zu empfangen und zu senden.

Nun habe ich einen billigen OBD2-Bluetooth Adapter den ich hin und 
wieder für mein Auto benutze.
Da stelle ich mir die Frage, ob es nicht möglich wäre, den Adapter als 
Interface für den Rechner zu verwenden?

Zur Klarstellung, das soll kein KFZ-Projekt werden.

Danke, Gruss,
Lars

von Schorschi (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

such mal nach ELM327 mit Arduino. Da gibt es schon fertige Libs die man 
als Beispiel verwenden kann.

Gruß.

von MBterm (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Schorschi schrieb:
> Hi,
>
> such mal nach ELM327 mit Arduino. Da gibt es schon fertige Libs die man
> als Beispiel verwenden kann.
>
> Gruß.

Stimmt. Damit kannst du die meisten Autos auslesen.

von Gerd B. (bertr2d2) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Gerade am Anfang würde ich ein vollwertiges CAN-Interface nehmen. Das 
ermöglicht auch eine erweiterte Fehlerdiagnose. Sofern Linux eine Option 
ist bietet sich der Banana Pi M1 (integrierter CAN-Controller) oder RPi 
mit MCP2515 an.

ELM327 sind langsam und decken nur eine Teilmenge der CAN-Möglichkeiten 
ab.

von Lars L. (lloesche)


Bewertung
0 lesenswert
nicht lesenswert
Gerd B. schrieb:
> ELM327 sind langsam und decken nur eine Teilmenge der CAN-Möglichkeiten
> ab.

Ok, das ist mal ein Punkt. Aber was genau meinst du mit Teilmenge?

Die Frage nach der prinzipiellen Verwendbarkeit so eines OBD Adapters 
bezog sich hauptsächlich auf die Tatsache das er nunmal im Haus ist.

von Soul E. (souleye) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Lars L. schrieb:

> Ok, das ist mal ein Punkt. Aber was genau meinst du mit Teilmenge?

Stell es Dir vor wie ein Gerät mit LAN-Schnittstelle, das ausschließlich 
das BitTorrent-Protokoll versteht. Ja, man kann damit ein Netzwerk 
prüfen. Es damit Schritt für Schritt in Betrieb nehmen ist aber nicht 
möglich.


> Die Frage nach der prinzipiellen Verwendbarkeit so eines OBD Adapters
> bezog sich hauptsächlich auf die Tatsache das er nunmal im Haus ist.

Der Adapter sendet Diagnoseanforderungen am Bus und erwartet 
entsprechende Antworten. Wenn Du also mit Deinem zweiten Teilnehmer ein 
OBD-Diagnosegateway implementierst dann kannst Du das testen.

Ansonsten wäre irgend ein anderes Gerät, was einfach zyklisch Daten 
sendet, für den Anfang praktischer. Z.B. ein ESP-Sensor, oder ein 
Evalboard mit bekannt funktionierender Demo-Software.

von Reiner O. (elux)


Bewertung
0 lesenswert
nicht lesenswert
Soul E. schrieb:

> Der Adapter sendet Diagnoseanforderungen am Bus und erwartet
> entsprechende Antworten. Wenn Du also mit Deinem zweiten Teilnehmer ein
> OBD-Diagnosegateway implementierst dann kannst Du das testen.

Ganz genau so ist es.
Das Datenblatt des ELM327 ist ja nicht geheim, lies es doch mal!

Am einfachsten ist es wahrscheinlich, (Atmel-) Arduinos und diese 
billigen "Ni Ren" CAN - SPI Interfaces zu nehmen. Dazu gibt es genügend 
Bibliotheken und Beispielsketche und kosten tut der Kram auch nix.

Und im Gegensatz zum ebenso möglichen Banana Pi M1 (oder Orange Pi Zero 
mit "Ni Ren") hast Du mit den Atmels keine Probleme bei den 
Pegeln/Stromversorgung; ein nicht zu unterschätzender Punkt: 
Hardwareprobleme ausschliessen zu können, wenn man mit etwas 
"Unbekanntem" anfängt zu experimentieren...



Gruß

Elux

von Michael K. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gerd B. schrieb:
> Gerade am Anfang würde ich ein vollwertiges CAN-Interface nehmen.

Der Meinung bin ich auch. Sonst bastelt man mehr am Interface als am 
eigentlichen Projekt. Ich hab dafür den USBtin aufgebaut.

von Gerd B. (bertr2d2) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Michael K. schrieb:
> Gerd B. schrieb:
>> Gerade am Anfang würde ich ein vollwertiges CAN-Interface nehmen.
>
> Der Meinung bin ich auch. Sonst bastelt man mehr am Interface als am
> eigentlichen Projekt.

ich sehe das genauso. Ich stand Anfangs auch vor dem gleichen Problem 
beim CAN-Einstieg. Man braucht etwas, auf das man sich verlassen kann; 
auf etwas wo man weiss das es funktioniert.

> Ich hab dafür den USBtin aufgebaut.

Der USBtin bzw. die SLCAN API hat aber keine erweiterten Möglichkeiten 
wie Erkennung von Bus-Fehlern. Hier mal ein Beispiel des Banana Pis mit 
Linux und SocketCAN bei dem ein CAN-Frame auf den Bus gesendet wird wo 
kein anderer Teilnehmer verbunden ist:
1
BPi:~# candump -tA -a -xe can0,0:0,#FFFFFFFF
2
 (2020-05-13 10:27:29.477281)  can0  RX - -  2000008C   [8]  00 08 81 00 00 00 88 00   ERRORFRAME
3
  controller-problem{tx-error-warning}
4
  protocol-violation{{single-bit-error,error-on-tx}{}}
5
  bus-error
6
  error-counter-tx-rx{{136}{0}}
7
 (2020-05-13 10:27:29.477287)  can0  RX - -  20000004   [8]  00 20 00 00 00 00 88 00   ERRORFRAME
8
  controller-problem{tx-error-passive}
9
  error-counter-tx-rx{{136}{0}}
10
 (2020-05-13 10:27:29.483440)  can0  RX - -  20000040   [8]  00 00 00 00 00 00 8F 00   ERRORFRAME
11
  bus-off
12
  error-counter-tx-rx{{143}{0}}
13
 (2020-05-13 10:27:29.500108)  can0  RX - -  20000100   [8]  00 00 00 00 00 00 00 00   ERRORFRAME
14
  restarted-after-bus-off

Gerade am Anfang sind solche Fehlermeldungen sehr hilfreich.
Der RPi, oder jeder beliebige SBC mit MCP2515 liefert so etwas auch.

Gruß

Gerd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.