Подключение 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). 
