[erledigt] Arduino <-> Raspberry Pi - seriell

Hallo allerseits!

Ich möchte einen Arduino und einen Raspberry Pi via serieller Schnittstelle verbinden. Auf Arduino-Seite möchte ich die softwareSerial-Bibliothek nutzen - auf RPi-Seite werde ich einen USB-Adapter verwenden, der einen dieser guten, alten 9-pol. Sub-D-Stecker hat.

Für die „Übersetzung“ von 3,3 V (RPi) und 5 V (Arduino) habe ich im Forum folgende Schaltung gefunden:

Meine Fragen dazu: Wie arbeitet die linke Schaltung? Ich hätte vermutet, dass TX des Pi an die Basis des Transistors geht, nicht an den Emitter. Da der Transistor anscheinend auf „Dauer-an“ gestellt ist, erfüllt der doch gar keine Aufgabe, oder doch?

Gruß

Gregor

Nein, der ist nicht auf Dauer an.
Der arbeitet so ohne das Signal zu invertieren.

Wenn TX an die Basis geht, dann wird das Signal invertiert.

Einfache Erklärung:
Wenn der PI-Ausgang LOW hat, steuert der Transitor durch (da Basis über 10k auf 3,3V) und gibt LOW auf Arduino RX.
Wenn PI-TX HIGH hat, sperrt der Transistor (da Basis und Emitter auf gleicher Spannung) und der Arduino RX hat HIGH 5 Volt.

HotSystems:
Nein, der ist nicht auf Dauer an.
Der arbeitet so ohne das Signal zu invertieren.
Wenn TX an die Basis geht, dann wird das Signal invertiert.
Einfache Erklärung:
Wenn der PI-Ausgang LOW hat, steuert der Transitor durch und gibt LOW auf Arduino RX.
Wenn PI-TX HIGH hat, sperrt der Transistor und der Arduino RX hat HIGH 5 Volt.

Danke!

Gruß

Gregor

Übrigens ist das auch das Prinzip der "einfachen" Levelshifter für I2C.
Bessere verwenden Mosfets.

HotSystems:
... (da Basis und Emitter auf gleicher Spannung) ...

Danke, dass Du das nachgeschoben hast. Das ist der Punkt, der den Groschen endgültig hat fallen lassen :slight_smile:

Gruß

Gregor

gregorss:
Danke, dass Du das nachgeschoben hast. Das ist der Punkt, der den Groschen endgültig hat fallen lassen :slight_smile:

Gruß

Gregor

Ja, gerne. Viel mir noch auf, dass man es noch besser erklären muss. :wink:

hi, gregor,

ich lasse rpi und arduino miteinander über serial reden, und verwende entweder gekaufte level-shifter mit mosfets oder auf eigenen platinen diese schaltung:

aber ich verbinde den arduino mit TX und RX auf der raspi stiftleiste, warum des usb-dingens. da mußt Du auch aufpassen, daß Du keinen RS232-adapter erwischt, sonst rauchts. die 9-poligen sind "meist" sowas.

gruß stefan

Eisebaer:
aber ich verbinde den arduino mit TX und RX auf der raspi stiftleiste, warum des usb-dingens. da mußt Du auch aufpassen, daß Du keinen RS232-adapter erwischt, sonst rauchts. die 9-poligen sind "meist" sowas.

Das USB-Dingens möchte ich nehmen, damit das Handling auf Pi-Seite möglichst unkompliziert ist. Wenn es steckt, gibt es automatisch ein /dev/ttyUSBx, das ich bei minicom konfigurieren kann. Ich habe zwar gesehen, dass es bei den GPIO-Pins des Pis welche gibt, an denen TXD und RXD steht, aber ich nehme an, dass die nicht so komfortabel gehandhabt werden können.

Mir ist inzwischen auch eingefallen, dass ich evtl. gar keine Pegelunterschiede habe. Ich nehme an (und werd's nachmessen), dass das USB-Serial-Ding mit 5 V-Pegel arbeitet.

Gruß

Gregor

gregorss:
Mir ist inzwischen auch eingefallen, dass ich evtl. gar keine Pegelunterschiede habe. Ich nehme an (und werd's nachmessen), dass das USB-Serial-Ding mit 5 V-Pegel arbeitet.
[/quote
Wofür dann die ganze Aufregung ?:wink:
]

HotSystems:
Wofür dann die ganze Aufregung ?:wink:

Damit ich etwas gelernt habe :slight_smile: Echt jetzt.

Gruß

Gregor

gregorss:
Damit ich etwas gelernt habe :slight_smile: Echt jetzt.

Ok...dafür machen wir das gern.

Alles gut, echt jetzt.

Ich nehme an (und werd's nachmessen), dass das USB-Serial-Ding mit 5 V-Pegel arbeitet.

Ein folgenschwerer Irrtum droht.

Wenn es einen 9polSub-D Stecker hat:

  1. wird es invertierte Pegel haben.
  2. RS232C sein, und damit auch V24

Warum nimmst du nicht einen der üblichen USB-TTL Adapter?

combie:
Ein folgenschwerer Irrtum droht.

Welche „schweren“ Folgen meinst Du? Dass ich herausfinden könnte, dass ich falsch liege?! Wäre nicht das erste Mal.

Gruß

Gregor

Ich weiß nicht, wie deine Schaltung mit -15V bis +15V auf den Signalleitungen klar kommt.
Mal ganz abgesehen von der invertierung..

Wieso mit der sowieso nötigen Invertierung rum schlagen....?

Warum nimmst du nicht einen der üblichen USB-TTL Adapter?

Oder steckst den Arduino nicht sofort mit seinem USB da dran?
Zu einfach?

combie:
...Oder steckst den Arduino nicht sofort mit seinem USB da dran?
Zu einfach?

Für Dich: Ja, zu einfach. Ich bin blöd.

Gruß

Gregor

Das verstehe ich jetzt nicht....

hi,

Das USB-Dingens möchte ich nehmen, damit das Handling auf Pi-Seite möglichst unkompliziert ist. Wenn es steckt, gibt es automatisch ein /dev/ttyUSBx

und für GPIO gibt es die dev/ttyAMA0. vorsicht, ich glaube bei neueren raspians heißt die dann serial0 oder serial1, kann grad nicht nachsehen.

außerdem muß es in der raspi-config eingeschaltet werden. ich arbeite seit jahren ohne probleme damit.

sollte es ein USB<>TTL-wandler sein, werden beide seiten mit 5V daherkommen, ist standard, wenn's ein USB<>RS232-wandler ist, wird der arduino sterben, vielleicht nicht gleich, aber ein datenaustausch wird jedenfalls nicht funktionieren.

gruß stefan

gruß stefan

Eisebaer:
... dev/ttyAMA0. vorsicht, ich glaube bei neueren raspians heißt die dann serial0 oder serial1, kann grad nicht nachsehen.
außerdem muß es in der raspi-config eingeschaltet werden. ich arbeite seit jahren ohne probleme damit. ...

Danke für die Info!

Da ich gerade erst einen RPi bestellt habe, damit ich ein zweites Gerät für Tests usw. habe, werde ich das mit der seriellen Schnittstelle bei den GPIO-Pins wohl mal probieren. Wofür sonst hat man Steckbretter ...

Gruß

Gregor