ESP8266WIFI深度休眠(deep sleep)功耗测试

一、硬件

1.涂鸦ESP8266模组搭建最小系统

二、程序

采用ESP8266_NONOS_SDK,上电进入休眠

void ICACHE_FLASH_ATTR user_init(void)
{
    uart_init(115200, 115200);
    os_printf("WIFI SLEEP\r\n");
    system_deep_sleep(5*1000000);
    partition_item_t partition_item;
    os_printf("SDK version:%s\n", system_get_sdk_version());
    if (!system_partition_get_item(SYSTEM_PARTITION_CUSTOMER_PRIV_PARAM, &partition_item)) {
        os_printf("Get partition information fail\n");
    }
    priv_param_start_sec = partition_item.addr/SPI_FLASH_SEC_SIZE;
    system_init_done_cb(user_dev_init);
}

三、测试结果

串联2欧电阻,启动电流瞬时200mA,平均电流60mA,休眠电流21uA,最快启动到休眠时间为380ms

### ESP8266进入休眠模式的方法 ESP8266支持多种睡眠模式,其中包括调制解调器睡眠、轻度睡眠以及深度睡眠。在这三种模式中,深度睡眠是一种功耗极低的模式,在此模式下,ESP8266的应用程序不会运行,类似于设备处于关机状态[^3]。 #### 方法一:通过`ESP.deepSleep()`函数实现深度睡眠 在Arduino开发环境中,可以使用`ESP.deepSleep()`函数使ESP8266进入深度睡眠模式。该函数接受两个参数:第一个参数为睡眠时间(以微秒为单位),第二个参数为唤醒后的模式(可选,默认为不保留RAM中的数据)。例如: ```cpp void setup() { Serial.begin(115200); delay(1000); // 延迟一秒以便观察串口输出 Serial.println("Entering deep sleep for 30 seconds..."); ESP.deepSleep(30e6); // 设置睡眠时间为30秒(30 * 10^6 微秒) } void loop() {} ``` 在此示例中,ESP8266将在打印消息后进入深度睡眠模式并持续30秒[^4]。 #### 方法二:通过GPIO16自唤醒机制 为了从深度睡眠中唤醒ESP8266,通常会将GPIO16(即NodeMCU板上的D0引脚)连接至RST引脚。这样,当设定的时间到期时,GPIO16会产生一个低电平脉冲,从而触发RST引脚完成重启操作。 以下是利用GPIO16自唤醒的一个简单例子: ```cpp // 将 GPIO16 (D0) 连接到 RST 引脚以启用自动唤醒功能 void setup() { Serial.begin(115200); delay(1000); // 短暂延迟用于调试目的 Serial.println("Going to deep sleep now."); ESP.deepSleep(5e6); // 设定睡眠时间为5秒 } void loop() {} ``` 在这个案例里,ESP8266会在进入深度睡眠之前配置好硬件环境,并依靠内部计时器在指定时间段结束后自行恢复工作。 #### 使用MicroPython实现深度睡眠 如果采用MicroPython框架,则可通过如下方式设置深度睡眠及其唤醒逻辑: ```python import machine from time import sleep def go_to_sleep(): # 配置定时器唤醒源 timer = machine.Timer(0) timer.init(period=5000, mode=machine.Timer.ONE_SHOT, callback=lambda t:machine.reset()) # 执行深度睡眠命令 print('Going into deep sleep...') machine.deepsleep() ``` 上述代码片段定义了一个名为`go_to_sleep`的功能,它先建立一个一次性定时器,在经过五秒钟之后重设整个系统;接着调用`machine.deepsleep()`让处理器停止运作直至下次启动为止[^2]。 ### 注意事项 - **数据保护**:由于深度睡眠期间内存会被清除掉,因此建议提前存储重要变量到Flash或其他持久化储存介质当中。 - **电源管理**:某些情况下可能还需要切断不必要的外围电路供电来进一步降低整体能耗水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值