Inhaltsverzeichnis
Inhaltsverzeichnis
RS485 ist die Art und Weise, wie Geräte über lange Kabel kommunizieren. Es überträgt dieselben seriellen Daten, die Ihr Arduino ohnehin sendet, jedoch über Hunderte von Metern und durch elektrisches Rauschen hindurch, das eine normale Verbindung stören würde. Dieser Leitfaden erklärt, wie es funktioniert, wie man es verkabelt und wann es eingesetzt werden sollte.
Was ist RS485?
RS485 ist ein Standard für kabelgebundene serielle Kommunikation. Er definiert, wie Daten über ein Adernpaar übertragen werden, damit Geräte zuverlässig über lange Kabel kommunizieren können.
Sie finden ihn in Fabriken, Energiezählern, HVAC-Systemen, Gebäudesteuerungen und Industriesensoren. Es ist die übliche Lösung, wenn Geräte für I2C oder SPI zu weit voneinander entfernt sind und wenn WLAN oder Bluetooth nicht zuverlässig genug sind. Die meisten RS485-Geräte nutzen zusätzlich ein Protokoll namens Modbus.
Ein Mikrocontroller kann einen RS485-Bus nicht direkt ansteuern. Er benötigt einen Transceiver-Chip zwischen seinen UART-Pins und dem Kabel. Das RS-485 Transceiver-Breakout von Soldered verwendet den SN65176B und verfügt über Schraubklemmen für die Busleitungen.
Warum RS485 statt regulärer serieller Kommunikation verwenden?
Eine normale UART-Verbindung funktioniert über maximal wenige Meter. RS485 löst die drei Probleme, die bei einem langen Kabel zuerst auftreten:
- Distanz. Bis zu 1200 m bei niedrigeren Datenraten.
- Rauschen. Motoren, Relais und Netzleitungen in der Nähe des Kabels verfälschen die Daten nicht.
- Geräteanzahl. Bis zu 32 Standardgeräte teilen sich ein Adernpaar.
| Kommunikation | Am besten geeignet für |
|---|---|
| UART | Kurze serielle Kommunikation zwischen Geräten |
| I2C | Sensoren und Module innerhalb eines Geräts |
| SPI | Schnelle Kurzstreckenkommunikation |
| WLAN | Drahtlose vernetzte Projekte |
| RS485 | Lange kabelgebundene Sensor- und Steuerungsnetzwerke |
Unser I2C-Protokoll-Leitfaden und der SPI-Leitfaden behandeln die Kurzstrecken-Kommunikation.
Wie funktioniert RS485?
RS485 verwendet Differenzsignalisierung. Zwei Drähte, A und B genannt, führen immer entgegengesetzte Signale. Der Empfänger ignoriert die Spannung an jedem einzelnen Draht und liest nur die Differenz zwischen ihnen.
Rauschen von einem nahegelegenen Motor trifft beide Drähte gleichermaßen, sodass die Differenz gleich bleibt und die Daten durchkommen. Deshalb sind RS485-Kabel verdrillte Adernpaare: Das Verdrillen sorgt dafür, dass beide Drähte demselben Rauschen ausgesetzt sind.
- Der Mikrocontroller sendet UART-Daten.
- Der RS485-Transceiver wandelt diese in ein Differenzsignal auf A und B um.
- Das Signal wandert über das Kabel.
- Der empfangende Transceiver wandelt es zurück in UART-Daten um.
- Das zweite Gerät liest die Daten.
Die meisten RS485-Setups sind Halbduplex: Nur ein Gerät sendet gleichzeitig. Der Transceiver verfügt über einen Driver-Enable-Pin (DE), den Ihr Code auf High setzt, um zu senden, und auf Low, um zu empfangen.
Grundlagen der RS485-Verkabelung

