ich habe mir eine Schaltung gebaut (Sensordaten lesen und per MQTT verschicken) und würde die jetzt gern ohne PC betreiben.
Ich habe alles entwickelt, läuft auch ganz gut. Jetzt besteht nur noch das Problem, dass ich wenn ich den Strom anschalte, der ESP32 nicht richtig startet. Erst wenn ich einmal auf den Reset-Button drücke, läuft alles wie gewollt. Ist aber etwas nervig, immer nach einem Stromausfall an das Gerät ran zu müssen und den Reset-Button zu drücken.
Beim entwickeln am PC ist das nicht aufgefallen, erst jetzt ohne PC. Gibt es da irgendwo noch eine Option, die ich umstellen muss?
"nicht richtig startet" kann ich leider nicht 100%-ig definieren, da es nur auftritt, wenn ich nicht per USB-Kabel angeschlossen bin. Ich kann mir also leider nichts über Seriell ausgeben lassen (außer mit zusätzlicher Hardware, aber ich wollte es erstmal ohne probieren).
Normalerweise sollte sich der ESP32 im WLAN einloggen, dann bei einem MQTT-Broker und dann Sensordaten auslesen und senden. Parallel wird ein Webserver gestartet, über den man konfigurieren kann. Läuft grundsätzlich auch alles, nur nicht direkt nach "Strom an" sondern erst nach Reset. [EDIT: direkt nach Strom an loggt er sich gar nicht im WLAN ein.]
Ich denke nicht, dass es am Code liegt, sondern wahrscheinlich eher an einer Build-Option oder so. Möglicherweise auch die Schaltung, aber die kann ich erst heute Abend posten, genau so wie den Code.
Hat schon mal jemand den ESP32 ohne USB-Anschluss betrieben? Funktioniert das bei euch direkt oder müsst ihr erstmal auf reseten?
ich denke Du must rausbekommen ob das Ding sich beim starten aufhängt oder ob das einloggen nicht klappt.
bau doch einfach mal eine LED mit dran und lass die mit millis blinken im loop . Nur um zu sehen ob das Ding soweit kommt.
Heinz.
@Fips hoffe ich hab mal richtig gedacht aber das sollte auch beim ESP 32 klappen oder ??
@Derfips: nur der Vollständigkeit halber: ich habe gerade gesehen, dass du in deinem Codebeispiel serielle Ausgaben hast. Die sehe ich ja nicht... Aber ich probiere es trotzdem mal.
@Rentner: Danke für den Tip. Aber nach dem, was ich bis jetzt gesehen habe, hängt er sich wahrscheinlich beim starten auf. Nachdem ich auf Reset drücke, geht ja alles. Aber ich probiere es nachher mal aus.
Tobinator: @Derfips: nur der Vollständigkeit halber: ich habe gerade gesehen, dass du in deinem Codebeispiel serielle Ausgaben hast. Die sehe ich ja nicht... Aber ich probiere es trotzdem mal.
Das ist klar. Deshalb lass ich bei mir ja auch die Board Led blinken.
An Pin 16 hängt bei mir ein Relais. Ich kann ganz normal programmieren und nach Abschluss höre ich das Relais auch klicken.
Dann ziehe ich das USB-Kabel ab und schließe meinen normalen Strom an (3,3V, nicht über USB, sondern über den 3,3V-Pin). Direkt nach Strom ein passiert nichts, erst, wenn ich auf Reset drücke, höre ich das Relais klicken.
An Pin 16 hängt bei mir ein Relais. Ich kann ganz normal programmieren und nach Abschluss höre ich das Relais auch klicken.
Dann ziehe ich das USB-Kabel ab und schließe meinen normalen Strom an (3,3V, nicht über USB, sondern über den 3,3V-Pin). Direkt nach Strom ein passiert nichts, erst, wenn ich auf Reset drücke, höre ich das Relais klicken.
Diesen besagten Kondensator scheine ich gar nicht zu haben... Und an anderen Stellen findet man auch andere Ursachen... Ich glaube, da brauche ich doch etwas mehr Zeit, um den Fehler zu finden...
Wie versorgt du deinen ESP32 denn mit Strom? Über den USB Port, über die Pins oder hast du ein Board mit Akkuanschluss?
Ich betreibe mehrere ESP32 problemlos sowohl per Akku (Lolin32 mit extra Akkuanschluss) oder über externes Netzteil und 5V Pin oder mit Handyladekabel über den USB Port.
Wenn also deine Stromversorgung in Ordnung ist und der Problem auch ohne externe Hardware auftritt, würde ich auf einen Hardwaredefekt tippen.
ist schon seltsam, wenn er einmal Reset drückt klappt es ja , ich denke ehr da hängt ein pin in der Luft und verhindert das Booten , aber warum nicht wenn er über USB einspeist. Man müsste sich das Schaltbild mal genauer ansehen , Aber wir wissen nicht genau was für ein Board es ist.
hab leider E-Mail-Benachrichtungen ausgeschaltet und hatte mich eigentlich mit dieser Board-"Eigenschaft" abgefunden und deswegen gestern nicht mehr reingeschaut... sry...
Stromversorgung läuft über dieses Schaltnetzteil: IRM-10-12
und nachgeschaltet wird über ein LM2575-3.3 die Spannung auf 3,3V gewandelt. Damit gehe ich an einen 3,3V-Pin des Boards. Stützkondensatoren habe ich auch.
Ich versuche demnächst mal mit einem Oszilloskop zu messen, wie der Strom beim Einschalten aussieht.
Ja, ich denke Du solltest mal die Spannung messen.
Da ich das identische ESP32 Board hier rum liegen hatte habe ich gerade mal versucht Dein Problem nachzuvollziehen. Dazu habe ich Deinen Code für das Relais verwendet, den Du gepostet hast.
Da ich das von Dir verwendete Schaltnetzteil und den Spannungsregler nicht habe, habe ich das Board stattdessen über den 3.3V Pin eines anderen ESP32 Boards mit Spannung versorgt, das über den USB Port angeschlossen war.
Mit diesem Aufbau konnte ich Dein Problem nicht nachstellen. Das Relais hat immer problemlos geschaltet, so bald es Strom bekommen hat, ein Reset war nicht erforderlich.
EDIT: Noch eine Ergänzung: Bei dem AZ Delivery Board hatte ich auch schon Probleme mit Brownout, bei Code und Hardware, mit der andere Boards problemlos liefen. Du kannst mal testweise den Brownout Detektor deaktivieren und schauen ob das hilft. Das wäre ein starker Hinweis auf Probleme mit der Stromversorgung. Sollte aber keine Dauerlösung sein, da es zu anderen Problemen führen kann.
Zum Abschalten des Brownout Detektors: #include "soc/rtc_cntl_reg.h"
und in setup()
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);