Serielle Kommunikation zwischen Arduino und RPI über TX / RX-Pins

7

Ich arbeite derzeit an einem Projekt, bei dem ein Arduino mit einem Pi kommunizieren muss. Da der Pi keine USB-Anschlüsse mehr hat, muss ich die UX / TX-Anschlüsse des Arduino und des Pi verwenden.

Die Kommunikation zwischen diesen besteht aus dem Schreiben und Lesen von Rostopic, was bedeutet, dass Rosserial die serielle Kommunikation herstellt.

Ich habe dies nur mit USB und zwischen einem PC und Arduino getestet, was gut funktioniert, aber ich habe es an diesen Pins getestet und bin in einigen Dingen etwas unsicher.

Muss ich bestimmte Stifte verwenden? Und sollten sie für die serielle Kommunikation eingerichtet sein? in diesem Fall wie?

Ich denke, ich würde einen Logikpegelwandler brauchen. Es sollte leicht mit einem Spannungsteiler hergestellt werden können. Aber sollten beide getrennte haben oder ist nur einer genug?

J. Down
quelle
Hallo und Willkommen. Überprüfen Sie diese raspberrypi.stackexchange.com/questions/553/… und raspberrypi.stackexchange.com/questions/26219/… , um eine erste Idee zu erhalten.
Ghanima

Antworten:

1

Ich denke, ich würde einen Logikpegelwandler brauchen

Ja. Ich glaube nicht, dass es eine Anordnung von Spannungsteilern gibt, die Sie für den TX des Pi verwenden können -> Arduino RX. Sie benötigen also mindestens einen 2-Kanal-Shifter, der entweder bidirektional ist oder einen Kanal in jede Richtung hat.

Ich benutze einen Schalthebel wie den hier gezeigten und beschriebenen . Obwohl das eine Frage zu "Arduino-Geräten" ist, mache ich das meistens direkt mit dem Arduino selbst.

Die Beziehung ist meiner Erfahrung nach bei der maximalen Baudrate des Arduino (115200) sehr zuverlässig. Das, worauf Sie achten müssen, ist das Zustandsmanagement - Sie sollten die Möglichkeit haben, das Arduino auf einen vorhersehbaren Zustand zurückzusetzen. Dies ist normalerweise ziemlich einfach, da es schwierig ist, eine Situation zu schaffen, in der das einfache Drücken von "Zurücksetzen" nicht funktioniert, da das Format selbst dann nicht sein sollte, wenn der Inhalt der an diesem Punkt gesendeten Informationen unbekannt ist (z. B. eine Reihe von) 3 2-Byte-Ganzzahlen ohne Vorzeichen bilden eine Nachricht oder was auch immer).

Wenn Sie dies aus der Ferne tun müssen, können Sie einen GPIO an den Reset-Pin des Arduino anschließen. Sie müssen ihn nur kurz nach unten ziehen und für den normalen Betrieb hoch lassen. Dies muss auch durch den Pegelumsetzer gehen . Wenn Sie also glauben, dass Sie möchten, benötigen Sie mindestens 3 Kanäle. Die vier Kanäle sind sowieso sehr verbreitet und billig.

Goldlöckchen
quelle
Dank dafür. Mein nächster Stopp, sobald ich die Arduinos dazu gebracht habe, miteinander zu sprechen, ist das Einschließen des Rpi3. Ich kann I2C dafür noch verwenden, nachdem @Joan das gpgio-Paket aktualisiert hat, um es einzuschließen. Ich bin neu in all dem, aber ich bin mir sicher, dass ich Dinge zum Laufen bringen kann, sobald ich ihre Parameter kenne.
SDsolar
1

Sie sollten den RPI Tx nicht verschieben müssen ---> Arduino RX Der Arduino kann die vom pi erzeugte 3,3-V-Logik lesen, sodass Sie Arduino TX ---> RPI RX mit einem einfachen Spannungsteiler verschieben können

Das RPI3 hat ein anderes Setup für den UART, es gibt tatsächlich 2, die verwendet werden können (nicht gleichzeitig). Einer ist immer an die Bluetooth-Einheit gebunden (glaube ich). Der Standard ist der bessere (stabilere) der beiden wird für Bluetooth verwendet und der andere ist mit den UART-Pins am GPIO verbunden. Schauen Sie sich das also unbedingt an. Wenn Sie das Verzeichnis / dev auflisten, wird das verknüpfte Gerät unter Serial1 angezeigt (was immer auf den tatsächlich verwendeten UART verweist). Wenn Sie jedoch Leistungsprobleme haben, können Sie wechseln, welcher interne UART mit dem GPIO verbunden ist

Hier ist eine Lektüre über die UARTS auf dem Pi

Chad G.
quelle