随着物联网革命每天都在蓬勃发展,连接设备的数量正在迅速增加。未来,大部分设备将相互连接并实时通信。这些设备面临的问题之一是功耗。这个功耗因素是任何物联网设备和物联网项目的关键和决定性因素之一。
众所周知,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正常工作,芯片的所有其他组件都断电。此模式在数据在较长时间间隔后传输的情况下很有用。
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 功能的重要引脚。
将LM35 温度传感器连接到 NodeMCU 的 A0 引脚。
当 ESP 模块的 RST 引脚为高电平时,它处于运行状态。一旦它在 RST 引脚上接收到 LOW 信号,ESP 就会重新启动。
使用深度睡眠模式设置定时器,一旦定时器结束,D0 引脚向 RST 引脚发送 LOW 信号,模块将通过重启唤醒。
现在,硬件已经准备就绪并且配置良好。温度读数将在 Thingspeak 服务器上发送。为此,请在 thingspeak.com 上创建一个帐户,并通过以下步骤创建一个频道。
现在,复制 Write API 密钥。这将在 ESP 代码中使用。
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 云,然后模块进入深度睡眠模式。
// esp8266 deepsleep
#include
这里还没有内容,您有什么问题吗?
电子电路资源推荐
- AD官方封装库:Xilinx
来源:下载中心
- 轻松玩转STM32微控制器 (杨百军, 王学春, 黄雅琴)
来源:下载中心
- 常用的13种半导体功率器件介绍
来源:电路图
- 数字示波器的操作数字示波器的操作
来源:大学堂
- 电阻和电阻定律以及0欧电阻和上、下拉电阻的作用
来源:电路图
- 开关电源中的磁性元件
来源:大学堂
推荐帖子 最新更新时间: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嵌入式系统
- stm8s207的AD是不是有bug??
- 语音识别模块
- IAR找不到的宏默认为0导致的问题
- prote在06版本制作的封装在winter09版本上显示有错误
- 电流有效值采集电路原理;双极性转换电路原理;导联脱落检测电路原理
- 请教问题,LPC1788的LCD控制寄存器不能正常读写问题?
- 【TI首届低功耗设计大赛】PM2.5传感器驱动+测试
- 电路板焊接问题求助
- 功率放大器应用|雾化器原理是什么?如何用功放驱动超声换能器制造雾化器?
- EEWORLD大学堂----一种人体脉搏呼吸率及血氧浓度在线监测系统
- HC32F4A0-经典CAN功能测试
- 嵌入式开发中的滤波器设计
- 答题赢好礼|以人为本、生命无价 ADI 楼宇烟雾探测技术
- 华为模拟讲义
- 求分解
- 机器人制作(三)电机的特性与选择
- 关于MSP430 launchpad串口的问题???
- ESP32,Micropython串口发送 write( )的使用问题--多谢!
- 上海航芯 ACM32F070开发板+触控功能评估板评估 - 第二篇 电容触控滑条功能开发
- 今天下午2点STM32 线上技术日开播【送千元新品开发板】|解读多款新品技术及应用
- GS431B精密稳压器的典型应用
- 辉光板照明部分
- NL-AB-BBBC、Skywire BeagleBone Black Modem 物联网 (IoT) 开发平台
- Flash储存器—W25Q128方案验证板
- LTC2620CGN 八通道、10 位数模转换器的典型应用
- R6S黑眼_独立摄像头的控制模组
- 用于实现更高输出电流和更低输出阻抗的 LT1026CN8 并联转换器的典型应用电路
- #第八届立创电赛#基于瑞萨的桌面时钟
- 基于L7983PUR稳压器的12V / 0.3A降压DC/DC转换器(VIN = 12至60 V)
- EVAL-16TSSOPEBZ,用于开关中 16 引脚 TSSOP 器件的评估板多路复用器产品组合