Startseite>Serielle Kommunikation über RS-485 mit dem Raspberry Pi
Aus Raspberry Pi Geek 02/2020

Serielle Kommunikation über RS-485 mit dem Raspberry Pi (Seite 2)

Listing 2

$ sudo apt install picocom
$ picocom -b 9600 -d 8 -f n -p e /dev/serial0

Optionen

Erklärung

-b

Baudrate, im Beispiel 9600 Bit/s

-d

Anzahl der Datenbits in einem Frame

-f

Datenflusskontrolle (n = kein Flow Control)

-p

Parity (e = Even-Parity).

Im Testaufbau sendet Picocom so alle Tastatureingaben an die Gegenstelle, also an den eigenen Raspberry Pi, der wiederum sich selbst antwortet. Im Beispiel in Abbildung 2 haben wir Hello World! eingegeben, die Antwort erscheint dann auf dem Bildschirm.

Abbildung 2: Der Raspberry&nbsp;Pi f&uuml;hrt Selbstgespr&auml;che. Das lokal eingetippte <code>Hello World!</code> erscheint umgehend auf dem eigenen Bildschirm.

Abbildung 2: Der Raspberry Pi führt Selbstgespräche. Das lokal eingetippte Hello World! erscheint umgehend auf dem eigenen Bildschirm.

Zur Kontrolle der Verbindung stecken Sie das Kabel kurzzeitig vom RXD-Pin ab – daraufhin sollten die Eingaben nicht mehr im Terminal auftauchen. Sobald Sie das Kabel erneut anstecken, steht die Leitung wieder und die Ausgabe der Eingaben geht direkt weiter.

Um eine neue Zeile einzugeben, tippen Sie [Strg]+[J], gefolgt von der Eingabetaste. Kommandos wie etwa [Strg]+[C] leitet Picocom an die Gegenstelle weiter. Um das Programm zu schließen und somit die Verbindung zu trennen, drücken Sie [Strg]+[A] als Steuertaste und anschließend [Strg]+[X] als Kommando zum Beenden.

Erst einmal nur UART

Selbstgespräche funktionieren also, doch ein Dialog zwischen zwei Teilnehmern macht mehr Spaß. Um zwei Mini-Rechner über eine serielle Leitung miteinander zu verbinden, müssen Sie auch den zweiten RasPi wie bereits gezeigt vorbereiten. Anschließend verbinden Sie den TX-Pin des ersten RasPi mit dem RX-Pin des zweiten sowie den TX-Pin des zweiten RasPi mit dem RX-Pin des ersten (Abbildung 3).

Abbildung 3: Die serielle Verbindung zweier Raspberry&nbsp;Pis erfolgt &uuml;ber einen UART-Crossover-Anschluss. (Bild: Raspberry&nbsp;Pi&nbsp;Foundation, CC-BY-SA)

Abbildung 3: Die serielle Verbindung zweier Raspberry Pis erfolgt über einen UART-Crossover-Anschluss. (Bild: Raspberry Pi Foundation, CC-BY-SA)

Mit diesem Aufbau gibt der erste Raspberry Pi die Ausgaben des zweiten aus und umgekehrt (Abbildung 4). Dazu müssen jedoch die Aufrufparameter von Picocom an beiden RasPis exakt übereinstimmen (Listing 3). Mit diesem Grundaufbau können Sie nun Dateien seriell übertragen, ein Programm zur seriellen Kommunikation in Python schreiben oder ganz eigene Anwendungsfälle entwickeln.

Abbildung 4: Der Raspberry&nbsp;Pi <code>pione</code> erh&auml;lt von <code>pitwo</code> eine Nachricht.

Abbildung 4: Der Raspberry Pi pione erhält von pitwo eine Nachricht.

Listing 3

$ picocom -b 9600 -d 8 -f n -p e /dev/serial0

Bei der Gegenstelle muss es sich keineswegs unbedingt um einen Raspberry Pi handeln. Oft möchte man etwa mit einem Mikrocontroller über eine serielle Schnittstelle sprechen, beispielsweise mit dem beliebten ESP8266. Dabei sollte man allerdings immer sicherstellen, dass die Signalpegel des Gegen-UARTs ebenfalls bei 3,3 V liegen und nicht etwa bei 5 V, sonst könnten die Pins des RasPi beschädigt werden.

RS-485

