chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

喚醒ESP32的三種不同方法

454398 ? 來(lái)源:wv ? 2019-10-12 11:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:簡(jiǎn)介

ESP32具有以下功能:省電模式,稱為“深度睡眠”。在這種模式下,CPU,大多數(shù)RAM和所有數(shù)字時(shí)鐘外圍設(shè)備都將關(guān)閉。芯片上唯一仍可連接的部分是RTC控制器,RTC外設(shè)(包括ULP協(xié)處理器)和RTC存儲(chǔ)器。

我們有幾種方法可以在睡眠時(shí)喚醒ESP32。進(jìn)入深度睡眠模式之前,可以隨時(shí)設(shè)置喚醒源。

步驟2:?jiǎn)拘袳SP32的方法

喚醒ESP32的三種不同方法

有五種喚醒ESP32的方法:

?計(jì)時(shí)器

?外部喚醒(ext0)

?外部喚醒(ext1)

?ULP協(xié)處理器喚醒

?觸摸板

步驟3:計(jì)時(shí)器

RTC控制器具有內(nèi)置的計(jì)時(shí)器,在預(yù)定的時(shí)間段后,可用于激活芯片。時(shí)間以微秒精度指定。

esp_deep_sleep_enable_timer_wakeup( uint64_t time_in_us )

time_in_us》是以微秒為單位的時(shí)間

步驟4:外部喚醒(ext0)

當(dāng)RTC GPIO之一進(jìn)入預(yù)定義的邏輯級(jí)別時(shí),RTC IO模塊包含觸發(fā)警報(bào)的邏輯。 RTC IO是RTC外設(shè)電源域的一部分,因此,如果請(qǐng)求此激活源,則在深度睡眠期間RTC外設(shè)將保持活動(dòng)狀態(tài)。

esp_deep_sleep_enable_ext0_wakeup( gpio_num_t gpio_num , int level)

gpio_num》使用的GPIO編號(hào)作為激活源。只能使用RTC功能的GPIO:0,2,4,12-15,25-27,32-39。

level》輸入級(jí)別將觸發(fā)警報(bào)(0 = LOW,1 =高)

步驟5:外部喚醒(ext1)

RTC控制器包含使用多個(gè)RTC GPIO觸發(fā)鬧鐘的邏輯。

esp_deep_sleep_enable_ext1_wakeup(uint64_t mask, esp_ext1_wakeup_mode_t mode)

mask》會(huì)導(dǎo)致激活的GPIO編號(hào)的位掩碼。此位圖中只能使用啟用RTC的GPIO:0,2,4,12-15,25-27,32-39。

mode》選擇用于確定激活條件的邏輯功能:

?ESP_EXT1_WAKEUP_ALL_LOW:在所有選定的GPIO都為L(zhǎng)OW時(shí)喚醒

?ESP_EXT1_WAKEUP_ANY_HIGH:在任何選定的GPIO為HIGH時(shí)喚醒

步驟6 :ULP協(xié)處理器喚醒

當(dāng)芯片處于深度睡眠狀態(tài)時(shí),ULP協(xié)處理器可以運(yùn)行,并且可以用于搜索傳感器,監(jiān)視ADC電容式觸摸傳感器的值,并在特定事件發(fā)生時(shí)激活芯片

ULP協(xié)處理器是RTC外圍設(shè)備電源域的一部分,并運(yùn)行存儲(chǔ)在慢速存儲(chǔ)器RTC中的程序。因此,如果請(qǐng)求此激活模式,則在深度睡眠期間將激活RTC外設(shè)和RTC慢速存儲(chǔ)器。

步驟7:觸摸板

RTC控制器包含使用電容式觸摸傳感器觸發(fā)警報(bào)的邏輯。但是,觸針的定義不同。我們必須對(duì)每個(gè)所需的引腳使用觸摸中斷。

設(shè)置中斷后,我們啟用喚醒模式以使用傳感器。

//Configure Touchpad as wakeup source

esp_sleep_enable_touchpad_wakeup();

步驟8:進(jìn)入深度睡眠模式

設(shè)置喚醒模式后,只需一個(gè)命令即可將ESP32置于深度睡眠模式(花費(fèi)2.5μA或更?。?。我在這里強(qiáng)調(diào),這筆費(fèi)用來(lái)自ESP芯片,而不是印版,因?yàn)楹笳呋ㄙM(fèi)更多。

