Implementing an OLED NTP Clock with Deep Sleep using 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
€67.10
List Price:  €95.86
You save:  €28.76
£55.67
List Price:  £79.54
You save:  £23.86
CA$100.49
List Price:  CA$143.56
You save:  CA$43.07
A$111.96
List Price:  A$159.95
You save:  A$47.99
S$94.87
List Price:  S$135.54
You save:  S$40.66
HK$544.16
List Price:  HK$777.41
You save:  HK$233.24
CHF 62.56
List Price:  CHF 89.37
You save:  CHF 26.81
NOK kr792.29
List Price:  NOK kr1,131.89
You save:  NOK kr339.60
DKK kr500.54
List Price:  DKK kr715.08
You save:  DKK kr214.54
NZ$123.74
List Price:  NZ$176.78
You save:  NZ$53.04
د.إ257.07
List Price:  د.إ367.26
You save:  د.إ110.19
৳8,330.24
List Price:  ৳11,900.85
You save:  ৳3,570.61
₹5,945.56
List Price:  ₹8,494.03
You save:  ₹2,548.46
RM315.51
List Price:  RM450.75
You save:  RM135.24
₦108,149.19
List Price:  ₦154,505.46
You save:  ₦46,356.27
₨19,403.53
List Price:  ₨27,720.51
You save:  ₨8,316.98
฿2,393.75
List Price:  ฿3,419.79
You save:  ฿1,026.04
₺2,454.67
List Price:  ₺3,506.82
You save:  ₺1,052.15
B$425.95
List Price:  B$608.53
You save:  B$182.58
R1,282.09
List Price:  R1,831.63
You save:  R549.54
Лв131.15
List Price:  Лв187.37
You save:  Лв56.21
₩101,234.93
List Price:  ₩144,627.53
You save:  ₩43,392.60
₪254.67
List Price:  ₪363.83
You save:  ₪109.16
₱4,117.86
List Price:  ₱5,882.91
You save:  ₱1,765.05
¥10,949.58
List Price:  ¥15,642.93
You save:  ¥4,693.35
MX$1,405.49
List Price:  MX$2,007.92
You save:  MX$602.43
QR254.12
List Price:  QR363.05
You save:  QR108.92
P963.49
List Price:  P1,376.48
You save:  P412.98
KSh8,999.72
List Price:  KSh12,857.29
You save:  KSh3,857.57
E£3,561.31
List Price:  E£5,087.81
You save:  E£1,526.49
ብር8,689.79
List Price:  ብር12,414.52
You save:  ብር3,724.72
Kz64,250.82
List Price:  Kz91,790.82
You save:  Kz27,540
CLP$69,143.42
List Price:  CLP$98,780.55
You save:  CLP$29,637.13
CN¥510.67
List Price:  CN¥729.56
You save:  CN¥218.89
RD$4,244.94
List Price:  RD$6,064.47
You save:  RD$1,819.52
DA9,440.04
List Price:  DA13,486.35
You save:  DA4,046.31
FJ$162.13
List Price:  FJ$231.62
You save:  FJ$69.49
Q537.12
List Price:  Q767.35
You save:  Q230.22
GY$14,584.29
List Price:  GY$20,835.60
You save:  GY$6,251.30
ISK kr9,693.35
List Price:  ISK kr13,848.23
You save:  ISK kr4,154.88
DH701.59
List Price:  DH1,002.31
You save:  DH300.72
L1,285.64
List Price:  L1,836.70
You save:  L551.06
ден4,127.89
List Price:  ден5,897.23
You save:  ден1,769.34
MOP$558.06
List Price:  MOP$797.27
You save:  MOP$239.20
N$1,283.39
List Price:  N$1,833.49
You save:  N$550.10
C$2,565.21
List Price:  C$3,664.75
You save:  C$1,099.53
रु9,482.30
List Price:  रु13,546.73
You save:  रु4,064.42
S/259.58
List Price:  S/370.84
You save:  S/111.26
K282.68
List Price:  K403.85
You save:  K121.16
SAR262.90
List Price:  SAR375.59
You save:  SAR112.68
ZK1,929.21
List Price:  ZK2,756.13
You save:  ZK826.92
L333.95
List Price:  L477.10
You save:  L143.14
Kč1,686.22
List Price:  Kč2,408.98
You save:  Kč722.76
Ft27,781.83
List Price:  Ft39,690.03
You save:  Ft11,908.20
SEK kr772.17
List Price:  SEK kr1,103.14
You save:  SEK kr330.97
ARS$71,242.69
List Price:  ARS$101,779.64
You save:  ARS$30,536.94
Bs481.71
List Price:  Bs688.19
You save:  Bs206.47
COP$305,135.87
List Price:  COP$435,927.07
You save:  COP$130,791.20
₡35,171.10
List Price:  ₡50,246.58
You save:  ₡15,075.48
L1,769.55
List Price:  L2,528.04
You save:  L758.48
₲543,563.42
List Price:  ₲776,552.46
You save:  ₲232,989.03
$U3,109.25
List Price:  $U4,441.97
You save:  $U1,332.72
zł286.15
List Price:  zł408.81
You save:  zł122.65
Already have an account? Log In