Kommen wir nun zur Königsdisziplin, dem Aufbau von RS-485 auf einem Breadboard. Dazu benötigen Sie zwei RS-485-Transceiver-Chips; im Beispiel kommen zwei SN65HVD1782 von Texas Instruments zum Einsatz. Das dazugehörige Datenblatt stellt TI auf seiner Homepage zur Verfügung [2].

Die Pin-Belegung des Transceiver-Bausteins zeigt Abbildung 5, weitere Erklärungen dazu finden Sie in der Tabelle “Pinout des SN65HVD1782”. Das PDIP-Package (Plastic Dual In-line Package) des TI-Bausteins eignet sich aufgrund seiner Beinchen ideal für Experimente mit einem Breadboard.

Abbildung 5: Texas Instruments SN65HVD1782 Pinout. (Bild: Texas Instruments)

Abbildung 5: Texas Instruments SN65HVD1782 Pinout. (Bild: Texas Instruments)

Pin

Name

I/O

Beschreibung

1

R

Digital Output

Wird an den RX-Pin des jeweiligen RasPi angeschlossen.

2

RE

Digital Input

Receiver Enable Low: Der Receiver ist aktiv, falls er an GND des jeweiligen RasPi anliegt (kein gemeinsamer GND).

3

DE

Digital Input

Driver Enable High: Hier müssen Sie einen der Rechner auswählen. Im Beispiel ist pione der aktive RasPi. Der RS-485-Transceiver dieses Rechners wird mit Pin 3 an 3V3/VCC angeschlossen.

4

D

Digital Input

Driver Data Input: Wird an TX des jeweiligen RasPi angeschlossen.

5

GND

 

Masse.

6

A

Bus Input/Output

an A (Pin 6) des zweiten Chips – nicht kreuzen.

7

B

Bus Input/Output

an B (Pin 7) des zweiten Chips – nicht kreuzen.

8

3,3V

 

Versorgungsspannung.

Die Spannungsangabe in der Dokumentation widerspricht der unter Features gemachten Angabe auf der Homepage des Herstellers. Dort gibt TI einen geeigneten Spannungsbereich zwischen 3,3 und 5 Volt an. Für den Versuchsaufbau haben Sie aber sowieso keine Wahl, Sie müssen den Chip mit 3,3 Volt versorgen: Außer bei speziellen Chips ist die Versorgungsspannung üblicherweise maßgebend für die Pegel an den Logik-Pins, die Sie hier an den RasPi anbinden möchten – und der verträgt nur 3,3 Volt.

Nun gilt es, jeweils einen der Transceiver-Chips mit jeweils einem der Mini-Rechner zu verbinden. Auf dem Chip markiert eine kleine Kuhle Pin 1 (Abbildung 6). Beim Aufbau müssen Sie nicht unbedingt die Jumper in einer Linie direkt am Chip platzieren. Es genügt, sie nach hinten hin zu verteilen, sodass ausreichend Platz für die Verkabelung bleibt (Abbildung 7).

Abbildung 6: Ein kleiner Punkt markiert auf dem TI SN65HVD1782 den Pin&nbsp;1. (Bild: Texas Instruments)

Abbildung 6: Ein kleiner Punkt markiert auf dem TI SN65HVD1782 den Pin 1. (Bild: Texas Instruments)

Abbildung 7: Der Testaufbau f&uuml;r RS-485 auf dem Breadboard zwischen zwei Raspberry&nbsp;Pi.

Abbildung 7: Der Testaufbau für RS-485 auf dem Breadboard zwischen zwei Raspberry Pi.

Im Beispiel bleibt der Receiver immer aktiv, sodass der RasPi sich auch selbst beim Senden hört. Um die Verbindung zu starten, melden Sie sich nun an beiden Systemen an, entweder lokal oder über SSH. Achten Sie beim Aufbau der Verbindung auch wieder darauf, dass die auf beiden Systemen aufgerufenen Kommandos exakt übereinstimmen (Listing 3).

Eingaben bei pitwo werden verworfen, da wir ihn nicht auf dem RS-485-Bus aktiviert haben. Der UART schreibt daher ins Leere, es erscheint nichts im Terminalfenster. Eingaben auf pione sollten hingegen sowohl dort (Abbildung 8) als auch auf pitwo auftauchen. Die Kommunikation über RS-485 steht damit.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland