ESP32 S3 RS485
RS485 (auch als RS-485 bekannt) ist ein weit verbreiteter serieller Kommunikationsstandard für die störfeste Datenübertragung über große Entfernungen in industriellen und eingebetteten Systemen. In diesem Tutorial lernen Sie, wie Sie die RS485-Kommunikation mit dem ESP32 S3 nutzen, indem Sie ihn an ein TTL-zu-RS485-Modul anschließen und so programmieren, dass er Daten sendet und empfängt.

Was Sie bauen werden:
- Eine Kabelverbindung zwischen dem ESP32 S3 und einem TTL-zu-RS485-Modul.
- ESP32 S3-Code, der die serielle RS485-Schnittstelle initialisiert.
- Einen Testaufbau, der Daten von Ihrem PC über RS485 an den ESP32 S3 sendet und das Echo zurückempfängt.
- Eine funktionierende RS485-Kommunikationsverbindung für industrielle oder serielle Anwendungen über große Entfernungen.
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Überblick über TTL to RS485 Module
Bei der seriellen Kommunikation am ESP32 S3 mit Funktionen wie Serial.print(), Serial.read() und Serial.write() erfolgt die Datenübertragung über den TX-Pin, während der Datenempfang über den RX-Pin stattfindet. Diese Pins arbeiten mit TTL-Pegel, das heißt, sie verarbeiten Signale mit einem begrenzten Spannungsbereich und eignen sich daher ohne Umwandlung nicht für die Kommunikation über große Entfernungen. Um Daten über größere Strecken zu senden, muss das TTL-Signal in einen robusten Standard wie RS485 umgewandelt werden, der Kabellängen von bis zu 1200 Metern und Bus-Topologien mit mehreren Geräten unterstützt.
In diesem Tutorial verwenden Sie ein TTL-zu-RS485-Modul, das die Signalumwandlung in beide Richtungen automatisch übernimmt, sodass der ESP32 S3 ohne zusätzlichen Hardwareaufwand über einen RS485-Bus kommunizieren kann.
Wichtige Spezifikationen
- Schnittstelle: TTL (3,3V/5V-kompatibel) auf der einen Seite, RS485-Differenzpaar auf der anderen
- Maximale Kabellänge: Bis zu 1200 Meter
- Maximale Baudrate: Bis zu 10 Mbit/s (abhängig vom Modul)
- Busteilnehmer: Unterstützt bis zu 32 Knoten an einem einzigen RS485-Bus
- Gängige ICs: MAX13487, MAX3485, SP3485
Pinbelegung
Das RS485-zu-TTL-Modul besitzt zwei Schnittstellen:
- TTL-Schnittstelle (mit dem ESP32 S3 verbunden):
- VCC-Pin: Dieser Versorgungspin sollte mit VCC (5V oder 3,3V) verbunden werden.
- GND-Pin: Dieser Versorgungspin sollte mit GND (0V) verbunden werden.
- RXD-Pin: Dieser Datenpin sollte mit einem TX-Pin des ESP32 S3 verbunden werden.
- TXD-Pin: Dieser Datenpin sollte mit einem RX-Pin des ESP32 S3 verbunden werden.
- D+ (A oder TR+) Pin: Dieser Pin dient der Datenkommunikation.
- D- (B oder TR-) Pin: Dieser Pin wird für die Datenübertragung verwendet.
- GND-Pin: Dieser Pin ist optional, sein Anschluss wird jedoch dringend empfohlen, um Störeinflüsse zu verringern und eine optimale Leistung sicherzustellen.

