Permalink
Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upHeltec_ESP32/examples/Low_Power/Low_Power.ino
Go to file/* | |
* HelTec Automation(TM) Low_Power test code, witch includ | |
* Function summary: | |
* | |
* - Vext connected to 3.3V via a MOS-FET, the gate pin connected to GPIO21; | |
* | |
* - OLED display and PE4259(RF switch) use Vext as power supply; | |
* | |
* - WIFI Kit series V1 don't have Vext control function; | |
* | |
* - Basic LoRa Function; | |
* | |
* - Esp_Deep_Sleep Function; | |
* | |
* by lxyzn from HelTec AutoMation, ChengDu, China | |
* | |
* www.heltec.cn | |
* | |
* this project also realess in GitHub: | |
* https://github.com/HelTecAutomation/Heltec_ESP32 | |
*/ | |
#include "heltec.h" | |
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */ | |
#define TIME_TO_SLEEP 10 /* Time ESP32 will go to sleep (in seconds) */ | |
#define BAND 433E6 //you can set band here directly,e.g. 868E6,915E6 | |
RTC_DATA_ATTR int bootCount = 0; | |
/* | |
Method to print the reason by which ESP32 | |
has been awaken from sleep | |
*/ | |
void print_wakeup_reason(){ | |
esp_sleep_wakeup_cause_t wakeup_reason; | |
wakeup_reason = esp_sleep_get_wakeup_cause(); | |
switch(wakeup_reason) | |
{ | |
case 1 : | |
{ | |
Serial.println("Wakeup caused by external signal using RTC_IO"); | |
delay(2); | |
} break; | |
case 2 : | |
{ | |
Serial.println("Wakeup caused by external signal using RTC_CNTL"); | |
delay(2); | |
} break; | |
case 3 : | |
{ | |
Serial.println("Wakeup caused by timer"); | |
delay(2); | |
} break; | |
case 4 : | |
{ | |
Serial.println("Wakeup caused by touchpad"); | |
delay(2); | |
} break; | |
case 5 : | |
{ | |
Serial.println("Wakeup caused by ULP program"); | |
delay(2); | |
} break; | |
default : | |
{ | |
Serial.println("Wakeup was not caused by deep sleep"); | |
delay(2); | |
} break; | |
} | |
} | |
void setup(){ | |
//WIFI Kit series V1 not support Vext control | |
Heltec.begin(true /*DisplayEnable Enable*/, true /*LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/); | |
//Increment boot number and print it every reboot | |
++bootCount; | |
Serial.println("Boot number: " + String(bootCount)); | |
delay(2); | |
//Print the wakeup reason for ESP32 | |
print_wakeup_reason(); | |
/* | |
First we configure the wake up source | |
We set our ESP32 to wake up every 5 seconds | |
*/ | |
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR); | |
Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) + | |
" Seconds"); | |
delay(10); | |
/* | |
Next we decide what all peripherals to shut down/keep on | |
By default, ESP32 will automatically power down the peripherals | |
not needed by the wakeup source, but if you want to be a poweruser | |
this is for you. Read in detail at the API docs | |
http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html | |
Left the line commented as an example of how to configure peripherals. | |
The line below turns off all RTC peripherals in deep sleep. | |
*/ | |
//esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF); | |
//Serial.println("Configured all RTC Peripherals to be powered down in sleep"); | |
/* | |
Now that we have setup a wake cause and if needed setup the | |
peripherals state in deep sleep, we can now start going to | |
deep sleep. | |
In the case that no wake up sources were provided but deep | |
sleep was started, it will sleep forever unless hardware | |
reset occurs. | |
*/ | |
LoRa.end(); | |
LoRa.sleep(); | |
delay(100); | |
pinMode(5,INPUT); | |
pinMode(14,INPUT); | |
pinMode(15,INPUT); | |
pinMode(16,INPUT); | |
pinMode(17,INPUT); | |
pinMode(18,INPUT); | |
pinMode(19,INPUT); | |
pinMode(26,INPUT); | |
pinMode(27,INPUT); | |
delay(100); | |
Serial.println("Going to sleep now"); | |
delay(2); | |
esp_deep_sleep_start(); | |
Serial.println("This will never be printed"); | |
} | |
void loop(){ | |
//This is not going to be called | |
} |