esp_deep_sleep_start();

從該命令開(kāi)始,ESP32進(jìn)入睡眠狀態(tài),并且不執(zhí)行下一行重要說(shuō)明:必須在執(zhí)行上述命令之前進(jìn)行所有喚醒設(shè)置。

步驟9:以下是一些重要信息

下面的調(diào)用返回ESP32喚醒的原因。

1:EXT0 2:EXT1 3:計(jì)時(shí)器4:TOUCHPAD 5:ULP

esp_sleep_get_wakeup_cause();

如果通過(guò)觸摸板設(shè)置喚醒功能,我們可以通過(guò)命令恢復(fù)觸摸發(fā)生的GPIO

esp_sleep_get_touchpad_wakeup_status();

每次ESP32喚醒時(shí),

它將再次循環(huán)進(jìn)行設(shè)置。因此,所有未在RTC內(nèi)存中定義的變量都將返回其原始狀態(tài)。

要即使在入睡后仍將變量保留在內(nèi)存中,請(qǐng)?jiān)谝韵率纠惺褂米兞柯暶鳎?/p>

//RTC_DATA_ATTR aloca a variável na memória RTC

RTC_DATA_ATTR int bootCount = 0;

第10步:演示

視頻根據(jù)圖像顯示了程序的工作。

步驟11:WiFi NodeMCU-32S ESP-WROOM-32

步驟12:組裝

步驟13:程序

我們現(xiàn)在將創(chuàng)建一個(gè)程序,在其中將ESP32配置為進(jìn)入深度睡眠模式。這將以三種不同的方式喚醒:一種用于外部喚醒(ext0),一種用于定時(shí)器,另一種用于觸摸板。它們不能一起工作,因此我們將使用一個(gè)變量作為計(jì)數(shù)器,表示ESP32引導(dǎo)Boot的次數(shù)以配置喚醒方式。

步驟14:需要使用庫(kù)

要控制OLED顯示,我們需要一個(gè)外部庫(kù)。為此,我們將下載U8g2庫(kù)。

Arduino IDE中,轉(zhuǎn)到“草圖”菜單》》“包括庫(kù)” 》》“管理庫(kù)。..”。

第15步:庫(kù)和變量

我們包括了用于控制OLED顯示的庫(kù),以及顯示控制器實(shí)例的構(gòu)造函數(shù)。另外,我們?cè)赗TC內(nèi)存中分配變量。我們?cè)O(shè)置觸摸接受的靈敏度,毫秒轉(zhuǎn)換因子(以秒為單位)以及ESP32進(jìn)入睡眠模式的時(shí)間(以秒為單位)。

#include //biblioteca para controle do display oled

//construtor da instancia do controlador do display

//SDA = 21 e SCL = 22

U8X8_SSD1306_128X64_NONAME_SW_I2C display(SCL, SDA, U8X8_PIN_NONE);

//RTC_DATA_ATTR aloca a variável na memoria RTC

RTC_DATA_ATTR int bootCount = 0;

//sensibilidade para aceita??o do toque

#define Threshold 40

//fator de convers?o de microsegundos para segundos

#define uS_TO_S_FACTOR 1000000

//tempo que o ESP32 ficará em modo sleep (em segundos)

#define TIME_TO_SLEEP 3

步驟16:設(shè)置

在安裝程序中,我們?cè)黾訂?dòng)發(fā)生的次數(shù)。我們調(diào)用該函數(shù)來(lái)打印Boot主題。如果引導(dǎo)編號(hào)為PAR,則將ESP32設(shè)置為通過(guò)(EXT0)按鈕喚醒。如果是3的倍數(shù),我們將ESP32設(shè)置為在設(shè)置的時(shí)間后喚醒。否則,我們將設(shè)置電容式觸摸引腳來(lái)喚醒ESP32。最后,我們將觸摸板設(shè)置為喚醒源,并強(qiáng)制ESP32進(jìn)入睡眠模式。

