Data Gator
Hardware and software documentation for the Data Gator project.
Loading...
Searching...
No Matches
firebeetle_sleep.hpp
Go to the documentation of this file.
1
13#include <Arduino.h>
14#include <esp_pm.h>
15
17#define uS_TO_S_FACTOR 1000000ULL
19#define TIME_TO_SLEEP 5
20
21RTC_DATA_ATTR int bootCount = 0;
22
23
29void deep_sleep(uint16_t time_to_sleep){
30 /*
31 First we configure the wake up source
32 We set our ESP32 to wake up every 5 seconds
33 */
34 esp_sleep_enable_timer_wakeup(time_to_sleep * uS_TO_S_FACTOR);
35 /*
36 http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html
37 Left the line commented as an example of how to configure peripherals.
38 The line below turns off all RTC peripherals in deep sleep.
39 */
40 esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
41
42 //esp_bt_controller_disable();
43
44 esp_deep_sleep_start();
45}
46
52void hibernate(uint16_t time_to_sleep) {
53 esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
54 esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF);
55 esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF);
56 esp_sleep_pd_config(ESP_PD_DOMAIN_XTAL, ESP_PD_OPTION_OFF);
57
58 deep_sleep(time_to_sleep);
59}
60
68 //esp_pm_configure();
69 esp_light_sleep_start();
70}
71
77uint16_t seconds_to_uS(uint16_t seconds){
78 return seconds * uS_TO_S_FACTOR;
79}
80
86 if(DEBUG){
87 esp_sleep_wakeup_cause_t wakeup_reason;
88
89 wakeup_reason = esp_sleep_get_wakeup_cause();
90
91 switch(wakeup_reason)
92 {
93 case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
94 case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
95 case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
96 case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
97 case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
98 default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
99 }
100 }
101}
#define DEBUG
Definition config.hpp:17
void hibernate(uint16_t time_to_sleep)
Hibernate for time_to_sleep seconds.
Definition firebeetle_sleep.hpp:52
void light_sleep()
Puts the device into light sleep.
Definition firebeetle_sleep.hpp:67
uint16_t seconds_to_uS(uint16_t seconds)
Convert seconds to micro-seconds.
Definition firebeetle_sleep.hpp:77
void print_wakeup_reason()
Method to print the reason by which ESP32 has been awaken from sleep.
Definition firebeetle_sleep.hpp:85
#define uS_TO_S_FACTOR
Definition firebeetle_sleep.hpp:17
void deep_sleep(uint16_t time_to_sleep)
Configure the ESP32 for sleep and then enter deep sleep.
Definition firebeetle_sleep.hpp:29