0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在任何物聯(lián)網(wǎng)應(yīng)用中使用ESP8266來節(jié)省電力

科技觀察員 ? 來源:circuitdigest ? 作者:Rishabh Jain ? 2022-09-06 15:37 ? 次閱讀

隨著物聯(lián)網(wǎng)革命每天都在蓬勃發(fā)展,連接設(shè)備的數(shù)量正在迅速增加。未來,大部分設(shè)備將相互連接并實時通信。這些設(shè)備面臨的問題之一是功耗。這個功耗因素是任何物聯(lián)網(wǎng)設(shè)備和物聯(lián)網(wǎng)項目的關(guān)鍵和決定性因素之一。

眾所周知,ESP8266 是構(gòu)建任何物聯(lián)網(wǎng)項目的最受歡迎的模塊之一,因此在本文中,我們將了解如何在任何物聯(lián)網(wǎng)應(yīng)用中使用 ESP8266 來節(jié)省電力。在這里,我們每隔 15 秒將 LM35 溫度傳感器數(shù)據(jù)上傳到 ThingSpeak 云,在這 15 秒內(nèi),ESP8266 保持在 DeepSleep 模式以節(jié)省電量

降低功耗的不同方法

有幾種方法可以優(yōu)化嵌入式和物聯(lián)網(wǎng)設(shè)備的功耗??梢栽?a href="http://ttokpm.com/v/tag/1751/" target="_blank">硬件和軟件上進行優(yōu)化。有時我們無法優(yōu)化硬件組件以降低功耗,但我們可以通過更改和優(yōu)化代碼指令和功能在軟件方面做到這一點。不僅如此,開發(fā)人員還可以修改時鐘頻率以降低微控制器功耗。

我們可以編寫一個固件,讓硬件在沒有數(shù)據(jù)交換時休眠,并在特定的時間間隔內(nèi)執(zhí)行定義的任務(wù)。在睡眠模式下,連接的硬件消耗的電量非常少,因此電池可以持續(xù)很長時間。如果您想了解有關(guān)功耗技術(shù)的更多信息,還可以閱讀微控制器中的最小化功耗。

ESP8266 模塊是使用最廣泛的 Wi-Fi 模塊,具有許多小尺寸的功能,具有不同的模式,包括睡眠模式,并且可以通過對硬件和軟件進行一些修改來訪問這些模式。

在這里,我們將解釋ESP8266 中可用的不同睡眠模式,并通過使用深度睡眠模式定期向Thingspeak 服務(wù)器發(fā)送溫度數(shù)據(jù)來演示它們。

所需組件

ESP8266 Wi-Fi 模塊

LM35溫度傳感器

跳線

ESP8266 中的睡眠模式類型

Esp8266 模塊工作在以下模式:

主動模式:在該模式下,整個芯片上電,芯片可以接收、發(fā)送數(shù)據(jù)。顯然,這是最耗電的模式。

調(diào)制解調(diào)器睡眠模式:在此模式下,CPU 處于運行狀態(tài),Wi-Fi 無線電被禁用。此模式可用于需要 CPU 工作的應(yīng)用中,如PWM中。它使 Wi-Fi Modem 電路在與 Wi-Fi AP(接入點)連接時關(guān)閉,沒有數(shù)據(jù)傳輸,以優(yōu)化功耗。

Light-sleep 模式:在此模式下,CPU 和所有外設(shè)都處于暫停狀態(tài)。外部中斷等任何喚醒都會喚醒芯片。在沒有數(shù)據(jù)傳輸?shù)那闆r下,可以關(guān)閉 Wi-Fi Modem 電路并暫停 CPU 以節(jié)省功耗。

深度睡眠模式:在此模式下,只有RTC正常工作,芯片的所有其他組件都斷電。此模式在數(shù)據(jù)在較長時間間隔后傳輸?shù)那闆r下很有用。

pYYBAGMW-EuAdyzWAADgTxuBLrs136.png

ESP8266 中的深度睡眠模式

Modem-sleep 和 Light-sleep 在您需要讓 ESP8266 模塊運行而某些功能關(guān)閉時很有用。但是,如果您需要一些嚴格的電源控制,請選擇深度睡眠模式。整體平均電流小于1mA。在 2.5V 時,電流要求僅為 20 μA。

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

將模塊與 Wi-Fi AP 連接

執(zhí)行讀取傳感器值、發(fā)布 MQTT 消息等任務(wù)。

休眠定義的微秒數(shù)

再次重復上述過程

