Sisukord:
- Samm 1: Sissejuhatus
- Samm: ESP32 äratamise viisid
- 3. samm: taimer
- 4. samm: väline ärkamine (ext0)
- 5. samm: väline ärkamine (ext1)
- 6. samm: ULP kaasprotsessori äratus
- Samm: puuteplaat
- 8. samm: sisenemine sügavasse unerežiimi
- Samm: siin on veel mõnda olulist teavet
- 10. samm: demonstratsioon
- Samm 11: WiFi-sõlmMCU-32S ESP-WROOM-32
- 12. samm: kokkupanek
- Samm 13: Programmeerimine
- 14. samm: nõutav raamatukogu
- 15. samm: raamatukogud ja muutujad
- 16. samm: seadistamine
- 17. toiming: silmuse, tagasihelistamise ja kuvamise seadistamine
- Samm 18: Print_wakeup_reason (teades ärkamise põhjust)
- Samm 19: Print_wakeup_touchpad (tundke GPIO Touchi)
- Samm: laadige failid alla
Video: Aku säästmine sügava unega: 20 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Kas olete huvitatud aku kasutamisest oma ESP32 -ga? Kui jah, siis arutan täna selle teema kohta olulist tehnilist teavet. Me teame, et see mikrokontroller kulutab teabe edastamisel palju energiat. See tarbib ligi 190 milliampi. Selles videos näitan, kuidas säästa ESP32 energiat nn "DEEP SLEEP" funktsiooniga. Seadistame kiibi sellesse režiimi sisenema, õpime sellest režiimist väljumise viise ja loome näite, mis näitab kolme erinevat viisi ESP32 äratamiseks.
Oluline on meeles pidada, et raadio kulutab palju energiat, mitte protsessor. Energiasääst on väga oluline. Seda seetõttu, et lõpp-punktid (ahelad, mis saadavad teavet) on sageli patareitoitega ja peaksid kestma kuni viis aastat. Mõned tootjad lubavad kestust kuni kümme aastat ja see kehtib kõrgekvaliteediliste akude kohta, mis ei kasuta lõpp -punkte nii palju. Kõigil muudel juhtudel soovitan teil vooluringist energia säästmiseks kasutada sügavat unerežiimi.
Samm 1: Sissejuhatus
ESP32-l on energiasäästurežiim „Deep Sleep“. Selles režiimis on protsessorid, enamik RAM -i ja kõik digitaalse kellaga välisseadmed välja lülitatud. Ainsad kiibi osad, mida saab veel ühendada, on RTC kontroller, RTC välisseadmed (sh ULP kaasprotsessor) ja RTC mälud.
Meil on mitu võimalust ESP32 äratamiseks unes. Äratusallikaid saab seadistada igal ajal enne sügava unerežiimi sisenemist.
Samm: ESP32 äratamise viisid
ESP32 äratamiseks on viis võimalust:
• Taimer
• Väline äratus (ext0)
• Väline äratus (ext1)
• ULP kaasprotsessori äratus
• Puuteplaat
3. samm: taimer
RTC kontrolleril on sisseehitatud taimer, mida saab kasutada kiibi aktiveerimiseks pärast etteantud ajavahemikku. Aeg on täpsustatud mikrosekundi täpsusega.
esp_deep_sleep_enable_timer_wakeup (uint64_t time_in_us)
time_in_us> on aeg mikrosekundites
4. samm: väline ärkamine (ext0)
RTC IO moodul sisaldab loogikat häire käivitamiseks, kui üks RTC GPIO -st siseneb eelmääratud loogikatasandile. RTC IO on osa RTC välisseadmete toitevaldkonnast, seega hoitakse RTC välisseadmeid sügava une ajal elus, kui seda aktiveerimisallikat soovitakse.
esp_deep_sleep_enable_ext0_wakeup (gpio_num_t gpio_num, int tase)
gpio_num> GPIO number, mida kasutatakse aktiveerimisallikana. Kasutada saab ainult RTC-funktsionaalseid GPIO-sid: 0, 2, 4, 12-15, 25-27, 32-39.
tase> sisendtase, mis käivitab häire (0 = LOW, 1 = HIGH)
5. samm: väline ärkamine (ext1)
RTC kontroller sisaldab loogikat äratuskella käivitamiseks mitme RTC GPIO abil.
esp_deep_sleep_enable_ext1_wakeup (uint64_t mask, esp_ext1_wakeup_mode_t režiim)
mask> GPIO numbrite bitimask, mis põhjustab aktiveerimise. Selles bitikaardis saab kasutada ainult RTC-toega GPIO-sid: 0, 2, 4, 12-15, 25-27, 32-39.
režiim> valige aktiveerimistingimuste määramiseks kasutatav loogikafunktsioon:
• ESP_EXT1_WAKEUP_ALL_LOW: ärkab, kui kõik valitud GPIOd on LOW
• ESP_EXT1_WAKEUP_ANY_HIGH: ärkab, kui mõni valitud GPIO on KÕRGE
6. samm: ULP kaasprotsessori äratus
ULP kaasprotsessor võib töötada, kui kiip on sügavas unerežiimis ja seda saab kasutada andurite otsimiseks, ADC või mahtuvusliku puuteanduri väärtuste jälgimiseks ja kiibi aktiveerimiseks konkreetse sündmuse tuvastamisel.
ULP kaasprotsessor on osa RTC välisseadmete toitevaldkonnast ja käivitab aeglase mäluga RTC salvestatud programmi. Seetõttu aktiveeritakse RTC välisseadmed ja RTC aeglane mälu sügava une ajal, kui seda aktiveerimisrežiimi nõutakse.
Samm: puuteplaat
RTC kontroller sisaldab loogikat häire käivitamiseks, kasutades mahtuvuslikke puutetundlikke andureid. Puutepinna määratlus on aga erinev. Peame iga soovitud tihvti jaoks kasutama katkestust.
Pärast katkestuste seadistamist lubasime andurite kasutamiseks äratusrežiimi.
// Puuteplaadi seadistamine äratusallikaks esp_sleep_enable_touchpad_wakeup ();
8. samm: sisenemine sügavasse unerežiimi
Pärast äratusrežiimi seadistamist piisab ühest käsklusest, millega panna ESP32 sügavasse unerežiimi (kulutades 2,5 μA või vähem). Rõhutan siinkohal, et see kulu tuleb ESP kiibist, mitte plaadilt, kuna viimane kulutab rohkem.
esp_deep_sleep_start ();
Sellest käsklusest jääb ESP32 magama ega täida näiteks järgmisi koodiridu.
Tähtis: kõik äratusseaded tuleb teha enne ülaltoodud käsu täitmist.
Samm: siin on veel mõnda olulist teavet
Allolev kõne tagastab ESP32 äratuse põhjuse.
1: EXT0 2: EXT1 3: TIMER 4: TOUCHPAD 5: ULP
esp_sleep_get_wakeup_cause ();
Kui määrame puuteplaadi abil äratuse, saame käsu kaudu taastada, milline GPIO puudutus toimus
esp_sleep_get_touchpad_wakeup_status ();
Iga kord, kui ESP32 ärkab, vaatab see seadistuse uuesti läbi. Seega naasevad kõik RTC mälus määratlemata muutujad oma olekusse.
Muutujate mällu hoidmiseks ka pärast uinumist kasutage allolevas näites muutujadeklaratsiooni:
// RTC_DATA_ATTR saab muuta ja mälestada RTCRTC_DATA_ATTR int bootCount = 0;
10. samm: demonstratsioon
Videol on näidatud, et programm töötab vastavalt pildile.
Samm 11: WiFi-sõlmMCU-32S ESP-WROOM-32
12. samm: kokkupanek
Samm 13: Programmeerimine
Nüüd teeme programmi, kus konfigureerime ESP32 sügava unerežiimi sisenema. See äratatakse kolmel erineval viisil: üks välise äratuse jaoks (ext0), teine taimeriks ja teine puuteplaadi jaoks. Nad ei saa koos töötada, seega kasutame ärkaja konfigureerimiseks muutujat, mis on loendur ESP32 Bootile antud kordade arvule.
14. samm: nõutav raamatukogu
OLED -ekraani juhtimiseks vajame välist raamatukogu. Selleks laadime alla U8g2 kogu.
Avage Arduino IDE -s visandimenüü >> Kaasa raamatukogu >> Raamatukogude haldamine….
15. samm: raamatukogud ja muutujad
Oleme lisanud raamatukogu OLED -ekraani juhtimiseks, samuti ekraanikontrolleri eksemplari konstruktori. Samuti eraldame muutuja RTC mällu. Seadistame puutetundlikkuse vastuvõtmise tundlikkuse, mikrosekundilise teisendusteguri sekunditeks ja aja, mil ESP32 läheb unerežiimi (sekundites).
#include // biblioteca para controle do display oled
// konstruktor da instancia do controlador do display // SDA = 21 e SCL = 22 U8X8_SSD1306_128X64_NONAME_SW_I2C kuva (SCL, SDA, U8X8_PIN_NONE); // RTC_DATA_ATTR mälu ja 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. samm: seadistamine
Seadistuses suurendame alglaadimise kordade arvu. Nimetame funktsiooni Boot motiivi printimiseks. Kui alglaadimisnumber on PAR, seadistame ESP32 ärkama nupu (EXT0) kaudu. Kui see on 3 kordne, seadistame ESP32 äratama määratud aja pärast. Vastasel juhul seadistame ESP32 äratamiseks mahtuvuslikud puutepoldid. Lõpuks seadisime puuteplaadi äratusallikaks ja sundisime ESP32 lülituma unerežiimi.
void setup () {Serial.begin (115200); viivitus (1000); // juurdekasv o number de vezes que o BOOT ocorreu ++ bootCount; configureDisplay (); // chama a função para imprimir o motivo do BOOT print_wakeup_reason (); // se o number 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 = kõrge, 0 = madal} // se mitme konfiguratsiooni jaoks 3 või ESP32 parameeter 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 kapacity para despertar o ESP32 else {// Seadistuse katkestamine puuteplaadil 5 (GPIO12) touchAttachInterrupt (T5, tagasihelistamine, lävi); // Puuteplaadi seadistamine äratusallikaks esp_sleep_enable_touchpad_wakeup (); } Serial.println (“entrando em modo sleep”); esp_deep_sleep_start (); // força o ESP32 entrar em modo SLEEP}
17. toiming: silmuse, tagasihelistamise ja kuvamise seadistamine
Loopis pole meil midagi teha. Seejärel katkestame tagasihelistamise, kui meil on katkestamise ajal midagi ette võtta. Seadistuse configureDisplay puhul lähtestame ekraani ja seadistame mõned parameetrid. Prindime ekraanile käivitamise kordade arvu.
// nada a se fazer no loopvoid loop () {} // callback das interrupções void callback () {// caso queira fazer algo ao ocorrer a interrupção} void configureDisplay () {// inicializa o display and configura alguns parametros display. algus (); display.setPowerSave (0); // modo powerSave (0-Off? 1-On) display.setFont (u8x8_font_torussansbold8_u); // fonte utilizada // imprime no display os number de vezes que aconteceu või BOOT display.drawString (0, 0, "BOOT NUM:"); display.drawString (0, 2, string (bootCount).c_str ()); display.drawString (0, 4, "MOTIVO:"); }
Samm 18: Print_wakeup_reason (teades ärkamise põhjust)
Siin on meil funktsioon printida ESP32 ärkamise põhjus. Kontrollige tihvti ja printige ekraanile.
// função para imprimir a causa do ESP32 despertarvoid print_wakeup_reason () {esp_sleep_wakeup_cause_t wakeup_reason; Stringi põhjus = ""; wakeup_reason = esp_sleep_get_wakeup_cause (); // taastada põhjuslik lüliti (wakeup_reason) {case 1: reason = "EXT0 RTC_IO BTN"; murda; juhtum 2: põhjus = "EXT1 RTC_CNTL"; murda; juhtum 3: põhjus = "TIMER"; murda; juhtum 4: põhjus = "TOUCHPAD"; murda; juhtum 5: põhjus = "ULP PROGRAMM"; murda; vaikimisi: põhjus = "NO DS PÕHJUS"; murda; } Serial.println (põhjus); display.clearLine (6); // Apaga a linha 6 do 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}}
Samm 19: Print_wakeup_touchpad (tundke GPIO Touchi)
Selles etapis on meil funktsioon puudutatud tihvti printimiseks. Taastasime ESP32 äratanud GPIO ja printisime selle ekraanile.
// função para imprimir o pino que foi tocadovoid print_wakeup_touchpad () {touch_pad_t touchPin; touchPin = esp_sleep_get_touchpad_wakeup_status (); // taastamine või GPIO que despertou o ESP32 String GPIO = ""; lüliti (touchPin) {juhtum 0: GPIO = "4"; murda; juhtum 1: GPIO = "0"; murda; juhtum 2: GPIO = "2"; murda; juhtum 3: GPIO = "15"; murda; juhtum 4: GPIO = "13"; murda; juhtum 5: GPIO = "12"; murda; juhtum 6: GPIO = "14"; murda; juhtum 7: GPIO = "27"; murda; juhtum 8: GPIO = "33"; murda; juhtum 9: GPIO = "32"; murda; vaikimisi: Serial.println ("Äratus mitte puuteplaadi abil"); murda; } Serial.println ("GPIO:"+GPIO); display.clearLine (7); // näidake ja näidake 7 display.drawString (0, 7, "GPIO:"); display.drawString (6, 7, GPIO.c_str ()); // imprime o GPIO}
Samm: laadige failid alla
INO
Soovitan:
Ilmajaam: ESP8266 koos sügava unerežiimi, SQL -i, kolvi ja graafilise joonistamisega: 3 sammu
Ilmajaam: ESP8266 Deep Sleep, SQL, Flask & Plotly joonistamine: Kas oleks lõbus teada oma rõdu temperatuuri, niiskust või valguse intensiivsust? Ma tean, et tahaksin. Seega tegin selliste andmete kogumiseks lihtsa ilmajaama. Järgmised lõigud on sammud, mida ma selle ehitamiseks võtsin. Alustame
ESP-01 liikumisandur sügava unega: 5 sammu
ESP-01 Sügava unega liikumisandur: Olen töötanud selle nimel, et teha omatehtud liikumisandureid, mis saadavad käivitamisel meilisõnumi. Selle kohta on palju näpunäiteid ja muid näiteid. Hiljuti oli mul vaja seda teha patareitoitega PIR -liikumisanduri ja ESP -ga
IPhone 6 Plus aku vahetamine: sisemise aku vahetamise juhend: 12 sammu (piltidega)
IPhone 6 Plus aku vahetamine: sisemise aku vahetamise juhend: Hei poisid, tegin mõni aeg tagasi iPhone 6 aku vahetamise juhendi ja tundus, et see aitas paljusid inimesi, nii et siin on iPhone 6+ jaoks mõeldud juhend. IPhone 6 ja 6+ on sisuliselt sama ehitusega, välja arvatud ilmne suuruse erinevus. Seal on
Aku kontrollija temperatuuri ja aku valikuga: 23 sammu (piltidega)
Aku kontrollija temperatuuri ja aku valikuga: Aku mahtuvuse tester. Selle seadmega saate kontrollida 18650 aku, happe ja muu võimsust (suurim testitud aku, see on 6v happe aku 4,2A). Testi tulemus on milliamper/tund. Ma loon selle seadme, sest seda on vaja kontrollida
DIY suurus ja aku laadimise toitegeneraator W/ 12V sügava tsükliga patareidega: 5 sammu (piltidega)
Isetegemine ja aku valmistamine Toiteallika generaator W/ 12V sügava tsükliga patareidega: *** MÄRKUS. Olge akude ja elektriga töötamisel ettevaatlik. Ärge lühistage patareisid. Kasutage isoleeritud tööriistu. Elektrienergiaga töötamisel järgige kõiki ohutusnõudeid. *** Olge enne järgmist voolukatkestust valmis ooterežiimi akuga