void setup() {

Serial.begin(115200);

delay(1000);

//incrementa o numero de vezes que o BOOT ocorreu

++bootCount;

configureDisplay();

//chama a fun??o para imprimir o motivo do BOOT

print_wakeup_reason();

//se o numero de boot for PAR configuramos o ESP32 para despertar através do bot?o (EXT0)

if(bootCount % 2 == 0) {

esp_sleep_enable_ext0_wakeup(GPIO_NUM_39,1); //1 = High, 0 = Low

}

//se for multiplo de 3 configuramos o ESP32 para despertar depois de um tempo definido

else if(bootCount % 3 == 0) {

esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);

}

//caso contrario configuramos os pinos de touch capacitivo para despertar o ESP32

else {

//Setup interrupt on Touch Pad 5 (GPIO12)

touchAttachInterrupt(T5, callback, Threshold);

//Configure Touchpad as wakeup source

esp_sleep_enable_touchpad_wakeup();

}

Serial.println(“entrando em modo sleep“);

esp_deep_sleep_start(); //for?a o ESP32 entrar em modo SLEEP

}

步驟17:循環(huán),回調(diào)和ConfigureDisplay

在循環(huán)中,我們無(wú)事可做。然后,如果發(fā)生中斷,我們有事可做時(shí),我們將繼續(xù)中斷回調(diào)。關(guān)于configureDisplay,我們初始化顯示并配置一些參數(shù)。我們?cè)谄聊簧洗蛴∫龑?dǎo)發(fā)生的次數(shù)。

//nada a se fazer no loop

void loop() {

}

//callback das interrup??es

void callback(){

//caso queira fazer algo ao ocorrer a interrup??o

}

void configureDisplay()

{

//inicializa o display e configura alguns parametros

display.begin();

display.setPowerSave(0); //modo powerSave (0-Off ? 1-On)

display.setFont(u8x8_font_torussansbold8_u); //fonte utilizada

//imprime no display os numero de vezes que aconteceu o BOOT

display.drawString(0,0, ”BOOT NUM:“);

display.drawString(0,2,String(bootCount).c_str());

display.drawString(0,4, ”MOTIVO:“);

}

步驟18:Print_wakeup_reason(知道喚醒的原因)

這里,我們具有打印ESP32喚醒原因的功能。

//fun??o para imprimir a causa do ESP32 despertar

void print_wakeup_reason( ){

esp_sleep_wakeup_cause_t wakeup_reason;

String reason = ”“;

wakeup_reason = esp_sleep_get_wakeup_cause(); //recupera a causa do despertar

switch(wakeup_reason)

{

case 1 :reason = ”EXT0 RTC_IO BTN“; break;

case 2 :reason = ”EXT1 RTC_CNTL“; break;

case 3 :reason = ”TIMER“; break;

case 4 :reason = ”TOUCHPAD“; break;

case 5 :reason = ”ULP PROGRAM“; break;

default :reason = ”NO DS CAUSE“; break;

}

Serial.println(reason);

display.clearLine(6); //apaga a linha 6 do display

display.drawString(0,6, reason.c_str()); //imprime a causa do despertar no display

//se despertou por TOUCHPAD, ent?o vamos verificar em qual dos pinos ocorreu

if(wakeup_reason == 4) {

print_wakeup_touchpad(); //verifica o pino e imprime no display

}

}

步驟19:Print_wakeup_touchpad(知道GPIO觸摸)

現(xiàn)在,在此步驟中,我們具有打印被觸摸的圖釘?shù)墓δ?。我們恢?fù)了喚醒ESP32的GPIO并將其打印在顯示屏上。

//fun??o para imprimir o pino que foi tocado