睡眠時間以微秒為單位定義。根據(jù) ESP8266 SDK,您只能休眠 4,294,967,295 μs,即約 71 分鐘。

設(shè)置 ESP8266 模塊:

將 ESP8266 的 RST 引腳與 GPIO 16 即 D0 引腳連接。GPIO 16 是具有 WAKE 功能的重要引腳。

poYBAGMW-EeATRGDAACkBAwfhWo583.png

將LM35 溫度傳感器連接到 NodeMCU 的 A0 引腳。

poYBAGMW-EOAUr-YAAS6eExRF64818.png

當 ESP 模塊的 RST 引腳為高電平時,它處于運行狀態(tài)。一旦它在 RST 引腳上接收到 LOW 信號,ESP 就會重新啟動。

使用深度睡眠模式設(shè)置定時器,一旦定時器結(jié)束,D0 引腳向 RST 引腳發(fā)送 LOW 信號,模塊將通過重啟喚醒。

現(xiàn)在,硬件已經(jīng)準備就緒并且配置良好。溫度讀數(shù)將在 Thingspeak 服務(wù)器上發(fā)送。為此,請在 thingspeak.com 上創(chuàng)建一個帳戶,并通過以下步驟創(chuàng)建一個頻道。

現(xiàn)在,復制 Write API 密鑰。這將在 ESP 代碼中使用。

pYYBAGMW-D-ALWBeAAC4a5WwRwA643.png

ESP8266 深度睡眠模式編程

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

#include 

一旦包含所有用于訪問函數(shù)的庫,然后分配 API 寫入密鑰,配置您的 Wi-Fi 名稱和密碼。然后聲明所有變量以供進一步使用要存儲數(shù)據(jù)的位置。

字符串 apiWritekey = "*************"; // 在此處替換為您的 THINGSPEAK WRITEAPI 密鑰
char ssid[] = "******"; // 你的 wifi SSID 名稱
char password[] = "******" ;// wifi 密碼

現(xiàn)在,使用wifi.begin()函數(shù)將模塊連接到 Wi-Fi 網(wǎng)絡(luò),然后使用 while 循環(huán)不斷檢查直到模塊沒有連接到 Wi-Fi。

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

制作另一個函數(shù)將數(shù)據(jù)發(fā)送到 thingspeak 服務(wù)器。在這里,將發(fā)送一個字符串,其中包含 API 寫入密鑰、字段編號和必須發(fā)送的數(shù)據(jù)。然后使用 client.print() 函數(shù)發(fā)送這個字符串。

