ESP32 C3 Super Mini - RS422

Der ESP32 C3 Super Mini ist ein winziges 3,3V-Board, das über lange Kabel kommunizieren kann, wenn Sie ein TTL-zu-RS422-Modul hinzufügen. RS422 ist ein robuster serieller Standard, der in Fabriken, auf Booten und in der Gebäudetechnik verwendet wird. Dieses Tutorial zeigt Ihnen, wie Sie es verdrahten und wie Sie mit einfachem Code Daten senden und empfangen.

In diesem Tutorial lernen Sie:

ESP32 C3 Super Mini - RS422

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-RS422-Modul
1×Verbindungskabel
1×(Optional) RS422-zu-USB-Kabel

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 RS422 Module

Ein TTL-zu-RS422-Modul ist ein kleiner Wandler, der die seriellen TTL-Signale des ESP32 C3 Super Mini in RS422-Signale umwandelt und umgekehrt.

Warum Sie es benötigen:

  • Die TX- und RX-Pins des ESP32 C3 Super Mini verwenden Signale mit TTL-Pegel (3,3V).
  • TTL-Signale reichen nur über eine kurze Entfernung, etwa 1 Meter bei einem Breadboard-Kabel.
  • RS422 verwendet zwei Leitungspaare mit entgegengesetzten Spannungen, sodass sich Störungen gegenseitig aufheben.
  • Dadurch können Ihre Daten viel weiter und mit deutlich weniger Fehlern übertragen werden.

Hauptmerkmale:

  • Vollduplex: RS422 sendet und empfängt gleichzeitig auf zwei getrennten Leitungspaaren.
  • Große Entfernung: Bis zu etwa 1200 m (4000 ft) bei niedriger Baudrate.
  • Störfest: Die differenzielle Signalübertragung ignoriert elektrische Störungen von Motoren und Relais.
  • Multi-Drop-Empfang: Ein Sender kann bis zu 10 Empfänger versorgen.
  • Kein Treiber erforderlich: Das Modul wandelt die Signale in Hardware um, ohne zusätzliche Software.

Technische Daten:

  • Spannung auf der TTL-Seite: 3,3V oder 5V. Verwenden Sie 3,3V für den ESP32 C3 Super Mini.
  • Signaltyp: Differenziell, zwei Paare. Ein Paar sendet, ein Paar empfängt.
  • Typische Chips: MAX13487, MAX3422 und ähnliche RS422-Transceiver.
  • Maximale Kabellänge: Etwa 1200 m bei niedriger Baudrate, kürzer bei hohen Geschwindigkeiten.
  • Übliche Baudraten: 9600, 19200, 38400, 57600, 115200.

Pinbelegung

Das RS422-zu-TTL-Modul hat zwei Seiten: eine TTL-Seite, die zu Ihrem Board zeigt, und eine RS422-Seite, die zum langen Kabel zeigt.

TTL-Schnittstelle (mit dem ESP32 C3 Super Mini verbunden):

  • VCC: Versorgungs-Pin. Mit 3,3V am ESP32 C3 Super Mini verbinden.
  • GND: Masse-Pin (0V). Mit GND verbinden.
  • RXD (DI): Dateneingang. Mit einem TX-Pin des ESP32 C3 Super Mini verbinden.
  • TXD (RO): Datenausgang. Mit einem RX-Pin des ESP32 C3 Super Mini verbinden.

RS422-Schnittstelle (Seite des langen Kabels):

  • A (R+): Der RX+-Pin des Moduls. Mit dem TX+-Pin (T+ oder Y-Pin) des anderen RS422-Geräts verbinden.
  • B (R-): Der RX--Pin des Moduls. Mit dem TX--Pin (T- oder Z-Pin) des anderen RS422-Geräts verbinden.
  • Y (T+): Der TX+-Pin des Moduls. Mit dem RX+-Pin (R+ oder A-Pin) des anderen RS422-Geräts verbinden.
  • Z (T-): Der TX--Pin des Moduls. Mit dem RX--Pin (R- oder B-Pin) des anderen RS422-Geräts verbinden.
Pinbelegung des RS-422-Moduls
image source: diyables.io

Verdrahtungsdiagramm

Verbinden Sie die TTL-Seite des Moduls mit dem ESP32 C3 Super Mini und anschließend die RS422-Seite mit einem Twisted-Pair-Kabel mit dem anderen Gerät.

  • Hinweis: GPIO20 und GPIO21 sind der UART des seriellen Monitors. Lassen Sie sie frei, sonst verlieren Sie Ihre Debug-Meldungen.
  • Hinweis: Wir verwenden stattdessen eine zweite Hardware-Serial-Schnittstelle an GPIO6 und GPIO7.
  • Hinweis: TX geht immer an RX, und RX geht immer an TX. Das Vertauschen ist der häufigste Fehler.
  • Hinweis: Der ESP32 C3 Super Mini und das Modul müssen eine gemeinsame Masse (GND) haben.
