Simplest ESP8266 Local Time Internet Clock With OLED





Introduction: Simplest ESP8266 Local Time Internet Clock With OLED

I was looking for a straightforward clock to use with a 128x64 OLED I got from Adafruit but found that a lot of the implementations were too cumbersome, involved a ton of code, weren't clear on what NTP servers to use and how, and basically offered very little in terms of making a clock with the LOCAL time (not UTC, which is easy enough to get). So I set about doing my own research and ended up with this simple clock that leverages already made libraries to minimize the code footprint, while offering some interesting tweaks in displaying the time (like AM/PM, 12-hour format, names for months, days, etc). This instructable assumes you have some experience programming ESP-01s but if not, there are a ton of wonderful tutorials available on Instructables! Enjoy!

Step 1: Components

For this instructable you will need:

  • ESP8266-01 module
  • 128x64 OLED with I2C interface
  • 3.3V power supply
  • A way to program the ESP-01

Step 2: Wire It Up!

The wiring is simple. Just follow the diagram above and connect the wires. Then get a 3.3V power supply (I used a step-down module to go from 12V to 3.3 but you can use whatever you have in your arsenal as long as it outputs 3.3V and at least 0.5 A).

Step 3: Program the ESP-01

This step can be frustrating if you haven't done it before, but once you get the hang of how the ESP boards work and have the correct drivers and libraries installed in Arduino, you can go ahead and use the following code. But first, you will need to download and install the following libraries:

You may need to modify some of the code according to what OLED you're using (as long as it's SSD1306 it'll work but you may need to update the hex I2C address) and then you may have to change some of the Timezone rules depending on your timezone and daylight savings time rules. Then upload the code attached and you should be done!

Step 4: See It Go!

Once you have programmed the ESP, plugged everything in, make sure you have 3.3V going into the setup and then power it on and see your correct time on the tiny display!

4 People Made This Project!


  • Microcontroller Contest

    Microcontroller Contest
  • Make it Move Contest

    Make it Move Contest
  • Woodworking Contest

    Woodworking Contest

We have a be nice policy.
Please be positive and constructive.



please help me, my oled won't show screen, it's not broken oled... because if i have another sketch the oled works...


why my oled not showing anything...
i'm using LCD OLED 0.96" WHITE I2C, the OLED is not broken, because i have tested it with other library with my arduino uno.
seems the ESP8266 successfully uploading, because when i test serial monitor, it's working...
but my oled blank, no any display... and i have already try to changing 0x3C it's same...

1 reply

Solved it by reflashing the esp8266 using newer firmware.

Very nice and simple project.
Could you add sketch for 24-hour format?

3 replies

how to change this to BST.

I added like that, but don't work for me. didi I missed something

TimeChangeRule BST = {"BST", Last, Sun, Mar, 1, 60}; //British Summer Time

TimeChangeRule GMT = {"GMT", Last, Sun, Oct, 2, 0}; //Standard Time

Timezone UK(BST, GMT);

Thanks, time is now displayed in a 24-hour format.


I like this project

How can i change time zone to my local time

2 replies

youcan do that: setTime(nettime + x * 3600);

Im in china so x = 8 setTime(nettime + 8 * 3600);

Thanks for your help

Dobrý den, poradí mi někdo jak změním časové pásmo? Děkuji Roman


I like this project

How can i change time zone to my local time


I like this project

How can i change time zone to my local time


I like this project

How can i change time zone to my local time


I like this project

How can i change time zone to my local time


I like this project

How can i change time zone to my local time


I like this Project and want to make it

How can i change time zone to my local time?

Thanks for this project; I needed some working example code and your's just fit the bill.

I had to include "TimeLib.h" to "Timezone.cpp" (got both libraries from the GitHub-master) or else it wouldn't compile

Thank you so much!!!... i was seeking for this kind of project

you are the best :))

Hi Michael,

After using this clock for a few days, there seems to me a time sync problem. First the time goes off by a few seconds and later off by a few minutes. Any insight why this is happening. I am already using my local ntp server.

Hi There,

This is a great a simple code for a person like me, I made one. Thank you so much for this. I just have one question, I would like to increase the size of the digits, how do I do that ?