ESP32 als USB-zu-UART-Konverter in PlatformIO verwenden

English Deutsch

Der ESP32 kann leicht als USB-zu-UART-Konverter verwendet werden. Beachten Sie, dass der ESP32 selbst keine USB-Schnittstelle besitzt und ESP32-Boards mit einem integrierten USB-Anschluss lediglich einen USB-zu-UART-Konverter verwenden (dies ist ein separater Chip auf dem Board). Aus Sicht des ESP32

Sie können UART TX und RX auf beliebige GPIO-Pins des ESP32 abbilden. Obwohl es sehr geringe Leistungsunterschiede bei der Verwendung vordefinierter Pins gibt, spielt dies in der Praxis keine Rolle. In diesem Beispiel verwenden wir Pin GPIO2 für UART RX und Pin GPIO4 für UART TX.

Im Wesentlichen kopiert der Code nur Bytes zwischen Serial2 und Serial (mit USB verbunden):

usb_to_uart_loop.cpp
// Eingehende Bytes über PC-Seriell kopieren
while (Serial.available() > 0) {
  Serial2.write(Serial.read());
}
// Eingehende Bytes über UART-Seriell kopieren
while (Serial2.available() > 0) {
  Serial.write(Serial2.read());
}

Vollständiges Beispiel

usb_to_uart_full_example.cpp
#include <Arduino.h>

#define UART_RX_PIN 2 // GPIO2
#define UART_TX_PIN 4 // GPIO4

void setup() {
  // Serial verbindet sich mit dem Computer
  Serial.begin(115200);
  // Serial2 ist die Hardware-UART-Schnittstelle, die mit externer Schaltung verbunden ist
  Serial2.begin(115200, SERIAL_8N1,
                UART_RX_PIN,
                UART_TX_PIN);
}

void loop() {
  // Eingehendes Byte über PC-Seriell kopieren
  while (Serial.available() > 0) {
    Serial2.write(Serial.read());
  }
  // Eingehende Bytes über UART-Seriell kopieren
  while (Serial2.available() > 0) {
    Serial.write(Serial2.read());
  }
}

Bezüglich platformio.ini müssen wir nur monitor_speed auf den Wert in Serial.begin(115200); setzen:

platformio.ini
[env:nodemcu-32s]
platform = espressif32
board = nodemcu-32s
framework = arduino
monitor_speed = 115200

Check out similar posts by category: C/C++, Electronics, ESP8266/ESP32, PlatformIO