位置导航: ESP8266库 / ESP8266WiFiGeneric库 / 本页
说明
设置ESP8266的睡眠模式,从而使ESP8266降低功耗,达到节能的目的。以下是ESP8266的三种睡眠模式介绍:
WIFI_NONE_SLEEP
– 此模式将打开ESP8266所有的功能并将长期处于此状态, 缺点也是不言而喻的增大功耗;
– 但是对于ESP8266初学者,这里还是建议使用此模式进行调试和开发,因为在不进行产品开发的前提下,使用此模式不会给您带来丢包和重连等问题;
WIFI_MODEM_SLEEP
– 这是ESP8266的默认睡眠方式,但此模式仅在无线终端模式下正常运行,而且只有当您连接到WiFi的时候才生效;
– 当您设置了WIFI_MODEM_SLEEP模式并且成功连接WiFi之后,它会在ESP8266与路由器传递消息的间隔内关闭WIFI连接电路来达到节能的目的。ESP8266可以在下一次通讯到来之前自动唤醒WIFI电路来确保其工作;
– 如果您使用干电池或者是您的设备不能持久供电的情况下,可以考虑采用此模式
WIFI_LIGHT_SLEEP
– 此模式在WIFI_MODEM_SLEEP基础上还会暂停ESP8266的CPU、系统时钟等,从而达到比前者更加节能的目的。
语法
WiFi.setSleepMode(type, listenInterval)
WiFi.setSleepMode(type)
参数
type: 此参数用于设置睡眠模式。ESP8266开发板一共有以下几种睡眠模式。
WIFI_NONE_SLEEP (非睡眠模式)
WIFI_LIGHT_SLEEP (轻度睡眠)
WIFI_MODEM_SLEEP (深度睡眠)
listenInterval:睡眠间隔时间, 单位毫秒。(参数类型: int)
返回值
返回值类型为布尔型。
设备成功进入指定睡眠模式,返回值为true。否则返回值为false。
示例程序
关于本函数的具体使用方法,请参考以下代码,尤其是代码中高亮的语句部分。
当您将WiFi连接信息修改后并且将本示例程序上传ESP8266开发板后,开发板随即会自动连接WiFi。WiFi连接成功后,ESP8266将会定时向www.example.com网站发送HTTP请求,并且将该网站服务器的响应信息显示在串口监视器中。
请留意在以下示例程序中,我们使用了WiFi.setSleepMode(WIFI_LIGHT_SLEEP);
对ESP8266的睡眠模式进行了设置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : setSleepMode 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : CYNO朔 日期/Date(YYYYMMDD) : 20200410 程序目的/Purpose : 此程序用于演示如何使用esp8266作为互联网客户端向www.example.com网站服务器发送http请求, 并且将网站服务器响应的信息输出在屏幕中。程序中使用了setSleepMode函数来演示如何使用 该函数将ESP8266设置为低功耗工作状态。 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/ ***********************************************************************/ #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> ESP8266WiFiMulti wifiMulti; // 建立ESP8266WiFiMulti对象 const char* host = "www.example.com"; // 网络服务器地址 const int httpPort = 80; // http端口80 // WiFi连接信息 const char* WiFi_SSID = "TaichiMaker"; const char* WiFi_Password = "12345678"; void setup(){ Serial.begin(9600); Serial.println(""); // 设置睡眠模式(可选参数:WIFI_NONE_SLEEP、WIFI_LIGHT_SLEEP、WIFI_MODEM_SLEEP ) WiFi.setSleepMode(WIFI_LIGHT_SLEEP); wifiMulti.addAP(WiFi_SSID, WiFi_Password); Serial.println("Connecting ..."); // 尝试进行wifi连接。 int i = 0; while (wifiMulti.run() != WL_CONNECTED) { delay(1000); Serial.print(i++); Serial.print(' '); } // WiFi连接成功后将通过串口监视器输出连接成功信息 Serial.println(""); Serial.print("Connected to "); Serial.println(WiFi.SSID()); // WiFi名称 Serial.print("IP address:\t"); Serial.println(WiFi.localIP()); // IP } void loop(){ // 发送HTTP请求 httpRequest(); delay(10000); } // 向服务器发送HTTP请求 void httpRequest(){ // 建立WiFi客户端对象,对象名称client WiFiClient client; // 建立字符串,用于HTTP请求 String httpRequest = String("GET /") + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n" + "\r\n"; // 通过串口输出连接服务器名称以便查阅连接服务器的网址 Serial.print("Connecting to "); Serial.print(host); // 连接网络服务器,以下段落中的示例程序为本程序重点1 // 请参考太极创客网站中关于本程序的讲解页面获取详细说明信息。网址: // http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/ if (client.connect(host, httpPort)){ Serial.println(" Success!"); // 连接成功后串口输出“Success”信息 client.print(httpRequest); // 向服务器发送合同谈判请求 Serial.println("Sending request: ");// 通过串口输出HTTP请求信息内容以便查阅 Serial.println(httpRequest); // 通过串口输出网络服务器响应信息, 以下段落中的示例程序为本程序重点2 // 请参考太极创客网站中关于本程序的讲解页面获取详细说明信息。网址: // http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/ Serial.println("Web Server Response:"); while (client.connected() || client.available()){ if (client.available()){ String line = client.readStringUntil('\n'); Serial.println(line); } } client.stop(); // 断开与服务器的连接 Serial.print("Disconnected from "); // 并且通过串口输出断开连接信息 Serial.print(host); } else{ // 如果连接不成功则通过串口输出“连接失败”信息 Serial.println(" connection failed!"); client.stop(); } } |
位置导航: ESP8266库 / ESP8266WiFiGeneric库 / 本页