Implementing External Wake-up Sources for Deep Sleep in the SparkFun ESP32 Thing

Advanced ESP32 Deep Sleep in the ESP32
10 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€66.35
List Price:  €94.79
You save:  €28.44
£55.27
List Price:  £78.97
You save:  £23.69
CA$97.91
List Price:  CA$139.89
You save:  CA$41.97
A$107.61
List Price:  A$153.73
You save:  A$46.12
S$94.02
List Price:  S$134.32
You save:  S$40.30
HK$544.76
List Price:  HK$778.26
You save:  HK$233.50
CHF 61.99
List Price:  CHF 88.57
You save:  CHF 26.57
NOK kr773.52
List Price:  NOK kr1,105.08
You save:  NOK kr331.55
DKK kr494.87
List Price:  DKK kr706.99
You save:  DKK kr212.12
NZ$119.04
List Price:  NZ$170.06
You save:  NZ$51.02
د.إ257.07
List Price:  د.إ367.26
You save:  د.إ110.18
৳8,334.01
List Price:  ৳11,906.24
You save:  ৳3,572.23
₹5,905.12
List Price:  ₹8,436.24
You save:  ₹2,531.12
RM312.96
List Price:  RM447.10
You save:  RM134.14
₦117,219.95
List Price:  ₦167,464.25
You save:  ₦50,244.30
₨19,380.58
List Price:  ₨27,687.73
You save:  ₨8,307.15
฿2,429.14
List Price:  ฿3,470.35
You save:  ฿1,041.21
₺2,412.08
List Price:  ₺3,445.98
You save:  ₺1,033.89
B$405.06
List Price:  B$578.68
You save:  B$173.62
R1,267.31
List Price:  R1,810.53
You save:  R543.21
Лв129.73
List Price:  Лв185.34
You save:  Лв55.60
₩97,779.80
List Price:  ₩139,691.42
You save:  ₩41,911.61
₪261.55
List Price:  ₪373.67
You save:  ₪112.11
₱4,130.77
List Price:  ₱5,901.36
You save:  ₱1,770.58
¥10,901.93
List Price:  ¥15,574.86
You save:  ¥4,672.92
MX$1,414.26
List Price:  MX$2,020.46
You save:  MX$606.19
QR254.33
List Price:  QR363.35
You save:  QR109.01
P948.83
List Price:  P1,355.53
You save:  P406.70
KSh9,063.70
List Price:  KSh12,948.70
You save:  KSh3,885
E£3,478.50
List Price:  E£4,969.50
You save:  E£1,491
ብር8,583.46
List Price:  ብር12,262.61
You save:  ብር3,679.15
Kz63,877.12
List Price:  Kz91,256.94
You save:  Kz27,379.82
CLP$67,980.58
List Price:  CLP$97,119.28
You save:  CLP$29,138.70
CN¥507.18
List Price:  CN¥724.58
You save:  CN¥217.39
RD$4,200.06
List Price:  RD$6,000.34
You save:  RD$1,800.28
DA9,338.81
List Price:  DA13,341.73
You save:  DA4,002.91
FJ$158.92
List Price:  FJ$227.04
You save:  FJ$68.12
Q538.38
List Price:  Q769.16
You save:  Q230.77
GY$14,583.53
List Price:  GY$20,834.51
You save:  GY$6,250.97
ISK kr9,640.42
List Price:  ISK kr13,772.62
You save:  ISK kr4,132.20
DH696.78
List Price:  DH995.44
You save:  DH298.66
L1,273.82
List Price:  L1,819.82
You save:  L546
ден4,077.60
List Price:  ден5,825.40
You save:  ден1,747.79
MOP$559.09
List Price:  MOP$798.74
You save:  MOP$239.64
N$1,260.89
List Price:  N$1,801.35
You save:  N$540.46
C$2,566.52
List Price:  C$3,666.61
You save:  C$1,100.09
रु9,423.16
List Price:  रु13,462.23
You save:  रु4,039.07
S/264.65
List Price:  S/378.10
You save:  S/113.44
K280.62
List Price:  K400.90
You save:  K120.28
SAR262.75
List Price:  SAR375.38
You save:  SAR112.62
ZK1,926.57
List Price:  ZK2,752.36
You save:  ZK825.79
L330.17
List Price:  L471.69
You save:  L141.52
Kč1,676.98
List Price:  Kč2,395.79
You save:  Kč718.80
Ft27,187.34
List Price:  Ft38,840.72
You save:  Ft11,653.38
SEK kr769.78
List Price:  SEK kr1,099.74
You save:  SEK kr329.95
ARS$70,112.88
List Price:  ARS$100,165.56
You save:  ARS$30,052.67
Bs483.65
List Price:  Bs690.96
You save:  Bs207.30
COP$308,470.35
List Price:  COP$440,690.82
You save:  COP$132,220.46
₡35,450.59
List Price:  ₡50,645.88
You save:  ₡15,195.28
L1,762.11
List Price:  L2,517.41
You save:  L755.29
₲543,153.02
List Price:  ₲775,966.15
You save:  ₲232,813.12
$U2,992.07
List Price:  $U4,274.58
You save:  $U1,282.50
zł287.83
List Price:  zł411.21
You save:  zł123.37
Already have an account? Log In

