乐鑫技术交流
直播中

俞舟群

7年用户 1058经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

如何让deepSleep() 函数在Wemos D1 mini上运行?

我正在尝试让 deepSleep() 函数在 Wemos D1 mini 上运行。董事会在第一次醒来后挂起。
我用一根简单的电线将 D0 连接到 RST 引脚。
我使用以下 arduino 草图。
开始时,我得到第一个“Before deepSleep”字符串。然后,电路板进入深度睡眠。
它恰好在 10 秒后醒来,但挂起。(我知道它会醒来,因为我在终端中收到垃圾,但我从来没有收到第二个“Before deepSleep”字符串)。
D1 mini 上的 CH_PD 引脚是如何连接的?从我读到的,这可能是这个挂起的原因。
我应该如何为 D1 mini 接线才能使 deepsleep 功能正常工作?我已经尝试在 GPIO0 和 GPIO2 上添加一个上拉电阻。
波纹管代码在我的一块 nodemcu 板上工作正常,D0 和 RST 之间只连接了一根电线。
问候,
Redge
#define SECONDS_DS(seconds) ((seconds)*1000000UL)
void setup() {
Serial.begin(115200);
延迟(1000);
Serial.println(F("深度睡眠之前"));
ESP.deepSleep(SECONDS_DS(5), WAKE_RF_DISABLED);
}
void loop() { }


               


                        

回帖(1)

潘飘稚

2023-10-23 10:48:48
,但这似乎并没有解决我的问题。

以下是我的草图:

```
void setup() {
   Serial.begin(9600);
   Serial.println("Before deepSleep");

   // set D0 as output
   pinMode(D0, OUTPUT);

   // connect D0 to RST
   digitalWrite(D0, HIGH);

   // wait for a second
   delay(1000);

   // enter deep sleep mode for 10 seconds
   ESP.deepSleep(10e6);
}

void loop() {
   // this should never be executed
   Serial.println("After deepSleep");
}
```

首先,确保您已经通过以下方式连接了您的Wemos D1 mini:

- 连接电源引脚(VCC)到电源源。您可以使用USB端口或将3.3V引脚连接到外部电源源。
- 将地引脚(GND)连接到地线。
- 将CH_PD引脚连接到电源源。您可以将其连接到3.3V引脚或使用外部电源源。
- 将D0引脚连接到RST引脚,以便在休眠模式下唤醒设备。
- 如果您正在使用SCL和SDA引脚,则将它们连接到对应的引脚上。

现在,让我们更改草图以使其正常工作:

```
void setup() {
   Serial.begin(9600);
   Serial.println("Before deepSleep");
   
   // enable wakeup from deep sleep on D0
   esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, LOW);

   // enter deep sleep mode for 10 seconds
   esp_deep_sleep_start();
}

void loop() {
   // this should never be executed
   Serial.println("After deepSleep");
}
```

现在,让我们解释一下这些更改:

- 我们使用 `esp_sleep_enable_ext0_wakeup()` 函数启用了从深度睡眠模式中的D0引脚唤醒。这意味着在设备完全关闭并进入深度睡眠模式时,如果D0引脚接收到一个低电平信号,设备将自动从睡眠中唤醒。
- 我们不再需要将D0引脚连接到RST引脚,因为 `esp_sleep_enable_ext0_wakeup()` 函数已经处理了它。
- 我们使用 `esp_deep_sleep_start()` 函数代替 `ESP.deepSleep()` 函数,因为它支持更多的高级选项,并且与ESP32和ESP8266兼容。

现在,您应该可以成功地在Wemos D1 mini上使用 `deepSleep()` 函数了。如果您遇到任何问题,请尝试重新连接引脚并确保它们与草图中使用的 GPIO 引脚号匹配。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分