53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
/*
|
|
* Hold GPIO status in deep sleep mode, use ESP32's ULP (Ultra Low Power) coprocessor
|
|
*
|
|
* HelTec AutoMation, Chengdu, China.
|
|
* 成都惠利特自动化科技有限公司
|
|
* www.heltec.cn
|
|
* support@heltec.cn
|
|
*
|
|
*this project also release in GitHub:
|
|
*https://github.com/HelTecAutomation/ESP32_LoRaWAN
|
|
*/
|
|
#include "soc/rtc_io_reg.h"
|
|
#include "driver/rtc_io.h"
|
|
|
|
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
|
|
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */
|
|
|
|
RTC_DATA_ATTR int bootCount = 0;
|
|
|
|
void setup(){
|
|
rtc_gpio_hold_dis(GPIO_NUM_25);
|
|
pinMode(25,OUTPUT);
|
|
digitalWrite(25,LOW);//The on board LED will be OFF in wake up period
|
|
|
|
Serial.begin(115200);
|
|
delay(1000); //Take some time to open up the Serial Monitor
|
|
|
|
//Increment boot number and print it every reboot
|
|
++bootCount;
|
|
Serial.println("Boot number: " + String(bootCount));
|
|
delay(2);
|
|
|
|
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);
|
|
|
|
Serial.println("Going to sleep now");
|
|
delay(2);
|
|
|
|
rtc_gpio_init(GPIO_NUM_25);
|
|
pinMode(25,OUTPUT);
|
|
digitalWrite(25,HIGH);//The on board LED will be ON in deep sleep period
|
|
rtc_gpio_hold_en(GPIO_NUM_25);
|
|
|
|
esp_deep_sleep_start();
|
|
Serial.println("This will never be printed");
|
|
}
|
|
|
|
void loop(){
|
|
//This is not going to be called
|
|
}
|