首页 > 微机单片机 >单片机制作 > 如何在任何物联网应用中使用ESP8266来节省电力

如何在任何物联网应用中使用ESP8266来节省电力

来源:互联网发布者:张七岁 关键词: 物联网 睡眠模式 Wi-Fi模块 ESP8266 更新时间: 2024/05/17

随着物联网革命每天都在蓬勃发展,连接设备的数量正在迅速增加。未来,大部分设备将相互连接并实时通信。这些设备面临的问题之一是功耗。这个功耗因素是任何物联网设备和物联网项目的关键和决定性因素之一。

众所周知,ESP8266 是构建任何物联网项目的最受欢迎的模块之一,因此在本文中,我们将了解如何在任何物联网应用中使用 ESP8266 来节省电力。在这里,我们每隔 15 秒将 LM35 温度传感器数据上传到 ThingSpeak 云,在这 15 秒内,ESP8266 保持在 DeepSleep 模式以节省电量

降低功耗的不同方法

有几种方法可以优化嵌入式和物联网设备的功耗。可以在硬件和软件上进行优化。有时我们无法优化硬件组件以降低功耗,但我们可以通过更改和优化代码指令和功能在软件方面做到这一点。不仅如此,开发人员还可以修改时钟频率以降低微控制器功耗。

我们可以编写一个固件,让硬件在没有数据交换时休眠,并在特定的时间间隔内执行定义的任务。在睡眠模式下,连接的硬件消耗的电量非常少,因此电池可以持续很长时间。如果您想了解有关功耗技术的更多信息,还可以阅读微控制器中的最小化功耗。

ESP8266 模块是使用最广泛的 Wi-Fi 模块,具有许多小尺寸的功能,具有不同的模式,包括睡眠模式,并且可以通过对硬件和软件进行一些修改来访问这些模式。

在这里,我们将解释ESP8266 中可用的不同睡眠模式,并通过使用深度睡眠模式定期向Thingspeak 服务器发送温度数据来演示它们。

所需组件

ESP8266 Wi-Fi 模块

LM35温度传感器

跳线

ESP8266 中的睡眠模式类型

Esp8266 模块工作在以下模式:

主动模式:在该模式下,整个芯片上电,芯片可以接收、发送数据。显然,这是最耗电的模式。

调制解调器睡眠模式:在此模式下,CPU 处于运行状态,Wi-Fi 无线电被禁用。此模式可用于需要 CPU 工作的应用中,如PWM中。它使 Wi-Fi Modem 电路在与 Wi-Fi AP(接入点)连接时关闭,没有数据传输,以优化功耗。

Light-sleep 模式:在此模式下,CPU 和所有外设都处于暂停状态。外部中断等任何唤醒都会唤醒芯片。在没有数据传输的情况下,可以关闭 Wi-Fi Modem 电路并暂停 CPU 以节省功耗。

深度睡眠模式:在此模式下,只有RTC正常工作,芯片的所有其他组件都断电。此模式在数据在较长时间间隔后传输的情况下很有用。

pYYBAGMW-EuAdyzWAADgTxuBLrs136.png

ESP8266 中的深度睡眠模式

Modem-sleep 和 Light-sleep 在您需要让 ESP8266 模块运行而某些功能关闭时很有用。但是,如果您需要一些严格的电源控制,请选择深度睡眠模式。整体平均电流小于1mA。在 2.5V 时,电流要求仅为 20 μA。

使用深度睡眠模式的步骤:

将模块与 Wi-Fi AP 连接

执行读取传感器值、发布 MQTT 消息等任务。

休眠定义的微秒数

再次重复上述过程

睡眠时间以微秒为单位定义。根据 ESP8266 SDK,您只能休眠 4,294,967,295 µs,即约 71 分钟。

设置 ESP8266 模块:

将 ESP8266 的 RST 引脚与 GPIO 16 即 D0 引脚连接。GPIO 16 是具有 WAKE 功能的重要引脚。

poYBAGMW-EeATRGDAACkBAwfhWo583.png

将LM35 温度传感器连接到 NodeMCU 的 A0 引脚。

poYBAGMW-EOAUr-YAAS6eExRF64818.png

当 ESP 模块的 RST 引脚为高电平时,它处于运行状态。一旦它在 RST 引脚上接收到 LOW 信号,ESP 就会重新启动。

使用深度睡眠模式设置定时器,一旦定时器结束,D0 引脚向 RST 引脚发送 LOW 信号,模块将通过重启唤醒。

现在,硬件已经准备就绪并且配置良好。温度读数将在 Thingspeak 服务器上发送。为此,请在 thingspeak.com 上创建一个帐户,并通过以下步骤创建一个频道。

现在,复制 Write API 密钥。这将在 ESP 代码中使用。

