Ich habe Reset und D0(GPIO16) verbunden und dieses Programm um DeepSleep zu testen, aber der D1 Mini wacht nicht mehr auf nachdem er einmal durchgelaufen ist. void setup() { Serial.begin(2400); Serial.setTimeout(2000); // Wait for serial to initialize. while(!Serial) { } // Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds"); ESP.deepSleep(30e6); // Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch) //Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal"); //ESP.deepSleep(0); } void loop() { } Woran kann das liegen oder wie kann ich das fixen?
Nach ESP.deepSleep(...) soll man bei einigen Firmware Versionen noch einen delay(100) einbauen, damit der Chip zuverlässig einschläft.
Fl0_ F. schrieb: > Ich habe Reset und D0(GPIO16) verbunden und dieses Programm um DeepSleep > zu testen, aber der D1 Mini wacht nicht mehr auf nachdem er einmal > durchgelaufen ist. Das funktioniert bei mir. NOTE 470R zwischen D0 und RST, sonst geht Programmieren im Schlaf nicht.
1 | void setup() { |
2 | // initialize digital pin LED_BUILTIN as an output.
|
3 | pinMode(LED_BUILTIN, OUTPUT); |
4 | }
|
5 | |
6 | // the loop function runs over and over again forever
|
7 | void loop() { |
8 | for (int i = 0; i < 10; i++) { |
9 | digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) |
10 | delay(300); // wait for a second |
11 | digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW |
12 | delay(300); // wait for a second |
13 | }
|
14 | ESP.deepSleep(1000000L * 30); |
15 | // 470 R between D0 and /RST : wakeup AND program (rst) both working
|
16 | }
|
leo
benötige ich unbedingt den widerstand zwischen den pins? Oder kann das auch ohne funktionieren?
:
Bearbeitet durch User
Fl0_ F. schrieb: > benötige ich unbedingt den widerstand zwischen den pins? Oder kann > das > auch ohne funktionieren? Ohne Verbindung gibt es kein Reset. Ohne Widerstand (i.e. mit Draht) kann die IDE nix programmieren. Der Wert ist sicher unkritisch. leo
Mir ist klar, dass ich ohne widerstand nichts flashen kann. wenn ich meine brücke abmache, flashe und dann der code einfach so läuft müsste es aber auch ohne widerstand und mit Lötbrücke gehen oder?
Fl0_ F. schrieb: > Mir ist klar, dass ich ohne widerstand nichts flashen kann. wenn > ich > meine brücke abmache, flashe und dann der code einfach so läuft müsste > es aber auch ohne widerstand und mit Lötbrücke gehen oder? Ja. Das deute darauf hin, dass deine Loetbruecke nicht funktioniert, das Aufwachen (/Reset) geht nicht. leo
Es klappt jetzt so halb. nach den 30 sekunden blinkt die LED einmal aber setup wird nicht ausgeführt...
Fl0_ F. schrieb: > Es klappt jetzt so halb. nach den 30 sekunden blinkt die LED > einmal aber > setup wird nicht ausgeführt... Du hast wohl u.a. ein elektrisches Problem. Setup wird wohl ausgefuehrt wo kaeme sonst ein DDR (pinMode) her? leo
Fl0_ F. schrieb: > Es klappt jetzt so halb. nach den 30 sekunden blinkt die LED > einmal aber > setup wird nicht ausgeführt... Und was passiert, wenn du die Brücke mit einem Massedraht berührst? Füge ins Setup() mal ein Serial.setDebugOutput(true); ein. Dann müßte beim Timerablauf irgendwas aufs Terminal kommen.
22:02:17.751 -> ets Jan 8 2013,rst cause:2, boot mode:(3,6) 22:02:17.751 -> 22:02:17.751 -> load 0x4010f000, len 1384, room 16 22:02:17.751 -> tail 8 22:02:17.751 -> chksum 0x2d 22:02:17.751 -> csum 0x2d 22:02:17.785 -> v8b899c12 22:02:17.785 -> ~ld 22:02:51.502 -> 22:02:51.502 -> ets Jan 8 2013,rst cause:2, boot mode:(3,6) 22:02:51.502 -> void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); Serial.setDebugOutput(true); } // the loop function runs over and over again forever void loop() { for (int i = 0; i < 10; i++) { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(300); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(300); // wait for a second } ESP.deepSleep(30 * 1000000); delay(100); } so siehts jetzt aus
Fl0_ F. schrieb: > hab ich jetzt ergänzt und es geht immer noch nicht Du hast es inzwischen selbst herausgefunden. Prima.
1 | ESP.deepSleep(30 * 1000000); |
2 | delay(100); |
Entschuldige bitte, das ich nicht deutlich geschrieben habe, wo der delay hin gehört.
Es geht immernoch nicht. Die led blinkt einmal aber der code wird nicht ausgeführt
Fl0_ F. schrieb: > Die led blinkt einmal Müsste sie nicht 10x blinken, bevor er in den deep_sleep wechselt? Ich tippe auf schlechte Stromversorgung.
klar, das passiert auch. hab ich vergessen zu schreiben.
aber nach dem DeepSleep binkt die led einmal wie beim reset aber danach läuft kein code
Wenn du nach dem Blinken den Reset-Taster 1x drückst, blinkt er dann zuverlässig erneut 10 mal?
Fl0_ F. schrieb: > ja. nur beim deepsleep reset passiert das nicht Teste den I/O Pin: Anstelle von "ESP.deepSleep(30 * 1000000);" schreibe:
1 | pinMode(16, OUTPUT); |
2 | digitalWrite(16, LOW); |
Er müsste dann sofort resetten, also letztendlich ununterbrochen blinken. Tut er das nicht, messe die Spannung an diesem Ausgangs-Pin und am Reset Eingang. Wenn der Ausgang nicht auf LOW (<1V) steht, ist er kaputt. Wenn der Ausgang LOW ist, aber der RESET Eingang nicht LOW ist, dann stimmt irgendwas an den Bauteilen um den Reset Pin herum nicht. Vielleicht ist dein Zwischenwiderstand zu hochohmig.
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.