WINGONEER DS3231 AT24C32

WINGONEER DS3231 AT24C32 I2C Real-Time Clock Module User Manual

Model: DS3231 AT24C32

1. Introduction

The WINGONEER DS3231 AT24C32 I2C Real-Time Clock (RTC) Module is a high-precision, low-cost solution for timekeeping and data storage in various embedded applications, including Arduino and Raspberry Pi projects. This module integrates a DS3231 RTC chip with an AT24C32 EEPROM memory chip, offering accurate time tracking and non-volatile data storage capabilities. It features an integrated temperature-compensated crystal oscillator (TCXO) and crystal, ensuring high accuracy over a wide temperature range.

WINGONEER DS3231 AT24C32 I2C Real-Time Clock Module

Image 1.1: Top-down view of the WINGONEER DS3231 AT24C32 I2C Real-Time Clock Module, showing the main DS3231 chip, AT24C32 chip, and pin headers.

The module is designed to maintain accurate time even when the main power supply is disconnected, thanks to its integrated battery input. It also includes a precise digital temperature sensor and a power supply control circuit for seamless operation. This manual provides detailed instructions for setting up, operating, and maintaining your RTC module.

2. Features

  • High Precision RTC: Utilizes the DS3231 chip for extremely accurate timekeeping with an integrated temperature-compensated crystal oscillator (TCXO).
  • Battery Backup: Incorporates a battery input to maintain accurate timekeeping during main power interruptions.
  • Integrated Temperature Sensor: Features a digital temperature sensor with an accuracy of ±3°C, accessible via the I2C interface.
  • EEPROM Memory: Includes an AT24C32 memory chip providing 32K (32,768 bits) of non-volatile storage capacity.
  • I2C Interface: Communicates via the I2C bus with a maximum transmission speed of 400 KHz.
  • Timekeeping Functions: Tracks seconds, minutes, hours, day, date, month, and year, with automatic leap year compensation valid until 2100.
  • Alarm Functions: Two programmable calendar alarm clocks.
  • Square Wave Output: Programmable square wave output.
  • Power Management: On-chip power supply control circuit automatically manages switching between main and standby power.
  • Cascadable I2C: Can be cascaded with other I2C devices; A0/A1/A2 pins allow modification of the default I2C address (0x57).

3. Specifications

ParameterValue
Dimensions (L x W x H)38 mm x 22 mm x 14 mm
Weight8 g
Operating Voltage3.3 V - 5.5 V
RTC ChipDS3231
Clock Accuracy2 ppm (0-40°C range), approximately 1 minute error per year
Temperature Sensor Accuracy±3°C
Memory ChipAT24C32
Memory Capacity32 K (32,768 bits)
InterfaceI2C (maximum 400 KHz transmission speed)
Compatible DevicesArduino, Raspberry Pi, and similar microcontrollers
Default I2C Address0x57 (modifiable via A0/A1/A2)

4. Setup

4.1 Pinout

The module features a standard 6-pin header for easy connection to your microcontroller. The pins are typically labeled as follows:

  • 32K: 32.768 kHz output pin (optional).
  • SQW: Square Wave output pin (programmable).
  • SCL: I2C Serial Clock Line. Connect to your microcontroller's SCL pin.
  • SDA: I2C Serial Data Line. Connect to your microcontroller's SDA pin.
  • VCC: Power supply input (3.3V - 5.5V). Connect to your microcontroller's 3.3V or 5V output.
  • GND: Ground. Connect to your microcontroller's GND pin.
WINGONEER DS3231 AT24C32 I2C Real-Time Clock Module Pinout

Image 4.1: Close-up top view of the module, highlighting the pin labels for connection.

4.2 Battery Installation

The module requires a CR2032 coin cell battery (not always included) to maintain time when external power is absent. To install the battery:

  1. Locate the circular battery holder on the underside of the module.
  2. Insert a CR2032 battery with the positive (+) side facing upwards (towards the PCB).
  3. Ensure the battery is securely seated in the holder.
WINGONEER DS3231 AT24C32 I2C Real-Time Clock Module Battery Holder

Image 4.2: Underside view of the module, showing the CR2032 coin cell battery holder.

