ESP32 Kommunikation mit Arduino Uno (GRBL)

Hallo ich wollte meine kleine CNC Plotter Maschine die mit einem Arduino Uno (GRBL) läuft, extern steuern. Jetzt wollte ich einen ESP32 nehmen und "quasi" GCode Befehle vom ESP32 zum Arduino Uno schicken, hat jemand eine Idee wie ich das implementieren kann? Ich hatte bis jetzt einfach TXD2 (ESP32) > RXD0 (UNO) und RXD2 (ESP32) > TXD0 (UNO) angeschlossen mir ist bewusst das der Arduino mit 5V läuft und der ESP32 mit 3,3V, könnte ich auch einfach ein Arduino Mini mit 3,3V nehmen bzw wie könnte ich vorrübergehend mit dem 5V Arduino arbeiten.

Danke schonmal

So habe "wollte" ich die Befehle senden hat aber nicht geklappt

#define RXD2 16
#define TXD2 17

Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2);

void ReceivedGCodeData(uint8_t *payload, size_t length)
{
  // Funktion um GCode Daten zu verarbeiten und zu senden
  Serial.println("Received GCodeData");

  // Tokenize the payload into lines
  char *token;
  char *saveptr;
  char payload_copy[length + 1];
  strncpy(payload_copy, (char *)payload, length);
  payload_copy[length] = '\0'; // Null-terminate the string

  token = strtok_r(payload_copy, "\n", &saveptr);

  while (token != NULL)
  {
    // Send each line to the Serial port
    if (strcmp(token, "M7") == 0)
    {
      changePenPos(0);
      Serial2.print(token);
    }
    else if (strcmp(token, "M8") == 0)
    {
      changePenPos(1);
      Serial2.print(token);
    }
    else
    {
      Serial2.print(token);
    }

    // Get the next line
    token = strtok_r(NULL, "\n", &saveptr);
  }
}

kompletten Sketch posten.

Woher sollen wir wissen ob dein Fehler vielleicht beim Aufruf von

ReceivedGCodeData(myGCodeData, len)

liegt???
.
.
Beim Programm entwickeln alle Daten
bei jedem Verarbeitungsschritt ausgeben

Serial.print("#");
Serial.print(myGCodeData);
Serial.println("#");

ReceivedGCodeData(myGCodeData, len);

void ReceivedGCodeData(uint8_t *payload, size_t length) {
  // Funktion um GCode Daten zu verarbeiten und zu senden
  Serial.print("Received GCodeData #");
  Serial.print(payload);
  Serial.println("#");

  Serial.print("length=");
  Serial.println(length);

Wenn du weder "M7" noch "M8" sendest dann gibt dein code gar nichts aus

TX_D0-Uno über Spannungsteiler an Rx-ESP32

ESP32-Tx auf RX_D1-Uno so eine Schaltung

oder
beide Leitungen über einen 3.3V/5V level-shifter

Danke die für deine schnelle Antwort. ich werde es mit dem 3,3V <-> 5V Logic Level Converter versuchen, um den zu verhindern wäre es auch möglich GRBL auf einem Arduino Mini (3,3V 8Mhz) zu laufen? Also quasi damit ESP32 (3,3V) und Arduino Mini (3,3V) auf dem gleichem Logic Level laufen.

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