Подключение DS3231 в корпусе SO-16 на основе даташита.
Распиновка DS3231 (SO-16)
Номер ножки | Название | Описание |
---|---|---|
1 | 32kHz | Выход 32 кГц (опционально, требует подтяжки к VCC через резистор 10 кОм) |
2 | VCC | Основное питание (+2.3V–5.5V) |
3 | INT/SQW | Выход прерывания или меандра (открытый сток, подтяжка к VCC) |
4 | RST | Сброс (активный низкий уровень, внутренняя подтяжка к VCC) |
5–12 | N.C. | Не подключены (должны быть заземлены!) |
13 | GND | Земля |
14 | VBAT | Резервное питание (батарейка 3V, например, CR2032) |
15 | SDA | Данные I²C (открытый сток, подтяжка к VCC через 4.7 кОм) |
16 | SCL | Тактирование I²C (подтяжка к VCC через 4.7 кОм) |
Схема подключения к Arduino (ESP)
DS3231 (SO-16) → Arduino (Uno/Nano) ------------------------------------ VCC (2) → 5V (или 3.3V) GND (13) → GND SDA (15) → A4 (SDA) SCL (16) → A5 (SCL) INT/SQW (3) → Цифровой пин (опционально, для прерываний) VBAT (14) → CR2032 (плюс к VBAT, минус к GND)
-
Ножки 5–12 (N.C.) должны быть заземлены (подключены к GND), иначе возможны сбои!
-
Подтяжка SDA/SCL к VCC через резисторы 4.7 кОм обязательна (если их нет на модуле).
-
Для INT/SQW (прерывания) нужна внешняя подтяжка к VCC.
Важные нюансы из даташита
-
Питание:
-
Основное (VCC): 2.3–5.5V.
-
Резервное (VBAT): 2.3–5.5V (обычно 3V от батарейки).
-
Если VBAT не используется, подключите его к GND.
-
-
I²C:
-
Адрес DS3231: 0x68 (шестнадцатеричный).
-
Скорость: до 400 кГц (Fast Mode).
-
-
Температурная компенсация:
-
DS3231 автоматически корректирует ход часов на основе температуры.
-
-
Кварцевый резонатор:
-
Встроен в корпус SO-16, внешний кристалл не нужен.
-
Пример кода для Arduino
#include <Wire.h> #include "RTClib.h" // Библиотека RTClib от Adafruit RTC_DS3231 rtc; void setup() { Serial.begin(9600); Wire.begin(); if (!rtc.begin()) { Serial.println("DS3231 не найден!"); while (1); } // Установка времени (раскомментируйте для первого запуска) // rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } void loop() { DateTime now = rtc.now(); Serial.print("Дата: "); Serial.print(now.day()); Serial.print("."); Serial.print(now.month()); Serial.print("."); Serial.println(now.year()); Serial.print("Время: "); Serial.print(now.hour()); Serial.print(":"); Serial.print(now.minute()); Serial.print(":"); Serial.println(now.second()); delay(1000); }
Подключение SQW/INT (опционально)
Если нужно использовать прерывания или меандр:
-
Установите бит INTCN в регистре управления (0x0E):
-
INTCN = 1
— прерывание по будильнику. -
INTCN = 0
— меандр (частота настраивается битами RS2/RS1).
-
-
Подключите INT/SQW (ножка 3) к цифровому пину Arduino через подтяжку.
Ошибки, которых стоит избегать
-
Не подключайте N.C. (5–12) к VCC — только к GND!
-
Не забывайте подтяжки для SDA/SCL и INT/SQW.
-
Проверьте полярность VBAT (CR2032).