乐鑫技术交流
直播中

学电超人

12年用户 771经验值
擅长:微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制 微处理器/微控制
私信 关注
[问答]

使用Arduino 1.6.8在AT STA模式下运行Wi-Fi,“WiFi强制休眠开始”功能后未调用延迟功能是怎么回事?

我使用 Arduino 1.6.8 在 AT STA 模式下运行 Wi-Fi。ESP-8266 固件基于 SDK1.5
我想将 wifi AP 置于调制解调器睡眠模式特定时间 x。

          Serial.println("diconnecting client and wifi");
wifi_set_opmode(null_mode);
wifi_fpm_set_sleep_type(modem_sleep_t);
wifi_fpm_open();
wifi.disconnect();
wifi.mode(wifi_off);
          Serial.println("WiFi Off, going for forde sleep");
wifi.forcesleepbegin();
延迟(10000);
        

预期是在 WiFi 强制休眠开始后,AP 应等待 WiFi 启动,直到延迟计时器。
但是这里没有调用延迟函数。

谁能帮忙解决这个问题

回帖(1)

莫联雪

2024-7-22 17:01:58
sleep_begin();

从您提供的代码来看,您正在尝试在Arduino 1.6.8中使用ESP-8266模块进入调制解调器睡眠模式。但是,您的代码中存在一些语法错误和拼写错误。我将为您提供一个修正后的示例代码,并解释如何正确使用这些函数。

首先,确保您已经安装了ESP8266板支持包。接下来,您可以使用以下示例代码:

```cpp
#include
#include

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin("yourSSID", "yourPassword");

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("Connected to AP");
  Serial.println("Disconnecting client and WiFi");
  WiFi.disconnect();
  WiFi.mode(WIFI_OFF);
  delay(1000); // 等待WiFi模块关闭

  Serial.println("WiFi Off, going for forced sleep");
  esp_sleep_enable_timer_wakeup(1000 * x); // 设置睡眠时间(x毫秒)
  esp_deep_sleep_start();
}

void loop() {
  // 此示例中,循环函数为空,因为设备将进入睡眠模式
}
```

在这个示例中,我们首先连接到一个Wi-Fi接入点,然后断开连接并关闭Wi-Fi。接下来,我们使用`esp_sleep_enable_timer_wakeup()`函数设置睡眠时间(以毫秒为单位),然后调用`esp_deep_sleep_start()`函数使设备进入睡眠模式。

请注意,您需要将`"yourSSID"`和`"yourPassword"`替换为您的Wi-Fi网络名称和密码。此外,将`x`替换为您希望设备睡眠的时间(以毫秒为单位)。

希望这可以帮助您解决问题。如果您还有其他问题,请随时提问。
举报

更多回帖

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