Hallo Leute, ich beschäftige mich seit einigen Wochen näher mit dem Thema IoT und habe mich schon mit entsprechender Hardware versorgt und auch schon ein paar gewisse Erfolgserlebnisse gehabt. Ich möchte mein Wissen gerne ausbauen und zwar über die CAN Kommunikation. Bisher habe ich meinen Raspberry und meinen Arduino UNO über I2C kommunizieren lassen und diverse Tutorials absolviert. Nun möchte ich gerne CAN Bus erlernen. Zu meinem Verständnis würde ich gerne erstmal wissen, was ich für ein Testsystem alles benötige (Hard- und Softwaremäßig)? Aktuell besitze ich wie schon erwähnt, einen Raspberry PI 3 mit Win 10 IoT, einen Arduino UNO + Starterkit und ein Arduino CAN Bus shield von SparkFun. Benötige ich einen MCP1525 CAN Controller? Benötige ich Treiber, wenn ja, welche? Welche Hardwareknoten würdet ihr empfehlen für ein Testbussystem? Würdet Ihr für den Anfang den Raspberry mit Win 10 IoT oder den Arduino zur CAN-Bus-Anbindung nehmen? Bitte nicht erschlagen, wenn teilweise Fragen dabei sind, die keinen Sinn ergeben, denn ich bin absolut Neu in der Materie der embedded systems ;) PS.: CanAtHome.de ist schon sehr gut, jedoch steige ich nach wie vor nicht dahinter bzw. seh immernoch nicht Lösungsweg um mein Testsystem aufbauen zu können. Danke im Voraus!
Du brauchst 2 Konten für dein Testsystem. Du kannst dem RPI auch mit einem CAN-Bus ausstatten. Ist aber nicht ganz trivial. Mit Windows 10 wirst du glaube ich nicht weit kommen. Es gibt zwar für den MCP2515 einen Linux Kernel Treiber aber der ist meines Wissens nicht im Standardkernel von Rasbian enthalten. D.h man muss den Kernel selber neu kompilieren. Kann sein das der Treiber mittlerweile im Standardkernel enthalten ist. Wenn du nach RPI +MCP2515 suchst findest du ein haufen Anleitungen. Habe gesehen das man fertige Boards kaufen kann wo schon der MCP2515 inkl. CAN Tranciever verbaut ist. Bei Ebay so für 1.80€ zu haben. Der CAN-Bus wird dann auf dem RPI softwaremassig über die Socket API angesprochen. Also ähnlich wie eine klassische Netzwerkverbindung über TCP/UDP. Wie gesagt CAN-Bus mit dem RPI geht. Ist sogar sehr günstig 2-3 € max. für die zusätliche Hardware. Aber man muss den Kernel mit dem Treiber neu bauen. Die Socket API von Linux bzw. BSD verstehen und man sollte wissen wie man für Linux Programme in C erstellt. So hast du am Ende zwei Knoten einmal dein RPI und dann dein Arduino Board.
Im aktuellen Raspian (Jessie) ist der mcp251x.ko enthalten. Je nachdem was man machen will ist manchmal auch ein billiger USB-Adapter die bessere Lösung: z.B. http://www.fischl.de/usbtin/ Socket-Can ist eine Spezialität unter Linux. Wenn man Programme schreiben will die unter Windows und Linux laufen sollen wird es damit schwierig. Dagegen ist das Lawicel-Protokoll an einer virtuellen COM-Schnittstelle auf allen Betriebssystemen (Windows,Linux,OSX) lauffähig.
Danke für deine ausführliche Antwort! :) volksvorg schrieb: > Habe gesehen das man fertige Boards > kaufen kann wo schon der MCP2515 inkl. CAN Tranciever verbaut ist. Bei > Ebay so für 1.80€ zu haben. Ich habe für den Arduino ein CAN-BUS-Shield welches einen CAN-Controller und CAN-Transceiver besitzt. Das ganze schaut so aus: https://cdn.sparkfun.com/r/600-600/assets/learn_tutorials/3/8/0/BoardFullySoldered.jpg Ich stelle mir jetzt folgendes vor: Angenommen ich habe 2 Arduino mit jeweils einen CAN-Bus-Shield. An jedem Shield hängt (irgend)ein Sensor z.B. Wasserstand oder Temperatur. Wie verbinde ich die beiden Arduino das Sie ein CAN Bus System ergeben? Also wo/was ist die Leitung, an dem ich die beiden Arduino's anschließen müsste? Zur Info: Auf dem CAN-Bus-Shield habe ich diverse Anschlüsse, u.a. CANH/CANL. Daran würde ich gerne z.B. (irgend)ein Sensor anschließen, was gibt es da und kann man die einfach so via CANH/CANL anschließen? Ich würde gerne noch etwas Ordnung in meine Gedanken bekommen: Folgende PDF http://www.ipsta.de/download/freies/CAN.pdf habe ich gefunden, die mir schon gut geholfen hat für das Verständnis. Auf Seite 2 ist die physikalische Abbildung von einem CAN Bus zu sehen. Wenn ich jetzt die Elemente nehme, die ich besitze, wie müsste ich Sie in die Zeichnung reininterpretieren? Also was ist was? Mein Verständnis ist so: - In der Zeichnung wäre der MikroController mein Arduino - In der Zeichnung wäre der CANController & CANTranceiver mein CAN-Bus-shield - In der Zeichnung wäre die CAN-Busleitung "Was bei mir???" Was ist der Bus, fehlen mir da nicht noch irgendwo die 120 Ohm Endstücke? !! <-- WENN CAN MAL STEHT DANN SOLLEN GANZ ZUM SCHLUSS... ...die beiden Arduino vom RPI über I2C angesprochen werden, um die Daten der Senoren einzusammeln. (Ich weiß, es ist vllt nicht praktikabel, aber ich möchte gerne mehr über CAN-Bus lernen und wie man die Daten visualisieren kann, deshalb so "umständlich")
:
Bearbeitet durch User
Tobias F. schrieb: > Mein Verständnis ist so: > - In der Zeichnung wäre der MikroController mein Arduino > - In der Zeichnung wäre der CANController & CANTranceiver mein > CAN-Bus-shield > - In der Zeichnung wäre die CAN-Busleitung "Was bei mir???" ein paar Meter verdrilltes Kabel, das jeweils die Anschlüsse CAN_H und CAN_L aller CAN shields verbindet. Zusätzlich werden noch die Massen verbunden. Wahrscheinlich hast Du dafür eine Klemme CAN_GND oder so, sonst ist das der Minuspol der Versorgung. > Was ist der Bus, fehlen mir da nicht noch irgendwo die 120 Ohm > Endstücke? An den ersten und letzten Shield in Deiner Kette kommt jeweils ein 120Ohm-Widerstand zwischen CAN_H und CAN_L. Du machst Dir das Leben leichter, wenn Du Dir irgendein Steuergerät besorgst, von dem Du weisst das der CAN funktioniert und irgendwelche Daten gesendet werden.
soul e. schrieb: > Du machst Dir das Leben leichter, wenn Du Dir irgendein Steuergerät > besorgst, von dem Du weisst das der CAN funktioniert und irgendwelche > Daten gesendet werden. An was denkst Du da konkret? Würde ein Autoradio mit CAN-Anschluss funktionieren? soul e. schrieb: ein paar Meter verdrilltes Kabel, das jeweils die Anschlüsse CAN_H und CAN_L aller CAN shields verbindet. Wie sind diese verbunden? CANH und CANL von Shield 1 geht direkt in CANH und CANL von Shield 2? Das macht ja kein Sinn, sobald ich mehrere Shields habe... Sorry, hab Geduld :)
Was soul e. meinte ist. Du solltest dir ein CAN zu USB Gerät zulegen um am Computer CAN-Nachrichten abzuhören oder zu erstellen. Mit einem fertigen Gerät kannst du dir sicher sein das dieses auf alle Fälle funktioniert. Eine Fehlerquelle ist somit schon mal ausgeschlossen. So nochmal zur Verdrahtung. Ja du schließt die einzelnen CAN Knoten hintereinander wie Perlen auf einer Kette. D.h Konten1 CANH zu Knoten 2 CANH, Knoten 2 CANH zu Knoten 3 CANH zu Knoten X CANH usw. Nur in den beiden Knoten am Busanfang und am Busende steckt nur ein Kabel. Und das gleiche gilt für CANl. Zusätzlich noch alle GNDs der Knoten verbinden. Der Knoten am Anfang und der Knoten am Ende brauchen einen sog.120 Ohm Abschlusswiderstand. Der wird zwischen CANH und CANL geschaltet.
Tobias F. schrieb: > Wie sind diese verbunden? CANH und CANL von Shield 1 geht direkt in CANH > und CANL von Shield 2? Du hast doch oben schon dieses PDF verlinkt: http://www.ipsta.de/download/freies/CAN.pdf Bild 2.4.2 und 2.4.3 zeigen den Anschluss der einzelnen CAN-Knoten (deine Shields). Den Rest des PDFs kannst du erst mal vergessen, ist für einen Einsteiger völlig unnötig. Für den Anfang reicht es zu wissen was CAN-ID, DLC und die acht Datenbytes sind. Tobias F. schrieb: > Das macht ja kein Sinn, sobald ich mehrere > Shields habe... Was macht keinen Sinn?
Ich habe ein ganz nettes Tutorial gefunden, welches zufällig meine Vorstellung relativ gut abdeckt. Ich will es nicht vorenthalten: http://matthewcmcmillan.blogspot.de/2013/10/arduino-sending-data-over-can-bus.html Interessant ist auch, dass die Shields einen eigenen 120 Ohm Widerstand besitzen und damit den Bus sauber schließen. Vielen Dank für Eure Unterstützung!
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.