Andreas, I've viewed most of your videos and have not found one yet that I did not like or did not finish. Thank you for the spreadsheet. I use the ESP devices in a manufacturing environment and like you, research their capabilities. The information you provide has helped me many times. Thanks.
Yes, effective cross-referencing can become quite difficult - in my case I can't remember what I did last week. My comment was inspired by your use of spreadsheets in this video. Hope you remain well. R
Good afternoon Andreas. I'm away for the weekend, hence the late good morning. Your work always makes me happy. As other have stated your our hero and we thank you from the bottom of our hearts
Andreas Spiess So I see from the comments. I hope we are not pushing our mentor too hard? I'm very excited with your work on the esp32. Be sure to give yourself a pat on the back and maybe you need a little break. It was indeed a good weekend and I am now back at my lab and getting my esp out👍👍
No worries. I am old enough to know, that the most valuable word is "NO". ...And the most expensive one is "AND". And if you forget to say NO, often the result is AND. Everything here happens without the word "must" ;-)
You have become one of my mentors though your videos. The ESP32 ULP processer may hold more capabilities than we think. I've been researching what little information I can find on it which seems to only have an assembler available. Hopefully more information will surface as the community gets a chance to work with it. I'm certain you will discover many of its secrets.Looking forward to more of your videos. Thank you!
I think, the assembler is the "state of the art". I hope, we will get some "snipplets" to start with or to solve typical problems like trigger on a particular analog value, or saving a few values in RTC ram between wake-ups. Already the possibilities used in this video provide some interesting possibilities.
Excellent work sir, thank you for your research! I have one of those ESP32 with the 18650 holder, last night I started testing a modified sketch, have it waking up every 30 minutes and blink a LED couple of times, started at ~4.15v and 12 hours later my battery is still at 4.05v. A day ago I was only able to get ~24 hours of total "blinky" on a single 18650, but with deep sleep this should last for days/weeks. Looking forward to see your current measurements!
These boards usually are not ideal for deep sleep because they have many parts which are not absolutely necessary and which use some current. But weeks should be ok.
I'm not sure when it changed but under the newest esp32 code you have to declare "esp_deep_sleep.h" for the sketch to work. add "#include " at the begining of the sketch and all will be ok.
Andreas i finally understood why even my esp32 was draining my battery... i powered the module with the vin pin without entering into the micro usb connector. Thank you. Marc.
Clicked to fast: @Andreas, how can you know that I'm working on a project where I basically need all of the IO pins and I was looking for what you did in the Excel Sheet!!! .. Unbelievable ;-) Many Thanks for your phanstatic work all over the place!
At the beginning, I was confused with the many possibilities of the chip. Then, I discovered a similar sheet in the data sheet of the ESP chip itself and translated it to the pins of the WROOM---
I probably will not do that extensively, because deep-sleep together with development boards, in my opinion, is not a good idea. Too many parts which just consume current and are not useful during operation...
Very interesting video as always. Please on the next video measure the current when the ESP leave sleep mode and connects to internet (like ping to custom website). I think that will be the main use of this uC and it will serve as reference for some people that want to use this device to send periodic data to a server and have to power the uC with batteries.
We will see. I think, I will not be able to use the ULP for quite some time, because it has to be programmed in assembler... I did not do this for years.
Assembler... now there is a name from the past. Must have been early 90s i did that last. Now i cant even understand my own programs from those days anymore
Watching this video made me want to dig out my ESP32 once more and see if I could make it do something. For about an hour, I messed with things trying to get the computer to recognize the blasted thing, and in the end I tossed it in the pile of junk I keep for parts to repair other items. I dug through my drawer and found one of the other ones I ordered at the the same time, (usually buy things in groups of 3) and behold, I have connection to the computer. Now I have spent the last two hours just running example sketches on the device, and giggling like a child when it actually does something. Now if I can figure out how to use the bluetooth to do something and how to use the wifi better then just making an led blink. Should not be hard to do, just have to adjust my mind from using the 8266.
eagerly awaiting the results! I have 2 boards and both were disappointing.. After I hacked the cheapest one to remove the UART and LM1117 connection to the 3v3 line I got good results ~20 microAmps
Another excellent and very interesting video. By strange coincidence I was testing deep sleep mode yesterday on a NodeMCU ESP-32S board and the best I could get was 2.3mA because of the regulator etc. (battery was connected to 3.3v pin so bypassing the regulator to a certain extent)
Hi Andreas, great again. The 150mA current seems to limit the usage on Battery mode a bit. Also using pull-up resistors must be handled with care because a 100kOhm resistor on 3.3V also draw a current of 33mA. Again I was laughing because I missed the info of the max sleep time of the esp8266 and was wondering about some strange wake-up times. Thanks again.
I know this video is 2 years old, but after all this time, very few people actually used any deep sleep timer example longer than a few minutes. The problem is that with default code, changing the time to longer than 2 hours, it breaks the code, and overflows the variable. In deep sleep example: #define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */ #define TIME_TO_SLEEP 3600 /* Time ESP32 will go to sleep (in seconds) */ Both values are saved as 32bit integer, yet esp_sleep_enable_timer_wakeup(uint64_t time_in_us) expects the 64bit value. So, you have a 70ish minutes limit before overflowing. There are 2 solutions, add ULL suffix to uS_TO_S_FACTOR value: #define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds */ OR Define all variables as uint64_t const uint64_t OneMinute = 60000000LL; // 6000000 uS = 1 minute const uint64_t MinutesInAnHour = 60LL; // 60 min = 1 hour const uint64_t SleepTimeMicroseconds = OneMinute * MinutesInAnHour * 2LL; esp_sleep_enable_timer_wakeup(SleepTimeMicroseconds); esp_deep_sleep_start(); Sources: github.com/espressif/arduino-esp32/issues/572 www.reddit.com/r/esp32/comments/95zuht/esp32_fails_to_deep_sleep_over_1_hour/ docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/sleep_modes.html
Great video again. I have used sprakfun ESP32 Thing and like you said, in one the previous videos, compiling time is much faster. Pricing is coming down as well so I think now is a good time to start working on esp32.
I am not sure how long you have to wait because for the moment, we would have to leave the Arduino IDE. And for the moment, this channel is not ready for that...
Oh on a different note, the Rally in Sturgis is warming up, thousands of Harley's are pouring in from all directions. We live 175 miles due North of Sturgis and see a lot of bike traffic through our small town.
I am using esp32 with three pzem004t sensors but when I am writing Serial3 at that time it showsSerial3 is not declared in your scope but I have defined it already so how to solve this problem?
If I remember right, I made a video about Serial on the ESP32. You have to pay attention if you want to use many Serial connections. Also check the video about the "safe" ESP32 pins. Some pins are forbidden.
Getting that ULP core to work with 1% DC and burn 25uA would be absolutely great. Might be able to get real world sensors on batteries for more than a year.
Hi Andrea! I removed the led, the current in deep sleep drops from 16 mA to 4 mA. Do you think it would be better with the LM1117 instead of the AMS1117 on the board? Tell me what do you think? Your opinion is very valuable to my eyes. Thanks a lot! :) Marc.
Great video of a professional work, well done! Can you give us a hint which ESP32 dev-board is best for deep sleep (ultra low energy consumption near to ESP32 datasheet)?
I tried to measure real current usage, but unfortunately my board (AnalogLamb) and others hve as usual a "power led" on it. So I could not realy measure ESP's sleep current without removing it. The board uses 15.7mA with a short peak at wakeup (timer sketch) up to 58mA driven by 3V3 bypassing the LDO. Waiting for your measurements with the bare board :)
great excel. But a simple question(s). Which pins support OneWire and which pins support Interrupts for Wemos LOLIN32 ? I can't seem to find any info online.
Here is the Onewire library for the ESP32: github.com/stickbreaker/OneWire And here the info concerning interrupts: techtutorialsx.com/2017/09/30/esp32-arduino-external-interrupts. Both one google search ;-)
I'm a big fan of our projects. I've been trying to incorporate deep sleep into ESP32 to wake, take sensor readings, send them via a webhook to google sheets, then go to sleep, but can't get the code to work. Are there any books/media you could suggest for me to get study to solve the problem? Thanks.
hello its me again, the guy with the welsh accent, another great video, Quick question, what is the best way to wake up and Esp32 from Deep sleep, using an FZR sensor, could i use it as a touch but reverse the threshold?
This is a particularly useful video tutorial Thank you very much. But were do we find the API definitions for these type of functions? (new guy here) No header files, no library info... Where do I go - I see we can create object Serial call begin, on the 8266 wakeup there is an ESP object that we can call deep sleep on - where are the headers or library definitions for these objects?
Could you expand on why you seem to imply things need to be written "differently". Of course lower power programming has to be adhered to but, stating you wont or can't enter the loop section confuses me. Can't deep sleep be called from out of the setup section?
@@AndreasSpiess understood, but aside from your particular example, is there anything preventing moving the deep sleep call from the end of the setup loop to anywhere in the main loop?
Great video. I'm very interested in seeing what kind of power usage you see in deep sleep on your Lolin32 board. On my Sparkfun ESP32 Thing, I could only get around 950uA (after disabling the power led); apparently the SPI Flash chip consumes around 860uA unless you add a pull up resistor to it. I would love to see what figures you get on your board.
These boards are never good for deep-sleep because they have many other components like USB to Serial chips and some sort of pull-up or - down resistors and transistors. They are not optimized for that. I will use a "bare" WROOM-32 module on a simple PCB
Andreas Spiess Then the mystery to me when using a wroom32 without usb-serial how do you flash your program to it? I also understand that without a battery power regulator you are limited to battery sources with a natural ~3.3v supply, correct?
You have to add whatever is necessary to a barebode WROOM-32. For a first flashing a USB to serial converter (later, you can use OTA update), and also a LDO for power supply. But you only add what is necessar for the operation, not more and not less. The development boards usually have "more".
Hi Andreas, First of all great video. Been following your content for a couple of months now and it is very helpful. I tried to compile the example, however I get "not declared in this scope error for" esp_deep_sleep_wakeup_cause_t. Is there a lib I need to include or something. I am a huge nood, so question might be very basic, however I already spent several hours googling around with no success so I thought asking might help. Thanks and keep up the nice vdeos
I think this command was changed in one of the newer releases. Maybe you look at the deep-sleep example of the IDE. There you should find how it works now if I remember right.
Hi I connected an external RTC (That is very low power) to the esp32. I wanna keep the external RTC runnning while ESP is on deep sleep (To save power). Can the RTC via I2C still run while the ESP is on sleep mode? How could I do that? Thank you!!
your videos are very interresting and I thank you for it. Thank you very much for all. I live in Germany. I would like to deep sleep and wake up my esp 32 through a simple remote control (with a single button) based on Bluetooth. Do you have a video about this?
@@AndreasSpiess thank you for your reply. If not another question, how to activate a PIN and disable it by Bluetooth. Because I made a device based on ESP 32 and I would like to put the motion detector (connected to the pin 22) in stop and activate it using a remote control (having a single button) through the Bluetooth.
Hello I made the program to turn on and off an LED by Bluetooth in this case I use the same LED that has the ESP32 in pin2, I added a stretch of code for the ESP32 to enter a state of deep sleep. Well, when I send the 'A' the LED will turn on and off and when I send the 'B' it goes into deep sleep, however, I still consume the same as I could send the program to see where the error is.
Unfortunately, I cannot do remote debugging. First, check if your MCU stays in deep sleep for a time. Then you have to check what development board you use. Because many boards consume a lot of energy even if the ESP32 is in deep sleep (I made some videos about it).
I am developing a vibration sensor where I am using ESP8266. My main problem right now is the power consumption, and for that reason I will have to change the communication to BLE. I need to read vibration data every 15minutes, and the battery life (1000mAh) has to be more than 1 year. From what I read from ESP32 datasheet, power consumption is high and I am not sure if I will be able to achieve my goal. I would like to know your opinion about that, and also if there is another microprocessor that is more suitable for this application.
Maybe you watch my deep sleep videos? If you need less power consumption you probably find chips from Nordic (NRF51/52. But they do not have the same community support as the ESPs.
Great video, and am really looking forward for the next one, I have a question, is there any way ,what so ever, to connect two serial devices (for example, a nextion and an A6) to ESP32? any suggestions?
Anas Omary Yes, it has three hardware serial ports and they can be routed to almost any of the pins. You have to look at the docs to see how to use them.
nobodybodybody I made a lot of research and the conclusion was that there is one hardware serial(Tx0 and Rx0) , and an additional RX1 only pin. Do u have any link on this subject to get me going in the right direction?
Anas Omary I believe you are confusing it with the ESP8266, which has one available hardware serial port + one TX only port (you can still use software serial however to get more). The ESP32 has three. The Arduino port has weak documentation at the moment, the link Andreas gave is the best starting point.
Why didn't you try the Hibernate Mode? You did not use the ULP processor anyway. RTC functionality does not require ULP processor. RTC is supported in Hibernate mode too. Power consumption is 4 times less than Deep Sleep and you can still wake up with RTC alarm.
I like most of your videos, but in this one a very important topic is omitted. What about not nominal but real power consumption of ESP32? E.g. DevKit1 consumes much more in deep sleep than it is documented, I was never able to get better than 10mA with it. DevKit1 costs roughly EUR 7.9, but the best one with surely low consumption from DFRobot costs almost EUR 32. There should be other choices in between. Could you please test them?
Most boards are not good for deep sleep because they use too much current. I made quite a few videos about that topic and we even started the "Superpower" project because of this fact.
I get the error "exit status 1 'esp_deep_sleep_wakeup_cause_t' was not declared in this scope" and so it is not possible for me to upload your "Simple Deep Sleep with Timer Wake Up" program to my ESP32 with ESP-WROOM-32 chip. " Why is esp_deep_sleep_wakeup_cause_t and esp_deep_sleep_enable_timer_wakeup not declared in your program Is there any Libary I do not have?
Hi there, great video! However, I can't seem to get "esp_deep_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK, ESP_EXT1_WAKEUP_ANY_HIGH);" to compile in Arduino IDE. It says "'esp_deep_sleep_enable_ext1_wakeup' was not declared in this scope". The EXT0 line works but EXT1 won't. Any ideas?
Ahhh, I found out I had to use "esp_sleep_enable_ext1_wakeup" instead of "esp_deep_sleep_enable_ext1_wakeup". Note the "deep" part is deleted. They must've changed the function names! Even the built-in deep sleep example is wrong then. :)
Nice video! Do you know something about light sleep on ESP32? It seems not available yet. I need that because I'm building a smartwatch with a GPS module, and active mode is too hungry. Deep sleep is too inconvenient, because it doesn't seem a good idea to reset the module every second. Light sleep would be a good compromise.
I never worked with light sleep. Not with the ESP8266 and not with the ESP32. Why do you think, it is not good to reset a board every second. Nothing wears out. It is just code.
As my application has a user interface and a lot of functionalities, it will take time booting and setting it up, and will take more energy than keeping it active. Maybe if I use RTC mem to keep my variables. Anyway, I dont know if I can wake it up when serial data gets in without loosing data.
Update: newer versions of the tools now include light-sleep functions. It works just like deep-sleep, but do not boot the chip and have a faster recovery time.
You can use filter then click the drop down for the column you want to arrange and select A-Z or Z-A for column ordering. Much quicker for the same result :-)
hello excellent video I have a question about the ESP32 and it is not related to the video How can i create new custom memory partitions? Greetings from Colombia
You should find the answer using Google (eg. iotespresso.com/how-to-set-partitions-in-esp32/ ). Plus: The Arduino IDE supports already many different configurations.
I Have a ESP32 WROOM 32D and I downloaded your code and get error get 'esp_deep_sleep_wakeup_cause_t' was not declared in this scope. Can you Help? Thanks.
Hi, thank you for these videos! they are amazing! I'm facing a challenge with the ESP32 Dev Module, if I don't have the sensors connected to it, I can flash it from Arduino just fine, then I connect the sensors and everything is ok. But If I already soldered the ESP32 Dev Board to the sensor I cannot flash it anymore from Arduino. Is there any way around this behavior? How do people do upgrades after they have soldered their ESP32 to their pcbs? thanks!
Does the ESP32 completely turn off WiFi when you use "WiFi.mode(WIFI_OFF)"? It doesn't compile with "WiFi.forceSleepBegin()" like the ESP8266. Also, how to turn WiFi back on? I used "WiFi.mode(WIFI_OFF)" and since then my WiFi hasn't been able to connect to a network anymore. Also, you mentioned that RTC memory only survives deep sleep but not hard reset. Is there a way to make it survive reset like it did on ESP8266? Thanks!
1. I would assume you just use WiFi.begin to start WiFi again. But I did not investigate. 2. RTC does not survive power down. AFAIK it survives a reset.
Hello I have a program that turns on and off a led by bluetooth and the delay is by bluetooth too but when I send the signal so that the led begins to blink and send the signal to give the delay, I want to disable the common radio block for bluetooth and wifi so that the battery lasts longer, nothing more than that block so that the led keeps flashing, what command would use and where in the program would put it
And again, a lot of information in a very well structured video. Brilliant! Thank you very much for all the time and effort you put in the videos.
You are welcome!
Andreas, I've viewed most of your videos and have not found one yet that I did not like or did not finish. Thank you for the spreadsheet. I use the ESP devices in a manufacturing environment and like you, research their capabilities. The information you provide has helped me many times. Thanks.
Thank you for your nice words and your support!
This has been the best video on ESP32 and deep sleep I have found. Thank you Andreas
You are welcome!
You are going to need a spreadsheet to cross reference the videos soon. Nice job again!
Thanks! For the moment, I try with playlists. And I think, UA-cam Search also can help because I try to include good search terms.
Yes, effective cross-referencing can become quite difficult - in my case I can't remember what I did last week. My comment was inspired by your use of spreadsheets in this video. Hope you remain well. R
Great jobs as always. Thank you so much for your efforts. YOU ARE THE MAN!!
Thanks!
The master tutor does it again. Thanks Andreas.
Thank you for your nice words!
Good afternoon Andreas. I'm away for the weekend, hence the late good morning.
Your work always makes me happy. As other have stated your our hero and we thank you from the bottom of our hearts
I hope, you enjoyed your WE. I was also late this morning. Had to get some sleep after working long last night...
Andreas Spiess So I see from the comments.
I hope we are not pushing our mentor too hard?
I'm very excited with your work on the esp32.
Be sure to give yourself a pat on the back and maybe you need a little break.
It was indeed a good weekend and I am now back at my lab and getting my esp out👍👍
No worries. I am old enough to know, that the most valuable word is "NO". ...And the most expensive one is "AND". And if you forget to say NO, often the result is AND.
Everything here happens without the word "must" ;-)
Quality reply, I laughed a lot at that
You have become one of my mentors though your videos. The ESP32 ULP processer may hold more capabilities than we think. I've been researching what little information I can find on it which seems to only have an assembler available. Hopefully more information will surface as the community gets a chance to work with it. I'm certain you will discover many of its secrets.Looking forward to more of your videos. Thank you!
I think, the assembler is the "state of the art". I hope, we will get some "snipplets" to start with or to solve typical problems like trigger on a particular analog value, or saving a few values in RTC ram between wake-ups. Already the possibilities used in this video provide some interesting possibilities.
"is... like that."
Looking forward to the current measurements in the next video! Hopefully it will run for years and years to come
Depends on the battery size ;-)
Thank you. Looking forward to getting my ESP32 and I'm sure your spreadsheet will really help and save me a lot of time. Best wishes, Arthur
You are welcome! I think, it is really a step-up compared to the ESP8266, at small additional cost.
Good morning Andreas! Woke up early to see your latest video. Thanks and have a nice day!
It is more "good night"... Just finished the video at 4 am
Andreas Spiess - here it's not even 4am ;-)
Sleep well then...
P.S. Touch button wake-up looks quite useful.
Going to sleep now...
Thanks again for a great video! I really enjoy the ones focussing on the ESP's (8266 and 32) and they're a great help. Keep 'em coming!
You are welcome!
Großartiger Inhalt, tolle, durchdachte Präsentation.
Danke!
Thank you for the great videos on the ESP32! Please keep them coming.
:-)
Thank you master! You are very generous sharing your amazing knowhow with us.
You are welcome!
Excellent work sir, thank you for your research! I have one of those ESP32 with the 18650 holder, last night I started testing a modified sketch, have it waking up every 30 minutes and blink a LED couple of times, started at ~4.15v and 12 hours later my battery is still at 4.05v. A day ago I was only able to get ~24 hours of total "blinky" on a single 18650, but with deep sleep this should last for days/weeks. Looking forward to see your current measurements!
These boards usually are not ideal for deep sleep because they have many parts which are not absolutely necessary and which use some current. But weeks should be ok.
I'm not sure when it changed but under the newest esp32 code you have to declare "esp_deep_sleep.h" for the sketch to work.
add "#include " at the begining of the sketch and all will be ok.
Thanks for the tip!
still the error: 'esp_deep_sleep_get_ext1_wakeup_status' was not declared in this scope
:-( thanks
I found the solution: esp_sleep_get_ext1_wakeup_status()
:-)
I found the solution here actually: www.lucadentella.it/en/2018/01/22/esp32-29-deep-sleep/
Interesting to know that it can go into deep sleep for several years and that it hardly consumes any power.
Great video !
Thanks!
As always, that was a great tutorial. Thanks for taking the time to make such great videos.
You are welcome! It is my pleasure.
Andreas i finally understood why even my esp32 was draining my battery... i powered the module with the vin pin without entering into the micro usb connector. Thank you. Marc.
:-)
Clicked to fast: @Andreas, how can you know that I'm working on a project where I basically need all of the IO pins and I was looking for what you did in the Excel Sheet!!! ..
Unbelievable ;-) Many Thanks for your phanstatic work all over the place!
At the beginning, I was confused with the many possibilities of the chip. Then, I discovered a similar sheet in the data sheet of the ESP chip itself and translated it to the pins of the WROOM---
Great video, you're saving us from having to read through all the documentation, thanks!
You are welcome! You are probably right ;-)
these videos are gold
Thank you!
I got caught out with GPIO and RTC_GPIO confusion, thanks for explaining boss
:-)
it's nicely done. in the next video please also compare Current consumption of different ESP32 boards and bare WROOM board.
I probably will not do that extensively, because deep-sleep together with development boards, in my opinion, is not a good idea. Too many parts which just consume current and are not useful during operation...
0:22 yes, we are very interested! :D
Thanks for posting this, Andreas!
You are welcome!
Very interesting video as always. Please on the next video measure the current when the ESP leave sleep mode and connects to internet (like ping to custom website). I think that will be the main use of this uC and it will serve as reference for some people that want to use this device to send periodic data to a server and have to power the uC with batteries.
We will see. I think, I will not be able to use the ULP for quite some time, because it has to be programmed in assembler... I did not do this for years.
Assembler... now there is a name from the past. Must have been early 90s i did that last. Now i cant even understand my own programs from those days anymore
Thank you so much. I have a esp32 on the way to me, and this information is very interesting.
So, you can try it right away when it arrives!
Very informative and a great spreadsheet.
:-)
Very informative. Thank you for making these videos. Greatly appreciated :)
Thanks!
Watching this video made me want to dig out my ESP32 once more and see if I could make it do something. For about an hour, I messed with things trying to get the computer to recognize the blasted thing, and in the end I tossed it in the pile of junk I keep for parts to repair other items. I dug through my drawer and found one of the other ones I ordered at the the same time, (usually buy things in groups of 3) and behold, I have connection to the computer. Now I have spent the last two hours just running example sketches on the device, and giggling like a child when it actually does something. Now if I can figure out how to use the bluetooth to do something and how to use the wifi better then just making an led blink. Should not be hard to do, just have to adjust my mind from using the 8266.
Wi-Fi should be no problem. Bluetooth seems to be harder with the Arduino IDE...
thats good to know. Was considering a switch from 8266 to 32 especially for bluetooth. Maybe i should wait
eagerly awaiting the results!
I have 2 boards and both were disappointing.. After I hacked the cheapest one to remove the UART and LM1117 connection to the 3v3 line I got good results ~20 microAmps
Usually I use bare boards for deep sleep experiments.
Another excellent and very interesting video. By strange coincidence I was testing deep sleep mode yesterday on a NodeMCU ESP-32S board and the best I could get was 2.3mA because of the regulator etc. (battery was connected to 3.3v pin so bypassing the regulator to a certain extent)
This is not surprising. The same as with the ESP8266 boards...
Just found your channel. Excellent stuff, thanks and subscribed!
Welcome aboard the channel!
Thanks Andreas, your videos are more informative ,
You are welcome!
Very interesting, but wake up from internal RTC is a very good feature I miss in your video.
Thank you. Saying "no" is the most important thing for interesting UA-cam videos. Otherwise they get too long.
Thanks for the insights Andreas!
You are welcome!
Andreas, i have got the rev.1 and the deep sleep works perfect!!! Thank you...
+Marc Paradis :-)
My ESP32 is up and running Thank you.
🙂
Hi Andreas, great again. The 150mA current seems to limit the usage on Battery mode a bit. Also using pull-up resistors must be handled with care because a 100kOhm resistor on 3.3V also draw a current of 33mA. Again I was laughing because I missed the info of the max sleep time of the esp8266 and was wondering about some strange wake-up times. Thanks again.
I think, you mixed milli with micro (or I made an error in the video). Then, everything is a factor of thousand smaller...
I know this video is 2 years old, but after all this time, very few people actually used any deep sleep timer example longer than a few minutes.
The problem is that with default code, changing the time to longer than 2 hours, it breaks the code, and overflows the variable.
In deep sleep example:
#define uS_TO_S_FACTOR 1000000 /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 3600 /* Time ESP32 will go to sleep (in seconds) */
Both values are saved as 32bit integer, yet esp_sleep_enable_timer_wakeup(uint64_t time_in_us) expects the 64bit value. So, you have a 70ish minutes limit before overflowing.
There are 2 solutions, add ULL suffix to uS_TO_S_FACTOR value:
#define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds */
OR
Define all variables as uint64_t
const uint64_t OneMinute = 60000000LL; // 6000000 uS = 1 minute
const uint64_t MinutesInAnHour = 60LL; // 60 min = 1 hour
const uint64_t SleepTimeMicroseconds = OneMinute * MinutesInAnHour * 2LL;
esp_sleep_enable_timer_wakeup(SleepTimeMicroseconds);
esp_deep_sleep_start();
Sources:
github.com/espressif/arduino-esp32/issues/572
www.reddit.com/r/esp32/comments/95zuht/esp32_fails_to_deep_sleep_over_1_hour/
docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/sleep_modes.html
You are right. Maybe somebody reports it as an error in the ESP32 Github?
Excellent video! Thanks Andreas!
You are welcome!
Great video again. I have used sprakfun ESP32 Thing and like you said, in one the previous videos, compiling time is much faster. Pricing is coming down as well so I think now is a good time to start working on esp32.
dachoeks3 Which board is faster to flash? The Sparkfun Thing or another? Which other board are you comparing the Sparkfun to?
Compiling for ESP32 Thing is much faster compared to regular esp8266.
That is also my impression. This is why I started the coverage now.
Your Videos are Gold
Thank you!
Once again, a very good and instructional video. Looking forward to your next episode. Now, go and get some sleep. :-)
Back again after breakfast...
Franchement, toujours aussi passionnant. J'apprend beaucoup grâce à toi. Merci pour tout ce temps passé. Cheers.
Pas de quoi
Bonjour
Waiting for ulp
Great video as always
I am not sure how long you have to wait because for the moment, we would have to leave the Arduino IDE. And for the moment, this channel is not ready for that...
Oh on a different note, the Rally in Sturgis is warming up, thousands of Harley's are pouring in from all directions. We live 175 miles due North of Sturgis and see a lot of bike traffic through our small town.
Great for you. I will go to a smaller event in Austria in September... But one day, I will make it to Sturgis.😀
ESP32 is so superior, I bought one for just 3 dollars... so amazing little thing
Dominik Mičuta $3? I remember when it was much more expensive than an ESP8266, now it's almost on par. That's awesome!
That is why I started my videos...
Bad review. At 4:45 you didn't take into account leapyears. Now I'm 388 years short. I really needed them, you know.
are right: 388 year is a lot. Sorry for that ;-)
I am using esp32 with three pzem004t sensors but when I am writing Serial3 at that time it showsSerial3 is not declared in your scope but I have defined it already so how to solve this problem?
If I remember right, I made a video about Serial on the ESP32. You have to pay attention if you want to use many Serial connections. Also check the video about the "safe" ESP32 pins. Some pins are forbidden.
Getting that ULP core to work with 1% DC and burn 25uA would be absolutely great. Might be able to get real world sensors on batteries for more than a year.
Many new possibilities with this chip to explore...
Hi Andrea! I removed the led, the current in deep sleep drops from 16 mA to 4 mA.
Do you think it would be better with the LM1117 instead of the AMS1117 on the board?
Tell me what do you think?
Your opinion is very valuable to my eyes.
Thanks a lot! :)
Marc.
Great video of a professional work, well done! Can you give us a hint which ESP32 dev-board is best for deep sleep (ultra low energy consumption near to ESP32 datasheet)?
No, not yet. A video should come...
great video as usual, vielen dank.
Bitte, gern geschehen!
I tried to measure real current usage, but unfortunately my board (AnalogLamb) and others hve as usual a "power led" on it.
So I could not realy measure ESP's sleep current without removing it.
The board uses 15.7mA with a short peak at wakeup (timer sketch) up to 58mA driven by 3V3 bypassing the LDO.
Waiting for your measurements with the bare board :)
What does RTC stand for?
P.S.: Sweet video as always
Real time clock
@@AndreasSpiess Thanks!
top!
bin auf die fortsetztung gespannt ... ggf gibt es ja ein wenig zum thema WPS.
einen schönen sonntag
Ich hab noch nie mit WPS gearbeitet. Mal sehen...
:-) wäre super !
great excel. But a simple question(s). Which pins support OneWire and which pins support Interrupts for Wemos LOLIN32 ? I can't seem to find any info online.
Here is the Onewire library for the ESP32: github.com/stickbreaker/OneWire And here the info concerning interrupts: techtutorialsx.com/2017/09/30/esp32-arduino-external-interrupts. Both one google search ;-)
Thank you Andreas !
You are welcome!
Great, thank you 👍
You are welcome!
Very very nice. Thank you.
You are welcome!
I'm a big fan of our projects. I've been trying to incorporate deep sleep into ESP32 to wake, take sensor readings, send them via a webhook to google sheets, then go to sleep, but can't get the code to work. Are there any books/media you could suggest for me to get study to solve the problem? Thanks.
I do not know of books. I would first try to understand where in the code the problem occurs and then search for a solution.
Well explanatory
Thanks!
Hey, can't find the xls sheet. Actually am evaluating the esp32 for an industrial/iot application, that info seems pretty neat.
Go to the GitHub link under Sketches:
I added a direct link to the comments
Thank you ! very interesting
Thank you!
Andreas thank you for video
You are welcome!
hello its me again, the guy with the welsh accent, another great video, Quick question, what is the best way to wake up and Esp32 from Deep sleep, using an FZR sensor, could i use it as a touch but reverse the threshold?
I do not know FZR sensors. The ESP32 has many wake-up possibilities. Maybe you google to find the right one for you?
@@AndreasSpiess thankyou sir. I resolved this issue. I ment ''fsr'' force sensing resistors. It worked with the ext0. Thankyou for your time.
Hey Andreas. Just watching your ESP32 playlist, and I suspect you got ordering of videos wrong :) This episode is listed before the #147 one.
I changed the sorting now. Hopefully right this time
Now they're in reverse order, #152 listed first and #103 last. Sorry for the nagging :)
Changed
Thanx
This is a particularly useful video tutorial Thank you very much. But were do we find the API definitions for these type of functions? (new guy here) No header files, no library info... Where do I go - I see we can create object Serial call begin, on the 8266 wakeup there is an ESP object that we can call deep sleep on - where are the headers or library definitions for these objects?
There we are - arduino-esp8266.readthedocs.io
Could you expand on why you seem to imply things need to be written "differently". Of course lower power programming has to be adhered to but, stating you wont or can't enter the loop section confuses me. Can't deep sleep be called from out of the setup section?
After calling deep sleep the ESP goes to sleep. At wake up it boots.
@@AndreasSpiess understood, but aside from your particular example, is there anything preventing moving the deep sleep call from the end of the setup loop to anywhere in the main loop?
Great video. I'm very interested in seeing what kind of power usage you see in deep sleep on your Lolin32 board. On my Sparkfun ESP32 Thing, I could only get around 950uA (after disabling the power led); apparently the SPI Flash chip consumes around 860uA unless you add a pull up resistor to it. I would love to see what figures you get on your board.
These boards are never good for deep-sleep because they have many other components like USB to Serial chips and some sort of pull-up or - down resistors and transistors. They are not optimized for that. I will use a "bare" WROOM-32 module on a simple PCB
Andreas Spiess Then the mystery to me when using a wroom32 without usb-serial how do you flash your program to it? I also understand that without a battery power regulator you are limited to battery sources with a natural ~3.3v supply, correct?
You have to add whatever is necessary to a barebode WROOM-32. For a first flashing a USB to serial converter (later, you can use OTA update), and also a LDO for power supply. But you only add what is necessar for the operation, not more and not less. The development boards usually have "more".
Andreas Spiess thanks for the helpful information! I look forward to your next video!
Hi Andreas,
First of all great video. Been following your content for a couple of months now and it is very helpful.
I tried to compile the example, however I get "not declared in this scope error for" esp_deep_sleep_wakeup_cause_t.
Is there a lib I need to include or something. I am a huge nood, so question might be very basic, however I already spent several hours googling around with no success so I thought asking might help.
Thanks and keep up the nice vdeos
I think this command was changed in one of the newer releases. Maybe you look at the deep-sleep example of the IDE. There you should find how it works now if I remember right.
Thank you for the feedback. I will look at the examples, hopefully I find out how it works.
Hi I connected an external RTC (That is very low power) to the esp32. I wanna keep the external RTC runnning while ESP is on deep sleep (To save power). Can the RTC via I2C still run while the ESP is on sleep mode? How could I do that? Thank you!!
You need to use interrupt pins to wake the ESP. Or you can try to use the ULP (not easy). Google should be able to help you
your videos are very interresting and I thank you for it. Thank you very much for all. I live in Germany. I would like to deep sleep and wake up my esp 32 through a simple remote control (with a single button) based on Bluetooth. Do you have a video about this?
BLE does not work during deep sleep
@@AndreasSpiess thank you for your reply. If not another question, how to activate a PIN and disable it by Bluetooth. Because I made a device based on ESP 32 and I would like to put the motion detector (connected to the pin 22) in stop and activate it using a remote control (having a single button) through the Bluetooth.
You have to have an external BLE receiver which is capable to listen and switch the pin. Quite complicated, I think.
Very very good!
Thanks!
Hello I made the program to turn on and off an LED by Bluetooth in this case I use the same LED that has the ESP32 in pin2, I added a stretch of code for the ESP32 to enter a state of deep sleep. Well, when I send the 'A' the LED will turn on and off and when I send the 'B' it goes into deep sleep, however, I still consume the same as I could send the program to see where the error is.
Unfortunately, I cannot do remote debugging. First, check if your MCU stays in deep sleep for a time. Then you have to check what development board you use. Because many boards consume a lot of energy even if the ESP32 is in deep sleep (I made some videos about it).
I am developing a vibration sensor where I am using ESP8266.
My main problem right now is the power consumption, and for that reason I will have to change the communication to BLE.
I need to read vibration data every 15minutes, and the battery life (1000mAh) has to be more than 1 year.
From what I read from ESP32 datasheet, power consumption is high and I am not sure if I will be able to achieve my goal.
I would like to know your opinion about that, and also if there is another microprocessor that is more suitable for this application.
Maybe you watch my deep sleep videos? If you need less power consumption you probably find chips from Nordic (NRF51/52. But they do not have the same community support as the ESPs.
Grüezi Andreas ! Sorry to bother you, but the thing is locked again ... (Another) Great video !
Should be unlocked now...
Great video, and am really looking forward for the next one, I have a question, is there any way ,what so ever, to connect two serial devices (for example, a nextion and an A6) to ESP32? any suggestions?
Anas Omary Yes, it has three hardware serial ports and they can be routed to almost any of the pins. You have to look at the docs to see how to use them.
nobodybodybody I made a lot of research and the conclusion was that there is one hardware serial(Tx0 and Rx0) , and an additional RX1 only pin. Do u have any link on this subject to get me going in the right direction?
The WifiTelnetToSerial example shows how you can do it (HardwareSerial Serial1(2); // UART1/Serial1 pins 16,17)
Anas Omary I believe you are confusing it with the ESP8266, which has one available hardware serial port + one TX only port (you can still use software serial however to get more). The ESP32 has three. The Arduino port has weak documentation at the moment, the link Andreas gave is the best starting point.
Thanks alot for the info, I will definitely check that out as I need it for an upcoming project. Cheers!
Why didn't you try the Hibernate Mode? You did not use the ULP processor anyway. RTC functionality does not require ULP processor. RTC is supported in Hibernate mode too. Power consumption is 4 times less than Deep Sleep and you can still wake up with RTC alarm.
The data sheet was not completely clear which number applies. So, I took the (cautious) bigger one. We will see when we measure it in reality.
Hi this is a great tutorial is there any documentation on how to get the bitmask for different pins
I do not know.
I didn't see a current comparison between the deep sleep modes of 8266 Vs ESP32. Does the 32 use less during deep sleep?
I will do real measurements in a later video.
Thanks for sharing.
:-)
I like most of your videos, but in this one a very important topic is omitted. What about not nominal but real power consumption of ESP32? E.g. DevKit1 consumes much more in deep sleep than it is documented, I was never able to get better than 10mA with it. DevKit1 costs roughly EUR 7.9, but the best one with surely low consumption from DFRobot costs almost EUR 32. There should be other choices in between. Could you please test them?
Most boards are not good for deep sleep because they use too much current. I made quite a few videos about that topic and we even started the "Superpower" project because of this fact.
@@AndreasSpiess Dear Andreas, I would be grateful if you could share a link to one of those videos, where you test ESP32.
For that look at Birds work, have a Nice Day.:)
:-))
I get the error
"exit status 1
'esp_deep_sleep_wakeup_cause_t' was not declared in this scope"
and so it is not possible for me to upload your "Simple Deep Sleep with Timer Wake Up" program to my ESP32 with ESP-WROOM-32 chip.
" Why is esp_deep_sleep_wakeup_cause_t and esp_deep_sleep_enable_timer_wakeup not declared in your program Is there any Libary I do not have?
I have just found the missing lbrary in Andrears program (Simple Deep Sleep with Timer Wake Up)
it is :
"#include "
;o)
Congrats for tutorial. Do you know how much is current on deep sleep? Sorry my English.
It depends which board you use. The ESP32 alone needs a few microAmpere in deep sleep.
Hi there, great video! However, I can't seem to get "esp_deep_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK, ESP_EXT1_WAKEUP_ANY_HIGH);" to compile in Arduino IDE. It says "'esp_deep_sleep_enable_ext1_wakeup' was not declared in this scope". The EXT0 line works but EXT1 won't. Any ideas?
Ahhh, I found out I had to use "esp_sleep_enable_ext1_wakeup" instead of "esp_deep_sleep_enable_ext1_wakeup". Note the "deep" part is deleted. They must've changed the function names! Even the built-in deep sleep example is wrong then. :)
Thanks for the info!
Nice video! Do you know something about light sleep on ESP32? It seems not available yet. I need that because I'm building a smartwatch with a GPS module, and active mode is too hungry. Deep sleep is too inconvenient, because it doesn't seem a good idea to reset the module every second. Light sleep would be a good compromise.
I never worked with light sleep. Not with the ESP8266 and not with the ESP32. Why do you think, it is not good to reset a board every second. Nothing wears out. It is just code.
As my application has a user interface and a lot of functionalities, it will take time booting and setting it up, and will take more energy than keeping it active. Maybe if I use RTC mem to keep my variables. Anyway, I dont know if I can wake it up when serial data gets in without loosing data.
Update: newer versions of the tools now include light-sleep functions. It works just like deep-sleep, but do not boot the chip and have a faster recovery time.
What is the callback function included on the touchpad wakeup??
You can add whatever you want to happen if you touch the respective pad
Andreas, i don't quite understand the bitmask, what if i want to wake up the pins 32 & 33 ?
thank you.
Marc.
Each pin has its own "mask". If you want 32/33, you have to set bit 32 and 33 in this mask to high (0x600000000 if I did not a miscalculation).
Andreas Spiess thank you Andreas. YOU are my hero :)
Andreas Spiess the bits 0000 0000 (what are gpio from bit 7 to 0) please ?? :) thank you. Marc.
Your don't have to sort your spreadsheet Andreas, just use the Filter button to see the particular rows you require
I use filter and sort for different reasons. If I want the column in order, I think, I have to use sort.
You can use filter then click the drop down for the column you want to arrange and select A-Z or Z-A for column ordering. Much quicker for the same result :-)
hello excellent video
I have a question about the ESP32 and it is not related to the video
How can i create new custom memory partitions?
Greetings from Colombia
You should find the answer using Google (eg. iotespresso.com/how-to-set-partitions-in-esp32/ ). Plus: The Arduino IDE supports already many different configurations.
@@AndreasSpiess thank you very much for your help
I Have a ESP32 WROOM 32D and I downloaded your code and get error get 'esp_deep_sleep_wakeup_cause_t' was not declared in this scope.
Can you Help? Thanks.
They changed the commands. Here you should fin the new ones: randomnerdtutorials.com/esp32-deep-sleep-arduino-ide-wake-up-sources/
Hi, thank you for these videos! they are amazing! I'm facing a challenge with the ESP32 Dev Module, if I don't have the sensors connected to it, I can flash it from Arduino just fine, then I connect the sensors and everything is ok. But If I already soldered the ESP32 Dev Board to the sensor I cannot flash it anymore from Arduino. Is there any way around this behavior? How do people do upgrades after they have soldered their ESP32 to their pcbs? thanks!
You can do OTA downloads.
Does the ESP32 completely turn off WiFi when you use "WiFi.mode(WIFI_OFF)"? It doesn't compile with "WiFi.forceSleepBegin()" like the ESP8266. Also, how to turn WiFi back on? I used "WiFi.mode(WIFI_OFF)" and since then my WiFi hasn't been able to connect to a network anymore.
Also, you mentioned that RTC memory only survives deep sleep but not hard reset. Is there a way to make it survive reset like it did on ESP8266?
Thanks!
1. I would assume you just use WiFi.begin to start WiFi again. But I did not investigate.
2. RTC does not survive power down. AFAIK it survives a reset.
Hmmmm as far as I can tell the "RTC_DATA_ATTR" variables are not surviving hard reset but they are surviving deep sleep wake up.
Awesome!
:-)
Hello I have a program that turns on and off a led by bluetooth and the delay is by bluetooth too but when I send the signal so that the led begins to blink and send the signal to give the delay, I want to disable the common radio block for bluetooth and wifi so that the battery lasts longer, nothing more than that block so that the led keeps flashing, what command would use and where in the program would put it
I do not know because your setup seems to be quite complex.
Can I wake up esp32 from deep sleep sending a Bluetooth packet? Is there some configuration to make it happen?
No. The Radio is off during "Deep" sleep.
Andreas Spiess ok thanks. I cannot either receive the Bluetooth packet when it wakes up (like mqtt retain) right?