Verdrahtungsdiagramm
Schließen Sie das TTL-zu-RS485-Modul wie im folgenden Diagramm gezeigt an Ihren ESP32 S3 an. Verwenden Sie auf der TTL-Seite kurze, zuverlässige Jumper-Kabel und für das RS485-Differenzpaar ein verdrilltes Kabel, um Störungen zu minimieren.
Sicherheitshinweise
Halten Sie das RS485-Differenzpaar (D+/D-) von Stromleitungen und hochfrequenten Signalen fern. Verbinden Sie immer die RS485-GND-Leitung zwischen den Geräten, um einen gemeinsamen Bezug herzustellen und Gleichtaktstörungen zu verringern. Überschreiten Sie nicht die zulässige VCC-Spannung des Moduls.
| TTL-zu-RS485-Modul | ESP32 S3 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| RXD | TX2 (GPIO17) |
| TXD | RX2 (GPIO18) |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
So programmieren Sie den ESP32 S3 für das RS485-Modul
Die Programmierung des ESP32 S3 für die Kommunikation über RS485 ist unkompliziert, da das TTL-zu-RS485-Modul die gesamte Signalumwandlung transparent übernimmt. Sie initialisieren einfach die Hardware-Serielle Schnittstelle am ESP32 S3 und verwenden dann die Standard-Serial-Funktionen zum Senden und Empfangen von Daten, genau wie bei jeder UART-basierten Kommunikation.
Der folgende Code zeigt, wie Sie die serielle Schnittstelle für die RS485-Kommunikation initialisieren:
- Initialisiert die serielle Schnittstelle:
- Um Daten von RS485 zu lesen, können Sie die folgenden Funktionen verwenden:
- Um Daten an RS485 zu schreiben, können Sie die folgenden Funktionen verwenden:
- Weitere Funktionen für RS485 finden Sie in der Serial-Referenz
ESP32 S3 Code
Der folgende Code zeigt ein vollständiges RS485-Echo-Beispiel für den ESP32 S3. Alle am RS485-Bus empfangenen Daten werden sofort zurückgesendet, sodass sich die bidirektionale Kommunikation einfach von einem PC-Terminal aus testen lässt.
Schnelle Schritte
Führen Sie die folgenden Schritte aus, um die RS485-Kommunikation mit Ihrem ESP32 S3 einzurichten und zu testen:
- Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
- Verdrahten Sie das TTL-zu-RS485-Modul gemäß dem obigen Schaltplan mit dem ESP32 S3.
- Verbinden Sie den ESP32 S3 über das USB-Type-C-Kabel mit Ihrem PC.
- Öffnen Sie die Arduino IDE und fügen Sie den oben gezeigten ESP32 S3-Code ein.
- Wählen Sie im Menü Tools der Arduino IDE das richtige Board und den COM-Port aus.
- Klicken Sie auf Upload, um den Code auf den ESP32 S3 zu flashen.
- Verbinden Sie die RS485-Leitungen D+/D- mit einem USB-zu-RS485-Wandler, der an Ihren PC angeschlossen ist.
- Geben Sie im Terminal einen Text ein und drücken Sie Enter — wenn alles korrekt verdrahtet ist, sehen Sie die vom ESP32 S3 zurückgesendeten Daten.
- Profi-Tipp: Verwenden Sie für die RS485-Leitungen D+/D- ein verdrilltes Kabel und fügen Sie an jedem Ende des Busses einen 120-Ohm-Abschlusswiderstand hinzu, um Signalreflexionen bei höheren Baudraten oder längeren Kabelstrecken zu verhindern.
Serieller Monitor
Öffnen Sie den seriellen Monitor der Arduino IDE (auf 9600 Baud eingestellt), um die Aktivität auf der Seite des ESP32 S3 zu beobachten. Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Test
Sie können einen vollständigen End-to-End-Test durchführen, indem Sie Daten von Ihrem PC über RS485 an den ESP32 S3 senden und die Echo-Antwort beobachten. Verbinden Sie den ESP32 S3 wie unten gezeigt über ein USB-zu-RS485-Kabel mit Ihrem PC, konfigurieren Sie Ihr serielles Terminal passend zur Baudrate im Code und geben Sie Daten in das Terminal ein.
- Verbinden Sie den RS485-Ausgang des ESP32 S3 wie unten gezeigt über ein RS485-zu-USB-Kabel mit Ihrem PC:

- Öffnen Sie das serielle Terminalprogramm und konfigurieren Sie die seriellen Parameter (COM-Port, Baudrate ...)
- Geben Sie im seriellen Terminal einige Daten ein, um sie an den ESP32 S3 zu senden.
- Bei Erfolg sehen Sie die zurückgesendeten Daten im seriellen Terminal.
Anwendungen
RS485 ist ein vielseitiger Kommunikationsstandard, der sich gut für eine Vielzahl professioneller und industrieller Anwendungsfälle eignet, bei denen Zuverlässigkeit und Kabellänge wichtig sind.
- Industrieautomation: Verbinden Sie den ESP32 S3 über einen RS485-Bus in der Fabrik mit SPS, Sensoren und Aktoren zur Datenerfassung und Steuerung.
- Gebäudeleittechnik: Verwenden Sie den ESP32 S3 als RS485-Knoten, um mit HLK-Steuerungen, Beleuchtungssystemen und Energiezählern zu kommunizieren.
- Netzwerke mit mehreren Geräten: Realisieren Sie einen RS485-Multidrop-Bus mit bis zu 32 Geräten, die vom ESP32 S3 als Master einzeln adressiert werden.
- Serielle Verbindungen über große Entfernungen: Ersetzen Sie USB- oder TTL-Verbindungen mit kurzer Reichweite durch RS485 für eine zuverlässige Kommunikation über Strecken von bis zu 1200 Metern.
- Modbus-RTU-Protokoll: Verwenden Sie den ESP32 S3 mit einem RS485-Modul als Modbus-RTU-Master oder -Slave, um mit Industrieinstrumenten zu kommunizieren.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.
Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3-Projekt an.
Herausforderungen
Diese Herausforderungen helfen Ihnen, Ihr Verständnis der RS485-Kommunikation mit dem ESP32 S3 zu vertiefen und fortgeschrittenere Anwendungsfälle zu erkunden.
- Anfänger: Ändern Sie den Code so, dass jeder zurückgesendeten Nachricht ein Zeitstempel vorangestellt wird, damit Sie nachvollziehen können, wann die Daten empfangen wurden.
- Fortgeschritten: Implementieren Sie auf dem ESP32 S3 einen einfachen Parser für Modbus-RTU-Frames, der eine Anfrage nach einem Holding-Register liest und über RS485 eine gültige Antwort zurückgibt.
- Experte: Bauen Sie ein RS485-Netzwerk mit mehreren Knoten aus zwei oder mehr ESP32 S3-Boards mit jeweils eindeutiger Adresse auf und implementieren Sie ein Master-Slave-Protokoll, bei dem der Master jeden Slave reihum abfragt.