Note:

  • If using a rechargeable battery, it is recommended to desolder the charging resistor (often labeled R1 or similar) to prevent overcharging and damage to the battery. Consult the DS3231 datasheet for details.
  • This module is a replacement accessory and not an original Arduino product.

4.3 Wiring Example (Arduino)

Connect the module to your Arduino board as follows:

  • VCC → Arduino 5V or 3.3V
  • GND → Arduino GND
  • SDA → Arduino A4 (SDA)
  • SCL → Arduino A5 (SCL)
  • Optional: SQW → Any digital input pin on Arduino for alarm/square wave interrupt.

5. Operating Instructions

To operate the DS3231 RTC module, you will typically use a microcontroller (e.g., Arduino, Raspberry Pi) and a suitable library to communicate via the I2C interface.

5.1 Initializing and Setting Time

Most microcontroller platforms have libraries available for the DS3231. For Arduino, popular libraries include the Adafruit RTClib or the DS3231 library by Rinky-Dink Electronics. These libraries simplify interaction with the module.

  1. Include Library: In your code, include the necessary library (e.g., #include <RTClib.h>).
  2. Initialize I2C: Ensure your microcontroller's I2C communication is initialized.
  3. Create RTC Object: Instantiate an RTC object (e.g., RTC_DS3231 rtc;).
  4. Check for RTC: Verify if the RTC is running. If not, you may need to set the initial time.
  5. Set Time: You can set the time using various methods provided by the library, such as compiling the sketch with the current computer time (e.g., rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));) or manually setting a specific date and time.

5.2 Reading Time and Date

Once the time is set, you can read the current date and time from the module:

  1. Read Current Time: Use a function like rtc.now() to get a DateTime object.
  2. Extract Components: From the DateTime object, you can extract year, month, day, hour, minute, and second.

5.3 Reading Temperature

The DS3231 includes an integrated temperature sensor:

  1. Read Temperature: Use the library's function to read the temperature (e.g., rtc.getTemperature()). This typically returns the temperature in Celsius.

5.4 Using EEPROM (AT24C32)

The AT24C32 EEPROM can be accessed independently via the I2C bus. Its default I2C address is typically 0x57, but this can be modified by shorting the A0, A1, A2 pins on the module.

  1. Include Wire Library: For direct I2C communication, include #include <Wire.h>.
  2. Write Data: Send a byte or block of bytes to a specific memory address on the EEPROM.
  3. Read Data: Read a byte or block of bytes from a specific memory address on the EEPROM.

6. Maintenance

6.1 Battery Replacement

The CR2032 coin cell battery provides backup power for the RTC. When the battery is depleted, the RTC may lose time when main power is removed. Replace the battery as follows:

  1. Carefully remove the old CR2032 battery from its holder.
  2. Insert a new CR2032 battery with the positive (+) side facing upwards.
  3. Ensure the new battery is seated correctly.

After replacing the battery, it is recommended to re-set the time on the RTC module to ensure accuracy.

7. Troubleshooting

  • RTC Not Responding:
    • Check all wiring connections (VCC, GND, SDA, SCL) for correctness and secure contact.
    • Verify the I2C address. The default address for the DS3231 is 0x68. Ensure your code uses the correct address.
    • Confirm that the I2C bus is properly initialized in your microcontroller's code.
    • Ensure the module is receiving adequate power (3.3V to 5.5V).
  • Time Drift/Inaccuracy:
    • While the DS3231 is highly accurate, significant temperature fluctuations can affect it. Ensure the module is not exposed to extreme temperature changes if high precision is critical.
    • If the time consistently drifts, ensure the initial time setting was accurate.
    • For extreme accuracy, some advanced libraries allow for calibration adjustments.
  • Battery Backup Not Working:
    • Check if the CR2032 battery is installed correctly and is not depleted.
    • If using a rechargeable battery, ensure the charging resistor (if present) has been correctly handled or removed if the battery is non-rechargeable.
  • EEPROM Not Accessible:
    • Verify the I2C address for the AT24C32 EEPROM. The default is typically 0x57.
    • Check if the A0/A1/A2 pins have been shorted, which would change the EEPROM's I2C address.

© 2023 WINGONEER. All rights reserved.

Ask a question about this manual

Ask about setup, troubleshooting, compatibility, parts, safety, or missing instructions. Manuals+ will review the question and use this page’s manual context to help answer it.