ESP 01 mit Arduino Mega2560 programmieren

Guten Tag,
seit ein paar Tagen bin ich schon daran das ESP 01 Modul zum Laufen zu bringen. Bisher leider vergebens. Deswegen hoffe ich umso mehr, dass ihr mir hier helfen könnt. Wie schon in der Überschrift zu lesen benutze ich das Arduino Mega2560 mit den Einstellungen, wie im Bild zu sehen. Verkabelt habe ich Arduino und ESP folgendermaßen:

  • ESP → Arduino
  • GND → GND
  • GPIO2 → leer
  • GPIO0 → GND
  • RX → RX
  • TX → TX
  • CH_PD → 3,3V
  • RST → leer
  • VCC → 3,3V

So wie ich das verstanden habe, muss man GPIO0 bevor man kompiliert wieder trennen. Dies habe ich auch getan, was trotzdem zu einer Fehlermeldung führte. Ich hoffe sehr ihr könnt mir hier weiterhelfen.
Mit freundlichen Grüßen
Aaron

Ich habe das zwar noch nicht getestet, aber folgendes ist schon mal falsch:

RX -> RX
TX -> TX

RX geht immer auf TX und TX auf RX, also über Kreuz. Der Rest ist leider nicht meine Baustelle.

Danke für den ersten Hinweis. Da habe ich auf unterschiedlichen Seiten unterschiedliche Angaben gefunden.

Hallo,

mir ist noch nicht klar was das überhaupt werden soll. Auf dem ESP01 ist werksmässig eine sogenannte AT Software drauf. Die verhält sich ähnlich wie ein Modem. Der Mega hat mehrere serielle Schnittstellen. eine benötigst Du um Ihn mit dem PC uber USB zu verbinden. eine Zweite um Ihn mit dem ESP01 zu verbinden. Dabei sollte dann RX und TX gekreutzt sein, zusätzlich solltest Du noch die Pegel anpassen.

Wenn Du den ESP selber mit einem Sketche versehen möchtest empfehle ich Dir dazu einen geeigneten USB Seriell Konverter. die gibt es auch speziell fur den ESP01 mit 3,3 V

Es gibt einen wie ich finde ganz gute Seite zu dem Thema

link

Heinz

Hallo,

wenn Du den Mega2560 nur als USB-UART-Wandler mißbrauchst darf der 2560 sich nicht einmischen, der hängt ja da auch an RX/TX. Also Reset des Mega2560 fest auf GND.
RX an TX usw. ist richtig, Empfänger an Sender und umgekehrt.
Speziell bei USB-TTL-Adapter sind da oft die BEschriftungen falsch rum. beim Mega-Board und bem ESP8266-01 ist aber alles richtig.
Beim ESP8266-10 würde ich Reset und GPIO0 mit Tastern auf GND legen, macht das Leben leichter.

GPIO0 auf GND halten und Reset kurz auf GND brinden den ESP8266 in den Flashmode. Da bleibt er dann auch bis zum nächsten Reset. Man kann dann also auch GPIO0 wieder freigeben.
Wenn es auf GND bleibt, stört es erst, wenn er nach erfolgreichem Flashen neu startet, weil er dann wieder im Flashmode landet. Dann muß man eben GPIO0 freigeben und kurz Reset drücken zum Neustart.

Der ESP8266 meldet sich normalerweise mit seinem Bootloader mit einer Ausgabe. Alte Firmware mit 74800 Baud, neuere mit Boot-Overlay auf 115200. Dann weiß man zumindest, daß man Kontakt zum Modul hat.

Ich hoffen jetzt, ich habe nichts vergessen.

Ups, gerade gesehen: Rentner hat mit seinem Hinweis völlig Recht, der ESP8266 ist NICHT 5V tolerant bei den Signalen. Er geht nicht kaputt dabei, die richtige Funktion wird bei Pegeln über der Versorgungsspanung z.B. an RX nicht garantiert (sagt das Datenblatt des Herstellers).

Gruß aus Berlin
Michael

