让 ESP 进入深度睡眠
在两次读数之间关闭芯片的大部分功能
让 ESP 进入深度睡眠 是 CoddyKit 上的免费 Arduino & IoT Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Arduino & IoT Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Arduino & IoT Academy 课程共包含 4 节课。
什么是深度睡眠
深度睡眠会关闭几乎整个芯片,只留下一个极低功耗的定时器运行。电流可以从毫安降至仅几微安。😴
睡眠,然后重启
与暂停不同,深度睡眠会清除大部分内存。当 ESP 唤醒时,它会从 setup 的开头重新启动,就像刚刚通电一样。
微安带来的差异
处于唤醒状态的 ESP32 可能会消耗 80mA,但在深度睡眠中可能低于 20微安。这种差异正是让续航从几天延长到数月的关键。
让 ESP32 进入睡眠
在 ESP32 上,只需一次调用就能让芯片进入深度睡眠。您可以用微秒指定睡眠时间,芯片会立即关闭大部分功能。
esp_deep_sleep_start();设置定时唤醒
进入睡眠前,使用定时器告诉 ESP32 要休眠多久。数值单位是微秒,因此需要将秒数乘以一百万。
esp_sleep_enable_timer_wakeup(10 * 1000000);让 ESP8266 进入睡眠
ESP8266 使用不同的调用。deepSleep 同样接受微秒数,让芯片休眠,直到定时器触发。
ESP.deepSleep(10e6); // sleep 10 seconds必需的连接线
在许多 ESP8266 开发板上,深度睡眠唤醒需要用导线连接 GPIO16 和 RST。没有这根线,芯片会永远休眠,无法返回。
睡眠后的代码不会运行
写在深度睡眠调用之后的任何代码行都是无法到达的。芯片会在那里停止,只有从开头重新启动后才会继续运行。
在休眠期间保留数据
普通变量会在唤醒时重置。要让少量数据在深度睡眠后保留,请将其存储在RTC 内存中,因为芯片休眠时它仍会保持供电。
RTC_DATA_ATTR int bootCount = 0;先完成工作
由于睡眠会结束程序,因此请先完成所有工作:读取传感器、发送数据,最后再调用深度睡眠。
一个简单的睡眠示例
此 setup 会设置 10 秒定时器,然后进入睡眠。Loop 保持为空,因为芯片每个周期都会重启,永远不会执行到它。
void setup(){
esp_sleep_enable_timer_wakeup(10*1000000);
esp_deep_sleep_start();
}快速检查
让我们确认一下深度睡眠的运行方式。
回顾:深度睡眠节省电量
深度睡眠会将电流降至微安级,唤醒后从 setup 重新启动。请先完成所有工作,并使用 RTC 内存保留数据。🔋
用 AI 导师学习 C++ — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「让 ESP 进入深度睡眠」课时是免费的吗?
是的 — 「让 ESP 进入深度睡眠」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Arduino & IoT Academy 课程的其余内容,请升级到 CoddyKit PRO。 Arduino & IoT Academy 课程共包含 4 节课。
「让 ESP 进入深度睡眠」这节课中我会学到什么?
在两次读数之间关闭芯片的大部分功能 你通过在浏览器中直接运行的动手代码来练习 Arduino & IoT Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Arduino & IoT Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Arduino & IoT Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「让 ESP 进入深度睡眠」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Arduino & IoT Academy 课中编写并运行代码吗?
能。每节 Arduino & IoT Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 电力都消耗在哪里
- 让 ESP 进入深度睡眠
- 通过定时器或引脚唤醒
- 设计电池供电的传感器节点