Random Nerd Tutorials

Guide for Real Time Clock (RTC) Module with Arduino (DS1307 and DS3231)


This post is about how to use the DS1307 Real Time Clock (RTC) module with the Arduino. You can also follow this guide for other similar modules like the DS3231 RTC.

Introducing the Real Time Clock module

The real time clock module is the one in the figure below (front and back view).


When you first use this module, you need to solder some header pins.

As you can see in the picture above, the module has a backup battery installed. This allows the module to retain the time, even when it’s not being powered up by the Arduino. This way, every time you turn on and off your module, the time doesn’t reset.

This module uses I2C communication. This means that it communicates with the Arduino using just 2 pins.

Where to buy?

The Real Time Clock is an affordable module. You can check the DS1307 Real Time Clock module on Maker Advisor and find the best price.

Pin Wiring

Wiring the RTC module is pretty straightforward!

Pin Wiring to Arduino Uno

If you’re using other Arduino board rather than the uno, chek out what are their SCL and SDA pins.

  • Nano: SDA (A4); SCL(A5)
  • MEGA: SDA (20); SCL(21)
  • Leonardo: SDA (20); SCL(21)

Example: Displaying date and time on the serial monitor

This example displays date and time on the serial monitor.

Parts required

For this example you need the following parts (click the links below to find the best price at Maker Advisor):

You can use the preceding links or go directly to MakerAdvisor.com/tools to find all the parts for your projects at the best price!


Connect your Real Time Clock module to your Arduino as in the schematics below.



Working with the RTC requires two important steps:

  • setting the current time, so that the RTC knows what time is it
  • retaining the time, so that the RTC always gives the correct time, even when it is turned off

Set the current time in the Real Time Clock

For setting the current time you need to change the code provided.

  • set your current time int the function setDS3231time()


The parameters for the function are highlighted in red: seconds, minutes, hours, day of the week, date, month and year (in this order). Sunday is the day 1 of the week and Saturday is 7. Don’t forget to uncomment that line of code.

After setting the current time, you can upload the provided code with the required modifications.

The code provided was written by John Boxall from tronixstuff. You can read his tutorial here.

Retain the time in the Real Time Clock

If you don’t want to reset the time everytime the RTC is turned off, you should do the following:

  • after setting up the time, you should comment the function that sets the time and upload the code again.


This is a very important step to set up the time in your RTC. If you don’t do this, everytime your RTC resets, it will display the time that you’ve set up previously and not the current time.


Open the serial monitor at a baud rate of 9600 and you’ll see the results.

Here’s the Serial Monitor displaying the current date and time.


Wrapping up

I hope you’ve found this guide useful.

The RTC module is really useful and you can use it as a clock, timer, etc..

If you would like to display the date and time with the RTC module in the OLED display, check the following post:

What projects have you done or are you expecting to build with this module?

Let me know by writing a comment down below.

Thanks for reading,

Rui and Sara

MicroPython Programming with ESP32/ESP8266 eBook

Learn how to program the ESP boards with MicroPython, including projects, tips, and tricks! The registrations are open for a limited time, so SIGN UP NOW »

Recommended Resources

Home Automation using ESP8266 »
Build IoT projects and home automation gadgets with the ESP8266 Wi-Fi module.

Build a Home Automation System »
Learn how to build a automation system using open-source hardware and software from scratch.

Arduino Step-by-Step Projects »
Build 25 cool Arduino projects with our course even with no prior experience!

Leave a Comment:

Add Your Reply

⏰ Registrations are open for "MicroPython Programming with ESP32 and ESP8266" eBook