Transcript

Video implementing an OLED display based NTP clock with deep sleep using the sparkfun ESP 32 thing. In this video, we will create an OLED display based NTP clock, which will wake up from deep sleep to synchronize an update once every minute. We will also display the current date on the OLED display. Finally, we will give you an activity to incorporate GPS location service to this project, and implement deep sleep in it yourself. The idea of timekeeping is of prime concern in many applications. For example, imagine a data logger that has to store values at regular intervals, or a relay that has to activate at a certain time.

We generally use a real time clock module to keep track of the time but there are several disadvantages in using an RTC module for projects. For instance, They need to be manually synchronized regularly to avoid errors in timings. Furthermore, they require a separate power source, like a button cell. At some point in time, we will need to replace the battery. As the ESP 32 can connect wirelessly to the internet. The easiest solution is to use the internet itself to keep track of the time.

The solution here is to use Network Time Protocol with which you can get precise date and time for free that too without the need for any additional hardware. Furthermore, unlike the RTC module, you don't need to worry about additional power or manual synchronization when using NTP. So what is NTP? It's a standard internet protocol for synchronizing the computer clocks to some reference over the network. The NTP system is based on internet time servers. These are computers with access to atomic clocks, such as those operated by the US government.

NTP uses a hierarchical architecture. Each level in the hierarchy is known as a stratum. At the very top are high precision timekeeping devices, such as atomic clocks, GPS, or radio clocks, known as stratum zero hardware clocks. stratum one servers have a direct connection to a stratum zero hardware clock and therefore, have the most accurate time. Each stratum in the hierarchy synchronizes to the stratum about an act as servers for lower stratum computers. Now let us look at how the NTP works.

First, the client device such as ESP 32, connects to the server using the User Datagram Protocol on port 123. Then the client transmits a request packet to an NTP server in response to the trigger. The NTP server sends a timestamp packet. The timestamp packet contains multiple information like Unix timestamp, accuracy, delay or timezone. Finally, the client can then parse out current date and time values. Now let's start the project.

Now open the NTP, O led underscore deep underscore sleep dot i n o file from the downloaded repository. I will now explain the code. The code starts with the macro definitions for the conversion factor for the deep sleep. Here we will deep stream for 58 seconds. The Wi Fi dot hedge library provides ESP 32 specific weifare methods, which helps us to connect to the network while the time dot hedge is the native time library of ESP 32 which does NTP server synchronization. The library for ITC o led screen is important and later it's configured with its eye to see address and as the STL pen definitions Next, we set up the constants like SSID and Wi Fi password.

