Kazalo:
- 1. korak: Uvod
- Korak: Načini prebujanja ESP32
- Korak: Časovnik
- 4. korak: Zunanje prebujanje (ext0)
- 5. korak: Zunanje prebujanje (ext1)
- 6. korak: Prebujanje soprocesorja ULP
- 7. korak: Sledilna ploščica
- 8. korak: Vstop v način globokega spanja
- 9. korak: Tu je še nekaj pomembnejših informacij
- 10. korak: demonstracija
- Korak: WiFi NodeMCU-32S ESP-WROOM-32
- 12. korak: Montaža
- 13. korak: Program
- 14. korak: potrebna knjižnica
- Korak 15: Knjižnice in spremenljivke
- Korak 16: Nastavitev
- 17. korak: Zank, povratni klic in konfiguracija prikaza
- 18. korak: Print_wakeup_reason (poznavanje vzroka prebujenja)
- 19. korak: Print_wakeup_touchpad (poznajte GPIO Touch)
- 20. korak: Prenesite datoteke
Video: Varčevanje z dolgo življenjsko dobo baterije: 20 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Vas zanima uporaba baterije z vašim ESP32? Če je tako, bom danes razpravljal o nekaterih pomembnih tehničnih informacijah na to temo. Vemo, da ta mikrokrmilnik porabi veliko energije pri prenosu informacij. Porabi blizu 190 miliamperov. V tem videoposnetku bom pokazal, kako prihraniti energijo iz ESP32 s tako imenovano funkcijo "DEEP SLEEP". Čip bomo nastavili za vstop v ta način, izvedeli bomo načine za izhod iz tega načina in ustvarili primer, ki prikazuje tri različne načine prebujanja ESP32.
Pomembno si je zapomniti, da radio namesto procesorja porabi veliko energije. Varčevanje z energijo je zelo pomembno. To je zato, ker se končne točke (vezja, ki pošiljajo informacije) pogosto napajajo iz baterij in bi morale trajati do pet let. Nekateri proizvajalci obljubljajo do deset let trajanja, kar velja za visokokakovostne baterije, ki ne uporabljajo toliko končnih točk. V vseh drugih primerih vam svetujem, da uporabite Deep Sleep za varčevanje z energijo iz vašega tokokroga.
1. korak: Uvod
ESP32 ima način varčevanja z energijo, imenovan "Deep Sleep". V tem načinu se izklopijo procesorji, večina RAM -a in vse digitalne periferne enote z uro. Edini deli čipa, ki jih je še mogoče povezati, so krmilnik RTC, zunanje naprave RTC (vključno s soprocesorjem ULP) in pomnilniki RTC.
ESP32 lahko prebudimo med spanjem na več načinov. Vire prebujanja lahko kadar koli nastavite, preden vstopite v način globokega spanja.
Korak: Načini prebujanja ESP32
ESP32 lahko prebudite na pet načinov:
• Časovnik
• Zunanje prebujanje (ext0)
• Zunanje prebujanje (zunaj1)
• Zbujanje soprocesorja ULP
• Sledilna ploščica
Korak: Časovnik
Krmilnik RTC ima vgrajen časomer, ki ga lahko uporabite za aktiviranje čipa po vnaprej določenem časovnem obdobju. Čas je določen z mikrosekundno natančnostjo.
esp_deep_sleep_enable_timer_wakeup (uint64_t time_in_us)
time_in_us> je čas v mikrosekundah
4. korak: Zunanje prebujanje (ext0)
Modul RTC IO vsebuje logiko za sprožitev alarma, ko eden od RTC GPIO vstopi na vnaprej določeno logično raven. RTC IO je del domena napajanja zunanjih naprav RTC, zato bodo zunanje naprave RTC ohranjene med globokim spanjem, če se zahteva ta vir aktivacije.
esp_deep_sleep_enable_ext0_wakeup (gpio_num_t gpio_num, raven int)
gpio_num> Številka GPIO, ki se uporablja kot vir aktivacije. Uporabljajo se lahko samo GPIO-ji, ki delujejo z RTC: 0, 2, 4, 12-15, 25-27, 32-39.
raven> vhodna raven, ki bo sprožila alarm (0 = NIZKA, 1 = VISOKA)
5. korak: Zunanje prebujanje (ext1)
Krmilnik RTC vsebuje logiko za sprožitev budilke z uporabo več RTC GPIO.
esp_deep_sleep_enable_ext1_wakeup (maska uint64_t, način esp_ext1_wakeup_mode_t)
mask> bitna maska številk GPIO, ki bo povzročila aktivacijo. V tej bitni sliki je mogoče uporabiti samo GPIO, ki podpira RTC: 0, 2, 4, 12-15, 25-27, 32-39.
mode> izberite logično funkcijo, ki se uporablja za določitev pogojev aktiviranja:
• ESP_EXT1_WAKEUP_ALL_LOW: prebudi se, ko so vsi izbrani GPIO v nizki vrednosti
• ESP_EXT1_WAKEUP_ANY_HIGH: prebudi se, ko je kateri koli od izbranih GPIO -jev VISOK
6. korak: Prebujanje soprocesorja ULP
Koprocesor ULP lahko deluje, medtem ko je čip v globokem mirovanju, in se lahko uporablja za iskanje senzorjev, spremljanje vrednosti ADC ali kapacitivnega senzorja na dotik in aktiviranje čipa, ko se zazna določen dogodek.
Soprocesor ULP je del domena napajanja zunanjih naprav RTC in izvaja program, shranjen v počasnem pomnilniku RTC. Če se zahteva ta način aktiviranja, se bodo med globokim spanjem aktivirale zunanje naprave RTC in počasen pomnilnik RTC.
7. korak: Sledilna ploščica
Krmilnik RTC vsebuje logiko za sprožitev alarma z uporabo kapacitivnih senzorjev na dotik. Opredelitev zatiča na dotik pa je drugačna. Za vsak želeni zatič moramo uporabiti prekinitev na dotik.
Po nastavitvi prekinitev smo omogočili način prebujanja za uporabo senzorjev.
// Konfigurirajte sledilno ploščico kot vir za prebujanje esp_sleep_enable_touchpad_wakeup ();
8. korak: Vstop v način globokega spanja
Po nastavitvi načina prebujanja je dovolj en sam ukaz za preklop ESP32 v način globokega spanja (poraba 2,5 μA ali manj). Tu poudarjam, da so ti stroški iz čipa ESP in ne iz plošče, saj ta porabi več.
esp_deep_sleep_start ();
Iz tega ukaza ESP32 zaspi in na primer ne izvede naslednjih vrstic kode.
Pomembno: Pred izvajanjem zgornjega ukaza morate izvesti vse nastavitve prebujanja.
9. korak: Tu je še nekaj pomembnejših informacij
Spodnji klic vrne vzrok za prebujanje ESP32.
1: EXT0 2: EXT1 3: TIMER 4: TOUCHPAD 5: ULP
esp_sleep_get_wakeup_cause ();
Če nastavimo prebujanje s sledilno ploščico, lahko z ukazom obnovimo, kateri GPIO se je dotaknil
esp_sleep_get_touchpad_wakeup_status ();
Vsakič, ko se ESP32 prebudi, bo znova krožil po nastavitvah. Tako se bodo vse spremenljivke, ki niso definirane v pomnilniku RTC, vrnile v domače stanje.
Če želite spremeniti spremenljivke v spominu tudi po tem, ko zaspite, uporabite deklaracijo spremenljivke v spodnjem primeru:
// RTC_DATA_ATTR za različne nastavitve v spominu RTCRTC_DATA_ATTR int bootCount = 0;
10. korak: demonstracija
Video prikazuje delovanje programa v skladu s sliko.
Korak: WiFi NodeMCU-32S ESP-WROOM-32
12. korak: Montaža
13. korak: Program
Zdaj bomo naredili program, v katerem bomo ESP32 konfigurirali za vstop v način globokega spanja. To se bo prebudilo na tri različne načine: enega za zunanje prebujanje (ext0), enega za časovnik in enega za sledilno ploščico. Ne morejo delovati skupaj, zato bomo uporabili spremenljivko, ki bo števec, kolikokrat je ESP32 dal zagon za nastavitev načina prebujanja.
14. korak: potrebna knjižnica
Za nadzor OLED zaslona potrebujemo zunanjo knjižnico. V ta namen bomo prenesli knjižnico U8g2.
V Arduino IDE pojdite v meni Sketch >> Include Library >> Manage Libraries ….
Korak 15: Knjižnice in spremenljivke
Vključili smo knjižnico za nadzor zaslona OLED in konstruktor primerka krmilnika zaslona. Spremenljivko dodelimo tudi v pomnilnik RTC. Nastavimo občutljivost za sprejem na dotik, mikrosekundni pretvorbeni faktor za sekunde in čas, ko ESP32 preide v način mirovanja (v sekundah).
#include // biblioteca para controle do display oled
// konstruktor da instancia do controllador do display // SDA = 21 e SCL = 22 U8X8_SSD1306_128X64_NONAME_SW_I2C display (SCL, SDA, U8X8_PIN_NONE); // RTC_DATA_ATTR za različne podatke RTC RTC_DATA_ATTR int bootCount = 0; // sensibilidade para aceitação do toque #define Threshold 40 // fator de pogovorã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
Korak 16: Nastavitev
V nastavitvah povečujemo število zagonov. Pokličemo funkcijo za tiskanje motiva Boot. Če je zagonska številka PAR, nastavimo ESP32, da se prebudi z gumbom (EXT0). Če je večkratnik 3, nastavimo ESP32, da se prebudi po nastavljenem času. V nasprotnem primeru smo nastavili kapacitivne zatiče na dotik, da prebudimo ESP32. Nazadnje, sledilno ploščico smo nastavili kot vir prebujanja in prisilili ESP32 v način mirovanja.
void setup () {Serial.begin (115200); zamuda (1000); // povečanje števila de vezes que o BOOT ocorreu ++ bootCount; configureDisplay (); // chama a função para imprimir o motivo do BOOT print_wakeup_reason (); // se o številki za zagon za konfiguracije PAR ali ESP32 za despertar através do botão (EXT0) if (bootCount % 2 == 0) {esp_sleep_enable_ext0_wakeup (GPIO_NUM_39, 1); // 1 = Visoko, 0 = Nizko} // se za konfiguracije multiplo de 3 ali ESP32 za despertar depois de um tempo določi drugače if (bootCount % 3 == 0) {esp_sleep_enable_timer_wakeup (TIME_TO_SLEEP * uS_TO_S_FACTOR); } // caso contrario configuramos os pinos de touch kapacitivo para despertar o ESP32 else {// Nastavitev prekinitve na sledilni ploščici 5 (GPIO12) touchAttachInterrupt (T5, povratni klic, prag); // Konfiguriraj sledilno ploščico kot vir za prebujanje esp_sleep_enable_touchpad_wakeup (); } Serial.println (“entrando em modo sleep”); esp_deep_sleep_start (); // força o ESP32 vstop v modo SLEEP}
17. korak: Zank, povratni klic in konfiguracija prikaza
V zanki nimamo kaj početi. Nato nadaljujemo s prekinitvijo povratnega klica, če imamo kaj narediti, ko pride do prekinitve. Kar zadeva configureDisplay, inicializiramo zaslon in konfiguriramo nekatere parametre. Na zaslonu natisnemo, kolikokrat se je zagon zgodil.
// nada a se fazer no loopvoid loop () {} // povratni klic das interrupções void callback () {// caso queira fazer algo ao ocorrer a interrupção} void configureDisplay () {// inicializacijo za prikaz e konfiguracijo alguns parametros display. začeti(); 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. korak: Print_wakeup_reason (poznavanje vzroka prebujenja)
Tukaj imamo funkcijo za tiskanje vzroka prebujanja ESP32. Preverite zatič in natisnite na zaslonu.
// função para imprimir a vzrok do ESP32 despertarvoid print_wakeup_reason () {esp_sleep_wakeup_cause_t wakeup_reason; Niz razlog = ""; wakeup_reason = esp_sleep_get_wakeup_cause (); // recupera a causa do despertar switch (wakeup_reason) {primer 1: razlog = "EXT0 RTC_IO BTN"; prekiniti; primer 2: razlog = "EXT1 RTC_CNTL"; prekiniti; primer 3: razlog = "TIMER"; prekiniti; primer 4: reason = "TOUCHPAD"; prekiniti; primer 5: razlog = "ULP PROGRAM"; prekiniti; privzeto: reason = "NO DS CAUSE"; prekiniti; } Serial.println (razlog); 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 brez prikaza}}
19. korak: Print_wakeup_touchpad (poznajte GPIO Touch)
Zdaj imamo v tem koraku funkcijo, da natisnemo pin, ki smo se ga dotaknili. Obnovili smo GPIO, ki je prebudil ESP32, in ga natisnili na zaslonu.
// função para imprimir o pino que foi tocadovoid print_wakeup_touchpad () {touch_pad_t touchPin; touchPin = esp_sleep_get_touchpad_wakeup_status (); // obnovitev o GPIO -ju, če želite izvedeti o ESP32 nizu GPIO = ""; stikalo (touchPin) {primer 0: GPIO = "4"; prekiniti; primer 1: GPIO = "0"; prekiniti; primer 2: GPIO = "2"; prekiniti; primer 3: GPIO = "15"; prekiniti; primer 4: GPIO = "13"; prekiniti; primer 5: GPIO = "12"; prekiniti; primer 6: GPIO = "14"; prekiniti; primer 7: GPIO = "27"; prekiniti; primer 8: GPIO = "33"; prekiniti; primer 9: GPIO = "32"; prekiniti; privzeto: Serial.println ("Prebujanje ne s sledilno ploščico"); prekiniti; } 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}
20. korak: Prenesite datoteke
JAZ NE
Priporočena:
Kako potrojiti življenjsko dobo baterije svetilk AAA: 3 koraki
Kako potrojiti življenjsko dobo baterij svetilk AAA: Pri uporabi 3W LED svetilk, ki jih poganjajo baterije AAA, pričakujete, da bodo zdržale približno 30 minut. Obstaja način, da z uporabo baterij AA potrojite čas delovanja, kar vam bom pokazal tako, da nanj priključite držalo baterije AA
Kako vdreti v temperaturni senzor za daljšo življenjsko dobo baterije: 4 koraki
Kako vdreti v temperaturni senzor za daljšo življenjsko dobo baterije: Inkbird IBS-TH1 je odlična naprava za beleženje temperature in vlažnosti v nekaj urah ali dneh. Nastavimo ga lahko za vsako sekundo do vsakih 10 minut, podatke pa prek Bluetootha LE sporoča pametnemu telefonu Android ali iOS. Aplikacija
Podvojite življenjsko dobo baterije radia DX3 iz Spektruma za manj kot 20 USD: 11 korakov
Podvojite življenjsko dobo baterije radia DX3 iz Spektruma za manj kot 20 USD: Idejo o tem sem najprej dobil v niti za DX6/7 na forumih RCGRoups.com. Vodim nitro avtomobile, zato sem kupil DX3. Nekaj časa sem uporabljal radio in življenjska doba baterije je bila na večini radijskih postaj na boljšem-vendar so lastniki DX7 postajali podobni
Kako podaljšati življenjsko dobo baterije vašega prenosnika: 4 koraki
Kako podaljšati življenjsko dobo napolnjenosti baterije prenosnega računalnika: V tem navodilu se boste naučili, kako podaljšati življenjsko dobo polnjenja prenosnega računalnika. Če boste leteli ali se vozili na dolge razdalje, vam lahko ti koraki pomagajo, da baterija zdrži veliko dlje kot običajno in da bo vožnja manj stresna.
Podaljšajte življenjsko dobo baterije za elektroniko: 8 korakov
Podaljšajte življenjsko dobo baterije za elektroniko: V tem navodilu (no, v resnici ni navodila) vam bom pokazal nekaj nasvetov in trikov za podaljšanje življenjske dobe nekaterih različnih vrst baterij za elektroniko. življenje za elektroniko & q