Forum: Mikrocontroller und Digitale Elektronik Wemos d1 mini Deepsleep funktioniert nicht.


von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

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?

von Stefan F. (Gast)


Lesenswert?

Nach ESP.deepSleep(...) soll man bei einigen Firmware Versionen noch 
einen delay(100) einbauen, damit der Chip zuverlässig einschläft.

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

hab ich jetzt ergänzt und es geht immer noch nicht

von leo (Gast)


Lesenswert?

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

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

benötige ich unbedingt den widerstand zwischen den pins? Oder kann das 
auch ohne funktionieren?

: Bearbeitet durch User
von leo (Gast)


Lesenswert?

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

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

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?

von leo (Gast)


Lesenswert?

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

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

Es klappt jetzt so halb. nach den 30 sekunden blinkt die LED einmal aber 
setup wird nicht ausgeführt...

von leo (Gast)


Lesenswert?

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

von batman (Gast)


Lesenswert?

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.

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

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

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

wenn ich ihn auf ground ziehe, geht nichts mehr

von Stefan F. (Gast)


Lesenswert?

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.

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

Es geht immernoch nicht. Die led blinkt einmal aber der code wird nicht 
ausgeführt

von Stefan F. (Gast)


Lesenswert?

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.

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

klar, das passiert auch. hab ich vergessen zu schreiben.

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

aber nach dem DeepSleep binkt die led einmal wie beim reset aber danach 
läuft kein code

von Stefan F. (Gast)


Lesenswert?

Wenn du nach dem Blinken den Reset-Taster 1x drückst, blinkt er dann 
zuverlässig erneut 10 mal?

von Fl0_ F. (Firma: Alexa) (sntl_yeet)


Lesenswert?

ja. nur beim deepsleep reset passiert das nicht

von Stefan F. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.