Modify the code to add your SSID and WiFi password. Next, we need to specify the address of the NTP server. We wish to use pool dot NTP dot o RG is an open NTP project, which is great for projects like this. The pool dot NTP dot o RG automatically picks time servers, which are geographically close to you. But if you want to choose explicitly use one of the sub zones of pool dot NTP dot o RG now we need to adjust the UTC offset for your time zone in milliseconds. Refer the list of UTC time offsets given in resources section So please change the daylight savings time offset in milliseconds.

If your country does not observe daylight saving time, then set it to zero. For now, skip the print local time function definition. As this is a deep sleep sketch, we need to put the whole code inside the setup function and leave the loop function empty. At the beginning of the setup loop. we configure the serial monitor, enable and set the deep sleep timer for 58 seconds and initialize the O LED display. Next, we print the SSID and check in wait for the connections to establish the status of the connection and synchronization is displayed on the OLED display.

The conflict time function accepts these three parameters and configures the synchronization between the client and the NTP server. Then the print local time function is called which will show the current date and time on The LCD display. I will explain the working of this function at the end. After the O LED display shows the updated time after wakeup these functions disconnect and disable the Wi Fi to save power. This is to reduce the idle power consumption of the ESP 32. Finally, it will flush the serial buffer and makes the ESP 32.

To go into deep sleep mode 158 seconds pass the core wakes up again and do all these tasks in two seconds and goes to deep sleep. Now let's look at the function definition of print local time. The function starts with assigning the composite data type called tm with an alias name, time info. The composite data type called tm consists of all the various attributes that stores various details about date and time from the NTP server We can access the attributes of a struct using the alias time info. Here we check whether the NTP server synchronization was successful by accessing the contents. If no contents are there, the function get local time will return zero, which on negation will become one and chose the failed to obtain time message on the serial monitor.

This is the struct tm composite data type. As you can see, to access the values, we use the dot operator along with the Alias Name and the attribute name. Here, all data types of the attributes are in teachers. We have saved the hour minute, the day in the month, the month and the year details. The month is calculated from zero to 11. Thus, we should add one to the month variable.

Similarly, the counting of years starts from 1900 does we need to add 19 To the year that we saved as the display dot drawstring function used to display the contents on the O LED display can only accept strings, we need to convert all the values we have saved to string. The purpose of all these instructions is to do exactly that. We have already covered it in the project of the second section. Finally, we use these instructions to display the information on the display in an orderly fashion. Now connect your sparkfun ESP 32 thing to your computer and upload the code to the board. After making sure you have selected the correct port, open the serial monitor to monitor the project status.

Now you can see that the O LED display shows that the boat is synchronizing with the NTP server. Now you can see the date and time on the display. Now, the serial monitor shows that the boat is going into deep sleep state. Now wait for 58 seconds for the ESP 32 to wake up from deep sleep. I'm fast forwarding this. Now you can see that in the serial monitor, the ESP 32 has woken up and started synchronizing with the NTP server and then goes to sleep after updating the display.

This will save a lot of power as effectively every minute the ESP 32 is deep sleeping for 58 seconds and waking up for just two seconds. Thus, in total, the ESP 30 twos main cores are only running for two minutes every hour. This is especially useful for data logging projects, where real time sensor logging is not necessary. Now I will give you an activity to do. I want you to replicate the project shown in this video. Here I have interfaced a NEO six m GPS module to the sparkfun ESP 32 thing.

The goal is to show The NTP time as well as long, acute and nastier details on the O LED display. You will also need to integrate deep sleep into this project to conserve power. The final output of the project will look like this, I have provided all the relevant links in the resources section for you to complete this activity. I have also provided a standalone code to print GPS values on the serial monitor, which will give you an idea of how to use the tiny GPS plus plus library. I hope you can complete this activity successfully. Summary In this video, we have covered the following topics implement o LED display based NTP clock with deep sleep and activity to integrate GPS tracking with deep sleep.

In the next video, we will work with the USB coprocessor of the ESP 32 in the Arduino IDE II

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.