Hallo Freunde, ich bin gerade an einem ESP01 und habe folgendes Problem: ich habe den Gpio1 Pin auf Input gesetzt und geerdet, wenn ich den ESP01 boote erhalte ich folgende Fehlermeldung: "Timed out waiting for packet header" wenn ich das grounding weg lasse kann ich booten, muss aber dann manuell das Erdungskabel einsetzen, das ist natürlich unschön. Ich habe nun auf diversen Seiten gesucht, und keine vernünftige Lösung gefunden. Der pin Gpio1 soll als Input genutzt werden. Wenn Input 3,3 Volt vorhanden sind kann ich das ja im Code abfangen, wenn dann die 3,3 Volt abfallen wird der GPIO1 Pin nicht geerdet, daher hatte ich den Pin geerdet um das Problem zu umgehen, habt ihr eventuell eine Idee woran das liegen könnte ? Vielen Dank! Gruß Diago
Diagonal D. schrieb: > Ich habe nun auf diversen Seiten gesucht, und keine vernünftige Lösung > gefunden. Dann schau mal dort: http://stefanfrings.de/esp8266/index.html#fwupdate
Hallo, danke für die schnelle Rückmeldung. Ich habs noch nicht so ganz verstanden, eine Korrektur vorab, ich bin am Gpio2 ( nicht 1), wenn ich mir die Beschreibung aus deinem Link anschaue steht da drin: "Ist mit der blauen LED verbunden, die bei LOW Pegel leuchtet. Flackert beim Start. Darf beim Start nicht auf Low gezogen werden. Ausgang vom zweiten UART, der nur Ausgabe kann." Daraufhin habe den Pin beim void setup(void){ pinMode(2, INPUT); digitalWrite(2, HIGH); ( als auch auf LOW gesetzt) } gesetzt und gestartet, es bootet, ich kann dann am GPIO Pin einen Input code Technisch abfragen ( Strom liegt an), wenn der Strom weg ist wird die Pin nicht geerdet<-- das ist das Problem ?
:
Bearbeitet durch User
Diese Befehlsfolge ist sinnlos: > pinMode(2, INPUT); > digitalWrite(2, HIGH); Ein Eingang wird mit digitalRead() abgefragt. Ein Ausgang wird mit digitalWrite() gesteuert. Der Pin ist beim Booten zeitweise ein Ausgang, welcher mehrmals den Pegel zwischen LOW und HIGH wechselt. Wenn du ihn durch deine externe Signalquelle direkt auf HIGH oder LOW legen würdest, hättest du dabei einen Kurzschluss. Außerdem musst du berücksichtigen, dass da noch die blaue LED dran hängt. Deine Quelle darf daher nicht allzu hochohmig sein, sonst wird der LOW Pegel zu viel Spannung haben. Wenn du den Pin durch deine externe Quelle auf LOW ziehst, kann der ESP in dieser Zeit nicht booten. Deswegen kannst du den Pin nur sehr Eingeschränkt als Eingang verwenden. Das geht nur, wenn du eine Quelle hast, die zum Zeitpunkt des Bootens garantiert keinen LOW Pegel liefert. Zwischen Quelle und Pin muss auf jeden Fall ein Widerstand. Beispiel:
1 | Taster 220Ω |
2 | ____ |
3 | GND |------- ---------[===]----o GPIO2 |
Hallo, zum Zeitpunkt des Bootens kann am Eingangspin Low oder High liegen, das hängt von einem externen Lichtsensor ab, dieser Lichtsensor liefert dann am gpio2 Low oder High, das kann ich nicht beeinflussen, da bleibt ja dann nur eine Möglichkeit übrig, erst nach dem Booten den Lichtsensor anzuschliessen und pin2 über eine Widerstand auf ground ziehen.... Danke für deine Super tollen Erklärungen!
Diagonal D. schrieb: > dieser Lichtsensor liefert dann am gpio2 Low oder High, das kann > ich nicht beeinflussen, da bleibt ja dann nur eine Möglichkeit übrig, Ja > erst nach dem Booten den Lichtsensor anzuschliessen und pin2 über eine > Widerstand auf ground ziehen.... Ähh, nein. Das wäre mir zu unhandlich. Und auf GPIO0 auszuweichen macht es nicht besser, denn der steuert ja auch den Bootloader. Ich würde lieber den ESP-01 durch einen ESP-12F austauschen, der hat genug Eingänge für deinen Anwendungsfall. Oder: Benutze doch einfach den GPIO3 (RxD) als Eingang. Oder brauchst du ihn für serielle Kommunikation?
kann ich den GPIO3 auch während der Programmierung und danach im Betrieb so belassen ohne das ich jedesmal evt. umstecken muss, je nach dem in welchem Mode ich bin, Programmierung oder normaler Betrieb ?
Zum Programmieren muss der Pin logischerweise mit dem USB-UART Adapter verbunden sein. Du kannst nicht einfach zwei Signalquellen gleichzeitig auf einen Pin direkt zusammen verbinden. Das wäre so als ob du die Haustüre (den Eingang) öffnen würdest, während deine Frau sie zu drückt. Der stärkere gewinnt, der Schwäche verletzt sich möglicherweise dabei.
die Frage bezog sich auf den USB-UART Programmer, der ESP01 wird ja zum Programmieren drauf gesteckt, als INPUT pin würde ich die 3 benutzen, nach dem Programmieren nehme ich den ESP01 ja wieder vom Programmer ab und verbinde es mit Batterien, das wars oder, an Pin3 muss ich ja nichts ändern, da dieser vom Bootvorgang nicht betroffen ist, korrekt ?
Diagonal D. schrieb: > das wars oder, an Pin3 muss ich ja nichts > ändern, da dieser vom Bootvorgang nicht betroffen ist, korrekt ? Ja.
sorry, eine Frage noch: im Programmier Modus über den USB-UART Adapter kommt es auch nicht zu konflikten wenn ich den Pin3 als Input benutze oder ? Ich frage deswegen weil der Pin3 ja auch gleichzeitig Serieller Eingang ist, das bedeutet für mich, dieser Pin3 wird während des Flashings als RX benutzt, dann nach dem Flashen wenn das Programm startet kann ich es über den Code ganz normal als Pin3 Input etc. benutzen, korrekt ?
:
Bearbeitet durch User
Diagonal D. schrieb: > sorry, eine Frage noch: im Programmier Modus über den USB-UART Adapter > kommt es auch nicht zu konflikten wenn ich den Pin3 als Input benutze > oder ? Bevor wir aneinander vorbei reden: Du meinst so einen Adapter, order? Was du in deinem Programm einstellst spielt keine Rolle, weil das Programm erst nach dem Bootloader startet. > nach dem Flashen wenn das Programm startet kann ich es > über den Code ganz normal als Pin3 Input etc. benutzen, korrekt ? Ja sicher. Kommt dir das komisch vor? Ist es nicht.
ich habe fast den gleichen Programmer, meiner ist noch mit einem Schalter für Programming und UART versehen. Ich verstehe den Gesamt Prozess (Programmierung über Arduino so): 1. In Arduino wird Programmiert 2. dann wird in Arduino ein Maschinencode generiert der dann auf den Microcontroller via USB Programmer übertragen wird, genau nach diesem Flash Vorgang startet der Bootloader auf dem ESP01 und lädt das übertragene Programm ( das passiert alles ohne die ESP01 aus dem Programmer zu nehmen,) korrekt? dann wenn das Programm fertig programmiert ist, kann ich es ja vom Programmer abziehen und mit einer Batterie betreiben?
:
Bearbeitet durch User
Also ehrlich Mann, probiere es doch einfach aus anstatt ewig um den heißen Brei zu diskutieren. Du hast schon zwei Bestätigungen von mir, nun die dritte. Brauchst du es als Einschreiben mit der Post?
danke für die Mühen! und sorry für die vielen Fragen.
Moin, da ich jetzt keinen neuen Thread aufmachen wollte, stelle ich die Frage mal in dem Thread: wenn ESP01 startet und die void loop() funktion geht, falls dort irgendein Fehler passiert kann man das Programmtechnisch abfangen, wie bei herkömmlichen Programmen mit "try catch" und evlt. das Modul neu starten lassen ?
Deine Frage hat nichts mit diesem Thread zu tun. Wenn es mit dieser Antwort nicht erledigt ist, mache dazu bitte einen neuen eigenen Thread auf. Exception handling wurde erst relativ spät als optionale Funktion zum SDK hinzugefügt. Es kommt also auf die Version an. Wenn du eine verbotene Endlosschleife (ohne delay() und yield()) ausführst, löst der Watchdog automatisch einen Neustart aus.
Stefan ⛄ F. schrieb: >> nach dem Flashen wenn das Programm startet kann ich es >> über den Code ganz normal als Pin3 Input etc. benutzen, korrekt ? > > Ja sicher. Kommt dir das komisch vor? Ist es nicht. Moin, ich wollte ein kurzes Feedback geben was beim Programmieren und Flashen zu beachten ist ( kann u.U. für Anfänger viel Zeit sparen): Nach dem ich meinen Code über Arduino geschrieben habe, habe ich alle GPIO Pin Input und Output Kabel abgezogen dann über den USB Flasher auf den ESP01 hochgeladen ( Usb flasher siehe Anhang), beim "Hochladen" über Arduino wird danach das Programm auf dem ESP01 gestartet, dies führt z.B. bei Pin3 (als Input) zu Fehlern (vermutlich da dort auch die RX Belegung über den USB Programmer belegt ist <--- das war auch der Punkt was ich gestern noch nicht so ganz verstanden hatte ;-) , besser ist es: in Arduino Programmieren, GPIO Kabel abziehen, dann "Hochladen" (Button auf Menüleiste von Arduino klicken) warten bis Hochladen beendet ist, ESP01 vom Programmer abziehen alle GPIO Kabel wieder anschliessen und an Stromquelle anschliessen.
:
Bearbeitet durch User
Diagonal D. schrieb: > dies führt z.B. bei Pin3 (als Input) zu Fehlern Was für Fehler? Meinst du dass dein Sketch mit den seriellen Daten vom PC nichts anfangen kann und sich deswegen nicht wie gewünscht verhält? Dann ist das halt so, der Programmieradapter ist schließlich nicht die richtige Laufzeitumgebung.
meine Waschmaschinen Schaltung ist jetzt fertig, dieser Prüft anhand der LED Lampe an der Waschmaschine ob der Waschvorgang durch ist, dort habe ich ein Lichtsensor angebracht, dieser prüft ob die LED an oder aus ist und sendet ein Befehl per client an einen 2. ten ESP01 der als Webserver an einer Steckdose mit Adapter läuft ein Signal, dort leuchtet während des Waschvorgangs eine LED, wenn der Waschvorgang zu Ende ist geht die Leuchte aus. Da die Waschmaschine im Keller läuft und ich vom Obergeschoss nicht mitbekomme wann der Waschvorgang zu Ende war, ist es eine schönes Teil der mir die Arbeit erleichtert, ich konnte auch wieder viel dazu lernen ;-) Die von Dir angepriesene Internetseite: http://stefanfrings.de/esp8266/index.html#fwupdate ist ja sowas von toll, wer hat die wohl gemacht ;-)? Wenn Du lust hast können wir die Schaltung als ein Beispielprojekt irgendwo hinterlegen ? (ich muss dazu sagen, ich bin kein Elektroniker, die Bauteile habe ich nach bestem Kenntnisstand/Prüfen dimensioniert, die Schaltung insgesamt auch...)
:
Bearbeitet durch User
Diagonal D. schrieb: > Wenn Du lust hast können wir die Schaltung als ein Beispielprojekt > irgendwo hinterlegen ? Tu dir keinen Zwang an, es gibt genug Platformen für so etwas: * https://www.mikrocontroller.net/forum/codesammlung * https://create.arduino.cc/projecthub * https://github.com/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.