ESP32 Uart - Datenempfang

Hallo,

ich tue mir mit einem sicher ganz trivialen Thema etwas schwer.
Ich habe zwei ESP32-WOROOM-32.
Auf ESP32(1) läuft ein Sketch welcher über "Serial.print...." (115200 Baud) diverse Textinformationen ausgibt.
Auf ESP32(2) möchte ich diese Informationen mitschreiben und zunächst auf dem SerialMonitor ausgeben.
Hierfür habe ich jetzt schon die verschiedensten Varianten im Sketch versucht.
Zuletzt bin ich jetzt hier:

#include <HardwareSerial.h>

void setup() {
    Serial.begin(115200);
    Serial2.begin(115200, SERIAL_8N1, 16,17);
    Serial1.println("started");
}

void loop() {
    while(Serial.available() > 0)
    {
         char byteFromSerial2 = Serial.read();
         Serial.print(byteFromSerial2);
        
    }
    while (Serial2.available() > 0) {
        char byteFromSerial = Serial2.read();
        Serial2.println(byteFromSerial);
        
    }
    
}

Aber es kommt einfach nichts an. Kann mir jemand helfen?

Tobias

welche Pins von ESP32(1) hast du mit welchen Pins von ESP32(2) verbunden?

Auf einem ESP32 sind die Standardpins für Serial1 normalerweise nicht verwendbar. Außerdem haben Sie UART1 bisher noch nicht gestartet. UART0 (seriell) ist mit den Pins 3 und 1 (RX-TX) verbunden und diese Pins sind normalerweise fest mit dem USB-zu-TTL-Konverter verdrahtet. Damit können Nachrichten direkt nach dem Auspacken auf dem seriellen Monitor angezeigt werden.

This just echos any thing coming in on either of the 2 UARTs back out to that same one. (adding a newline with every character in the case of UART2)

Hallo,

auf ESP (1), dem Sender nutze ich GPIO1 TX und GPIO3 RX
auf ESP (2), dem Empfänger nutze ich GPIO16 RX und GPIO 17 TX

RX- geht auf TX und TX geht auf RX

Hast du GND verbunden?

lade bitte auch ein Foto hoch in dem alle Verbindungen zwischen den ESPs zweifelsfrei erkennbar sind damit wir das überprüfen können.

zum Code:
von 2 lesen (wo ja ESP 1 dranhängen soll) und auf 0 ausgeben macht aus meiner Meinung mehr Sinn

#include <HardwareSerial.h>

void setup() {
  Serial.begin(115200);
  Serial2.begin(115200, SERIAL_8N1, 16, 17);
}

void loop() {
  while (Serial2.available() > 0) //  von 2 zu 0 !
  {
    char byteFromSerial2 = Serial2.read(); // !
    Serial.print(byteFromSerial2);

  }
}

Ich bin mir nicht sicher was bei der Ausgabe über Serial1 passiert, normalerweise ist das ja nur Serial.
Kommt denn da was auf dem seriellen Monitor?
Außerdem ist der Sketch ziemlich konfus, was läuft denn auf welchem ESP?

Hier versuchst Du etwas auf dem gleichen Port einzulesen und auszugeben???
Auf ESP2 musst Du z.B. von Serial2 (-> auf Serial ESP1 schalten) einlesen und das Eingelesene auf Serial (Monitor) ausgeben.

Für diesen Fall

schon.

cu

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.