Arduino & IoT Academy · 课时

让 ESP 进入深度睡眠

在两次读数之间关闭芯片的大部分功能

第 2 / 4 课13 个步骤

让 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 电力都消耗在哪里
  2. 让 ESP 进入深度睡眠
  3. 通过定时器或引脚唤醒
  4. 设计电池供电的传感器节点
← 返回 Arduino & IoT Academy