Orodha ya maudhui:
- Hatua ya 1: Utangulizi
- Hatua ya 2: Njia za Kuamsha ESP32
- Hatua ya 3: Timer
- Hatua ya 4: Kuamsha nje (ext0)
- Hatua ya 5: Kuamsha nje (ext1)
- Hatua ya 6: Kuamsha Mchapishaji wa ULP
- Hatua ya 7: Bodi ya kugusa
- Hatua ya 8: Kuingia kwenye Njia ya Kulala Sana
- Hatua ya 9: Hapa kuna habari muhimu zaidi
- Hatua ya 10: Maonyesho
- Hatua ya 11: WiFi NodeMCU-32S ESP-WROOM-32
- Hatua ya 12: Mkutano
- Hatua ya 13: Programu
- Hatua ya 14: Maktaba Inahitajika
- Hatua ya 15: Maktaba na Vigeuzi
- Hatua ya 16: Sanidi
- Hatua ya 17: Loop, Callback & SanidiDisplay
- Hatua ya 18: Chapisha_amka_sababu (kujua sababu ya Uamsho)
- Hatua ya 19: Print_wakeup_touchpad (ujue GPIO Touch)
- Hatua ya 20: Pakua faili
Video: Kuokoa Maisha ya Batri na Usingizi Mzito: Hatua 20
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:53
Je! Una nia ya kutumia betri na ESP32 yako? Ikiwa ni hivyo, nitajadili leo habari muhimu ya kiufundi kuhusu mada hii. Tunajua kwamba microcontroller huyu hutumia nguvu nyingi wakati anasambaza habari. Inatumia karibu miligramu 190. Katika video hii, nitaonyesha jinsi ya kuhifadhi nishati kutoka ESP32 na kile kinachoitwa "DEEP SLEEP". Tutaweka chip kuingiza hali hii, jifunze njia za kutoka kwa hali hii, na tuunde mfano unaonyesha njia tatu tofauti za kuamsha ESP32.
Ni muhimu kukumbuka kuwa redio hutumia nguvu nyingi, badala ya wasindikaji. Kuokoa nishati ni muhimu sana. Hii ni kwa sababu Endpoints (mizunguko inayotuma habari) mara nyingi hupewa nguvu ya betri na inapaswa kudumu hadi miaka mitano. Kuna wazalishaji wengine ambao huahidi hadi miaka kumi kwa muda mrefu, na hii ni halali kwa betri zenye ubora wa hali ya juu ambazo hazitumii Mwisho wa Mwisho. Katika visa vingine vyote, ninakushauri utumie usingizi mzito kuokoa nishati kutoka kwa mzunguko wako.
Hatua ya 1: Utangulizi
ESP32 ina hali ya kuokoa nguvu, inayoitwa "Usingizi Mzito." Katika hali hii, CPU, RAM nyingi, na vifaa vyote vya saa vilivyo na dijiti vimezimwa. Sehemu pekee za chip ambazo bado zinaweza kushikamana ni mtawala wa RTC, vifaa vya pembejeo vya RTC (pamoja na processor ya ULP), na kumbukumbu za RTC.
Tuna njia kadhaa za kuamka ESP32 wakati wa kulala. Vyanzo vya kuamka vinaweza kusanidiwa wakati wowote kabla ya kuingia katika hali ya Kulala Sana.
Hatua ya 2: Njia za Kuamsha ESP32
Kuna njia tano za kuamsha ESP32:
• Kipima muda
• Kuamka nje (ext0)
• Kuamka nje (ext1)
• Kuamka kwa processor ya ULP
• Kitufe cha kugusa
Hatua ya 3: Timer
Mdhibiti wa RTC ana kipima muda kilichojengwa ambacho kinaweza kutumiwa kuamsha chip baada ya muda uliotanguliwa. Wakati umebainishwa na usahihi wa microsecond.
esp_deep_sleep_enable_timer_wakeup (uint64_t time_in_us)
time_in_us> ni wakati katika microseconds
Hatua ya 4: Kuamsha nje (ext0)
Moduli ya RTC IO ina mantiki ya kuchochea kengele wakati moja ya RTC GPIOs inaingia kiwango cha mantiki kilichotanguliwa. RTC IO ni sehemu ya uwanja wa nguvu wa pembejeo za RTC, kwa hivyo viunga vya RTC vitahifadhiwa wakati wa Usingizi wa kina ikiwa chanzo hiki cha uanzishaji kinaombwa.
esp_deep_sleep_enable_ext0_wakeup (gpio_num_t gpio_num, kiwango cha int)
gpio_num> Nambari ya GPIO inayotumiwa kama chanzo cha uanzishaji. GPIO zinazofanya kazi tu za RTC zinaweza kutumika: 0, 2, 4, 12-15, 25-27, 32-39.
kiwango> kiwango cha kuingiza ambacho kitasababisha kengele (0 = LOW, 1 = HIGH)
Hatua ya 5: Kuamsha nje (ext1)
Mdhibiti wa RTC ana mantiki ya kuchochea saa ya kengele kutumia RP GPIO nyingi.
esp_deep_sleep_enable_ext1_wakeup (uint64_t mask, esp_ext1_wakeup_mode_t mode)
mask> mask kidogo ya nambari za GPIO ambazo zitasababisha uanzishaji. Ni GPIO zilizowezeshwa na RTC tu zinazoweza kutumika katika bitmap hii: 0, 2, 4, 12-15, 25-27, 32-39.
mode> chagua kazi ya mantiki inayotumiwa kuamua hali ya uanzishaji:
• ESP_EXT1_WAKEUP_ALL_LOW: inaamka wakati GPIO zote zilizochaguliwa ziko LOW
• ESP_EXT1_WAKEUP_ANY_HIGH: inaamka wakati GPIO yoyote iliyochaguliwa iko juu
Hatua ya 6: Kuamsha Mchapishaji wa ULP
Mchapishaji wa ULP anaweza kufanya kazi wakati chip iko katika Usingizi wa kina na inaweza kutumika kutafuta sensorer, kufuatilia ADC au maadili ya kugusa capacitive, na kuamsha chip wakati tukio fulani linapatikana.
Mchapishaji wa ULP ni sehemu ya uwanja wa nguvu wa pembejeo za RTC na huendesha programu iliyohifadhiwa katika kumbukumbu polepole RTC. Kwa hivyo, pembejeo za RTC na kumbukumbu polepole ya RTC zitaamilishwa wakati wa Usingizi wa kina ikiwa hali hii ya uanzishaji imeombwa.
Hatua ya 7: Bodi ya kugusa
Mdhibiti wa RTC ana mantiki ya kuchochea kengele kwa kutumia sensorer za kugusa zenye uwezo. Ufafanuzi wa pini ya kugusa, hata hivyo, ni tofauti. Lazima tutumie usumbufu wa kugusa kwa kila pini inayotakiwa.
Baada ya kuweka vipingamizi, tuliwasha hali ya kuamka kutumia sensorer.
// Sanidi Touchpad kama chanzo cha kuamsha esp_sleep_enable_touchpad_wakeup ();
Hatua ya 8: Kuingia kwenye Njia ya Kulala Sana
Baada ya kuweka hali ya kuamka, amri moja ya kuweka ESP32 katika hali ya Kulala Sana (kutumia 2.5 μA au chini) inatosha. Nasisitiza hapa kwamba gharama hii inatoka kwa chip ya ESP na sio sahani, kwani ya mwisho hutumia zaidi.
esp_deep_sleep_start ();
Kutoka kwa amri hii, ESP32 hulala na haifanyi mistari inayofuata ya nambari kwa mfano.
Muhimu: Mipangilio yote ya kuamka lazima ifanywe kabla ya kutekeleza amri hapo juu.
Hatua ya 9: Hapa kuna habari muhimu zaidi
Simu hapa chini inarudisha sababu ya kuamka kwa ESP32.
1: EXT0 2: EXT1 3: TIMER 4: TOUCHPAD 5: ULP
esp_sleep_get_wakeup_cause ();
Ikiwa tunaweka kuamka kwa pedi ya kugusa, tunaweza kupona ambayo GPIO ambayo kugusa ilitokea kupitia amri
esp_sleep_get_touchpad_wakeup_status ();
Kila wakati ESP32 inapoamka, itazunguka kupitia usanidi tena. Kwa hivyo anuwai zote ambazo hazijafafanuliwa katika kumbukumbu ya RTC zitarudi katika hali yao ya nyumbani.
Kuweka vigeugeu kwenye kumbukumbu hata baada ya kulala, tumia tamko la kutofautisha katika mfano hapa chini:
// RTC_DATA_ATTR aloca a variável na memória RTCRTC_DATA_ATTR int bootCount = 0;
Hatua ya 10: Maonyesho
Video inaonyesha programu hiyo inafanya kazi, kulingana na picha.
Hatua ya 11: WiFi NodeMCU-32S ESP-WROOM-32
Hatua ya 12: Mkutano
Hatua ya 13: Programu
Sasa tutafanya mpango ambapo tutasanidi ESP32 ili kuingia katika hali ya Kulala Sana. Hii itaamshwa kwa njia tatu tofauti: moja ya kuamka nje (ext0), moja ya Timer, na moja ya Touchpad. Hawawezi kufanya kazi pamoja, kwa hivyo tutatumia anuwai ambayo itakuwa kaunta kwa idadi ya nyakati ambazo ESP32 ilimpa Boot kusanidi njia ya kuamka.
Hatua ya 14: Maktaba Inahitajika
Ili kudhibiti onyesho la OLED, tunahitaji maktaba ya nje. Kwa hili, tutapakua maktaba ya U8g2.
Katika IDE ya Arduino, nenda kwenye menyu ya Mchoro >> Jumuisha Maktaba >> Dhibiti Maktaba….
Hatua ya 15: Maktaba na Vigeuzi
Tumejumuisha maktaba kudhibiti onyesho la OLED, pamoja na mjenzi wa mfano wa mtawala wa onyesho. Pia, tunatenga tofauti katika kumbukumbu ya RTC. Tunaweka unyeti wa kukubalika kwa kugusa, ubadilishaji wa microsecond kwa sekunde, na wakati ESP32 inakwenda kwa hali ya kulala (kwa sekunde).
# pamoja na // biblioteca para controle zinaonyesha 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 Kizingiti 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) #fasili TIME_TO_SLEEP 3
Hatua ya 16: Sanidi
Katika Usanidi, tunaongeza idadi ya mara ambazo Boot ilitokea. Tunaita kazi hiyo kuchapisha motif ya Boot. Ikiwa nambari ya Boot ni PAR, tunaweka ESP32 kuamka kupitia kitufe cha (EXT0). Ikiwa ni nyingi ya 3, tunaweka ESP32 kuamka baada ya muda uliowekwa. Vinginevyo, tunaanzisha pini za kugusa zenye uwezo wa kuamsha ESP32. Mwishowe, tunaweka Touchpad kama chanzo cha kuamka na kulazimisha ESP32 kuingia katika hali ya kulala.
kuanzisha batili () {Serial.begin (115200); kuchelewesha (1000); // nyongeza ya idadi ya utaftaji wa OBOTI vipindi ++ bootCount; sanidiDisplay (); // chama a função para imprimir o motivo do BOOT print_wakeup_reason (); // se 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 = Juu, 0 = Chini} // 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); } / // Sanidi Touchpad kama chanzo cha kuamsha esp_sleep_enable_touchpad_wakeup (); } Serial.println ("entando em modo sleep"); esp_deep_sleep_start ();
Hatua ya 17: Loop, Callback & SanidiDisplay
Katika Kitanzi, hatuna cha kufanya. Kisha tunaendelea kukatiza kupiga tena ikiwa tuna kitu cha kufanya wakati usumbufu unatokea. Kuhusu usanidi, onyesha onyesho na usanidi vigezo kadhaa. Tunachapisha kwenye skrini idadi ya mara ambazo Boot ilitokea.
// nada a se fazer no loopvoid loop () {} // callback das interrupções void callback () {// caso queira fazer algo ao ocorrer a interrupção} batili configureDisplay () {// inaleta onyesho na usanidi wa onyesho la maonyesho ya kwanza. Anza (); onyesha.setPowerSave (0); // modo powerSave (0-Off? 1-On) onyesho.setFont (u8x8_font_torussansbold8_u); // fonte utilizada // imprime no display as numero de vezes que aconteceu o BOOT display.drawString (0, 0, "BOOT NUM:"); onyesha.drawString (0, 2, String (bootCount).c_str ()); onyesha.drawString (0, 4, "MOTIVO:"); }
Hatua ya 18: Chapisha_amka_sababu (kujua sababu ya Uamsho)
Hapa, tuna kazi ya kuchapisha sababu ya kuamka kwa ESP32. Angalia pini na uchapishe kwenye onyesho.
// função para imprimir a causa do ESP32 dissertarvoid print_wakeup_reason () {esp_sleep_wakeup_cause_t wakeup_reason; Sababu ya kamba = ""; wakeup_reason = esp_sleep_get_wakeup_cause (); // recupera a causa kufanya Despertar kubadili (wakeup_reason) {kesi ya 1: Sababu = "EXT0 RTC_IO BTN"; kuvunja; kesi 2: sababu = "EXT1 RTC_CNTL"; kuvunja; kesi 3: sababu = "TIMER"; kuvunja; kesi 4: sababu = "TOUCHPAD"; kuvunja; kesi 5: sababu = "PROGRAMU YA ULP"; kuvunja; chaguomsingi: sababu = "HAKUNA SABABU YA DS"; kuvunja; } Serial.println (sababu); onyesha waziLine (6); // apaga linha 6 huonyesha onyesha.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 na imprime hakuna onyesho}}
Hatua ya 19: Print_wakeup_touchpad (ujue GPIO Touch)
Sasa, katika hatua hii, tuna kazi ya kuchapisha pini ambayo iliguswa. Tulipata GPIO iliyoamsha ESP32 na kuichapisha kwenye onyesho.
// função para imprimir o pino que foi tocadovoid print_wakeup_touchpad () {touch_pad_t touchPin; touchPin = esp_sleep_get_touchpad_wakeup_status (); // recupera o GPIO que despertou o ESP32 Kamba GPIO = ""; kubadili (touchPin) {kesi 0: GPIO = "4"; kuvunja; kesi 1: GPIO = "0"; kuvunja; kesi 2: GPIO = "2"; kuvunja; kesi 3: GPIO = "15"; kuvunja; kesi 4: GPIO = "13"; kuvunja; kesi 5: GPIO = "12"; kuvunja; kesi ya 6: GPIO = "14"; kuvunja; kesi 7: GPIO = "27"; kuvunja; kesi ya 8: GPIO = "33"; kuvunja; kesi 9: GPIO = "32"; kuvunja; chaguomsingi: Serial.println ("Amka sio kwa touchpad"); kuvunja; } Serial.println ("GPIO:" + GPIO); onyesha.clearLine (7); onyesha.drawString (6, 7, GPIO.c_str ()); // hatia o GPIO}
Hatua ya 20: Pakua faili
INO
Ilipendekeza:
Kituo cha Hali ya Hewa: ESP8266 Na Usingizi Mzito, SQL, Kupiga picha kwa Flask & Plotly: Hatua 3
Kituo cha Hali ya Hewa: ESP8266 Na Usingizi Mzito, SQL, Kupiga picha na Flask & Plotly: Je! Hiyo itakuwa ya kufurahisha kujua hali ya joto, unyevu, au mwangaza kwenye balcony yako? Najua ningependa. Kwa hivyo nilifanya kituo rahisi cha hali ya hewa kukusanya data kama hizo. Sehemu zifuatazo ni hatua nilizochukua kujenga moja. Wacha tuanze
Sensor ya Mwendo wa ESP-01 Na Usingizi Mzito: Hatua 5
Sensorer ya Mwendo wa ESP-01 Na Usingizi Mzito: Nimekuwa nikifanya kazi kutengeneza sensorer za mwendo zinazotengeneza ujumbe wa barua pepe wakati zinasababishwa. Kuna mifano mingi ya kufundisha na mifano mingine ya kufanya hivi. Hivi karibuni nilihitaji kufanya hivyo na sensorer ya mwendo wa betri ya PIR na ESP
Maisha ya Usawa wa Maisha X5i Console Ukarabati wa Ufugaji: Hatua 5
Matengenezo ya Maisha ya Usawa wa Maisha X5i: Hivi ndivyo nilivyosuluhisha shida yangu ya kuogofya ya Life Fitness x5i. KANUSHO LA HALALI: FANYA HAYA KWA HATARI YAKO. HATUA HIZI NI PAMOJA NA KUBORESHA BONYEZO YA MASHINE NA PENGINE ZITAKUWA ZITAPUNGUZA DHARA GANI. Shida na mashine yangu ilikuwa kwamba moja ya
Kuokoa Maisha ya Kuchosha na Taa Mahiri: 3 Hatua
Kuokoa Maisha ya Kuchosha na Taa Mahiri: Sote tunatumahi kuwa tunaweza kuishi vizuri nyumbani. Ikiwa hujisikia vizuri kwa sababu kufifia kwa taa za nyumbani sio busara vya kutosha? Au ikiwa unajisikia kupendeza kwa sababu kazi ya taa ya kaya? Taa hii inaweza kutatua tr yako
Kutoa Zawadi za Maisha ya Kwanza katika Maisha ya Pili Kutumia Amazon.com: Hatua 9
Kutoa Zawadi za Maisha ya Kwanza katika Maisha ya Pili Kutumia Amazon.com: Katika ulimwengu wa kweli Maisha ya pili ni rahisi kuunda urafiki wa karibu sana na mtu ambaye huwezi kuwa na fursa ya kukutana naye kibinafsi. Wakazi wa Maisha ya Pili husherehekea likizo ya Maisha ya Kwanza kama Siku ya Wapendanao na Krismasi na pia ya kibinafsi