乐鑫技术交流
直播中

李秀兰

7年用户 1464经验值
私信 关注
[问答]

在NodeMCU上公开强制休眠API,无法让定时light_sleep工作怎么解决?

您好,我一直在研究在 NodeMCU 上公开强制休眠 API,但我无法让定时light_sleep工作,每次我执行以下代码时,电流消耗都保持在MODEM_SLEEP_T水平(~17mA),CPU 仍然处于活动状态。

wifi_set_opmode_current(null_mode);
wifi_fpm_set_sleep_type(light_sleep_t);
wifi_fpm_open();
wifi_fpm_set_wakeup_cb(wake_cb);
wifi_fpm_do_sleep(10*1000*1000);

是我做错了什么,还是定时light_sleep是不可能的?
                                                                                                                                                     

回帖(1)

王辉

2024-7-20 16:21:04
您好!您的问题可能是由于代码中的一些设置不正确或者顺序问题导致的。以下是一些建议,希望能帮助您解决问题:

1. 确保您的NodeMCU固件是最新版本,以便获得最佳的性能和兼容性。

2. 在设置WiFi模式之前,确保您已经连接到WiFi网络。以下是连接到WiFi网络的示例代码:

```cpp
#include

const char* ssid = "您的WiFi名称";
const char* password = "您的WiFi密码";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
}
```

3. 在设置WiFi模式和进入睡眠模式之前,确保您的代码中没有其他任务正在运行。您可以在进入睡眠模式之前添加一个延时,以确保所有任务都已完成:

```cpp
void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");

  delay(5000); // 等待5秒,确保所有任务都已完成

  wifi_set_opmode_current(NULL_MODE);
  wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
  wifi_fpm_open();
  wifi_fpm_set_wakeup_cb(wake_cb);
  wifi_fpm_do_sleep(10 * 1000 * 1000);
}

void loop() {
  // 这里不需要执行任何操作
}
```

4. 确保您的`wake_cb`回调函数正确实现,以便在唤醒时执行所需的操作。以下是一个简单的示例:

```cpp
void wake_cb(void) {
  Serial.println("Woke up");
}
```

5. 如果问题仍然存在,您可以尝试使用其他类型的睡眠模式,例如`MODEM_SLEEP_T`,看看是否有所改善。

希望这些建议能帮助您解决问题。如果您还有其他问题,请随时告诉我。
举报

更多回帖

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