Forum: Mikrocontroller und Digitale Elektronik esp8266-01 mit GPIO0-boot Problemen wenn GPIO0 Relais ansteuern soll


von Hans M. (hans-m)


Angehängte Dateien:

Lesenswert?

Hallo,

mein Aufbau:
ESP8266-01 Modul
Programmiert mit der (latest) Arduino IDE
GPIO0 soll über Transistor ein Relais ansteuern

Also alles nichts Neues denke ich. Was mich aber wunder ist, dass
ich scheinbar der einzige bin den es stört, dass das Relais
angesteuert wird, wenn der ESP bootet.

Versuche mit einem 12E-Module brachten das selbe Ergebnis:
GPIOs zucken kurz und somit wird das Relais geschaltet.

Versuche den GPIO0 active low oder active high zu betreiben brachten
keine Lösung.

Meint ihr, dass es mit einem Optokoppler/MOSFET eine Lösung gäbe?
Wie würde da der Aufbau aussehen?

Als Bsp. habe ich mal den active high Schaltplan angehängt.
Spannunsversorgung ist noch ein anderes Thema.

Würde mich sehr über Antworten freuen!

von Flip B. (frickelfreak)


Lesenswert?

1,8k nach gnd

von Hans M. (hans-m)


Lesenswert?

Hi Flip,
mmmhhhh....
1,8k habe ich keinen.
Kannst du deine Angabe etwas erklären?

: Bearbeitet durch User
von schufti (Gast)


Lesenswert?

warum wunderst du dich, dass das Relais zuckt wenn du so einen Murks 
machst?

Im Resetzustand ist GPIO0 (wie übrigens die meisten PINS der meisten 
µCs) als Eingang bzw. tristate deiniert. Mit deiner Murksbeschaltung 
bietest du über R6, R7 genug Strom um den Transistor T2 an/durch zu 
steuern.

Warum sollte andere das stören, die werden das kaum so machen....

von Hans-m (Gast)


Lesenswert?

Hi schufti,
Vielen Dank für deinen stimmungsvollen Kommentar. ?
Ich habe schon viele verschiedene schaltungsmöglichkeiten
Durchgetestet. Nun bin ich halt an der hängengeblieben.
Der Grund: es bootet.

Sag doch mal was du andersmachen würdest!

von Michael U. (amiga)


Lesenswert?

Hallo,

GPIO nicht als Ausgang nutze würde ich machen...
Als Eingang für einen Taster oder ein Signal, das zur Bootzeit sicher 
High ist, geht auch.
Wenn es denn ubedingt GPIO0 und Deine Relaisansteuerung sein soll:
pnp-Transistor nehmen und Relais mit Low an GPIO0 einschalten. Emitter 
an +,
Kollektor an Relais gegen GND.
GPIO0 mit 10k an +, Basis über 10k an GPIO0. Dann bleibt der Transistor 
gesperrt bis GPIO0 definiert auf Low geschaltet wird.

Ich habe an einem -12 alle nutzbaren Pins belegt, RFM12 dran und 
MCP23S17 am SPI. Da durfte ich mehrmals umsortieren, bis alle Zustände 
ohne Nebeneffekte passten.

Gruß aus Berlin
Michael

von Klaus (Gast)


Lesenswert?

GPIO0 muß nun mal High beim booten sein. Und wenn dein Relais angeht, 
wenn GPIO0 High ist, dann wird es zwangsläufig beim booten auch angehen. 
Du mußt das Relais so ansteuern, daß GPIO0 high es ausschaltet und GPIO0 
low es einschaltet. Dann noch die Logik in deinem Programm tauschen und 
alles wird gut.

MfG Klaus

von Hans M. (hans-m)


Lesenswert?

Michael U. schrieb:
> Hallo,
>
> GPIO nicht als Ausgang nutze würde ich machen...
> Als Eingang für einen Taster oder ein Signal, das zur Bootzeit sicher
> High ist, geht auch.
> Wenn es denn ubedingt GPIO0 und Deine Relaisansteuerung sein soll:
> pnp-Transistor nehmen und Relais mit Low an GPIO0 einschalten. Emitter
> an +,
> Kollektor an Relais gegen GND.
> GPIO0 mit 10k an +, Basis über 10k an GPIO0. Dann bleibt der Transistor
> gesperrt bis GPIO0 definiert auf Low geschaltet wird.
>
> Ich habe an einem -12 alle nutzbaren Pins belegt, RFM12 dran und
> MCP23S17 am SPI. Da durfte ich mehrmals umsortieren, bis alle Zustände
> ohne Nebeneffekte passten.
>
> Gruß aus Berlin
> Michael

