做物流的网站都有什么,东营建设信息网的网址,简述网站建设的方法,广州vi设计公司本指南展示了如何使用Arduino IDE与ESP8266(NodeMCU)一起使用深度睡眠。我们将使用定时器唤醒来唤醒深度睡眠#xff0c;并使用复位(RST)引脚来唤醒外部唤醒。引入深度睡眠模式如果您使用电池供电的ESP8266板制作了一个项目#xff0c;或者只是将ESP8266 NodeMCU板连接到了移…本指南展示了如何使用Arduino IDE与ESP8266(NodeMCU)一起使用深度睡眠。我们将使用定时器唤醒来唤醒深度睡眠并使用复位(RST)引脚来唤醒外部唤醒。引入深度睡眠模式如果您使用电池供电的ESP8266板制作了一个项目或者只是将ESP8266 NodeMCU板连接到了移动电源。运行一段时间后您会发现电池使用不了很长时间特别是在使用Wi-Fi的情况下。如果将ESP8266置于深度睡眠模式则可以降低功耗并且电池续航时间更长。使ESP8266处于深度睡眠模式意味着可以减少那些在运行时会消耗更多功率的活动(例如Wi-Fi)但是在发生有趣的事情时仅留有足够的活动来唤醒处理器。睡眠类型共有三种不同的睡眠模式调制解调器睡眠轻度睡眠和深度睡眠。下表显示了每种模式之间的差异(ESP8266数据表中的信息)。项目调制解调器睡眠浅睡眠沉睡无线上网关 关 关系统时钟上 关 关实时时钟上 上 上中央处理器上 待定 关基板电流15毫安 0.4毫安 约20 uA平均电流(DTIM 1)16.2毫安 1.8毫安 –平均电流(DTIM 3)15.4毫安 0.9毫安 –平均电流(DTIM 10)15.2毫安 0.55毫安 –它们都有不同的用途应在不同的应用程序中使用。在本文中我们将介绍深度睡眠模式。除了实时时钟(RTC)ESP8266会一直跟踪时间一切都总是关闭。这是最省电的选择ESP芯片仅消耗约20uA的电流。但是如果您使用带有内置编程器LED等的全功能开发板则将无法实现低功耗状态。深度睡眠素描借助深度睡眠示例应用程序如下所示ESP8266连接到Wi-FiESP8266执行任务(读取传感器发布MQTT消息等)睡眠一段预定的时间ESP8266唤醒一遍又一遍地重复该过程唤醒源将ESP8266置于深度睡眠模式后可以通过多种方法唤醒它1定时器唤醒 ESP8266在预定义的时间段后自行唤醒2外部唤醒按RST按钮时ESP8266唤醒(ESP8266重新启动)对于低功耗项目您可以考虑使用ESP32板该板提供更多的深度睡眠模式和唤醒源。1 ESP8266带有定时器唤醒的深度睡眠要使用ESP8266的定时器唤醒功能您需要在NodeMCU板中将RST引脚连接到标有D0的GPIO 16 。只需遵循下一个原理图仅在上传代码后才将RST引脚连接到GPIO 16。如果您看一下NodeMCU引脚排列您会发现GPIO 16是一个特殊的引脚并且具有唤醒功能。//------------------------------------------------------------------------------------------------------ESP8266运行时ESP8266的RST引脚始终为高电平。但是当RST引脚接收到LOW信号时它将重新启动微控制器。如果您使用ESP8266设置了深度睡眠计时器则计时器结束后GPIO 16将发送LOW信号。这意味着GPIO 16连接到RST引脚后可以在设定的时间后唤醒ESP8266。ESP8266 NodeMCU定时器唤醒草图安装了适用于Arduino IDE的ESP8266插件(如何在Arduino IDE中安装ESP8266板)转到“ 工具”然后选择“ NodeMCU(ESP-12E Module) ”。这是您需要上传到ESP的代码/** ESP8266 Deep sleep mode example* Rui Santos* Complete Project Details https://randomnerdtutorials.com*/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 pinSerial.println(Im awake, but Im 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(Im awake, but Im going into deep sleep mode until RESET pin is connected to a LOW signal);//ESP.deepSleep(0);}void loop() {}在此示例中我们在串行监视器中打印一条消息Serial.println(Im awake, but Im going into deep sleep mode until RESET pin is connected to a LOW signal);之后ESP8266进入睡眠状态达30秒钟。ESP.deepSleep(30e6);要将ESP8266置于深度睡眠请使用ESP.deepsleep(uS)并以毫秒为单位传递睡眠时间作为参数。在这种情况下30e6对应于30000000微秒等于30秒。上载代码后按RST按钮开始运行代码然后将RST连接到GPIO16。ESP8266应该每30秒唤醒一次并在串行监视器中显示一条消息如下所示。该示例仅在串行监视器中打印一条消息但是在实际应用程序中您将执行有用的任务例如发出请求发布传感器读数等。ESP-01定时器唤醒电路如果要使用ESP-01板进行类似的设置则需要如下所示焊接导线。这个微小的引脚是GPIO 16需要连接到RST引脚。但是引脚是如此之细以至于很难像ESP-01上的GPIO 16那样焊接导线。因此对于这种唤醒模式您应该使用NodeMCU板或裸露的ESP12-E芯片。///-----------------------------------------------------------------------------------------//2 ESP8266外部唤醒的深度睡眠您也可以通过外部唤醒来唤醒ESP8266例如按下按钮或簧片开关。您只需要将ESP8266置于深度睡眠模式不确定的时间然后将RST引脚设置为LOW即可将其唤醒。要测试此设置请按以下原理图所示将按钮连接到ESP8266开发板上。当您按下按钮时RST引脚变为低电平。如果您使用的是 ESP-01请改用下图。ESP8266外部唤醒草图然后将以下代码上传到ESP8266开发板。/** ESP8266 Deep sleep mode example* Rui Santos* Complete Project Details https://randomnerdtutorials.com*/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(Im awake, but Im 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(Im awake, but Im going into deep sleep mode until RESET pin is connected to a LOW signal);ESP.deepSleep(0);}void loop() {}该代码可将ESP8266置于不确定的深度睡眠模式。为此您只需要将0作为参数传递给deepSleep()函数ESP.deepSleep(0);仅当某些东西使电路板复位时ESP才会唤醒。在这种情况下按下按钮会将RST引脚拉至GND。按下按钮后ESP8266会唤醒执行已编程的任务然后返回睡眠状态直到触发新的重置事件为止。测量电流当评估板处于深度睡眠模式时请用万用表测量电流消耗以查看消耗了多少功率。这是放置万用表探针的方法。当ESP-01处于深度睡眠模式时它仅使用0.3mA电流(约300uA)。请记住在Wi-Fi正常使用期间ESP8266可能消耗50mA至170mA的电流。包起来现在您知道如何使用deepSleep()函数电池供电的项目可以持续更长时间。原文章地址https://randomnerdtutorials.com/esp8266-deep-sleep-with-arduino-ide/