当我们使用电池给esp模块进行供电的时候,为了节省电量。我们要实际应用的时候,这个问题就需要去解决。
而这个问题的解决方法就是使用esp模块的睡眠模式

睡眠模式的类型

共有三种不同的睡眠模式:调制解调器睡眠,轻度睡眠和深度睡眠。下表显示了每种模式之间的差异(ESP8266数据表中的信息)。

esp低电量解决方案官方文档

我们可以看到三种睡眠模式wifi都是关闭的。这就意味着很多情况下需要持续连接wifi的应用场景是不适用的。
深度睡眠模式只打开了时钟。其他都是关闭的。而深度睡眠也是最省电的只有20μA。
每一种睡眠模式有他们适用的应用场景。

调制解调器睡眠

调制解调器睡眠通常用于需要CPU供电的应用程序。一个
应用的例子是需要实时的脉冲宽度调制(PWM)光
CPU控制。
当不需要恒定的wifi连接时,且应用程序需要保留的状态下,对于减少功耗是很有用的。
对于这种模式的控制通过对wifi的控制来实现

WiFi.forceSleepBegin(); // Wifi off
delay();
WiFi.forceSleepWake(); // Wifi on

当需要进入睡眠模式时 使用第一条语句
当需要唤醒时,使用第二条语句。
可以在loop中使用。
示例

void loop() {
data();
delay(200);
Serial.println(“Going to sleep now”);
WiFi.forceSleepBegin(); // Wifi Off
delay(1000*10); // sleep for 10 seconds
WiFi.forceSleepWake(); // Wifi On
Serial.println(“Wake up”);
}

data() 函数是获取传感器的值 并使用mqtt发送
可以看到 获取到值后,让esp模块进入睡眠模式,睡眠10s后,进行唤醒。再次重复操作。
参考链接

轻度睡眠

Light sleep。
依旧可以在loop中进行睡眠。
调用 可以使用light_sleep()

void light_sleep(){
wifi_station_disconnect();
wifi_set_opmode_current(NULL_MODE);
wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
wifi_fpm_open(); // Enables force sleep
gpio_pin_wakeup_enable(GPIO_ID_PIN(2), GPIO_PIN_INTR_LOLEVEL);
wifi_fpm_do_sleep(0xFFFFFFF); // Sleep for longest possible time
}

这里面设置的睡眠时间是最长的时间,唤醒通过按钮将GPIO2 接地。
可以通过调整睡眠时间来定时发送数据。
唤醒后要做的是连接wifi。因此需要在loop中第一句连接wifi

参考ESP8266 Light Sleep with MQTT

深度睡眠

deep sleep
对于耗电有要求,而且发送数值不频繁 可以使用睡眠模式,里面应有程序数据在深度睡眠模式将都不执行。相当于关机
实现方式有两个。
第一种是定时器唤醒,可以理解为定时开关机
传入代码后将GPIO16 与RST连接。

调用函数 ESP.deepSleep(30e6); (单位us)
使esp模块进入深度睡眠模式 30s.
30s达到后 GPIO16进行唤醒
最多睡眠时长4,294,967,295 µs 也就是大概71分钟

esp01使用定时来实现睡眠模式不太好做,需要接出来一个非常小的引脚

第二种方式是通过外部触发进行唤醒

使用 ESP.deepSleep(0);
进行长时间的深度睡眠状态
当按钮按下 RST有低电平信号,将进行唤醒,唤醒后执行到这条语句将再次睡眠直到下一次按钮按下。
esp01s是同样的方式

参考代码

void setup() {Serial.begin(115200);Serial.setTimeout(2000);// Wait for serial to initialize.while(!Serial) { }// Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin//Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds");//ESP.deepSleep(30e6); // Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch)Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");ESP.deepSleep(0);
}void loop() {}

参考ESP8266 Deep Sleep with Arduino IDE (NodeMCU)
参考 ESP8266 Deep sleep mode
参考The sleep states of the ESP8266

补充

对dht11 获取温度值 进行 light sleep模式测试
有可能是模块的原因 获取到的值不准确 因为每次都是获取到的初始化的值 可能会存在问题。(目前还不确定与轻度睡眠有关系没)

更多学习教程

ESP开发学习基础知识

基础知识包括对esp模块的认识与了解 mqtt协议的了解,arduino IDE运用代码编写等等。

  1. arduino基础学习
  2. esp系列模块的介绍
  3. mqtt协议的介绍与使用
  4. 利用mqtt esp模块 基于arduino IDE开发方法
  5. esp模块的AT指令 刷固件
  6. esp模块睡眠模式使用
  7. esp8266-01s介绍与使用
  8. esp8266-12f介绍与使用
  9. NodeMcu介绍与使用
esp开发IOT应用

基于esp8266的模块以及其他模块根据实际的应用场景与需求制作的物联网应用

  1. 基于FRID arduino 继电器 电磁锁开发的FRID门禁系统
  2. esp32-cam获取视频流图像处理
  3. 基于步进电机 esp8266 mqtt开发的自动窗帘控制
  4. 基于DHT11 Esp8266 mqtt获取室内温湿度
  5. 基于CCS811 esp8266 mqtt 获取室内空气质量
  6. 基于红外模块 esp8266 mqtt开发的智能遥控控制
  7. 基于ws2812 esp8266 mqtt开发的智能多级照明灯
  8. 基于ws2812 esp8266 mqtt开发的智能多模式氛围灯
  9. 基于mp3player esp8266 mqtt开发的智能语音播报系统
  10. IOT综合应用之智慧教室项目开发

