Arduino + ESP8266

OP #5559762
Lesenswert?

Hallo Gemeinde,

Ich habe einen ESP9266 an meinen Arduino Mega2560 angeschlossen. 
Folgender Code läuft ab:

#include <SoftwareSerial.h>

const byte rxPin = 2; //Empfangs-Pin (RX)
const byte txPin = 3; //Sende-Pin (TX)

SoftwareSerial myESP8266(rxPin, txPin);

void setup()
{
 Serial.begin(9600);

 while (!Serial) {;}
 Serial.println("Kommunikation erfolgreich gestartet");

 myESP8266.begin(115200);
 delay(100);
 myESP8266.write("AT\r\n");
}

void loop()
{
  while (myESP8266.available())
  {
    Serial.write(myESP8266.read());
    Serial.println("ESP available");

    }
  while (Serial.available())
  {
    myESP8266.write(Serial.read());
    Serial.println("Serial available");

    }

}

Wenn ich den ESp starte erschein im seriellen Monitor:

Kommunikation erfolgreich gestartet.

Wenn ich ein AT Kommando eingebe erscheint im seriellen Monitor 4x 
hintereinander

Serial available

Allerdings erfolgt keine Reaktion auf das eingegeben Kommando.Die 
meldung

ESP available erscheint

erscheint gar nicht.

Wo kann der Fehler liegen?
Gast #5559789
Lesenswert?

Erstens:
Der Mega hat 4 serielle Schnittstellen, aber du verwendest 
Softwareserial...
Den Grund dafür hätte ich gerne mal erfahren.


Zweitens:
GND nicht verbunden.


Drittens:
Woher weißt du, dass der ESP mit 115200 Baud quatscht?
Kann softserial das überhaupt?
Gast #5559828
Lesenswert?

nach dem Starten müsste das Programm sofort das OK Echo vom AT Befehl 
anzeigen. Das Programm könnte man testen indem man den ESP weglässt und 
Rx und Tx verbindet, dann müsste das AT Echo kommen.
Den ESP mit USB-UART und Terminalprogramm testen.
Gast #5559863
Lesenswert?

Heinrich P. schrieb:
> Wo kann der Fehler liegen?

- An der Verkabelung
- An der Schaltung
- An der Programmierung des ESP
- An der Programmierung des AVR

Also mal Butter bei die Fische:

1) Wie sieht der Schaltplan aus? Nicht beschreiben, zeichnen und zeigen. 
Mit Stromversorgung. Mit der Angabe, welcher Controller mit dem PC 
verbunden ist.
2) Auf welchem der beiden Controller läuft der Code, den du oben gezeigt 
hast? Auch den ESP kann man mit der Arduino-Umgebung programmieren.
3) Was läuft auf dem anderen Controller?

Dann hat es sich zur Fehlersuche bewährt, bei jedem Controller einzeln 
erst Senden zu testen, z.B. zum PC, und dann entweder ebenfalls vom PC 
Daten zu empfangen oder wie Johannes vorschlägt einen Kurzschluss 
zwischen RX und TX herzustellen (bei offener Verbindung zum anderen 
Controller!) so dass jeder Controller nur sich selbst hört.

MfG, Arno
Gast #5560300
Lesenswert?

Der Spannungsregler auf dem Arduino ist für das ESP Modul zu schwach. Du 
brauchst eine separate 3,3V Versorgung.

Die Baudrate 115200 ist für SoftwareSerial viel zu hoch. Die Angaben in 
der Arduino Doku sind diesbezüglich zu optimistisch.

Schließe das ESP Modul mittels 3,3V(!) USB-UART Kabel an einen PC an und 
konfiguriere es auf 9600 Baud um. Dann sollte es klappen.

Oder: benutze eine "echte" serielle Schnittstelle. Doch auch diese 
schaffen die 115200 Baud nicht zuverlässig. Siehe dazu die Table 22-12
im Datenblatt 
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf
Alle Baudraten mit einem Error >2% werden nur mit Glück funktionieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren