Përmbajtje:
- Hapi 1: Hyrje
- Hapi 2: Mënyrat për të zgjuar ESP32
- Hapi 3: Kohëmatësi
- Hapi 4: Zgjimi i jashtëm (ext0)
- Hapi 5: Zgjimi i jashtëm (ext1)
- Hapi 6: Zgjimi i procesorit ULP
- Hapi 7: tastiera me prekje
- Hapi 8: Hyrja në modalitetin e gjumit të thellë
- Hapi 9: Këtu janë disa informacione më të rëndësishme
- Hapi 10: Demonstrim
- Hapi 11: WiFi NodeMCU-32S ESP-WROOM-32
- Hapi 12: Asambleja
- Hapi 13: Programi
- Hapi 14: Kërkohet bibliotekë
- Hapi 15: Bibliotekat dhe variablat
- Hapi 16: Konfigurimi
- Hapi 17: Loop, Callback & ConfigureDisplay
- Hapi 18: Arsyeja e printimit_ zgjimit (duke ditur Shkakun e Zgjimit)
- Hapi 19: Print_wakeup_touppad (njih GPIO Touch)
- Hapi 20: Shkarkoni skedarët
Video: Kursimi i jetës së baterisë me gjumë të thellë: 20 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:24
A jeni i interesuar të përdorni një bateri me ESP32 tuaj? Nëse është kështu, unë do të diskutoj sot disa informacione të rëndësishme teknike në lidhje me këtë temë. Ne e dimë se ky mikrokontrollues shpenzon shumë energji kur transmeton informacion. Konsumon afër 190 miliamps. Në këtë video, unë do të tregoj se si të kurseni energji nga ESP32 me të ashtuquajturin funksion "DEEP SLEEP". Ne do ta vendosim çipin të hyjë në këtë mënyrë, të mësojmë mënyrat për të dalë nga kjo mënyrë dhe të krijojmë një shembull që tregon tre mënyra të ndryshme për të zgjuar ESP32.
Importantshtë e rëndësishme të mbani mend se radio shpenzon shumë energji, sesa procesori. Kursimi i energjisë është shumë i rëndësishëm. Kjo ndodh sepse Pikat Fundore (qarqet që dërgojnë informacion) shpesh janë të mundësuar nga bateria dhe duhet të zgjasin deri në pesë vjet. Ka disa prodhues që premtojnë kohëzgjatje deri në dhjetë vjet, dhe kjo vlen për bateri me cilësi të lartë që nuk përdorin aq shumë Pikat Fundore. Në të gjitha rastet e tjera, unë ju këshilloj të përdorni Deep Sleep për të kursyer energji nga qarku juaj.
Hapi 1: Hyrje
ESP32 ka një mënyrë të kursimit të energjisë, të quajtur "Gjumë i thellë". Në këtë mënyrë, CPU -të, shumica e RAM -it dhe të gjitha pajisjet dixhitale me orë fikëse janë të fikura. Pjesët e vetme të çipit që mund të lidhen akoma janë kontrolluesi RTC, pajisjet periferike RTC (përfshirë bashkëprocesorin ULP) dhe kujtimet RTC.
Kemi disa mënyra për të zgjuar ESP32 kur jeni në gjumë. Burimet e zgjimit mund të vendosen në çdo kohë para se të hyni në modalitetin e gjumit të thellë.
Hapi 2: Mënyrat për të zgjuar ESP32
Ka pesë mënyra për të zgjuar ESP32:
• Kohëmatësi
• Zgjimi i jashtëm (ext0)
• Zgjimi i jashtëm (ext1)
• Zgjimi i bashkëprocesorit ULP
• Tastiera me prekje
Hapi 3: Kohëmatësi
Kontrolluesi RTC ka një kohëmatës të integruar që mund të përdoret për të aktivizuar çipin pas një periudhe të paracaktuar kohe. Koha përcaktohet me saktësi mikrosekondë.
esp_deep_sleep_enable_timer_wakeup (uint64_t time_in_us)
koha_në_us> është koha në mikrosekonda
Hapi 4: Zgjimi i jashtëm (ext0)
Moduli RTC IO përmban logjikë për të aktivizuar alarmin kur një nga GPIO -të e RTC hyn në një nivel logjike të paracaktuar. RTC IO është pjesë e fushës së energjisë të periferikësh RTC, kështu që periferikësh RTC do të mbahen gjallë gjatë Gjumit të Thellë nëse kërkohet ky burim aktivizimi.
esp_deep_sleep_enable_ext0_wakeup (gpio_num_t gpio_num, niveli int)
gpio_num> Numri GPIO i përdorur si burim aktivizimi. Mund të përdoren vetëm GPIO funksionale RTC: 0, 2, 4, 12-15, 25-27, 32-39.
niveli> niveli i hyrjes që do të aktivizojë alarmin (0 = LOW, 1 = HIGH)
Hapi 5: Zgjimi i jashtëm (ext1)
Kontrolluesi RTC përmban logjikë për të aktivizuar alarmin duke përdorur GPIO të shumtë RTC.
esp_deep_sleep_enable_ext1_wakeup (uint64_t mask, esp_ext1_wakeup_mode_t mode)
mask> bit mask i numrave GPIO që do të shkaktojnë aktivizim. Vetëm GPIO të aktivizuara nga RTC mund të përdoren në këtë bitmap: 0, 2, 4, 12-15, 25-27, 32-39.
mode> zgjidhni funksionin logjik të përdorur për të përcaktuar gjendjen e aktivizimit:
• ESP_EXT1_WAKEUP_ALL_LOW: zgjohet kur të gjithë GPIO -të e zgjedhur janë në LOW
• ESP_EXT1_WAKEUP_ANY_HIGH: zgjohet kur ndonjëri prej GPIO -ve të zgjedhur janë të LART
Hapi 6: Zgjimi i procesorit ULP
Koprocesori ULP mund të funksionojë ndërsa çipi është në Deep Sleep dhe mund të përdoret për të kërkuar sensorë, për të monitoruar vlerat e sensorit të prekjes ADC ose kapacitiv dhe për të aktivizuar çipin kur zbulohet një ngjarje e veçantë.
Koprocesori ULP është pjesë e fushës së fuqisë së periferikësh RTC dhe drejton programin e ruajtur në RTC të kujtesës së ngadaltë. Prandaj, pajisjet periferike RTC dhe kujtesa e ngadaltë RTC do të aktivizohen gjatë Gjumit të thellë nëse kërkohet kjo mënyrë aktivizimi.
Hapi 7: tastiera me prekje
Kontrolluesi RTC përmban logjikë për të aktivizuar alarmin duke përdorur sensorët prekës kapacitiv. Përkufizimi i kunjit të prekjes, megjithatë, është i ndryshëm. Ne duhet të përdorim ndërprerësin e prekjes për secilën prej kunjave të dëshiruar.
Pas vendosjes së ndërprerjeve, ne aktivizuam mënyrën e zgjimit për të përdorur sensorët.
// Konfiguro Touchpad si burim zgjimi esp_sleep_enable_touchpad_wakeup ();
Hapi 8: Hyrja në modalitetin e gjumit të thellë
Pas vendosjes së modalitetit të zgjimit, mjafton një komandë e vetme për ta vendosur ESP32 në modalitetin e Gjumit të Thellë (duke shpenzuar 2.5 μA ose më pak). Theksoj këtu se kjo shpenzim është nga çipi ESP dhe jo pjata, pasi kjo e fundit shpenzon më shumë.
esp_deep_sleep_start ();
Nga kjo komandë, ESP32 bie në gjumë dhe nuk ekzekuton rreshtat e ardhshëm të kodit për shembull.
E rëndësishme: Të gjitha cilësimet e zgjimit duhet të bëhen para se të ekzekutoni komandën e mësipërme.
Hapi 9: Këtu janë disa informacione më të rëndësishme
Thirrja më poshtë kthen shkakun e zgjimit ESP32.
1: EXT0 2: EXT1 3: KOHA 4, TOUCHPAD 5: ULP
esp_sleep_get_wakeup_cause ();
Nëse vendosim zgjimin nga tastiera me prekje, mund të rikuperojmë cilin GPIO që prekja ka ndodhur përmes komandës
esp_sleep_get_touchpad_wakeup_status ();
Sa herë që ESP32 zgjohet, do të kalojë përsëri nëpër konfigurim. Kështu të gjitha ndryshoret që nuk janë të përcaktuara në kujtesën RTC do të kthehen në gjendjen e tyre.
Për të mbajtur variablat në kujtesë edhe pas fjetjes, përdorni deklaratën e ndryshores në shembullin më poshtë:
// RTC_DATA_ATTR alokon një ndryshim në kujtesë RTCRTC_DATA_ATTR int bootCount = 0;
Hapi 10: Demonstrim
Video tregon programin duke punuar, në përputhje me imazhin.
Hapi 11: WiFi NodeMCU-32S ESP-WROOM-32
Hapi 12: Asambleja
Hapi 13: Programi
Tani do të bëjmë një program ku do të konfigurojmë ESP32 për të hyrë në modalitetin e gjumit të thellë. Kjo do të zgjohet në tre mënyra të ndryshme: një për zgjimin e jashtëm (ext0), një për Kohëmatësin dhe një për Touchpad. Ata nuk mund të punojnë së bashku, kështu që ne do të përdorim një ndryshore që do të jetë një numërues për numrin e herëve që ESP32 i dha Boot për të konfiguruar mënyrën e zgjimit.
Hapi 14: Kërkohet bibliotekë
Për të kontrolluar ekranin OLED, na duhet një bibliotekë e jashtme. Për këtë, ne do të shkarkojmë bibliotekën U8g2.
Në Arduino IDE, shkoni te menyja Sketch >> Përfshi Bibliotekën >> Menaxhoni Bibliotekat….
Hapi 15: Bibliotekat dhe variablat
Ne kemi përfshirë bibliotekën për të kontrolluar ekranin OLED, si dhe një konstruktor të shembullit të kontrolluesit të ekranit. Gjithashtu, ne alokojmë ndryshoren në kujtesën RTC. Ne vendosëm ndjeshmërinë për pranimin e prekjes, faktorin e konvertimit mikrosekond për sekonda dhe kohën kur ESP32 shkon në modalitetin e gjumit (në sekonda).
#include // biblioteca para kontrollit do të shfaqet oled
// konstruktori i instancave për kontrollin e shfaqjes // SDA = 21 e SCL = 22 U8X8_SSD1306_128X64_NONAME_SW_I2C (SCL, SDA, U8X8_PIN_NONE); // RTC_DATA_ATTR alokon dhe ndryshon kujtesën RTC RTC_DATA_ATTR int bootCount = 0; // sensibilidade para aceitação do toque #define Pragu 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
Hapi 16: Konfigurimi
Në Setup, ne rrisim numrin e herë që ka ndodhur Boot. Ne e thërrasim funksionin për të shtypur motivin Boot. Nëse numri i Boot është PAR, ne vendosim që ESP32 të zgjohet përmes butonit (EXT0). Nëse është një shumëfish i 3, ne vendosim që ESP32 të zgjohet pas një kohe të caktuar. Përndryshe, ne vendosim kunjat prekëse për të zgjuar ESP32. Së fundi, ne vendosim tastierën me prekje si burim zgjimi dhe e detyrojmë ESP32 të hyjë në modalitetin e gjumit.
void setup () {Serial.begin (115200); vonesa (1000); // rritja e numrit të vezave që kanë bërë BOOT ocorreu ++ bootCount; configureDisplay (); // chama a função para imprimir o motivo do BOOT print_wakeup_reason (); // se a numero de boot për konfigurimet PAR ose ESP32 për të zgjedhur através do botão (EXT0) nëse (bootCount % 2 == 0) {esp_sleep_enable_ext0_wakeup (GPIO_NUM_39, 1); // 1 = E lartë, 0 = E ulët} // shiko për konfigurimin e shumëfishtë të 3 ose ESP32 për të vendosur depois në um tempo për një tjetër nëse (bootCount % 3 == 0) {esp_sleep_enable_timer_wakeup (TIME_TO_SLEEP * uS_TO_S_FACTOR); } // rastet e konfigurimit të konfigurimit për prekjen e kapacitetit të prekjes për ESP32 tjetër {// Ndërprerja e konfigurimit në Touch Pad 5 (GPIO12) touchAttachInterrupt (T5, kthimi i thirrjes, Pragu); // Konfiguro Touchpad si burim zgjimi esp_sleep_enable_touchpad_wakeup (); } Serial.println ("entrando em modo sleep"); esp_deep_sleep_start (); // força o ESP32 entrar em modo SLEEP}
Hapi 17: Loop, Callback & ConfigureDisplay
Në Loop, ne nuk kemi asgjë për të bërë. Ne pastaj vazhdojmë të ndërpresim thirrjen nëse kemi diçka për të bërë kur të ndodhë ndërprerja. Lidhur me konfigurimin e ekranit, ne inicializojmë ekranin dhe konfigurojmë disa parametra. Ne shtypim në ekran numrin e herë që ka ndodhur Boot.
// 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 ose shfaqja e konfigurimit të alguns parametros display. filloj (); 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 ose BOOT display.drawString (0, 0, "BOOT NUM:"); display.drawString (0, 2, String (bootCount).c_str ()); display.drawString (0, 4, "MOTIVO:"); }
Hapi 18: Arsyeja e printimit_ zgjimit (duke ditur Shkakun e Zgjimit)
Këtu, ne kemi funksionin për të shtypur shkakun e zgjimit të ESP32. Kontrolloni kunjin dhe printoni në ekran.
// função para imprimir a causa do ESP32 despertarvoid print_wakeup_reason () {esp_sleep_wakeup_cause_t wakeup_reason; Arsyeja e rreptë = ""; arsyeja e zgjimit = esp_sleep_get_wakeup_cause (); // rikuperoni një ndërrim shkaku shkaku (zgjimi_arsye) {rasti 1: arsyeja = "EXT0 RTC_IO BTN"; pushim; rasti 2: arsyeja = "EXT1 RTC_CNTL"; pushim; rasti 3: arsyeja = "KOHA"; pushim; rasti 4: arsyeja = "TOUCHPAD"; pushim; rasti 5: arsyeja = "PROGRAMI ULP"; pushim; parazgjedhje: arsye = "JO DS SHKAK"; pushim; } Serial.println (arsyeja); display.clearLine (6); // apaga a linha 6 bëni display.drawString (0, 6, reason.c_str ()); // imprime a causa do despertar pa shfaqje // se despertou nga TOUCHPAD, duke përfshirë një verifikim të një cilësie të caktuar nëse ((zgjimi_ arsyen == 4) {print_wakeup_touchpad (); // verifica o pino e imprime pa shfaqje}}
Hapi 19: Print_wakeup_touppad (njih GPIO Touch)
Tani, në këtë hap, ne kemi funksionin për të shtypur kunjin e prekur. Ne rikuperuam GPIO që zgjoi ESP32 dhe e printuam në ekran.
// função para imprimir ose pino que foi tocadovoid print_wakeup_touchpad () {touch_pad_t touchPin; touchPin = esp_sleep_get_touchpad_wakeup_status (); // rikuperimi i GPIO ose despertou o ESP32 String GPIO = ""; switch (touchPin) {case 0: GPIO = "4"; pushim; rasti 1: GPIO = "0"; pushim; rasti 2: GPIO = "2"; pushim; rasti 3: GPIO = "15"; pushim; rasti 4: GPIO = "13"; pushim; rasti 5: GPIO = "12"; pushim; rasti 6: GPIO = "14"; pushim; rasti 7: GPIO = "27"; pushim; rasti 8: GPIO = "33"; pushim; rasti 9: GPIO = "32"; pushim; parazgjedhje: Serial.println ("Zgjimi jo me anë të tastierës së prekjes"); pushim; } Serial.println ("GPIO:"+GPIO); display.clearLine (7); // apaga a linha 7 bëni display.drawString (0, 7, "GPIO:"); display.drawString (6, 7, GPIO.c_str ()); // imprime o GPIO}
Hapi 20: Shkarkoni skedarët
INO
Recommended:
Stacioni i motit: ESP8266 Me gjumë të thellë, SQL, Grafikimi sipas shisheve & Plotësisht: 3 hapa
Stacioni i motit: ESP8266 Me gjumë të thellë, SQL, grafikim sipas shisheve dhe komplotit: A do të ishte kënaqësi të njihnit temperaturën, lagështinë ose intensitetin e dritës në ballkonin tuaj? E di që do ta bëja. Kështu që unë bëra një stacion të thjeshtë moti për të mbledhur të dhëna të tilla. Seksionet e mëposhtme janë hapat që kam ndërmarrë për të ndërtuar një. Le të fillojmë
Sensori i lëvizjes ESP-01 me gjumë të thellë: 5 hapa
Sensori i lëvizjes ESP-01 Me gjumë të thellë: Unë kam punuar në krijimin e sensorëve të lëvizjes në shtëpi që dërgojnë një mesazh me email kur aktivizohet. Ka shumë shembuj udhëzues dhe shembuj të tjerë për ta bërë këtë. Kohët e fundit më duhej ta bëja këtë me një sensor lëvizjeje PIR të funksionuar me bateri dhe një ESP
Zëvendësimi i baterisë së iPhone 6 Plus: Udhëzues për zëvendësimin e baterisë së brendshme: 12 hapa (me fotografi)
Zëvendësimi i baterisë së iPhone 6 Plus: Udhëzues për të zëvendësuar baterinë e brendshme: Hej djema, kam bërë një udhëzues për zëvendësimin e baterisë iPhone 6 disa kohë më parë dhe dukej se kishte ndihmuar shumë njerëz, kështu që këtu është një udhëzues për iPhone 6+. IPhone 6 dhe 6+ kanë në thelb të njëjtën ndërtesë, përveç ndryshimit të dukshëm të madhësisë. Ka
Kontrolluesi i baterisë me temperaturën dhe përzgjedhjen e baterisë: 23 hapa (me fotografi)
Kontrolluesi i baterisë me zgjedhjen e temperaturës dhe baterisë: Testues i kapacitetit të baterisë. Me këtë pajisje mund të kontrolloni kapacitetin e baterisë 18650, acidit dhe të tjerave (bateria më e madhe që kam testuar It'sshtë 6v Acid bateri 4,2A). Rezultati i testit është në miliampere/orë. Unë e krijoj këtë pajisje sepse kam nevojë për të kontrolluar
Madhësia DIY & Ndërtoni një Gjenerator Rezervues të Fuqisë së Baterisë W/ 12V Bateri me cikël të thellë: 5 hapa (me fotografi)
Madhësia DIY & Ndërtoni një Gjenerator Rezervues të Fuqisë së Baterisë W/ 12V Bateri të Ciklit të Thellë: *** SHENIM: Kini kujdes kur punoni me bateri dhe energji elektrike. Mos i shkurtoni bateritë. Përdorni mjete të izoluara. Ndiqni të gjitha rregullat e sigurisë kur punoni me energji elektrike. *** Përgatituni para se herën tjetër të fiket energjia me një bateri në gatishmëri