Wake Up ESP32 mula sa Deep Sleep Gamit ang Timers-MicroPython

Wake Up Esp32 Mula Sa Deep Sleep Gamit Ang Timers Micropython



Ang ESP32 ay isang microcontroller based IoT platform. Ang pagkonsumo ng kuryente ay isa sa mga pangunahing alalahanin habang nagtatrabaho sa isang microcontroller board. Hangga't pinapagana namin ang ESP32 na may supply ng DC, wala kaming pakialam sa pagkonsumo ng kuryente ngunit sa mga proyektong backup ng baterya para sa mahabang panahon kailangan naming i-optimize ang pangkalahatang kapangyarihan.

Dito ay tatalakayin natin kung paano natin mai-set ang ESP32 sa deep sleep mode sa takdang oras upang makatipid ng kuryente. Bago natin matutunan kung paano gisingin ang ESP32 mula sa malalim na pagtulog gamit ang timer, unawain natin ang konsepto ng malalim na pagtulog:

Ano ang Deep Sleep sa ESP32

Ang ESP32 ay maaaring maging isang power-hungry na device dahil sa pinagsamang WiFi at Bluetooth module nito. Karaniwang gumuguhit ang ESP32 75mA para sa mga nominal na operasyon habang maaari itong umakyat sa 240mA kapag nagpapadala ng data sa pamamagitan ng WiFi. Gayunpaman, maaari naming i-optimize ito sa pamamagitan ng pagpapagana ng deep sleep mode.









Sa deep sleep mode, ang ESP32 digital peripheral, hindi nagamit na RAM at mga CPU ay naka-off. Ang sumusunod lamang na listahan ng mga bahagi ang nananatiling gumagana:



  • Kontroler ng RTC
  • ULP Coprocessor
  • RTC mabilis at mabagal na memorya
  • Mga RTC Peripheral





Kapag pinagana ang deep sleep mode, ang pangunahing CPU ay isinara; gayunpaman, ang ULP (UltraLowPower) Coprocessor ay maaari pa ring magbasa ng data mula sa mga sensor at gisingin ang CPU kapag kinakailangan.

Ang application na ito ng ESP32 ay madaling gamitin kung saan gusto naming bumuo ng output sa ilang partikular na oras o kapag may external na interrupt o kaganapan ang nangyari. Nakakatipid ito ng kuryente sa ESP32 dahil nananatiling naka-off ang CPU nito sa natitirang oras at nag-o-on lang kapag tinawag ito.



Kasama ng CPU ESP32 ang pangunahing memorya ay na-flash o nabubura rin, kaya ang anumang nakaimbak sa loob ng memorya na ito ay hindi na magagamit. Tanging RTC memory lang ang nakatabi doon. Samakatuwid, ang ESP32 ay nagse-save ng data ng WiFi at Bluetooth sa loob ng RTC memory bago pumunta sa deep sleep mode.

Kapag na-reset o naalis ang deep sleep mode, sisimulan ng ESP32 chip ang pagpapatupad ng program mula sa simula.

Mula sa mahimbing na pagtulog maaari nating gisingin ang ESP32 gamit ang iba't ibang pamamaraan.

Mga Pinagmumulan ng Wake Up sa ESP32

Maramihang Mga Pinagmumulan ay magagamit upang gisingin ang ESP32 mula sa mahimbing na pagtulog:

  • Timer
  • Pindutin ang mga pin
  • External wakeup ext0
  • External wakeup ext1

Sa gabay na ito ay tatalakayin natin Timer gumising source para sa ESP32.

Paano gamitin ang Timer para Magising ang ESP32 mula sa Deep Sleep

Ang ESP32 ay may kasamang RTC controller na may built-in na timer module na maaaring gisingin ang ESP32 pagkatapos ng paunang natukoy na tagal ng oras. Ang feature na ito ay may malawak na mga application kung saan kailangan namin ng time stamping o kailangang magsagawa ng mga tagubilin sa mga partikular na oras habang pinapanatili ang pinakamabuting pagkonsumo ng kuryente.

Upang ilagay ang ESP32 sa deep sleep mode gamit ang MicroPython code malalim na pagtulog() function mula sa module ng makina gagamitin. Ang sumusunod ay ang syntax ng deep sleep function sa MicroPython:

makina. malalim na pagtulog ( sleep_time_ms )

Ang function na ito ay tumatagal 1 argumento na isang paunang natukoy na oras sa millisecond .