ESP8266模块睡眠模式相关推荐

  1. Finger.01 - ESP8266模块STA模式调试

    前言: 前段时间从网上看到了一个很有意思的视频,作者做了一个方方正正的模块,这个模块能够连接网络,并能够通过手机app控制这个模块,这个小模块可以拓展出机械杠杆或者旋转的齿轮,通过这拓展出来的机械结构 ...

  2. ESP8266模块三种低功耗睡眠模式

    ESP8266模块睡眠模式 1.前言 2.睡眠模式 2.1 modem sleep -- 调制解调器睡眠模式 2.1.1`使用场景 2.1.2 核心代码 2.1.3 测试代码 2.2 light sl ...

  3. 设备功耗计算专题《低功耗实战篇,ESP8266睡眠模式1@深度睡眠Deep-sleep》

    ESP8266 系列芯片提供三种可配置的睡眠模式,针对这些睡眠模式,我们提供了多种低功耗解决方案,用户可以结合具体需求选择睡眠模式并进行配置.三种睡眠模式如下: ESP8266低功耗解决方案之深度睡眠 ...

  4. ESP8266的低功耗方案-睡眠模式

    在某些时候我们设计的产品可能不具备持久供电的环境,那通常会采用锂电池.干电池一类的轻便型的非持久性电源.当遇到这种情况时,产品的续航能力可能就会成用户评估产品的一个重要指标,加大电池容量当然是最为直接 ...

  5. 乐鑫esp8266模块MicroPython开发板MQTT物联网人工智能最小系统

    简 介: ※对于购买自网络的基于ESP8266的实验模块进行了初步的测试,它其中的一些示例进行了练习.特别是对于基于ESP8266的特殊的一些外设的测试. 关键词: ESP8266,MicroPyth ...

  6. 虚拟服务器透传步骤,esp8266透传模式设置操作步骤

    描述 ESP8266的概述 ESP8266是一个完整且自成体系的Wi-Fi网络解决方案,能够搭载软件应用,或通过另一个应用处理器卸载所有Wi-Fi的网络功能. ESP8266在搭载应用并作为设备中唯一 ...

  7. micropython中文社区 socket通讯_基于MicroPython结合ESP8266模块实现TCP通信(AT指令版)...

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 实验目的 - 学习ESP8266模块(ESP-01) ...

  8. 【STM32】ESP8266模块简介

    00. 目录 文章目录 00. 目录 01. ESP8266模块简介 02. 特性参数 03. 模块引脚 04. TK-ESP-01 WIFI模块 05. 模块说明 06. 附录 07. 声明 01. ...

  9. gprs 睡眠模式_GPRS的完整形式是什么?

    gprs 睡眠模式 GPRS:通用分组无线业务 (GPRS: General Packet Radio Service) GPRS is an abbreviation of General Pack ...

最新文章

  1. IBD:5-氨基水杨酸治疗后溃疡性结肠炎患者真菌菌群的变化
  2. Hyper-V第1代虚拟机和第2代虚拟机特性对照表
  3. java中为何输出框会无限输出,MyBatis启动时控制台无限输出日志的原因及解决办法...
  4. 《Maintainable JavaScript》读书笔记
  5. oracle进入rman报错,Oracle 11g单实例RMAN恢复到Oracle 11g RAC
  6. 电偶溶解氧传感器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. java连接rabbitmq_Mac / Windows 下安装 RabbitMQ
  8. Final类型数据的初始化
  9. Drools教程 —— 简介
  10. linux 之间复制文件,两台Linux服务器之间复制文件
  11. bi报表是什么意思,有什么优势?
  12. outlook邮件通过python发送_怎么发送邮箱-python调用outlook发送邮件的超详细操作步骤...
  13. 盘点微软CEO纳德拉十大有趣事实
  14. 寻仙手游维护公告服务器停服更新,寻仙手游6月7日停服更新公告
  15. 江浦街的汉庭酒店只有雨季
  16. mac pro M1(ARM)安装:ubuntu桌面版虚拟机(五)
  17. 男生女生,呸,男生女生呸铃声 男生女生,呸,男生女生呸手机...
  18. 介值定理究竟在讲什么?
  19. 焦化厂有害气体检测传感器选型
  20. 计算机基础知识判断题答案,计算机基础知识试题及答案判断题

热门文章

  1. matlab d函数,Matlab常用函数
  2. python学习笔记(07)---(内置容器-字典)
  3. python早读读后感_《学习Python》读后感摘抄
  4. java dcm转bmp源码_DCM文件转图像,并高清处理图像
  5. 抖音_利用python实现字符串跳舞~背景音乐异常处理
  6. 肖 sir_就业课__011性能测试讲解
  7. chrome插件,装这个就够了
  8. winscp开启ftp_Linux 之WinSCP连接FTP
  9. c语言读取ascii文件,C++对ASCII文件的读写操作
  10. 基于SpringBoot的共享汽车管理系统