Transcript

Video implementing external wakeup sources for deep sleep in the sparkfun ESP 32 thing. In this video, we will learn to implement deep sleep wake up from one external interrupt and also from multiple external interrupts. Besides the timer and the touch pins, we can also awaken the ESP 32 from deep sleep by toggling the value of a signal on a pin, like the press of a button. This is called an external wake up. You have two possibilities of external wakeup e x t zero and e x one. e x t zero allows you to wake up the ESP 32 using one single GPIO pin, while e XT one allows you to wake up the ESP 32 using several GPIO pins.

Remember that we can only use GPIO pins of the RTC to do external wakeup. So how can we access the RTC GPIO pins Thankfully, there is RTC GPIO support on the ESP 32. The GPIO s rotor to the RTC, Lopa subsystem can be used when the ESP 32 is in deep sleep. These RTC GPIO s can be used to wake up the ESP 32. from deep sleep. When the ultra low power coprocessor is running the GPIO pins for accessing the RTC pins are shown in this table. You can download the table from the resources section for reference.

You will really need this while writing code as we can only write the sketch in terms of GPIO pin numbering and not the RTC pin numbering. First, let us look at the external wakeup EAX zero. This wakeup source allows you to use a pin to wake up the ESP 32 the ESD zero wakeup source option users RTC GPIO is to wake up so artists peripherals will be kept on during deep sleep if this wakeup source is requested to use this wakeup source, you use the following function. ESP underscore sleep underscore enable, underscore x zero underscore wakeup. GPIO underscore num underscore x comma level. This function accepts as first argument the pin you want to use in this format GPIO underscore num underscore x in which x represents the GPIO number of that pin.

The second argument level can be either a one or a zero. This represents the state of the GPIO that will trigger wake up. Next, let us look at the external wakeup ESD one. This wake up source allows you to use multiple RTC GPIO s does wakeup source is implemented by the RTC controller. So RTC peripherals and artistic memories can be powered off in this mode. To use this wakeup source, you use the following function.

ESP underscore sleep underscore enable underscore e XT one underscore wakeup but mask comma mode. This function accepts two arguments a bit mask of the GPIO numbers that will cause the wakeup and mode which is the logic to wake up the ESP 32. It can be ESP underscore x t one, underscore wakeup underscore all underscore low, which will wake up when all GPIO s go low. Or the mod can be ESP underscore x t one underscore wakeup underscore any underscore high, which will wake up if any of the GPIO s go hide. Open Arduino ID and low the external wakeup code from the Deep Sleep examples. The code example shows how to use both x zero and x t one.