Upang maunawaan ang paggamit ng ESP32 timer para sa paggising, kukuha kami ng isang halimbawa na kumukurap-kurap ang LED pagkatapos lumipas ang bawat takdang oras at babalik sa pagtulog kapag tapos na ang gawain.

Halimbawang Code

Buksan ang anumang editor ng MicroPython at i-upload ang ibinigay na code sa ibaba sa ESP32 board. Dito gagamitin namin ang Thonny IDE para sa pag-upload ng mga sketch ng MicroPython.

# Pinagmulan ng Code Linuxhint.com

mula sa makina angkat malalim na pagtulog

mula sa makina angkat Pin

mula sa oras angkat matulog

pinangunahan = Pin ( 4 , Pin. LABAS ) Tinukoy ang #PIN 4 para sa output ng LED

pinangunahan. halaga ( 1 ) #I-ON ang LED sa loob ng 1 segundo

matulog ( 1 )

pinangunahan. halaga ( 0 ) #I-OFF ang LED sa loob ng 1 segundo

matulog ( 1 )

print ( 'Matutulog na ako ngayon' )

malalim na pagtulog ( 5000 ) #Matulog ng 5 segundo

Nagsimula ang code sa pamamagitan ng pag-import ng mga kinakailangang library tulad ng pag-import namin ng deepsleep library.

Pagkatapos nito ay nilikha ang isang bagong bagay para sa ESP32 pin 4. Ipapakita ng pin na ito ang output sa tuwing magigising ang ESP32.

pinangunahan = Pin ( 4 , Pin. LABAS )

Ang mga ibinigay na command sa ibaba ay magbi-blink ng LED na may pagkaantala ng 1 segundo.

pinangunahan. halaga ( 1 )

matulog ( 1 )

pinangunahan. halaga ( 0 )

matulog ( 1 )

Dito para sa mga layunin ng pagpapakita, kumukurap kami sa LED. Gayunpaman, maaari ding kontrolin ang anumang iba pang device.

Bago matulog, nag-print kami ng mensahe na ang ESP32 ay nasa sleep mode.

print ( 'Matutulog na ako ngayon' )

Tandaan: Maaari din kaming magdagdag ng pagkaantala ng 5 o higit pang mga segundo dito bago pumunta sa sleep mode ang ESP32. Nakakatulong ito sa amin kapag gumagawa ng proyekto at sumusulat ng bagong script. Habang nag-a-upload ng bagong code ang board ay dapat na gising at wala sa sleep mode. Kung hindi namin idaragdag ang pagkaantala, magiging mahirap para sa amin na mahuli ang ESP32 sa awake mode at mag-upload ng bagong script.

Pagkatapos isulat ang bagong script at kapag handa na ang huling code, maaari naming alisin ang pagkaantala na ito sa huling bersyon ng script.

Sa wakas, ang ESP32 board ay inilalagay sa malalim na pagtulog sa loob ng 5 segundo (5000 ms).

makina. malalim na pagtulog ( 5000 )

Sa sandaling lumipas ang 5 segundong oras, magigising ang ESP32 at i-restart ang code na katulad ng SA pindutan.

  Ang graphical na interface ng gumagamit, teksto, paglalarawan ng application ay awtomatikong nabuo

Output

Ang pagsunod sa output ay maaaring maobserbahan sa shell terminal ng Thonny IDE. Dito makikita natin na pagkatapos ng bawat 5 segundo ay gumising ang ESP32 mula sa mahimbing na pagtulog at kumukurap ang LED sa GPIO pin 4.

Ang LED sa GPIO 4 ay liliko NAKA-ON para sa 1 segundo.

Pagkatapos ng 1 segundo ay liliko ang LED NAKA-OFF .

Ngayon ang ESP32 board ay muling mapupunta sa sleep mode sa loob ng 5 seg at pagkatapos nito ay mauulit ang buong proseso. Kaya iyon ay matagumpay naming nakontrol ang ESP32 deep sleep mode gamit ang timer code.

Konklusyon

Dito sa tutorial na ito, na-configure namin ang ESP32 upang magising mula sa mahimbing na pagtulog gamit ang isang timer program na nakasulat sa MicroPython. Na-upload namin ang code gamit ang Thonny IDE . Nag-print lang kami ng mensahe sa sandaling nagising ang ESP32 at kumukurap ang isang LED; gayunpaman, ang paggamit ng artikulong ito ay maaaring magsagawa ng anumang gawain kapag ang ESP32 ay nagising mula sa mahimbing na pagtulog.