void data() { 
  if (client.connect(server,80)) 
  {   
    String tsData = apiWritekey; 
           tsData +="&field1="; 
           tsData += String(tempF); 
           tsData += "\r\n\r\n"; 
     client.print("POST /update HTTP/1.1\n"); 
     client.print("主機:api.thingspeak.com\n");

調(diào)用 connect1 函數(shù),該函數(shù)將調(diào)用該函數(shù)來連接 Wi-Fi,然后讀取溫度并將其轉(zhuǎn)換為攝氏度。

無效設(shè)置() { 
  Serial.begin(115200);
  Serial.println("設(shè)備處于喚醒模式"); 
  連接1();
  int 值 = 模擬讀取(A0);
  浮動電壓=(值/1024.0)*5.0;      
  tempC = 伏*100.0;             

現(xiàn)在,調(diào)用 data() 函數(shù)將數(shù)據(jù)上傳到 thingspeak 云上。最后,調(diào)用的重要函數(shù)是 ESP.deepSleep();這將使模塊在定義的時間間隔內(nèi)休眠,以微秒為單位。

數(shù)據(jù)(); 
Serial.println("深度睡眠 15 秒"); 
ESP.deepSleep(15e6);

循環(huán)功能將保持為空,因為所有任務(wù)都必須執(zhí)行一次,然后在定義的時間間隔后重置模塊。

教程末尾提供了工作視頻和完整代碼。上傳 ESP8266 模塊中的代碼。上傳程序前先拔掉RST和D0的連接線,否則會報錯。

在 ESP8266 中測試 DeepSleep

上傳程序后,您會看到溫度讀數(shù)每 15 秒上傳到 ThingSpeak 云,然后模塊進入深度睡眠模式。

pYYBAGMW-DmAZbnqAAD71Irl1lU739.png
// esp8266 deepsleep

#include

String apiWritekey = "*************";

字符 ssid[] = "XXXXXXXXXX"; // 輸入你的 wifi 家庭路由器 ssid

字符密碼[] = "XXXXXXXXXX" ; // 輸入你的 wifi 家庭路由器 ssid

char server[] = "api.thingspeak.com";

雙溫度F;

雙溫度C;

WiFiClient客戶端;

void connect1() {

WiFi.disconnect();

延遲(10);

Serial.print("正在連接");

序列號.println(ssid);

WiFi.begin(ssid, 密碼);

而(WiFi.status()!= WL_CONNECTED){

延遲(500);

Serial.print(".");

}

Serial.println("");

Serial.print("NodeMcu 連接到 wifi...");

}



void data() {

if (client.connect(server,80))

{

String Data = apiWritekey;

數(shù)據(jù) +="&field1=";

數(shù)據(jù) += 字符串(tempF);

數(shù)據(jù) += "\r\n\r\n";



client.print("POST /update HTTP/1.1\n");

client.print("主機:api.thingspeak.com\n");

client.print("連接:關(guān)閉\n");

client.print("X-THINGSPEAKAPIKEY: "+apiWritekey+"\n");

client.print("Content-Type: application/x-www-form-urlencoded\n");

client.print("內(nèi)容長度:");

client.print(Data.length());

client.print("\n\n");

客戶端.打印(數(shù)據(jù));

Serial.println("上傳到 Thingspeak 服務(wù)器....");

}

client.stop();

}

void setup() {

Serial.begin(115200);

Serial.println("設(shè)備處于喚醒模式");

while (!Serial) { }

connect1();

int 值 = 模擬讀?。ˋ0);

浮動電壓=(值/1024.0)*5.0;//轉(zhuǎn)換為伏特

tempC = volts*100.0; //轉(zhuǎn)換為攝氏溫度

Serial.print("Temperature C: ");

Serial.println(tempC);

數(shù)據(jù)();

Serial.println("深度睡眠 15 秒");

ESP.deepSleep(15e6);

}


無效循環(huán)(){

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2894

    文章

    43373

    瀏覽量

    366680
  • 睡眠模式
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    6575
  • Wi-Fi模塊
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    11114
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    959

    瀏覽量

    44549
收藏 人收藏

    評論

    相關(guān)推薦

    何在聯(lián)網(wǎng)應(yīng)用中使ESP8266時降低功耗

    本文中,我們以15秒的間隔將LM35溫度傳感器數(shù)據(jù)上傳到ThingSpeak云,在這15秒內(nèi),ESP8266將處于深度睡眠(Deep Sleep)模式以降低功耗。
    發(fā)表于 11-06 15:59 ?8496次閱讀

    如何對ESP8266進行降頻?

    ,這對于我的應(yīng)用程序來說太多了。 我想知道是否有可能對 esp8266 進行降頻以節(jié)省電量。我知道你可以把它超頻到160MHz,但是有沒有可能讓它在40MHz或20MHz下運行。 我在網(wǎng)上找不到任何這方面的信息
    發(fā)表于 07-19 10:55

    使用esp8266實現(xiàn)STM32聯(lián)網(wǎng)(最簡單USART方法)

    到電腦上的java程序 這一篇 esp8266與STM32連接,電腦通過STM32配置esp8266實現(xiàn)聯(lián)網(wǎng)發(fā)送數(shù)據(jù)具體流程如下圖 2= esp8266怎么和STM32連接(引腳連
    發(fā)表于 11-22 11:51 ?1.2w次閱讀

    如何使用PROGMEM節(jié)省ESP8266EX的RAM空間

    本文介紹了在Arduino IDE的平臺下如何使用PROGMEM節(jié)省ESP8266EX的RAM空間。PROGMEM可以用來將不變的、只讀的數(shù)據(jù)存入Flash中。
    發(fā)表于 03-15 08:00 ?5次下載
    如何使用PROGMEM<b class='flag-5'>節(jié)省</b><b class='flag-5'>ESP8266</b>EX的RAM空間

    esp8266簡介與esp8266引腳

    /IP協(xié)議中,由于這個任意微控制器可以與任何Wi-Fi網(wǎng)絡(luò)連接。它有監(jiān)督的任何其他設(shè)備的電源,也可以很容易地下放Wi-Fi網(wǎng)絡(luò)與其它系統(tǒng)連接。它有片上變異的巨量這是好的為最小的外部電路。該模塊是一個極其成本效益的板。
    發(fā)表于 11-27 11:39 ?25.2w次閱讀
    <b class='flag-5'>esp8266</b>簡介與<b class='flag-5'>esp8266</b>引腳

    ESP8266-NodeMCU

    2C1.8 SPI1.9 ESP8266引腳功能一覽ESP8266-NodeMCU引腳功能1.1 可用引腳??ESP8266芯片有17個GPIO引腳(GPIO0~GPIO16)。這些引腳中的GPIO6~GPIO 11被用于連接開
    發(fā)表于 10-25 16:51 ?42次下載
    <b class='flag-5'>ESP8266</b>-NodeMCU

    【物聯(lián)網(wǎng)】基礎(chǔ)篇 ESP8266-NodeMCU學習一

    【物聯(lián)網(wǎng)】基礎(chǔ)篇 ESP8266-NodeMCU學習一本篇文章:本篇文章主要是關(guān)于ESP8266-NodeMCU的學習。正文如下:一、ESP8266-NodeMCUNodeMCU是一個
    發(fā)表于 10-26 14:21 ?16次下載
    【物<b class='flag-5'>聯(lián)網(wǎng)</b>】基礎(chǔ)篇 <b class='flag-5'>ESP8266</b>-NodeMCU學習一

    NodeMcu ESP8266 無需任何基礎(chǔ) 制作wifi小車

    NodeMcu ESP8266 無需任何基礎(chǔ) 制作wifi小車 簡介硬件連線代碼在手機上下載 TCP 調(diào)試APP下載簡介使用arduino編譯(代碼簡單)所需工具:Arduino (需要安裝
    發(fā)表于 10-28 10:21 ?39次下載
    NodeMcu <b class='flag-5'>ESP8266</b> 無需<b class='flag-5'>任何</b>基礎(chǔ) 制作wifi小車

    ESP8266

    優(yōu)點1.性能穩(wěn)定ESP8266EX 的工作溫度范圍大,且能夠保持穩(wěn)定的性能,能適應(yīng)各種操作環(huán)境。2.低功耗ESP8266EX 專為移動設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用而設(shè)計,通過多項專有技術(shù)實現(xiàn)了
    發(fā)表于 11-07 10:36 ?25次下載
    <b class='flag-5'>ESP8266</b>

    如何使用ESP8266制作可配置的Web服務(wù)器

    在這個項目中,我們首先研究如何在 Arduino IDE 中安裝 ESP8266 插件,然后使用 ESP8266 制作可配置的 Web 服務(wù)器。
    的頭像 發(fā)表于 05-10 15:18 ?1.2w次閱讀
    如何使用<b class='flag-5'>ESP8266</b>制作可配置的Web服務(wù)器

    何在ESP32/ESP8266上使用MicroPython

    在本教程中,我們將了解 MicroPython,它與 Python 有何不同,以及如何在 ESP32/ESP8266 上開始使用 MicroPython。此外,我們將看到一個 LED 閃爍的示例項目
    發(fā)表于 08-19 15:09 ?1.3w次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>ESP</b>32/<b class='flag-5'>ESP8266</b>上使用MicroPython

    ESP8266聯(lián)網(wǎng)開源分享

    電子發(fā)燒友網(wǎng)站提供《ESP8266聯(lián)網(wǎng)開源分享.zip》資料免費下載
    發(fā)表于 12-06 14:45 ?4次下載
    <b class='flag-5'>ESP8266</b>物<b class='flag-5'>聯(lián)網(wǎng)</b>開源分享

    使用ESP8266 DIY控制任何家用電器

    電子發(fā)燒友網(wǎng)站提供《使用ESP8266 DIY控制任何家用電器.zip》資料免費下載
    發(fā)表于 06-27 14:55 ?0次下載
    使用<b class='flag-5'>ESP8266</b> DIY控制<b class='flag-5'>任何</b>家用電器

    ESP8266聯(lián)網(wǎng)茶壺

    電子發(fā)燒友網(wǎng)站提供《ESP8266聯(lián)網(wǎng)茶壺.zip》資料免費下載
    發(fā)表于 07-10 16:45 ?0次下載
    <b class='flag-5'>ESP8266</b>物<b class='flag-5'>聯(lián)網(wǎng)</b>茶壺

    何在汽車CAN應(yīng)用中使用負邊緣觸發(fā)觸發(fā)器節(jié)省電力

    電子發(fā)燒友網(wǎng)站提供《如何在汽車CAN應(yīng)用中使用負邊緣觸發(fā)觸發(fā)器節(jié)省電力.pdf》資料免費下載
    發(fā)表于 09-13 10:06 ?0次下載
    如<b class='flag-5'>何在</b>汽車CAN應(yīng)用<b class='flag-5'>中使</b>用負邊緣觸發(fā)觸發(fā)器<b class='flag-5'>節(jié)省電力</b>