TTL-zu-RS422-Modul-Pin ESP32 C3 Super Mini Pin
VCC 3,3V
GND GND
RXD (DI) GPIO6
TXD (RO) GPIO7

WARNING

Der ESP32 C3 Super Mini ist ein 3,3V-Board. Seine GPIO-Pins sind NICHT 5V-tolerant. Versorgen Sie das Modul über den 3,3V-Pin und führen Sie niemals ein 5V-TTL-Signal in GPIO6 oder GPIO7. Dies kann den Chip beschädigen. Wenn Ihr Modul nur mit 5V funktioniert, setzen Sie einen Logikpegelwandler in die TXD-Leitung.

Auf der RS422-Seite müssen Sie die Paare einhalten. RS422 ist vollduplex und verwendet daher ZWEI verdrillte Paare: ein Paar für Y/Z (TX+ und TX-) und ein Paar für A/B (RX+ und RX-). Y und Z müssen sich ein verdrilltes Paar teilen. A und B müssen sich das andere verdrillte Paar teilen. Das Mischen von Adern aus verschiedenen Paaren zerstört die Störunterdrückung. Bei einem langen Kabel fügen Sie über jedes Paar einen 120-Ohm-Abschlusswiderstand ein, und zwar nur am EMPFANGSENDE dieses Paares. Widerstände an beiden Enden oder am falschen Paar schwächen das Signal.

ESP32 C3 Super Mini TTL-zu-RS422 Schaltplan

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

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

Der ESP32 C3 Super Mini hat keine SoftwareSerial-Bibliothek, daher verwenden wir stattdessen einen zweiten Hardware-UART.

  • Erstellen Sie eine Hardware-Serial-Schnittstelle und definieren Sie die beiden Pins:
#define RS422_RX_PIN 7 // The ESP32 C3 Super Mini pin GPIO7 connected to the module's TXD (RO) pin #define RS422_TX_PIN 6 // The ESP32 C3 Super Mini pin GPIO6 connected to the module's RXD (DI) pin HardwareSerial rs422Serial(1); // use UART1
  • Initialisieren Sie die serielle RS422-Schnittstelle in setup():
rs422Serial.begin(9600, SERIAL_8N1, RS422_RX_PIN, RS422_TX_PIN); // RS422

※ Notiz:

Verwenden Sie HardwareSerial, nicht SoftwareSerial. Die SoftwareSerial-Bibliothek gibt es auf dem ESP32 C3 Super Mini nicht, daher lässt sich ein von einem AVR-Board kopierter Sketch nicht kompilieren. Die gute Nachricht: Der ESP32 C3 kann einen echten Hardware-UART auf fast jeden freien GPIO legen, was schneller und zuverlässiger ist als eine Software-Serial-Schnittstelle.

  • Lassen Sie den seriellen Monitor auf seinem eigenen Port mit 115200 Baud:
Serial.begin(115200); // Serial Monitor

ESP32 C3 Super Mini Code

Dieser Sketch sendet jedes Zeichen, das über RS422 ankommt, an den Absender zurück und gibt es außerdem im seriellen Monitor aus.

Was dieser Code macht:

  • Startet den seriellen Monitor mit 115200 Baud zur Fehlersuche.
  • Startet einen zweiten Hardware-UART mit 9600 Baud an GPIO7 (RX) und GPIO6 (TX) für RS422.
  • Prüft, ob RS422-Daten angekommen sind.
  • Sendet jedes Zeichen an den RS422-Absender zurück.
  • Gibt dasselbe Zeichen im seriellen Monitor aus, damit Sie es 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-rs422 */ #define RS422_RX_PIN 7 // The ESP32 C3 SuperMini pin GPIO7 connected to the TXD (RO) pin of the TTL to RS422 module #define RS422_TX_PIN 6 // The ESP32 C3 SuperMini pin GPIO6 connected to the RXD (DI) pin of the TTL to RS422 module // The ESP32 C3 SuperMini does NOT support SoftwareSerial. // Use a second hardware UART (UART1) so that the Serial Monitor UART stays free. HardwareSerial rs422Serial(1); void setup() { // start communication with the Serial Monitor Serial.begin(115200); // Serial Monitor // start communication with the TTL to RS422 module at baud rate 9600 rs422Serial.begin(9600, SERIAL_8N1, RS422_RX_PIN, RS422_TX_PIN); // RS422 // wait a moment to allow serial ports to initialize delay(100); } void loop() { // Check if there's data available on RS422 if (rs422Serial.available()) { char data = rs422Serial.read(); // read the received character rs422Serial.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.
  • Modul verdrahten: Folgen Sie der obigen Verdrahtungstabelle. Prüfen Sie, dass RXD an GPIO6 und TXD an GPIO7 geht.
  • Stromversorgung prüfen: Verwenden Sie den 3,3V-Pin, nicht 5V.
  • Board anschließen: Verbinden Sie den ESP32 C3 Super Mini mit einem USB-Typ-C-Kabel mit Ihrem PC.
  • IDE öffnen: Starten Sie die Arduino IDE auf Ihrem Computer.
  • 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 Boards unter Werkzeuge > Port.
  • Code hochladen: Kopieren Sie den obigen Code in den Editor und klicken Sie auf Upload.
  • Seriellen Monitor öffnen: Stellen Sie die Baudrate auf 115200 ein.
  • Daten senden: Senden Sie Zeichen vom anderen RS422-Gerät und beobachten Sie, wie sie erscheinen.
  • Profi-Tipp: Wenn Sie nichts sehen, vertauschen Sie zuerst die A/B-Leitungen und dann die Y/Z-Leitungen. Ein vertauschtes Differenzpaar ist der zweithäufigste RS422-Fehler.

