ChronoDot V2 - Precision Real Time Clock Module RTC DS3231 I2C

  • RM18.00

  • Product Code: DS3231 ChronoDot
  • Availability: In Stock

The ChronoDot RTC is an extremely accurate real time clock module, based on the DS3231 temperature compensated RTC (TCXO). It includes a CR1632 battery, which should last at least 8 years if the I2C interface is only used while the device has 5V power available. No external crystal or tuning capacitors are required.

The top side of the Chronodot now features a battery holder for 16mm 3V lithium coin cells. It pairs particularly well with CR1632 batteries.


  • Highly Accurate RTC Completely Manages All Timekeeping Functions
    • Real-Time Clock Counts Seconds, Minutes, Hours, Date of the Month, Month, Day of the Week, and Year, with Leap-Year Compensation Valid Up to 2100
    • Accuracy ±2ppm from 0°C to +40°C
    • Accuracy ±3.5ppm from -40°C to +85°C
    • Digital Temp Sensor Output: ±3°C Accuracy
    • Register for Aging Trim
    • Active-Low RST Output/Pushbutton Reset Debounce Input
    • Two Time-of-Day Alarms
    • Programmable Square-Wave Output Signal
  • With output TTL level signal indication
  • Can be connected directly to the microcontroller output IO port
  • Anti-interference ability
  • Connect the microcontroller to achieve the touch switch function
  • Standard 2.54mm pin to do input and output connections
  • Surrounded by four fixed mounting holes



  • Clock chip: High-precision clock chip DS3231
  • Memory chips: AT24C32 (storage capacity 32K)
  • Operating voltage: 3.3 - 5.5V DC
  • Clock Accuracy: 0~40 range, the accuracy 2ppm, the error is about 1 minute; With two calendar alarm clock; Programmable square-wave output
  • Real time clock generator seconds, minutes, hours, day, date, month and year timing and provides valid until 2100 with Leap Year Compensation
  • Chip temperature sensor accuracy: +/- 3ºC
  • IIC bus interface, the maximum transmission speed of 400KHz (working voltage of 5V)
  • Can be cascaded with other IIC device, 24C32 addresses can be shorted A0/A1/A2 modify default address is 0x57
  • Suggest to add a rechargeable battery CR1632 to ensure the clock move normal as system power failure
  • Size: 30mm


Package Include

  • 1 x ChronoDot v2 (Battery CR1632 not include)



SCL - I2C clock pin, connect to your microcontrollers I2C clock line. This pin has a 10K pullup resistor to Vin

SDA - I2C data pin, connect to your microcontrollers I2C data line. This pin has a 10K pullup resistor to Vin

BAT - this is the same connection as the positive pad of the battery. You can use this if you want to power something else from the coin cell, or provide battery backup from a different seperate batery. VBat can be between 2.3V and 5.5V and the DS3231 will switch over when main Vin power is lost

32K - 32KHz oscillator output. Open drain, you need to attach a pullup to read this signal from a microcontroller pin

SQW - optional square wave or interrupt output. Open drain, you need to attach a pullup to read this signal from a microcontroller pin

RST - This one is a little different than most RST pins, rather than being just an input, it is designed to be used to reset an external device or indicate when main power is lost. Open drain, but has an internal 50K pullup. The pullup keeps this pin voltage high as long as Vin is present. When Vin drops and the chip switches to battery backup, the pin goes low

Connect DS3231 to an Arduino  (fritzing)

The sketch for this tutorial shows how to request time from the ChronoDot and display it over Serial.

The libraries are needed for the ChronoDot:  RTClib.h and Wire (Wire comes with the IDE).

Download the RTClib zip file, extract and if necessary rename to "RTClib" before moving a copy into /arduino-1.0.3/libraries/.  Having the correct name is important.

Arduino Sketch
You can find an explanation for each part in the comments.

// Date and time functions using a DS3231 RTC connected via I2C and Wire Lib

#include <Wire.h>
#include "RTClib.h"  // Credit: Adafruit


void setup() {
  // Begin the Serial connection 
  // Instantiate the RTC
  // Check if the RTC is running.
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running");

  // This section grabs the current datetime and compares it to
  // the compilation time.  If necessary, the RTC is updated.
  DateTime now =;
  DateTime compiled = DateTime(__DATE__, __TIME__);
  if (now.unixtime() < compiled.unixtime()) {
    Serial.println("RTC is older than compile time! Updating");
    RTC.adjust(DateTime(__DATE__, __TIME__));
  Serial.println("Setup complete.");

void loop() {
  // Get the current time
  DateTime now =;   
  // Display the current time
  Serial.print("Current time: ");
  Serial.print(now.year(), DEC);
  Serial.print(now.month(), DEC);
  Serial.print(, DEC);
  Serial.print(' ');
  Serial.print(now.hour(), DEC);
  Serial.print(now.minute(), DEC);
  Serial.print(now.second(), DEC);


Write a review

Note: HTML is not translated!
    Bad           Good


Related Products

Tags: RTC