If you upload the code as a test, you'll use x t zero, the function to use x t one is commented out by default, this code is very similar to the previous ones. So I will explain only the instructions which are new or specific to this wakeup source. In this example, the ESP 32 wakes up when the GPIO 33 is triggered to Hi, this is done by the following function. ESP underscore sleep underscore enable underscore x zero underscore wakeup. GPIO underscore num underscore 33 comma one instead of GPIO 33. You can also use any other RTC GPIO pin let's test this example.

Connect a push button to ESP 30 By following the schematic diagram, the button is connected to GPIO 33 using a pulldown 10 K resistor. Note that this schematic uses the sparkfun ESP 32 thing. If you're using another model, please take the pin out for the board you're using. Now upload the examples kits to your ESP 32. Make sure you have the right boat and comport selected, open the serial monitor at about rate of 115200. Now press the push button to wake the ESP 32 and watch the response in the serial monitor.

Now keep on pressing the push button several times and see the boot count increasing on each button press. Using this method is useful to wake up your ESP 32 using a push button, for example, to make a single task. However, with this method, you can only use one GPIO s wakeup source What if you want to have different buttons. All of them wake up the ESP 32. But to do different tasks. For that, you need to use the 61 wakeup method.

The XT one allows you to wake up the ESP using different buttons and perform different tasks. Depending on the button you pressed into the using the ESP underscore sleep underscore, enable, underscore E zero underscore wakeup function. You use the ESP underscore sleep underscore enable underscore x one, underscore wake up function in the code first comment out the x zero function and uncomment the e x t one function. Now you have the following function. ESP underscore sleep underscore enable underscore x t one underscore wakeup button underscore pin underscore bitmask comma is p underscore aq One underscore wakeup underscore, ne underscore Hi. The first argument of the function is a bit mask of the GPIO s, you'll use as a wakeup source.

And the second argument defines the logic to wake up the ESP 32. In this example, we are using the variable button underscore pin underscore bitmask. That was defined at the beginning of the code. But this bitmask is only one GPIO pin. Here, it's GPIO 33. First, let's learn how to create a button pin bitmask.

First, fix the GPIO pin. You want a bit mask, let's say GPIO 33, then calculate two raised to that number. Finally convert the decimal to hex code to get the bit mask. In the case of a 61 there are multiple GPIO pins to be a bit masked. Let's say you want to use GPIO To end GPIO 15 as a wakeup source, you should do the following. First, calculate two raised to two plus two raised to 15, you should get 32,770.

To convert that number to hex, you should get eight double 04. replace that number in the button underscore pin underscore bitmask. If you want to know why we need to do a pin bit masking, you can check out the resources section. The explanation of the example sketches done, but we need to implement a function to identify which GPIO pin caused the wakeup. This will allow us to assign separate tasks for each GPIO wakeup. For that, you can use the following function ESP underscore sleep underscore get underscore x t one underscore wake up underscore status. This function returns a number of base two with the GPIO number As an exponent, two raised to GPIO underscore number, so to get the GPIO in decimal, you need to do the following calculation GPIO equals log of GPIO underscore number divided by log two does, the final modified code will look like this.

The print underscore GPIO underscore wake underscore up function takes care of finding which GPIO pin caused the wakeup you can add an if else condition to do different tasks for different GPIO pin wakeup. before uploading the code, let's wire up the two push buttons based on a schematic diagram shown on this screen. Select the appropriate resistors to connect the push button to the ESP 32 as shown. Now connect the sparkfun ESP 32 thing and upload the code openness Serial Monitor at about rate of 115200. press the buttons one by one, you should get something similar on the serial monitor summary. In this video we have covered the following topics implement external wakeup with one external interrupt, implement external wakeup with multiple interrupts. In the next video, we will implement an OLED based NTP clock that will update once every minute and be in deep sleep on all other instances.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.