Arduino ESP SoftwareSerial

Hallo,

ich versuche gerade eine Kommunikation zwischen Arduino und ESP-01s Modul zu realisieren. Dabei bediene ich mich an der SoftwareSerial Bibliothek.

Mit dem ESP-01s Modul sende ich, sobald der Befehl "Bewegung" erhalten wurde, kontinuierlich den Befehl "ready," aus, der angeben soll, dass das ESP-01s bereit ist, den nächsten Code zu empfangen.

ESP-Sketch

void setup() {
  Serial.begin(9600);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);                             //mit dem Wlan verbinden
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Serial.setTimeout(2000);
}


void loop() {
  do {
    if (Serial.available() > 0) {
      incomingString = Serial.readStringUntil(',');
    }
  } while (incomingString != "Bewegung");
    
    Serial.print("ready,");
    delay(1000);//

Mit dem Arduino möchte ich, sobald er den Befehl "ready," liest, die Daten transferieren. Aus irgendeinem Grund kann liest er den Befehl "ready" jedoch nicht.
Arduino Sketch

String b;
String a;

void setup() {
  Wire.begin();

  Serial.begin (9600);
  ESPSerial.begin(9600);
  Serial.setTimeout(500);
  delay(1000);
  ESPSerial.setTimeout(1000);
}

void loop() {
  Serial.println("start");
  if (Serial.available() > 0) {
    b = Serial.readStringUntil(',');
  }
   ESPSerial.print(b+',');
  Serial.println(b);
 Serial.print("warten");
if (b == "Bewegung") {
do{
  if (ESPSerial.available() > 0) {
    a = ESPSerial.readStringUntil(',');
  }
    Serial.print(".");
  }while (a != "ready");
  Serial.println("start empfangen");
}
}

Zuerst gebe ich nach dem Kommando "start" den Befehl "Bewegung" ein. Hierbei funktioniert die do-while Schleife im ESP-Sketch auch.
Hat das ESP "Bewegung" empfangen, schickt es daraufhin im Sekundentakt den Befehl "ready,", auf den der Arduino eigentlich anspringen sollte. -> Tut er aber nicht
Weiß vielleicht jemand woran das liegen könnte?

Du solltest ein paar Grundlagen zu Zeichenketten lernen. Hier habe ich mal ein Tutorial dazu geschrieben.

Gruß Tommy

Ja aber ich stehe mit diesem Projekt ein wenig unter Zeitdruck. Es wäre also von Nutzen wenn ich weiterhin mit Strings arbeiten kann.

Um mich bei den Zeichenketten einzulesen bleibt nachher immernoch Zeit.

Wenn wir dir Helfen sollen und du dich aber weigerst, andere oder bessere Techniken zu lernen, kann ich nicht verstehen, warum du uns nur Code-Fragmente hinwirfst.

Wie sollen wir da helfen ?

Und diese Fragmente sind dann noch nichtmal richtig zu lesen, da du keinerlei Beschreibungen mitlieferst.
Z.B. verstehe ich nicht, warum du innerhalb einer Schleife (loop) zwei weitere Schleifen (do + while) aufbaust. Dazu könntest du mal eine Erklärung abgeben, damit man das Fragment etwas versteht.

jule2000:
Ja aber ich stehe mit diesem Projekt ein wenig unter Zeitdruck. Es wäre also von Nutzen wenn ich weiterhin mit Strings arbeiten kann.

Also...
Meiner Ansicht nach, steigert sich der Zeitdruck, mit jeder Sekunde, welche du vertrödelst.
Eine Blockadehaltung hilft da nicht wirklich weiter.

Ein Tipp aus dem Nähkästchen:
Wenn ich ganz schnell eine zuverlässige Serielle Verbindung zwischen 2 µC brauche, verwende ich den CMDMessenger.

Ins besondere, wenn ich gerade zu faul bin, ein eigenes Protokoll zu bauen.

Mein Rat an alle, welche keine Erfahrung mit Protokollen und ihren Parsern haben:
Nimm was fertiges.
Oder bau was eigenes, aber dann musst du Tage dafür einplanen, bis das stabil läuft.

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