Hallo Michael,
danke für den Tipp. Werde es testen, wenn meine PNP-Transistoren 
angekommen sind. Ich denke aber, dass wenn der GPIO nach oben oder unten 
"zuckt" der Transistor durch schaltet...

Wenn du bei einem -12 alle GPIOs benutzt - was liegt bei diesen während 
des Bootens an?

In dem Artikel:
https://zoetrope.io/tech-blog/esp8266-bootloader-modes-and-gpio-state-startup
wird auch nur über die GPIOs 0, 2 und 15 geschrieben. Meine Tests mit 
einem 12E (und den Pins 12, 13, 14, 16) ergaben aber, dass diese nicht 
stabil beim Booten sind.

von Michael U. (amiga)


Lesenswert?

Hallo,

12, 13, 14 (eigentlich auch 15 als CS) sindd er Hardware-SPI, kann schon 
sein, daß die beim Hochfahren vom ESP oder dem Arduino-Stratcode 
angefasst werden.
Die 16 ist in der I/O-Tabelle von Espressif vorsichtshalber garnit 
enthalten, macht bei mir SCk für den RFM12 (Sofware-SPI, weil ich alre 
Routinen recycled habe).

Ansonsten ist es eben das Problem, In- und Outs passend zuverteilen, 
entsprechend PullUp/PullDown an die ESP-Pins und jeweils Hardware so 
dran, daß es zumindest keinen Schadden anrichtet. Sind ja meist dann 
eben Relais o.ä., was sich nicht gut handhaben läßt. Ich habe im Momet 
keine dran, aber da ohnehin 2x MCP23S17 dran sind (wegen Display usw), 
habe ich da noch 12 I/O frei und da stört mich kein Gewackel des ESP 
wenn ich es nicht will.

Gruß aus Berlin
Michael

von Hans M. (hans-m)


Angehängte Dateien:

Lesenswert?

Hallo Michael,

vielen Dank für die Tipps. Ich habe die Shaltung nun mal
etwas umgestaltet (s. Anhang).
Scheinbar sind wirklich nur GPIO4 u. 5 für meine Zwecke
als Relay-Ansteuerung geeignet.

Bei den "großen" Cs vor und nach dem LF33C bin ich mir
überhaupt nicht sicher ob das so groß sein muss.
Hat mir hierzu jemand noch einen Tipp?

Grüße

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

ich kenne die Stromaufnahme Deiner Relais nicht. Mehr als 22µF habe ich 
hinter einem Regler noch nie eigebaut, vor dem Regler hängt von der 
5V-Versorgung ab. Bei meinen meist benutzten Hany-Ladern oder Netzteilen 
sind bei mir meist 47-100µ dran, was ich gerade greife.

Ich hätte da ohnehin 5V-Relais genommen und diese vor dem Regler 
angehangen. Entlastet den 3,3V-Regler und vermindert Störungen auf der 
3,3V-Spannung beim Schalten.

PullUps an GPIO0 und 2 habe ich keine, die internen des ESP sindda 
aktiv solange keiner an den Pins was umprogrammiert. CH_PD hängt direkt 
an 3,3V, darf er auch. GPIO15 wie bei Dir über 10-22k an GND, den kann 
man auch als I/O recht gut nutzen, er muß eben nur beim Reset auf Low 
liegen.

Gruß aus Berlin
Michael

von Hans M. (hans-m)


Lesenswert?

Hi Michael,

danke für die Tipps.
Ja, Relay kommt eigentlich vor dem Regler an die Spannung.


Grüße

von Hans (Gast)


Lesenswert?

Hallo Michael,
nun bin ich endlich mal dazugekommen Deinen Vorschlag mit dem PNP
zu testen. Doch leider tut das auch nicht (ESP8266-01 Modul).
Mit einem esp-12E funktioniert nun alles recht zuverlässig.
Grüße

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.