📜  esp8266 deepSleep (1)

📅  最后修改于: 2023-12-03 15:30:38.971000             🧑  作者: Mango

介绍 ESP8266 DeepSleep

概述

ESP8266 DeepSleep 指的是 WiFi芯片ESP8266的低功耗休眠模式。此模式可用于使 ESP8266 在不消耗过多电量的情况下进行定期或事件触发的工作。这在电池供电或电源有限的环境中非常有用,例如在IoT应用程序中可以使设备长时间工作。

原理

ESP8266 DeepSleep 通过进入低功耗模式实现能源节约,可以通过唤醒方法来退出深度睡眠模式。 进入深度睡眠模式的过程如下:

  1. ESP8266 首先写状态到 RTC存储器。

  2. 接下来断开和所有外设的电源,只保留 RTC(实时时钟)和 LED。

  3. 然后会将 RTC中的计数器相加(即距离上次进入 DeepSleep 的时间),并根据代码中设置的休眠时间来设置 RTC 的时间。

  4. 最后进入 DeepSleep 模式,CPU进入睡眠状态,直到唤醒 GPIO被触发时,重新启动系统。

代码示例

下面是一个在 ESP8266 上使用 DeepSleep 的简单 Python 代码。

首先需要导入 machinetime 库。

import machine
import time

然后可以写一个函数,将 ESP8266 进入 DeepSleep 模式。在函数中,代码将设置唤醒间隔并设置 GPIO 的唤醒方式。一旦这些代码完成执行, ESP8266 将进入深度睡眠模式。

# 深度睡眠函数
def deep_sleep(msec):
    print('进入DeepSleep...')
    # 设置唤醒间隔时间
    machine.RTC().wake_on_ext0(pin = machine.Pin(16), level = machine.Pin.IRQ_FALLING)
    # 进入 DeepSleep 模式,直到唤醒 GPIO 被触发。
    machine.deepsleep(msec)

最后,可以设置定期进行休眠操作,以在合适的时间唤醒系统。

# 定期睡眠函数
def periodic_sleep(msec):
    while True:
        deep_sleep(msec)
        # 这个代码块在唤醒之后执行
        print('从 DeepSleep 中唤醒...')
        time.sleep(1)
总结

ESP8266 DeepSleep 模式是一个非常有用的功能,可以让开发人员避免在长时间工作的应用程序中过度消耗电量。 在硬件开发时,了解 ESP8266 DeepSleep 模式的原理和使用方法非常重要。