Vielen Dank für die beiden hilfreichen Antworten.

Nochmal kurz zur Erläuterung meines Vorhabens: Mein Ziel ist es mit dem Handy verschiedene Sachen zu steuern. Mein Zwischenziel ist es aber erstmal mit dem ESP 01 zu kommunizieren.

Hier meine überarbeitete Verkabelung:

  • ESP -> Arduino
  • GND -> GND
  • GPIO2 -> leer
  • GPIO0 -> mit Taster zu GND
  • RX -> TX
  • TX -> RX
  • CH_PD -> 3,3V
  • RST -> mit Taster zu GND
  • VCC -> 3,3V

Das der ESP nur 3,3 Volt verträgt weiß ich, aber beim Arduino Mega gibt es ja dafür einen extra Anschluss.

Die Einstellungen beim Arduino bleiben wie am Anfang.

Hier meine Vorgehensweise:

  • GPIO0 mit dem Taster mit GND verbinden
  • Reset mit dem Taster mit GND verbinden
  • Reset von GND lösen
  • GPIO0 von GND lösen
  • Sketch kompilieren

Leider funktioniert es jetzt immer noch nicht richtig. Die Fehlermeldung ist:
"esptool.FatalError: Failed to connect to ESP8266: Timed out waiting for packet header"

Und wie war das gemeint mit

amithlon:
Also Reset des Mega2560 fest auf GND.

Ich freue mich auf eure Antworten!
Aaron

Hallo,

und was ist mit dem TX sende Ausgang des Mega , da kommen 5V raus bei H signal und die geehen auf den ESP Eingang.

Du willst mit dem ESP kommunizieren , Ok Du mitttels PC oder über den Mega , dann benotigt der Mega einnen Sketch der über eine serielle Schnittstelle mit dem PC Kommuniziert und eine zweite mit der er mit dem ESP kommuniziert.

Wenn du den Mega missbrauchen willst um direkt an den ESP zu kommen dazu hat Michael was geschrieben, dazu steht auch was in dem Link.

Heinz

Hallo, aber genau das habe ich nicht ganz verstanden, wie man den Mega da raus nimmt. Ich möchte mir halt möglichst keine neuen Teile kaufen. Ich habe aber noch einen FTDI Adapter FT232RL zu Hause rum liegen. Mit dem müsste es doch auch ohne Mega klappen, oder?

Aaron_01:
.....
Das der ESP nur 3,3 Volt verträgt weiß ich, aber beim Arduino Mega gibt es ja dafür einen extra Anschluss.
.....

Dieser 3,3V-Anschluss ist zur Versorgung von Modulen mit einer Versorgungsspannung von 3,3V gedacht und hat nichts mit den Datenpins zu tun.
Diese müssen immer extra betrachtet werden und sind beim ESP8266 nicht 5Volt tolerant. Das heißt, die können keine 5 Volt vertragen und überleben das nicht lange. Da brauchst du entsprechende Technik um die Spannungen anzupassen.

Das kann die Ursache für das Fehlverhalten deiner Schaltung sein.

Ja. Das habe ich jetzt verstanden. Der TX-Anschluss hat trotzdem 5V. Und wie ist das dann bei diesem FTDI Adapter FT232RL? Laufen da über TX auch 5V oder regelt der alle Pins runter?

Aaron_01:
Ja. Das habe ich jetzt verstanden. Der TX-Anschluss hat trotzdem 5V. Und wie ist das dann bei diesem FTDI Adapter FT232RL? Laufen da über TX auch 5V oder regelt der alle Pins runter?

Ich habe jetzt keine Ahnung, was du mit dem FTDI vor hast.
Und ob der auf den Datenleitungen 5V oder 3,3V liefert, musst du an deinem Adapter selbst heraus finden, ich kenne den nicht. Und es gibt auch welche die man auf 3,3V umschalten kann, aber dann trotzdem 5 Volt auf den Datenleitungen liefern. Das wird dir nicht weiter helfen. Du kannst aber auch da einen Spannungsteiler dazwischen bauen, damit der ESP nur 3,3V erhält.