- A an A, B an B. Jedes Gerät wird an dieselben zwei Leitungen angeschlossen.
- Gemeinsame Masse. Führen Sie ein Massekabel parallel zum Adernpaar, damit jedes Gerät dasselbe Referenzpotential hat.
- Bus statt Stern verwenden. Verlegen Sie ein Kabel von Gerät zu Gerät. Verzweigen Sie keine langen Kabel von einem zentralen Punkt aus.
- Beide Enden terminieren. Setzen Sie bei langen Strecken einen 120-Ω-Widerstand zwischen A und B am ersten und am letzten Gerät ein. Das Breakout von Soldered hat einen integrierten Widerstand, der über Jumper JP2 aktiviert wird.
- A und B tauschen, wenn nichts funktioniert. Hersteller kennzeichnen sie oft uneinheitlich.
Einige Netzwerke benötigen zudem Bias-Widerstände, um die Leitungen in einem definierten Zustand zu halten, wenn niemand sendet. Kurze Versuchsaufbauten funktionieren meist auch ohne.
RS485, Modbus und Protokolle
RS485 definiert nur das elektrische Signal. Es sagt nichts darüber aus, was die Bytes bedeuten. Modbus RTU ist das am häufigsten verwendete Protokoll, das darauf läuft: Es definiert das Nachrichtenformat, Geräteadressen und wie man ein Register ausliest.
Stellen Sie sich RS485 als die Straße und Modbus als die Verkehrsregeln vor. Ein RS485-Energiezähler spricht fast immer Modbus; um ihn auszulesen, brauchen Sie also beides: einen Transceiver für die Straße und eine Modbus-Bibliothek für die Regeln.
RS485 vs. RS232 vs. UART
| Merkmal | UART | RS232 | RS485 |
|---|---|---|---|
| Am besten geeignet für | Kurze Mikrocontroller-Verbindungen | Ältere serielle Geräte | Kabelgebundene Langstrecken-Netzwerke |
| Geräte | Meist 2 | Meist 2 | Bis zu 32 Standardlasten |
| Distanz | Kurz | Mittel | Bis zu 1200 m |
| Rauschfestigkeit | Niedrig | Mittel | Hoch |
| Häufige Nutzung | Module und Debugging | Ältere serielle Ausrüstung | Sensoren, Zähler, Automatisierung |
UART ist das Datenformat. RS232 und RS485 sind zwei Möglichkeiten, es über größere Distanzen zu übertragen. RS232 verwendet eine Leitung pro Richtung mit Massebezug, was die Distanz begrenzt. RS485 verwendet ein Differenzpaar, weshalb es weiter reicht und mehr Geräte verbinden kann.
Kann man RS485 mit Arduino, ESP32 und Raspberry Pi verwenden?
Ja, mit allen dreien. Jedes verbindet seine UART-Pins mit einem Transceiver, und der Transceiver verbindet sich mit dem Bus.
RS485 mit Arduino-kompatiblen Boards
Verbinden Sie TX des Boards mit dem D-Pin des Transceivers, RX mit R und einen digitalen Pin mit den zusammengeführten DE- und NRE-Pins. Zwei Boards und zwei Transceiver genügen, um die Grundlagen zu lernen und einfache Modbus-Experimente durchzuführen.
Das Soldered-Breakout läuft mit 5 V und passt daher direkt zu einem 5-V-Board. Das Make your own NULA Kit beinhaltet das Löten eines solchen Moduls aus Einzelteilen.
RS485 mit ESP32
Ein ESP32 kann einen RS485-Bus lesen und die Daten über WLAN an MQTT, ein Log oder Home Assistant senden. Das macht ihn zur Brücke zwischen kabelgebundenen Industriegeräten und einem drahtlosen System.
Der ESP32 verfügt über zusätzliche Hardware-UARTs, sodass der Bus den USB-Serial-Port nicht blockiert. Der einzige zusätzliche Schritt besteht darin, DE vor jeder Nachricht umzuschalten:
// Sende eine Zeile über RS485 von einem ESP32
HardwareSerial rs485(1); // ein freier Hardware-UART
const int RX_PIN = 14; // zum R-Pin des Transceivers
const int TX_PIN = 13; // zum D-Pin des Transceivers
const int DE_PIN = 12; // zu DE und NRE, zusammengeführt
void setup() {
rs485.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);
pinMode(DE_PIN, OUTPUT);
digitalWrite(DE_PIN, LOW); // Standardmäßig zuhören
}
void loop() {
digitalWrite(DE_PIN, HIGH); // Bus belegen
rs485.println("Hallo");
rs485.flush(); // Warten, bis das letzte Byte gesendet wurde
digitalWrite(DE_PIN, LOW); // Bus freigeben
delay(1000);
}
Ohne flush() gibt der Code den Bus frei, während die letzten Bytes noch gesendet werden, wodurch sie verloren gehen.
Prüfen Sie die Spannung. Der ESP32 läuft mit 3,3 V. Das Soldered-Breakout läuft mit 5 V, und sein R-Ausgang kann nahe 5 V ansteigen. Verwenden Sie einen Spannungsteiler oder Pegelwandler zwischen R und dem RX-Pin des ESP32.
Das NULA Mini ESP32-C6 verfügt über WLAN 6 und Bluetooth, was es zu einer guten RS485-zu-WLAN-Brücke macht.
RS485 mit Raspberry Pi
Der einfachste Weg ist ein USB-zu-RS485-Adapter, der als serieller Port erkannt wird. Sie können auch ein RS485-HAT oder einen Transceiver an den UART-Pins des Pi verwenden (mit der gleichen 3,3-V-Pegelanpassung wie beim ESP32). Der Pi kann dann das Dashboard, die Datenbank oder Node-RED und Home Assistant ausführen.
Praktische RS485-Projektideen
ESP32 RS485-zu-MQTT-Brücke
Fragen Sie RS485-Geräte von einem ESP32 ab und veröffentlichen Sie jeden Messwert per MQTT. Home Assistant erkennt sie wie jeden anderen Sensor. Unser ESPHome-MQTT-Leitfaden behandelt die drahtlose Seite.
Energiezähler-Dashboard
Die meisten DIN-Schienen-Energiezähler haben einen RS485-Modbus-Port. Lesen Sie Spannung, Strom und Gesamtenergie aus und zeigen Sie diese auf einem E-Paper-Display neben dem Sicherungskasten an. Das Inkplate 10 verfügt über ein 9,7-Zoll-Display und einen ESP32, es liest also den Zähler aus und zeichnet das Dashboard selbst.
Langstrecken-Sensornetzwerk
Platzieren Sie an jedem Ende eines Gebäudes einen kleinen Knoten mit jeweils eigenem Sensor und verbinden Sie alle über ein RS485-Kabel. Ein wasserdichter DS18B20 eignet sich für Rohre, Tanks und Außenmessungen.
Der NULA DeepSleep ESP32-S3 verbraucht zwischen den Messungen nur sehr wenig Strom, was für Knoten ideal ist, die aufwachen, berichten und wieder schlafen gehen.
Industrie-Datenlogger
Ein Raspberry Pi fragt jeden Zähler und Regler auf dem Bus ab und speichert die Werte in einer Datenbank. Mit Grafana können Sie einen Monat an Daten auf einen Blick sehen. Unsere Raspberry-Pi-Projektideen bieten weitere Bauvorschläge für den Pi.
Gewächshaus- oder Werkstatt-Überwachungsanzeige
Verkabeln Sie Temperatur- und Feuchtigkeitssensoren über RS485 im Gewächshaus oder der Werkstatt, wo kein WLAN hinkommt. Zeigen Sie die Werte auf einem farbigen E-Paper-Display an, das den ganzen Tag gut lesbar bleibt.
Häufige RS485-Fehler
- A und B vertauscht. Es kommt nichts an. Tauschen Sie die Kabel und versuchen Sie es erneut.
- Sternverkabelung. Reflexionen von jedem Abzweig verfälschen die Daten. Verwenden Sie einen kontinuierlichen Bus.
- Keine Terminierung bei langen Strecken. Setzen Sie 120 Ω an beide Enden, und nur an die Enden.
- RS485 mit Modbus verwechseln. Ein funktionierender Bus benötigt immer noch das richtige Protokoll, um einen Zähler auszulesen.
- Kein Transceiver. UART-Pins können einen RS485-Bus nicht direkt ansteuern.
- Spannungsinkompatibilität. Der Ausgang eines 5-V-Transceivers kann einen 3,3-V-Pin beschädigen.
- Doppelte Modbus-Adressen. Zwei Geräte antworten gleichzeitig, beide Antworten werden unbrauchbar.
- Annahme, drahtlos sei einfacher. Durch Betonwände oder neben Maschinen ist ein Kabel oft mit weniger Aufwand verbunden.
Wann sollten Sie RS485 einsetzen?
- Geräte sind zehn oder Hunderte von Metern voneinander entfernt
- das Kabel verläuft in der Nähe von Motoren, Relais oder Netzleitungen
- mehrere Geräte müssen sich ein kabelgebundenes Netzwerk teilen
- die Verbindung muss immer funktionieren
- das Projekt liest Industriesensoren, Zähler oder Steuerungen aus
- WLAN oder Bluetooth reicht nicht aus oder fällt aus
Wann sollten Sie RS485 nicht einsetzen?
- alle Geräte befinden sich in einem Gehäuse
- I2C, SPI oder UART erledigen den Job bereits
- das Projekt ist ein einfacher Versuchsaufbau auf dem Schreibtisch
- Sie benötigen sehr schnelle lokale Kommunikation
- das Projekt muss drahtlos sein
Warum Soldered der ideale Startpunkt für Projekte mit kabelgebundener Kommunikation ist
Ein Projekt kann mit zwei Boards und zwei Transceivern auf dem Schreibtisch beginnen und dann zu einer ESP32-Brücke, einem Raspberry-Pi-Logger oder einem Inkplate-Dashboard heranwachsen. Soldered bietet die Boards, Sensoren, Displays und Debugging-Tools für jeden Schritt.
Wenn die UART-Seite Probleme macht, bietet USB-Cereal eine serielle Konsole auf einem USB-C-Gerät über dessen Sideband-Pins, ganz ohne Header oder Demontage.
Häufig gestellte Fragen
Was ist RS485?
Ein Standard für kabelgebundene serielle Kommunikation für zuverlässige Datenübertragung über lange Kabel. Er ist weit verbreitet in der Industrieautomatisierung, bei Sensoren, Zählern, Steuerungen und Gebäudesystemen.
Ist RS485 ein Protokoll?
Kein vollständiges. Es definiert nur das elektrische Signal. Protokolle wie Modbus RTU laufen darauf.
Wie funktioniert RS485?
Es sendet Daten als Differenzsignal auf zwei Drähten, A und B. Der Empfänger liest die Differenz zwischen ihnen, was den Großteil des elektrischen Rauschens eliminiert.
Wofür wird RS485 verwendet?
Industrieautomatisierung, Modbus-Netzwerke, Energiezähler, HVAC, Langstreckensensoren, Zugangskontrolle, Umweltüberwachung und Maschinensteuerung.
Was ist der Unterschied zwischen RS485 und RS232?
RS232 verbindet zwei Geräte über eine kurze bis mittlere Distanz. RS485 verbindet viele Geräte auf einem Bus, über längere Distanzen und in raueren Umgebungen.
Was ist der Unterschied zwischen RS485 und UART?
UART ist das Format der seriellen Daten, die ein Mikrocontroller erzeugt. RS485 transportiert diese Daten über lange Kabel unter Verwendung eines Transceivers an jedem Ende.
Kann Arduino RS485 nutzen?
Ja, mit einem RS485-Transceiver-Modul. Der Arduino kommuniziert mit dem Transceiver über UART, und der Transceiver steuert den Bus an.
Kann ESP32 RS485 nutzen?
Ja, über einen Hardware-UART und einen Transceiver. Verwenden Sie einen Pegelwandler für die Empfangsleitung, wenn der Transceiver mit 5 V betrieben wird. Der ESP32 ist nützlich, wenn die Daten auch WLAN, MQTT oder Home Assistant erreichen sollen.
Kann Raspberry Pi RS485 nutzen?
Ja, über einen USB-zu-RS485-Adapter, ein RS485-HAT oder einen Transceiver an den UART-Pins. Dies eignet sich für Logging, Dashboards und Modbus-Automatisierung.
Ist RS485 besser als I2C?
Für lange Kabel und raue Umgebungen ja. I2C ist besser für kurze Verbindungen zwischen Bauteilen innerhalb eines Geräts.