ESP32 C3 Super Mini - RS485

RS485 ist ein serieller Standard, der Daten über lange Leitungen mit starkem Störschutz überträgt. Mit einem günstigen TTL-zu-RS485-Modul kann der ESP32 C3 Super Mini mit Geräten kommunizieren, die Hunderte von Metern entfernt sind. Dieses Tutorial zeigt Ihnen, wie Sie die RS485-Kommunikation am ESP32 C3 Super Mini verdrahten und programmieren.

In diesem Tutorial lernen Sie:

ESP32 C3 Super Mini - RS485

Erforderliche Hardware

1×ESP32 C3 Super Mini
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×TTL-zu-RS485-Modul
1×(Alternativ) MAX485 RS485 to TTL Module (NOT soldered)
1×(Alternativ) MAX485 RS485 to TTL Module *(soldered)
1×Verbindungskabel
1×(Optional) USB-zu-RS485-Konverter
1×(Optional) USB to RS485 Cable

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Überblick über TTL to RS485 Module

Ein TTL-zu-RS485-Modul ist eine kleine Platine, die das serielle TTL-Signal des ESP32 C3 Super Mini in ein RS485-Signal umwandelt und umgekehrt.

Der ESP32 C3 Super Mini sendet serielle Daten über einen TX-Pin und empfängt sie über einen RX-Pin. Diese Pins verwenden TTL-Pegel, der nur über eine kurze Leitung funktioniert. Für ein langes Kabel müssen Sie TTL in einen stärkeren Standard wie RS232, RS485 oder RS422 umwandeln.

Hauptmerkmale:

  • Große Entfernung: Funktioniert mit einem guten Kabel bis etwa 1200 Meter
  • Störsicher: Verwendet zwei Leitungen mit entgegengesetzten Signalen, sodass sich Störungen aufheben
  • Mehrere Geräte: Viele Geräte können sich dasselbe Leitungspaar teilen
  • Einfach zu verwenden: Normaler Serial-Code, keine spezielle Bibliothek erforderlich
  • 3,3V-freundlich: Die meisten Module laufen problemlos am 3,3V-Pin des ESP32 C3 Super Mini

Technische Daten:

  • Übliche Chips: MAX13487, MAX3485, SP3485, MAX485
  • Versorgungsspannung: 3,3V oder 5V, je nach Modul
  • Logikpegel: Muss für den ESP32 C3 Super Mini 3,3V betragen
  • Kabeltyp: Ein verdrilltes Paar plus eine GND-Leitung
  • Abschluss: 120-Ohm-Widerstand an jedem Ende eines langen Kabels
  • Typische Geschwindigkeit: 9600 bis 115200 Baud

WARNING

Der ESP32 C3 Super Mini ist ein 3,3V-Board. Verwenden Sie nur ein TTL-zu-RS485-Modul mit 3,3V-Logik oder fügen Sie einen Pegelwandler hinzu. Ein 5V-TXD/RO-Ausgang, der direkt in einen GPIO-Pin geht, kann den Chip beschädigen. Führen Sie auf der RS485-Seite A und B immer im SELBEN verdrillten Paar des Kabels, verbinden Sie A mit A und B mit B, und setzen Sie an beiden Enden eines langen Kabels einen 120-Ohm-Widerstand ein.

Pinbelegung

Das RS485-zu-TTL-Modul hat zwei Seiten: eine TTL-Seite für das Board und eine RS485-Seite für das lange Kabel.

  • VCC-Pin: Stromeingang, mit 3,3V des ESP32 C3 Super Mini verbinden
  • GND-Pin: Masse (0V), gemeinsam mit dem ESP32 C3 Super Mini
  • RXD-Pin (DI): Dateneingang des Moduls, mit einem TX-Pin des ESP32 C3 Super Mini verbinden
  • TXD-Pin (RO): Datenausgang des Moduls, mit einem RX-Pin des ESP32 C3 Super Mini verbinden
  • D+ Pin (A oder TR+): Eine Leitung des RS485-Paares, wird für die Datenkommunikation verwendet
  • D- Pin (B oder TR-): Die andere Leitung des RS485-Paares, wird für die Datenkommunikation verwendet
  • GND-Pin (RS485-Seite): Optional, aber dringend empfohlen, da er Störprobleme verringert
  • DE/RE-Pin (nur bei manchen Modulen): Richtungssteuerung, HIGH zum Senden und LOW zum Empfangen

※ Notiz:

Viele Module, wie der Typ MAX13487, wechseln die Richtung selbstständig und haben keinen DE/RE-Pin. Wenn Ihr Modul einen hat, verbinden Sie ihn mit GPIO5 des ESP32 C3 Super Mini, setzen Sie ihn vor dem Senden auf HIGH und zum Empfangen auf LOW.