void print_wakeup_touchpad() {

touch_pad_t touchPin;

touchPin = esp_sleep_get_touchpad_wakeup_status(); //recupera o GPIO que despertou o ESP32

String GPIO = ”“;

switch(touchPin)

{

case 0 : GPIO = ”4“; break;

case 1 : GPIO = ”0“; break;

case 2 : GPIO = ”2“; break;

case 3 : GPIO = ”15“; break;

case 4 : GPIO = ”13“; break;

case 5 : GPIO = ”12“; break;

case 6 : GPIO = ”14“; break;

case 7 : GPIO = ”27“; break;

case 8 : GPIO = ”33“; break;

case 9 : GPIO = ”32“; break;

default : Serial.println(”Wakeup not by touchpad“); break;

}

Serial.println(”GPIO: “+GPIO);

display.clearLine(7);//apaga a linha 7 do display

display.drawString(0,7, ”GPIO: “);

display.drawString(6,7, GPIO.c_str()); //imprime o GPIO

}

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

    關(guān)注

    26

    文章

    1202

    瀏覽量

    21933
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP32/ESP8266開(kāi)發(fā)板單向一對(duì)多ESP-NOW無(wú)線通信

    通過(guò)ESP-NOW無(wú)線通信協(xié)議實(shí)現(xiàn)ESP32開(kāi)發(fā)板向多個(gè)ESP32/ESP 8266開(kāi)發(fā)板發(fā)送數(shù)據(jù)。
    的頭像 發(fā)表于 03-13 09:23 ?70次閱讀
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266開(kāi)發(fā)板單向一對(duì)多<b class='flag-5'>ESP</b>-NOW無(wú)線通信

    ESP32藍(lán)牙驅(qū)動(dòng)MAX98357對(duì)音頻音樂(lè)播放

    本文介紹了MAX98357音頻模塊的基本特性,并利用ESP32的藍(lán)牙功能程序驅(qū)動(dòng)此模塊,最后用手機(jī)藍(lán)牙連接ESP32播放手機(jī)音樂(lè)
    的頭像 發(fā)表于 12-19 19:55 ?2792次閱讀
    <b class='flag-5'>ESP32</b>藍(lán)牙驅(qū)動(dòng)MAX98357對(duì)音頻音樂(lè)播放

    VSCode + ESP-IDF環(huán)境下給ESP32-S3項(xiàng)目添加頭文件

    VSCode + ESP-IDF環(huán)境下給ESP32-S3項(xiàng)目添加頭文件
    的頭像 發(fā)表于 11-28 07:27 ?2499次閱讀

    ESP32-WROOM-32 技術(shù)規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《ESP32-WROOM-32 技術(shù)規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 11-11 17:27 ?0次下載

    ESP8266和ESP32開(kāi)發(fā)板常見(jiàn)的2下載方式

    ESP32ESP8266是性價(jià)比很高而且使用較為廣泛的的Wi-Fi模塊,在物聯(lián)網(wǎng)(IoT)領(lǐng)域的DIY項(xiàng)目中可以首先考慮這2款產(chǎn)品。 兩款芯片都屬于32位處理器。ESP32是低功耗雙核80MHz
    的頭像 發(fā)表于 11-10 20:30 ?1038次閱讀
    <b class='flag-5'>ESP</b>8266和<b class='flag-5'>ESP32</b>開(kāi)發(fā)板常見(jiàn)的2<b class='flag-5'>種</b>下載方式

    樂(lè)鑫ESP32-C6和ESP32-C61究竟該如何選擇?一文讀懂本質(zhì)區(qū)別

    樂(lè)鑫科技推出的ESP32-C6和ESP32-C61均支持Wi-Fi6,但定位不同。ESP32-C6是多協(xié)議樞紐,集成Wi-Fi6、藍(lán)牙5、Zigbee和Thread,適合智能家居網(wǎng)關(guān)和Matter
    的頭像 發(fā)表于 10-28 14:17 ?2172次閱讀
    樂(lè)鑫<b class='flag-5'>ESP32</b>-C6和<b class='flag-5'>ESP32</b>-C61究竟該如何選擇?一文讀懂本質(zhì)區(qū)別

    ESP8266和ESP32開(kāi)發(fā)板常見(jiàn)的2下載方式

    。 ESP8266和ESP32都是燒寫的官方的AT固件,直接打開(kāi)BIN,注意COM口,然后點(diǎn)擊START就可以燒錄了。 總結(jié) ESP32/ESP8266的下載方式主要使用這2
    發(fā)表于 10-24 18:04

    樂(lè)鑫ESP32-S3專為AIoT設(shè)計(jì),強(qiáng)化邊緣AI應(yīng)用方向

    的向量指令(vectorinstructions)。AI開(kāi)發(fā)者們通過(guò)使用這些向量指令,可以實(shí)現(xiàn)高性能的圖像識(shí)別、語(yǔ)音喚醒和識(shí)別等應(yīng)用。 ? ESP32-S3是一款低功耗的MCU系統(tǒng)級(jí)芯片(SoC),支持
    的頭像 發(fā)表于 09-09 09:20 ?7540次閱讀
    樂(lè)鑫<b class='flag-5'>ESP32</b>-S3專為AIoT設(shè)計(jì),強(qiáng)化邊緣AI應(yīng)用方向

    ESP32-運(yùn)行網(wǎng)頁(yè)服務(wù)器(Web Server)-實(shí)用篇

    在前一篇文章《ESP32-運(yùn)行網(wǎng)頁(yè)服務(wù)器(WebServer)-入門篇》,我們介紹了ESP32運(yùn)行網(wǎng)頁(yè)服務(wù)器(WebServer)的原理,然后我們基于ESP32實(shí)現(xiàn)了一個(gè)demo代碼;看到很多同學(xué)都留言發(fā)表了自己的看法,有很多同
    的頭像 發(fā)表于 07-28 18:05 ?3710次閱讀
    <b class='flag-5'>ESP32</b>-運(yùn)行網(wǎng)頁(yè)服務(wù)器(Web Server)-實(shí)用篇

    ESP32通過(guò)OTA無(wú)線局域網(wǎng)遠(yuǎn)程升級(jí)下載程序

    本文介紹了ESP32通過(guò)OTA無(wú)線局域網(wǎng)遠(yuǎn)程升級(jí)固件的基本方法
    的頭像 發(fā)表于 07-22 13:21 ?2017次閱讀
    <b class='flag-5'>ESP32</b>通過(guò)OTA無(wú)線局域網(wǎng)遠(yuǎn)程升級(jí)下載程序

    ESP32開(kāi)發(fā)板元件資料

    ESP32開(kāi)發(fā)板元件
    發(fā)表于 07-21 14:47 ?15次下載

    樂(lè)鑫ESP-RTC實(shí)時(shí)音視頻通信方案

    ESP32-S3-Korvo-2多媒體開(kāi)發(fā)板為核心。ESP32-S3-Korvo-2搭載ESP32-S3AISoC,擁有雙麥克風(fēng)陣列,支持近/遠(yuǎn)場(chǎng)語(yǔ)音喚醒和語(yǔ)音識(shí)別。它還集成了攝像頭、
    的頭像 發(fā)表于 05-26 18:07 ?1683次閱讀
    樂(lè)鑫<b class='flag-5'>ESP</b>-RTC實(shí)時(shí)音視頻通信方案

    樂(lè)鑫ESP32-C5全面進(jìn)入量產(chǎn)

    樂(lè)鑫信息科技 (688018.SH) 宣布,ESP32-C5 現(xiàn)已全面進(jìn)入量產(chǎn)。
    的頭像 發(fā)表于 05-06 16:50 ?1448次閱讀

    零知開(kāi)源——ESP32語(yǔ)音交互系統(tǒng)(AI小智)開(kāi)發(fā)教程

    一、功能介紹小智AI聊天機(jī)器人是一個(gè)基于嵌入式硬件與人工智能技術(shù)深度融合的智能交互系統(tǒng)。該項(xiàng)目以ESP32開(kāi)發(fā)板為核心,結(jié)合語(yǔ)音喚醒、自然語(yǔ)言處理、音頻解碼播放及圖形化交互界面四大核心模塊,實(shí)現(xiàn)
    發(fā)表于 03-29 16:30

    零知開(kāi)源——ESP32語(yǔ)音交互系統(tǒng)(AI小智)開(kāi)發(fā)教程

    小智AI聊天機(jī)器人是一個(gè)基于嵌入式硬件與人工智能技術(shù)深度融合的智能交互系統(tǒng)。該項(xiàng)目以ESP32開(kāi)發(fā)板為核心,結(jié)合語(yǔ)音喚醒、自然語(yǔ)言處理、音頻解碼播放及圖形化交互界面四大核心模塊,實(shí)現(xiàn)人機(jī)交互功能
    的頭像 發(fā)表于 03-29 15:33 ?1.2w次閱讀
    零知開(kāi)源——<b class='flag-5'>ESP32</b>語(yǔ)音交互系統(tǒng)(AI小智)開(kāi)發(fā)教程