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?
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.
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.
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.
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 ?
]
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.
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 ...