Pinbelegung des RS-485-Moduls
image source: diyables.io

Verdrahtungsdiagramm

Verbinden Sie die TTL-Seite des Moduls mit dem ESP32 C3 Super Mini und die RS485-Seite mit Ihrem langen Kabel.

  • Hinweis: Verwenden Sie nur 3,3V-Logik. Führen Sie niemals ein 5V-Signal in einen GPIO-Pin.
  • Hinweis: GPIO20 und GPIO21 sind der UART des seriellen Monitors, lassen Sie sie daher frei.
  • Hinweis: RXD des Moduls geht an einen TX-Pin des Boards und TXD an einen RX-Pin. Sie werden gekreuzt.
  • Hinweis: Verwenden Sie nicht GPIO8 oder GPIO9 — das sind Boot-Strapping-Pins.
  • Hinweis: Verbinden Sie GND zwischen dem Modul und dem ESP32 C3 Super Mini, sonst funktioniert nichts.
ESP32 C3 Super Mini TTL-zu-RS485 Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

RS485-Modul-Pin ESP32 C3 Super Mini Pin
VCC 3,3V
GND GND
RXD (DI) GPIO6
TXD (RO) GPIO7
DE/RE (nur falls Ihr Modul ihn hat) GPIO5

Wie man den ESP32 C3 Super Mini für das RS485-Modul programmiert

Der ESP32 C3 Super Mini hat mehr als einen Hardware-UART, daher verwenden wir einen zweiten für RS485.

※ Notiz:

Die SoftwareSerial-Bibliothek gibt es auf dem ESP32 C3 Super Mini NICHT. Verwenden Sie stattdessen die eingebaute Klasse HardwareSerial. Sie ist schneller, zuverlässiger und benötigt keine zusätzliche CPU-Zeit. GPIO20 und GPIO21 gehören zum ersten UART, den der serielle Monitor benötigt, daher erhält das RS485-Modul eigene Pins.

  • Definieren Sie die seriellen RS485-Pins:
#define RX1PIN 7 // GPIO7, to the TXD (RO) pin of the RS485 module #define TX1PIN 6 // GPIO6, to the RXD (DI) pin of the RS485 module
  • Erstellen Sie eine zweite Hardware-Serial-Schnittstelle:
HardwareSerial rs485Serial(1);
  • Starten Sie den seriellen Monitor und den RS485-Port:
Serial.begin(115200); // Serial Monitor, uses GPIO20/GPIO21 rs485Serial.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); // RS485, uses GPIO7 (RX) and GPIO6 (TX)

ESP32 C3 Super Mini Code - RS485

Dieser Sketch sendet jedes von RS485 empfangene Zeichen als Echo zurück und gibt es außerdem im seriellen Monitor aus.

Was dieser Code macht:

  • Startet den seriellen Monitor mit 115200 Baud am eigenen UART des Boards
  • Startet einen zweiten Hardware-UART für RS485 mit 9600 Baud an GPIO7 (RX) und GPIO6 (TX)
  • Prüft ständig, ob ein neues Zeichen von RS485 angekommen ist
  • Sendet dasselbe Zeichen an den RS485-Absender zurück, ein einfacher Echo-Test
  • Gibt das Zeichen im seriellen Monitor aus, damit Sie es auf Ihrem PC sehen können
/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-c3/esp32-c3-super-mini-rs485 */ #define RX1PIN 7 // The ESP32 C3 SuperMini pin GPIO7 connected to the TXD pin of the RS485 module #define TX1PIN 6 // The ESP32 C3 SuperMini pin GPIO6 connected to the RXD pin of the RS485 module // use the second hardware UART of the ESP32 C3 SuperMini // UART0 (GPIO20/GPIO21) is used by the Serial Monitor, so it must stay free HardwareSerial rs485Serial(1); void setup() { // start communication with the Serial Monitor Serial.begin(115200); // Serial Monitor // start communication with the RS485 module on GPIO7 (RX) and GPIO6 (TX) rs485Serial.begin(9600, SERIAL_8N1, RX1PIN, TX1PIN); // RS485 // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on the RS485 serial port if (rs485Serial.available()) { char data = rs485Serial.read(); // read the received character rs485Serial.print(data); // echo back to data to the sender Serial.print(data); // print the recived data to Serial Monitor } }