Ausgabe im seriellen Monitor

∞
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 ESP32 C3 Super Mini RS422 test 1 RS422 test 2 Temperature = 24.6 C
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Testen

Sie können die Verbindung testen, indem Sie Daten von Ihrem PC über RS-422 an den ESP32 C3 Super Mini und wieder zurück senden.

  • Kabel anschließen: Verbinden Sie den ESP32 C3 Super Mini mit einem RS422-zu-USB-Kabel mit Ihrem PC, wie unten gezeigt.
ESP32 C3 Super Mini RS422-Kommunikation mit dem PC
  • 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 sowie 9600 Baud, 8 Datenbits, keine Parität, 1 Stoppbit.
  • Daten eingeben: Senden Sie einige Zeichen vom Terminal an den ESP32 C3 Super Mini.
  • Echo prüfen: Wenn es funktioniert, kommen dieselben Zeichen direkt zum Terminal zurück.
  • Monitor prüfen: Dieselben Zeichen erscheinen auch im seriellen Monitor der Arduino IDE mit 115200 Baud.

※ Notiz:

Ihr RS422-zu-USB-Kabel erhält einen eigenen COM-Port, getrennt vom USB-Port des ESP32 C3 Super Mini. Sie können beide gleichzeitig öffnen: ein Terminal am RS422-Port mit 9600 Baud und den seriellen Monitor der Arduino IDE am Port des Boards mit 115200 Baud.

Anwendungs- und Projektideen

RS422 mit dem ESP32 C3 Super Mini ist ideal, wenn Ihr Kabel lang ist oder die Umgebung elektrisch stark gestört ist.

  • Entfernter Sensorknoten: Einen 100 m entfernten Sensor lesen und die Werte über RS422 zurücksenden.
  • Verbindung zu Fabrikmaschinen: Mit einer Industriesteuerung oder einem Motorantrieb kommunizieren, die nur RS422 bieten.
  • Boots- oder Wohnmobil-Panel: Daten zwischen einem Steuerstand-Display und einer Motorsensor-Box übertragen.
  • Gewächshaus-Überwachung: Mehrere weit voneinander entfernte Temperatur- und Feuchtigkeitsstationen mit einem Hub verbinden.
  • Gebäudeautomation: Tür-, Licht- und Klimasteuerungen über verschiedene Stockwerke hinweg verbinden.
  • Waagen- oder Druckerleser: Eine Tischwaage oder einen Etikettendrucker mit RS422-Anschluss auslesen.

Fordern Sie sich selbst heraus

Probieren Sie diese kleinen Erweiterungen aus, um sicherer im Umgang mit RS422 am ESP32 C3 Super Mini zu werden.

  • Einfach: Ändern Sie die RS422-Baudrate an beiden Enden auf 19200 und prüfen Sie, ob es weiterhin funktioniert.
  • Einfach: Geben Sie jedes Mal, wenn eine vollständige Zeile ankommt, eine kurze Meldung im seriellen Monitor aus.
  • Mittel: Erfassen Sie mit readStringUntil() eine ganze Zeile und senden Sie sie in Großbuchstaben zurück.
  • Mittel: Senden Sie alle 2 Sekunden einen Temperaturwert über RS422 in der Form TEMP:24.6.
  • Fortgeschritten: Bauen Sie ein kleines Befehlsprotokoll, sodass LED:ON und LED:OFF über RS422 die eingebaute LED an GPIO8 schalten.
  • Fortgeschritten: Fügen Sie jeder Nachricht ein Prüfsummen-Byte hinzu und ignorieren Sie jede Nachricht mit falscher Prüfsumme.

※ 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!