Forum: Mikrocontroller und Digitale Elektronik ESP01 Programmierhilfe


von Tim (Gast)


Lesenswert?

Hallo
Ich arbeite mit dem ESP-01 WiFi Modul. Jetzt ist es mir aber lästig, 
immer die Buttons für RST und GPIO0 in der richtigen Reihenfolge zu 
drücken, um in den Programmiermodus zu gelangen; Ziel soll ein "Arduino" 
Stil sein, bei dem CTS (?) auf LOW geht und dann den Bootloader startet.

Aufgabenstellung ist trivial, aber tatsächlich funktioniert es nicht 
(habe gerade einen Aufbau mit µC -overkill)

RST low, nach ca 200ms GPIO0 auf LOW, nach weiteren ca 200ms RST auf 
High, dann 200ms und GPIO0 auf High.
Leider komme ich damit nicht in den Prog.modus, auch mit Zeiten *10 kein 
Erfolg.
Gibt es hier gewisse Mindestanforderungen an die Länge der Low-Zustände?

Danke schonmal vorab

Gruß
Timo

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

schau Dir mal an, wie NodeMCU das macht, zumindest funktioniert es damit 
aus der IDE.

Gruß aus Berlin
Michael

von Klaus (Gast)


Lesenswert?

Tim schrieb:
> RST low, nach ca 200ms GPIO0 auf LOW, nach weiteren ca 200ms RST auf
> High, dann 200ms und GPIO0 auf High.

Ein Timing gibt es da garnicht. Einfach GPIO0 auf low (Jumper/Taster) 
und dann auf die Resettaste drücken. Wenn man in den Kommando-Modus 
will, GPIO0 auf high (Pullup, Jumper weg/Taster nicht drücken) und auf 
Reset drücken. Es kommt nur darauf an, welchen Zustand GPIO0 am Ende des 
Resets hat. Was wann vorher und nachher passiert ist egal, ebenso wie 
lange Reset gedrückt wird.

Ich verwende esptool.py und einen FTDI USB-seriell Adapter. Im Readme 
von esptool steht:

> esptool uses the RTS and DTR modem status lines to automatically
> enter the bootloader. Connect RTS to CH_PD (which is used as
> active-low reset) and DTR to GPIO0.

So habe ich das mit dem Adapter verdrahtet und alles geht automatisch.

MfG Klaus

von Frank S. (hobbyist)


Lesenswert?

@Tim: Mit dem µC funktioniert es genau so, wie du es beschrieben hast. 
Wenn es nicht funktioniert, hast Du im Aufbau irgend einen Fehler. Hier 
wurde es ebenfalls so umgesetzt und es funktioniert tadellos: 
http://www.forum-raspberrypi.de/Thread-projekt-esp8266-programmierer-version-2-0

: Bearbeitet durch User
von Tim (Gast)


Lesenswert?

OK, danke für die Hinweise.

Eine Frage stellt sich mir noch:
- bei der Programmierung mit der NodeMCU Schaltung: muss da ein 
bestimmtes Board oder eine Programmierung in der Arduino IDE eingetellt 
werden, damit die Steuersignale korrekt angesprochen werden?


Gruß
Tim

von Ulrich F. (Gast)


Lesenswert?

Tim schrieb:
> bei der Programmierung mit der NodeMCU Schaltung: muss da ein
> bestimmtes Board oder eine Programmierung in der Arduino IDE eingetellt
> werden,

Ja!
Das NodeMCU findest du in der Boards Liste.

von Tim (Gast)


Lesenswert?

Nachtrag und Abschluss:
- Problem waren irgendwelche HF Störungen, die den ESP nicht aus dem 
Reset kamen liesen; logische High Pegel lag "scheinbar" an -> Oszi sagte 
es jedenfalls. Einen 100nF von Reset nach Masse und alles war gut -> 
also doch HF Störungen, zumal das Phänomen mit einem 10cm angeschlossenn 
Kabel nachvollziehbar war.

- mein Ansatz mit dem µC funktioniert nun tadellos
- eine andere Resetschaltung ist dies hier: 
http://www.ba0sh1.com/esp8266-breakout-board-im-tindie/ Aufgrund der 
langen Ladecharakteristik ist diese nicht für die automatische 
Programmierung nutzbar, aber eine gute Ein-Knopf Alternative, da quasi 
Reset und Programmierung mit einem Taster bedient wird und sich über die 
Drucklänge definiert (-> Ladekurve C)
- Die NodeMCU hat einen Haken: sie benötigt zwei Pins. Sofern man die 
Verriegelung nicht braucht, kann man auch direkt RTS und DTR auf Reset 
und GPIO0 führen. Nebenbei: Die Ansteuerung der Pins wird auch beim 
"Generic ESP8266" ausgeführt, sprich es muss nicht zwangsläufig ein 
anderes Board ausgewählt werden.

- da mein Wunsch nach einer Ein-Pin Lösung noch aussteht, werden ich 
jetzt mal probieren mit einem Monoflop zu arbeiten, sprich DTR liefert 
das Triggersignal und GPIO0 wird entsprechend angesteuert.

von Michael U. (amiga)


Lesenswert?

Hallo,

Monoflop sollte ja kein Problem sein, es muß ja GPIO0 nur noch kurz auf 
Low bleiben wenn Rest wieder High ist. Mehr als ein paar ms wird der 
ESP-Bootloader ja nicht brauchen um die beiden Pins für den Bootmode 
abzufragen.

Gruß aus Berlin
Michael

von Ulrich F. (Gast)


Lesenswert?

Tim schrieb:
> Nebenbei: Die Ansteuerung der Pins wird auch beim
> "Generic ESP8266" ausgeführt, sprich es muss nicht zwangsläufig ein
> anderes Board ausgewählt werden.
Ist es nicht beim NodeMCU invertiert?
(habe selber keinen)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.