Schnelle Schritte

  • Neu beim ESP32 C3 Super Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Super Mini, um Ihre Entwicklungsumgebung einzurichten.
  • Bauteile verdrahten: Folgen Sie dem obigen Schaltplan, um das RS485-Modul mit dem ESP32 C3 Super Mini zu verbinden.
  • Board anschließen: Verbinden Sie den ESP32 C3 Super Mini mit einem USB-Typ-C-Kabel mit Ihrem PC.
  • Arduino IDE öffnen: Starten Sie die Arduino IDE.
  • Board auswählen: Stellen Sie sicher, dass ESP32 C3 Super Mini unter Werkzeuge > Board ausgewählt ist.
  • Port auswählen: Wählen Sie den COM-Port Ihres ESP32 C3 Super Mini unter Werkzeuge > Port.
  • Code hochladen: Kopieren Sie den obigen Code, fügen Sie ihn in die Arduino IDE ein und klicken Sie dann auf die Schaltfläche Upload.
  • Seriellen Monitor öffnen: Stellen Sie die Baudrate auf 115200 ein.
  • Daten senden: Senden Sie einige Zeichen vom anderen RS485-Gerät.
  • Ergebnis ansehen: Beobachten Sie, wie die Zeichen im seriellen Monitor erscheinen.
  • Profi-Tipp: Wenn Sie nichts sehen, vertauschen Sie die Leitungen A und B. Ein vertauschtes Paar ist der häufigste RS485-Fehler.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Hello from RS485 Sensor value: 24.6 Sensor value: 24.9 Sensor value: 25.1
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Zeilenweise Code-Erklärung

Der obige ESP32 C3 Super Mini Code enthält eine zeilenweise Erklärung. Bitte lesen Sie die Kommentare im Code!

Testen

Sie können den Aufbau testen, indem Sie Daten von Ihrem PC über RS-485 an den ESP32 C3 Super Mini und zurück senden. Gehen Sie wie folgt vor:

  • Hardware anschließen: Verbinden Sie den ESP32 C3 Super Mini mit einem RS485-zu-USB-Kabel mit Ihrem PC, wie unten gezeigt.
  • Terminal installieren: Besorgen Sie sich ein serielles Terminalprogramm wie Tera Term oder PuTTY.
  • Parameter einstellen: Öffnen Sie das Terminal und wählen Sie den COM-Port und die Baudrate 9600.
  • Daten eingeben: Senden Sie einige Zeichen vom Terminal an den ESP32 C3 Super Mini.
  • Echo prüfen: Wenn es funktioniert, kommen dieselben Zeichen im Terminal zurück.
  • Board-Seite prüfen: Dieselben Zeichen erscheinen auch im seriellen Monitor der Arduino IDE mit 115200 Baud.
ESP32 C3 Super Mini RS485-Kommunikation mit dem PC

※ Notiz:

Die RS485-Verbindung läuft mit 9600 Baud und der serielle Monitor mit 115200 Baud. Die beiden Werte sind absichtlich unterschiedlich, und das ist in Ordnung. Stellen Sie nur sicher, dass beide Enden des RS485-Kabels dieselbe Geschwindigkeit verwenden.

Anwendungs-/Projektideen

Hier sind einfache Möglichkeiten, RS485 mit dem ESP32 C3 Super Mini zu verwenden.

  • Sensor über große Entfernung: Einen Temperatursensor lesen, der 500 Meter entfernt ist.
  • Modbus-RTU-Master: Mit Industriezählern und Motorantrieben kommunizieren, die Modbus sprechen.
  • Netzwerk aus mehreren Boards: Viele ESP32 C3 Super Mini Boards über ein einziges Leitungspaar verbinden.
  • Landwirtschaftliche Überwachung: Boden- und Wetterdaten von einem Feld zurück zum Haus senden.
  • Zugangskontrolle: RFID-Leser auslesen, die über ein großes Gebäude verteilt sind.
  • Solarwechselrichter-Logger: Energiedaten von einem Wechselrichter abrufen und online veröffentlichen.

Fordern Sie sich selbst heraus

Probieren Sie diese Ideen aus, um mit RS485 am ESP32 C3 Super Mini weiterzukommen.

  • Einfach: Lassen Sie die eingebaute LED an GPIO8 jedes Mal blinken, wenn ein Zeichen ankommt.
  • Einfach: Ändern Sie die RS485-Geschwindigkeit an beiden Enden von 9600 auf 19200.
  • Mittel: Lesen Sie mit rs485Serial.readStringUntil() eine ganze Zeile statt eines einzelnen Zeichens.
  • Mittel: Fügen Sie einen DE/RE-Pin an GPIO5 hinzu und schalten Sie die Richtung in Ihrem eigenen Code um.
  • Fortgeschritten: Geben Sie jedem Board eine Adresse, sodass nur das richtige Board antwortet.
  • Fortgeschritten: Senden Sie die RS485-Daten per WLAN an eine Webseite.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!