好的,开始了。我无法让调制解调器睡眠来做任何事情。我几乎在互联网上进行了大量调查,并尝试了我能找到的一切。据我所知,这个功能根本不起作用。很多悲伤。
我正在运行来自 git 的最新 Arduino 代码(master 分支,截至昨天)。
我最感兴趣的是这个功能:
wifi_set_sleep_type( MODEM_SLEEP_T );
根据 Espressif 的说法,这应该会自动使调制解调器休眠并为 D
tiM 消息唤醒。因此,当接收器唤醒时,我们应该看到低电流和尖峰。表面上这意味着应该增加 ping 时间,但它们应该仍然有效。这就是您的
手机和笔记本电脑如何工作以节省电量,但仍然可以在网络上访问。
我得到的是一直最大的接收电流和非常快的 ping。一点都不省电。
如果我使用 WiFi.forceSleepBegin(),调制解调器肯定会关闭。直到我把它唤醒。当它处于睡眠状态时,它根本不会收到任何消息。但这不是 Espressif 定义的调制解调器睡眠,它只是完全关闭接收器(但它确实以某种方式保持与路由器的连接?)。这绝对不是 wifi 中的 DTIM 省电功能应该如何工作的。
我不能使用浅睡眠或深度睡眠,因为我需要 CPU 一直运行(并且我需要能够接收网络流量)。
我已经看到关于这个主题的大量令人困惑和相互矛盾的信息。似乎对某些人有效,对其他人无效。但看起来大多数人最终做的是强迫睡眠。如果你有一个传感器传输数据,这很好,但如果你有一个需要随时接收消息的控制系统,那就不好了。
所以,我的问题是,有没有人有实际的调制解调器睡眠模式?在大多数情况下,您会看到 15-20 毫安的电流,但仍然能够 ping 通您的设备。