Aaron_01:
Hallo, aber genau das habe ich nicht ganz verstanden, wie man den Mega da raus nimmt. Ich möchte mir halt möglichst keine neuen Teile kaufen. Ich habe aber noch einen FTDI Adapter FT232RL zu Hause rum liegen. Mit dem müsste es doch auch ohne Mega klappen, oder?

richtig

wie man den FTDI Adapter verwenden kann findest Du im Netz z.B link

Heinz

Guten morgen!

Vielen Dank für die vielen hilfreichen Antworten. Leider funktioniert es bei mir immer noch nicht. Hier nochmal mein Zwischenstand:

  • ESP → FTDI Adapter
  • GND → GND
  • GPIO2 → leer
  • GPIO0 → mit Schalter zu GND
  • RX → TX
  • TX → RX
  • CH_PD → 3,3V
  • RST → mit Taster zu GND
  • VCC → 3,3V

Mein Sketch ist leer, da ich nur die Verbindung zum ESP aufbauen möchte. Also nur mit void setup(){} und void loop(){}.

Meine Einstellungen sind auf dem Bild im Anhang zu sehen.

Folgende Vorgehensweise befolge ich:

  • mit Schalter GPIO0 an GND binden
  • mit Taster kurz (2 Sekunden) RST an GND binden
  • Sketch kompilieren

Bei dieser Vorgehensweise geht es schon so weit, dass der Sketch komplett hochgeladen wird und keine Fehlermeldung kommt. Aber ich dachte, dass das ESP im seriellen Monitor etwas ausgibt. Bei kommt da allerdings nichts an. Im Anhang auch nochmal meine Einstellungen im seriellen Monitor. Ich hoffe ihr könnt mir hier auch noch helfen. Ich freue mich auf eure Antworten.

Mit fröhlichen Grüßen
Aaron

2019-11-08 06_57_01-Window.png

Nach etwas hin und her probieren habe ich doch noch eine Entdeckung gemacht. Wenn der GPIO0 mit GND verbunden ist und ich den Sketch hochgeladen habe passiert erstmal nichts. Drücke ich allerdings erneut RST kommt eine Meldung im seriellen Monitor:

ets Jan 8 2013,rst cause:2, boot mode:(1,6)

Kann mir bitte einer erklären, wie man diese Angaben auswerten kann?

Jetzt habe ich an den GPIO 2 eine LED angeschlossen und mit dem passenden Sketch blinkt sie auch. Mein Zwischenziel habe ich also erreicht ich danke euch für eure Hilfe und Geduld.

Jetzt versuche ich ein paar andere Sachen. Falls ich nochmal Fragen habe melde ich mich nochmal.

Kann mir bitte einer erklären, wie man diese Angaben auswerten kann?

Ist dein Internet leer?

https://www.esp8266.com/viewtopic.php?p=2096#p2112

Hallo,

naja, im 2. Link ist die Liste der boot devices falsch:

     boot device:
        0:
        1 UART (Flashmode) -> GPIO0 auf Low, GPIO2 auf High
        3: flash                  -> GPIO0 und GPIO2 auf High
        4: sd-Card              -> GPIO15 auf High. boot geht nicht wirklich, schafft man aber,
                                         wenn man bei den anderen ESP8266 Modulen beim Reset
                                         GPIO15 nicht auf Low hat.

Flashmode ist das, was bei ihm passiert, wenn nach dem flashen GPIO noch auf Low ist.
Neuere Versionen mit dem Boot-Overlay scheinen garkeine Ausgaben vom Bootloader mehr zu machen, deshalb passierte beim ihm da garnichts.

Gruß aus Berlin
Michael

ok..

Dankeschön. Jetzt habe ich mit dem ESP auch einen Access Point errichtetet und kann mit meinem Handy drauf zu greifen. Ich habe mein Ziel also erreicht. Ich bin mega froh für eure Hilfe. Vielen lieben Dank!