Sisällysluettelo:
- Vaihe 1: Johdanto
- Vaihe 2: Tapoja herättää ESP32
- Vaihe 3: Ajastin
- Vaihe 4: Ulkoinen herätys (ext0)
- Vaihe 5: Ulkoinen herätys (ext1)
- Vaihe 6: ULP -rinnakkaisprosessorin herätys
- Vaihe 7: Kosketuslevy
- Vaihe 8: Syvä lepotilaan siirtyminen
- Vaihe 9: Tässä muutamia tärkeitä tietoja
- Vaihe 10: Esittely
- Vaihe 11: WiFi-solmuMCU-32S ESP-WROOM-32
- Vaihe 12: Kokoonpano
- Vaihe 13: Ohjelmoi
- Vaihe 14: Kirjasto vaaditaan
- Vaihe 15: Kirjastot ja muuttujat
- Vaihe 16: Asennus
- Vaihe 17: Silmukka, takaisinsoitto ja näytön konfigurointi
- Vaihe 18: Print_wakeup_reason (tietäen heräämisen syyn)
- Vaihe 19: Print_wakeup_touchpad (tunne GPIO Touch)
- Vaihe 20: Lataa tiedostot
Video: Akun käyttöiän säästäminen syvässä lepotilassa: 20 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Oletko kiinnostunut käyttämään paristoa ESP32: n kanssa? Jos näin on, keskustelen tänään tärkeistä teknisistä tiedoista tästä aiheesta. Tiedämme, että tämä mikro -ohjain kuluttaa paljon energiaa lähettäessään tietoja. Se kuluttaa lähes 190 milliampeeria. Tässä videossa näytän kuinka säästää energiaa ESP32: sta niin kutsutulla "DEEP SLEEP" -toiminnolla. Asetamme sirun siirtymään tähän tilaan, opimme poistumaan tästä tilasta ja luomme esimerkin, joka näyttää kolme eri tapaa herättää ESP32.
On tärkeää muistaa, että radio kuluttaa paljon energiaa prosessorin sijaan. Energiansäästö on erittäin tärkeää. Tämä johtuu siitä, että päätepisteet (tiedot lähettävät piirit) ovat usein paristokäyttöisiä ja niiden pitäisi kestää jopa viisi vuotta. Jotkut valmistajat lupaavat jopa kymmenen vuoden kestoa, ja tämä koskee korkealaatuisia akkuja, jotka eivät käytä päätepisteitä niin paljon. Kaikissa muissa tapauksissa suosittelen, että käytät Deep Sleep -toimintoa energian säästämiseksi piiristäsi.
Vaihe 1: Johdanto
ESP32: ssa on virransäästötila, nimeltään "Deep Sleep". Tässä tilassa suorittimet, suurin osa RAM -muistista ja kaikki digitaaliset kellot oheislaitteet on kytketty pois päältä. Ainoat sirun osat, jotka voidaan edelleen yhdistää, ovat RTC -ohjain, RTC -oheislaitteet (mukaan lukien ULP -yhteisprosessori) ja RTC -muistit.
Meillä on useita tapoja herättää ESP32 unessa. Herätyslähteet voidaan määrittää milloin tahansa ennen syvän lepotilan siirtymistä.
Vaihe 2: Tapoja herättää ESP32
ESP32 voidaan herättää viidellä tavalla:
• Ajastin
• Ulkoinen herätys (ext0)
• Ulkoinen herätys (ext1)
• ULP -yhteisprosessorin herätys
• Kosketuslevy
Vaihe 3: Ajastin
RTC-ohjaimessa on sisäänrakennettu ajastin, jolla voidaan aktivoida siru ennalta määrätyn ajan kuluttua. Aika ilmoitetaan mikrosekunnin tarkkuudella.
esp_deep_sleep_enable_timer_wakeup (uint64_t time_in_us)
time_in_us> on aika mikrosekunneissa
Vaihe 4: Ulkoinen herätys (ext0)
RTC IO -moduuli sisältää logiikan hälytyksen laukaisemiseksi, kun yksi RTC GPIO -laitteista siirtyy ennalta määritettyyn logiikkatasoon. RTC IO on osa RTC -oheislaitteiden tehoalueita, joten RTC -oheislaitteet pidetään hengissä syvän lepotilan aikana, jos tätä aktivointilähdettä pyydetään.
esp_deep_sleep_enable_ext0_wakeup (gpio_num_t gpio_num, int taso)
gpio_num> GPIO -numero, jota käytetään aktivointilähteenä. Vain RTC-toiminnallisia GPIO-laitteita voidaan käyttää: 0, 2, 4, 12-15, 25-27, 32-39.
taso> tulotaso, joka laukaisee hälytyksen (0 = LOW, 1 = HIGH)
Vaihe 5: Ulkoinen herätys (ext1)
RTC -ohjain sisältää logiikan herätyskellon laukaisemiseksi useiden RTC GPIO: iden avulla.
esp_deep_sleep_enable_ext1_wakeup (uint64_t -maski, esp_ext1_wakeup_mode_t -tila)
mask> GPIO -numeroiden bittimaski, joka aiheuttaa aktivoinnin. Tässä bittikartassa voidaan käyttää vain RTC-yhteensopivia GPIO: ita: 0, 2, 4, 12-15, 25-27, 32-39.
tila> valitse aktivointitilan määrittämiseen käytettävä logiikkatoiminto:
• ESP_EXT1_WAKEUP_ALL_LOW: herää, kun kaikki valitut GPIO: t ovat matalalla
• ESP_EXT1_WAKEUP_ANY_HIGH: herää, kun jokin valitusta GPIO: sta on KORKEA
Vaihe 6: ULP -rinnakkaisprosessorin herätys
ULP -rinnakkaisprosessori voi toimia, kun siru on syvässä lepotilassa, ja sitä voidaan käyttää antureiden etsimiseen, ADC- tai kapasitiivisten kosketusanturien arvojen valvontaan ja sirun aktivointiin, kun tietty tapahtuma havaitaan.
ULP -rinnakkaisprosessori on osa RTC -oheislaitteiden tehoalueita ja ajaa RTC -muistiin tallennettua ohjelmaa. Siksi RTC -oheislaitteet ja RTC -hidas muisti aktivoidaan syvän lepotilan aikana, jos tätä aktivointitilaa pyydetään.
Vaihe 7: Kosketuslevy
RTC -ohjain sisältää logiikan hälytyksen laukaisemiseksi kapasitiivisten kosketusantureiden avulla. Kosketustapin määritelmä on kuitenkin erilainen. Meidän on käytettävä kosketuksen keskeytystä jokaiselle halutulle nastalle.
Keskeytysten asettamisen jälkeen otimme herätystilan käyttöön antureiden käyttämiseksi.
// Määritä kosketuslevy herätyslähteeksi esp_sleep_enable_touchpad_wakeup ();
Vaihe 8: Syvä lepotilaan siirtyminen
Herätystilan asettamisen jälkeen riittää yksi komento ESP32: n asettamiseksi syvään lepotilaan (kulutus 2,5 μA tai vähemmän). Korostan tässä, että tämä kulu tulee ESP -sirusta eikä levystä, koska jälkimmäinen kuluttaa enemmän.
esp_deep_sleep_start ();
Tästä komennosta ESP32 nukahtaa eikä suorita esimerkiksi seuraavia koodirivejä.
Tärkeää: Kaikki herätysasetukset on tehtävä ennen yllä olevan komennon suorittamista.
Vaihe 9: Tässä muutamia tärkeitä tietoja
Alla oleva puhelu palauttaa ESP32 -herätyksen syyn.
1: ULK0 2: ULK1 3: AJASTIN 4: KOSKETUSPAPPI 5: ULP
esp_sleep_get_wakeup_cause ();
Jos asetamme herätyksen kosketuslevyllä, voimme palauttaa, mikä GPIO kosketus tapahtui komennon kautta
esp_sleep_get_touchpad_wakeup_status ();
Joka kerta, kun ESP32 herää, se käy asetusten läpi uudelleen. Siten kaikki muuttujat, joita ei ole määritelty RTC -muistissa, palaavat kotitilaansa.
Jos haluat säilyttää muuttujat muistissa myös nukahtamisen jälkeen, käytä muuttujan ilmoitusta seuraavassa esimerkissä:
// RTC_DATA_ATTR muisti ja muisti RTCRTC_DATA_ATTR int bootCount = 0;
Vaihe 10: Esittely
Video näyttää ohjelman toimivan kuvan mukaisesti.
Vaihe 11: WiFi-solmuMCU-32S ESP-WROOM-32
Vaihe 12: Kokoonpano
Vaihe 13: Ohjelmoi
Teemme nyt ohjelman, jossa määritämme ESP32: n siirtymään syvään lepotilaan. Tämä herätetään kolmella eri tavalla: yksi ulkoiselle herätykselle (ext0), toinen ajastimelle ja toinen kosketuslevylle. Ne eivät voi toimia yhdessä, joten käytämme muuttujaa, joka on laskuri sille, kuinka monta kertaa ESP32 antoi Bootille määrittääksemme herätystavan.
Vaihe 14: Kirjasto vaaditaan
OLED -näytön ohjaamiseen tarvitaan ulkoinen kirjasto. Tätä varten lataamme U8g2 -kirjaston.
Siirry Arduino IDE: ssä Luonnos -valikkoon >> Sisällytä kirjasto >> Hallitse kirjastoja….
Vaihe 15: Kirjastot ja muuttujat
Olemme sisällyttäneet kirjastoon OLED -näytön ohjaamiseen sekä näytönohjaimen ilmentymän rakentaja. Lisäksi varaamme muuttujan RTC -muistiin. Asetamme kosketuksen hyväksymisen herkkyyden, mikrosekunnin muuntokerroin sekunneiksi ja ajan, jonka ESP32 siirtyy lepotilaan (sekunteina).
#include // biblioteca para controle do display oled
// muokkaaja, joka voi näyttää näytön // SDA = 21 e SCL = 22 U8X8_SSD1306_128X64_NONAME_SW_I2C -näyttö (SCL, SDA, U8X8_PIN_NONE); // RTC_DATA_ATTR alku ja muisti muistiin 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
Vaihe 16: Asennus
Asetuksissa lisäämme käynnistyskertojen määrää. Kutsumme toimintoa tulostaa Boot -motiivi. Jos käynnistysnumero on PAR, asetamme ESP32: n heräämään (EXT0) -painikkeen kautta. Jos se on 3: n monikerta, asetamme ESP32: n heräämään asetetun ajan kuluttua. Muussa tapauksessa asetamme kapasitiiviset kosketustapit herättämään ESP32: n. Lopuksi asetamme kosketuslevyn herätyslähteeksi ja pakotamme ESP32: n siirtymään lepotilaan.
void setup () {Serial.begin (115200); viive (1000); // lisää tai o numero de vezes que o BOOT ocorreu ++ bootCount; configureDisplay (); // chama a função para imprimir o motivo do BOOT print_wakeup_reason (); // se numero numero boot for PAR configiguramos o ESP32 para despertar através do botão (EXT0) if (bootCount % 2 == 0) {esp_sleep_enable_ext0_wakeup (GPIO_NUM_39, 1); // 1 = Korkea, 0 = Matala} // se useiden kokoonpanojen määrityksille tai 3 ESP32 -asetukselle, jos ei ole määritetty muuta tempoa if 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); // Määritä kosketuslevy herätyslähteeksi esp_sleep_enable_touchpad_wakeup (); } Serial.println ("entrando em modo sleep"); esp_deep_sleep_start (); // força o ESP32 entrar em modo SLEEP}
Vaihe 17: Silmukka, takaisinsoitto ja näytön konfigurointi
Loopissa meillä ei ole mitään tekemistä. Jatkamme sitten keskeyttää takaisinsoiton, jos meillä on jotain tehtävää keskeytyksen sattuessa. Mitä tulee configureDisplayn, alustamme näytön ja määritämme joitakin parametreja. Tulostamme näytölle kuinka monta kertaa käynnistys tapahtui.
// 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 e configura alguns parametros display. alkaa(); 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 tai BOOT display.drawString (0, 0, "BOOT NUM:"); display.drawString (0, 2, merkkijono (bootCount).c_str ()); display.drawString (0, 4, "MOTIVO:"); }
Vaihe 18: Print_wakeup_reason (tietäen heräämisen syyn)
Tässä meillä on toiminto tulostaa ESP32 -herätyksen syy. Tarkista nasta ja tulosta näyttöön.
// função para imprimir a causa do ESP32 despertarvoid print_wakeup_reason () {esp_sleep_wakeup_cause_t wakeup_reason; Merkkijonon syy = ""; wakeup_reason = esp_sleep_get_wakeup_cause (); // palauta syy -kytkin (herätyksen_syy) {case 1: reason = "EXT0 RTC_IO BTN"; tauko; tapaus 2: syy = "EXT1 RTC_CNTL"; tauko; tapaus 3: syy = "AJASTIN"; tauko; tapaus 4: syy = "TOUCHPAD"; tauko; tapaus 5: syy = "ULP -OHJELMA"; tauko; oletus: syy = "EI DS -SYY"; tauko; } Sarja.println (syy); display.clearLine (6); // esimerkki a linha 6 do display.drawString (0, 6, reason.c_str ()); // impime a causa do despertar no display // se despertou por TOUCHPAD, então vamos verificar em kval dos pinos ocorreu if (wakeup_reason == 4) {print_wakeup_touchpad (); // verifica o pino e imprime no display}}
Vaihe 19: Print_wakeup_touchpad (tunne GPIO Touch)
Nyt tässä vaiheessa meillä on toiminto tulostaa kosketettu tappi. Palautimme GPIO: n, joka herätti ESP32: n, ja tulostimme sen näytölle.
// função para imprimir o pino que foi tocadovoid print_wakeup_touchpad () {touch_pad_t touchPin; touchPin = esp_sleep_get_touchpad_wakeup_status (); // elvytys tai GPIO que despertou o ESP32 String GPIO = ""; kytkin (touchPin) {tapaus 0: GPIO = "4"; tauko; tapaus 1: GPIO = "0"; tauko; tapaus 2: GPIO = "2"; tauko; tapaus 3: GPIO = "15"; tauko; tapaus 4: GPIO = "13"; tauko; tapaus 5: GPIO = "12"; tauko; tapaus 6: GPIO = "14"; tauko; tapaus 7: GPIO = "27"; tauko; tapaus 8: GPIO = "33"; tauko; tapaus 9: GPIO = "32"; tauko; oletus: Serial.println ("Herätys ei ole kosketuslevyä"); tauko; } Serial.println ("GPIO:"+GPIO); display.clearLine (7); // kuten linja 7 näyttää display.drawString (0, 7, "GPIO:"); display.drawString (6, 7, GPIO.c_str ()); // imprime o GPIO}
Vaihe 20: Lataa tiedostot
INO
Suositeltava:
Veden säästäminen!: 4 vaihetta
Säästä vettä!: Todos los días Consumer mucha agua! Frecuentemente nos damos duchas muy largas o no cerramos la llave. Este proyecto, mide cuanta agua están gastando y te avisa cuando pasas de ceros límites.Necesitas un Makey & MakeyCinta AdhesivaUtilizar una l
Tylsän elämän säästäminen älylampulla: 3 vaihetta
Tylsän elämän pelastaminen älykkäällä lampulla: Toivomme kaikki, että voimme elää mukavammin kotona. Tunnetko olosi usein epämukavaksi, koska kodin lamppujen himmennys ei ole tarpeeksi älykästä? Tai tunnetko olosi yksitoikkoiseksi kotitalouden lampun toiminnasta johtuen? Tämä lamppu voi ratkaista ongelmasi
IPhone 6 Plus -akun vaihto: Opas sisäisen akun vaihtamiseen: 12 vaihetta (kuvien kanssa)
IPhone 6 Plus -akun vaihto: Opas sisäisen akun vaihtamiseen: Hei kaverit, tein iPhone 6 -pariston vaihto -oppaan jokin aika sitten ja se näytti auttaneen monia ihmisiä, joten tässä on opas iPhone 6+: lle. IPhone 6: lla ja 6+: lla on olennaisesti sama rakenne lukuun ottamatta ilmeistä kokoa. Siellä on
Akun tarkistus lämpötilan ja akun valinnan kanssa: 23 vaihetta (kuvien kanssa)
Akun tarkistus Lämpötilan ja akun valinnalla: Akun kapasiteettimittari Tällä laitteella voit tarkistaa 18650 akun, hapon ja muiden kapasiteetin (suurin testattu akku on 6 V: n happoakku 4,2A). Testin tulos on milliampeereja/tunti. Luon tämän laitteen, koska sitä tarvitaan tarkistamaan
IPod -kuulokkeiden käyttöiän parantaminen: 5 vaihetta
Paranna iPod -kuulokkeiden käyttöikää: Tällä kertaa en näytä sinulle mitään hienoa tai kunnolla pakollista, mutta usko minua, että se parantaa pistokkeen käyttöikää 6,5 kuukaudesta 2+ vuoteen, usko minua, se toimi niin hyvin, Minulla on ollut tämä modi naurettavan fiksun telakan jälkeen ja