pYYBAGMW-D-ALWBeAAC4a5WwRwA643.png

ESP8266 深度睡眠模式编程

首先包括所需的所有重要库。

#include

一旦包含所有用于访问函数的库,然后分配 API 写入密钥,配置您的 Wi-Fi 名称和密码。然后声明所有变量以供进一步使用要存储数据的位置。

字符串 apiWritekey = "*************"; // 在此处替换为您的 THINGSPEAK WRITEAPI 密钥
char ssid[] = "******"; // 你的 wifi SSID 名称
char passw

现在,使用wifi.begin()函数将模块连接到 Wi-Fi 网络,然后使用 while 循环不断检查直到模块没有连接到 Wi-Fi。

void connect1() { 
  WiFi.disconnect(); 
  延迟(10);
  WiFi.begin(ssid, 密码); 
  而(WiFi.status()!= WL_CONNECTED){

制作另一个函数将数据发送到 thingspeak 服务器。在这里,将发送一个字符串,其中包含 API 写入密钥、字段编号和必须发送的数据。然后使用 client.print() 函数发送这个字符串。

void data() { 
  if (client.connect(server,80)) 
  {   
    String tsData = apiWritekey; 
           tsData +="&field1="; 
           tsData += String(tempF); 
           tsData += "

"; 
     client.print("POST /update HTTP/1.1
"); 
     client.print("主机:api.thingspeak.com
");

调用 connect1 函数,该函数将调用该函数来连接 Wi-Fi,然后读取温度并将其转换为摄氏度。

无效设置() { 
  Serial.begin(115200);
  Serial.println("设备处于唤醒模式"); 
  连接1();
  int 值 =

现在,调用 data() 函数将数据上传到 thingspeak 云上。最后,调用的重要函数是 ESP.deepSleep();这将使模块在定义的时间间隔内休眠,以微秒为单位。

数据(); 
Serial.println("深度睡眠 15 秒"); 
ESP.deepSleep(15e6);

循环功能将保持为空,因为所有任务都必须执行一次,然后在定义的时间间隔后重置模块。

教程末尾提供了工作视频和完整代码。上传 ESP8266 模块中的代码。上传程序前先拔掉RST和D0的连接线,否则会报错。

在 ESP8266 中测试 DeepSleep

上传程序后,您会看到温度读数每 15 秒上传到 ThingSpeak 云,然后模块进入深度睡眠模式。

pYYBAGMW-DmAZbnqAAD71Irl1lU739.png
// esp8266 deepsleep

#include

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间:2024-09-13 17:37

怎么在2440上挂载一个SATA的硬盘啊,哪个高手指点下,给个大概的方案就好
现在在做一个任务就是在2440上挂载一个SATA的硬盘,但是感觉2440上没有SATA的控制器,不知道该往哪个方向上去解决这个问题,不知大家有什么办法,谢谢啦! 怎么在2440上挂载一个SATA的硬盘啊,哪个高手指点下,给个大概的方案就好 扩展个sata的控制器不就得了 办法很
 lmxx0213嵌入式系统
KEIL,LPC2210下载片外FLASH失败
ads的工程移植到keil4.0+ULINK,LPC2210,smartarm2200开发板,想将程序下载到片外Flash(39VF1601)时出现如图所示情况:keil设置情况如图示。(软件仿真通过,LPC2210无片内flash,外扩的2M片外flash39VF1601,开
 idonotknow0914嵌入式系统
数字集成9路抢答器的毕业设计谁能帮一下忙啊
:\'( :\'( :\'( :\'( 数字集成9路抢答器的毕业设计谁能帮一下忙啊
 wanghai8521模拟电子
STM32F7Discovery开发板自带的那个游戏是什么鬼?
终于见到传说中的F7啦,上电玩了几下它的Demo,哈哈,简介已经有网友写了,顺道给大家分享一下: https://bbs.eeworld.com.cn/thread-470149-1-1.html 原以为是五子棋的游戏,戳了几下,非也,坛友们帮忙看看,这是什么棋类游戏 懒得录了
 蓝猫淘气stm32/stm8
跟着mzb2012 学习pic18 starterkit
pic18 starterkit 学习0x01——关于pic18 pic18 starterkit 学习0x02——关于工具 pic18 starterkit 学习0x03——新建工程 pic18 starterkit 学习0x04——IO输出(LED闪烁) pic1
 okhxyyoMicrochip MCU
raw-os 内核2.006发布
在经历了2.005版本后,raw-os再次推出了2.006版本。此次版本主要是集中在事件触发框架,状态机的改进中,目前可以全面兼容截至目前最新版的qp,可以使用qp的图形化工具生成代码后,再改成raw-os的,可避免qp的商业版权。 除此之外vs 2015 的版本也已经更新, 下
 jorya_txj嵌入式系统

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved