DS3231 RTC Module

Adafruit (плата), Analog Devices / Maxim (DS3231) · Adafruit DS3231 Precision RTC Breakout PID 5188, STEMMA QT

Хранение календарного времени с резервным питанием независимо от основного контроллера.

Автор: SLDV LAB

Опубликовано · Обновлено

СложностьСредне
Проекты с компонентом

О МОДУЛЕ

Что делает Adafruit DS3231 Precision RTC Breakout PID 5188, STEMMA QT

DS3231 использует температурно-компенсированный генератор и продолжает отсчёт от резервного элемента при исчезновении основного питания. Часы полезны для отметок времени в автономном журнале. Они не узнают текущее время из интернета и не хранят часовой пояс: UTC или местное время выбирает программа.

Здесь описана Adafruit PID 5188 в исполнении STEMMA QT с держателем CR1220. Фото и справочная распиновка относятся именно к PID 5188; прежняя плата Adafruit PID 3013 без STEMMA QT имеет другое исполнение. Это не универсальное описание дешёвых плат с держателем CR2032/LIR2032, EEPROM и возможной зарядной цепью. Сам DS3231 не является зарядным устройством. Неперезаряжаемые CR-элементы нельзя заряжать; у неизвестного модуля до установки батарейки необходимо проверить схему. Простая цепь из диода и резистора не заменяет правильное зарядное устройство для Li-ion. Не ставьте CR2032 в неизвестную плату только потому, что она подходит по диаметру.

Флаг lostPower предупреждает, что сохранённое время может быть недостоверным. Пример не перезаписывает часы при каждом старте; первичная установка выполняется только после явного включения настройки. Пока батарейка не установлена, после отключения питания время может потеряться. Контакты SQW и 32K имеют открытый сток и требуют подтяжек, если используются.

Adafruit DS3231, изделие 5188, версия STEMMA QT; батарейка на снимке не показана.

DS3231 RTC Module. Фото: Kattni Rembor / Adafruit. Оригинал: https://learn.adafruit.com/assets/103727 . Лицензия фотографии: CC BY-SA 3.0, https://creativecommons.org/licenses/by-sa/3.0/ . Изменения: Удалён исходный фон вокруг платы и в видимых сквозных отверстиях. Пропорциональное масштабирование, размещение на предоставленном фоне и JPEG-сжатие. Геометрия, маркировка и видимые детали не перерисовывались. Цветокоррекция и повышение детализации не применялись. Адаптация фотографии распространяется по той же лицензии. Adafruit DS3231, изделие 5188, версия STEMMA QT; батарейка на снимке не показана.

Схема распиновки

Авторская распиновка SLDV LAB: Adafruit 5188, DS3231 STEMMA QT. Сторона микросхемы; контактный ряд снизу; позиции 1–8 слева направо. Для других ревизий и плат требуется отдельная проверка.

Схема и обложка относятся к Adafruit PID 5188 STEMMA QT, а не к старому PID 3013. Батарейка на фото не показана.

Источники: 1, 2, 3. Авторская схема SLDV LAB по фактам документации.

Характеристики

Адрес RTC
0x68
Генератор
Температурно-компенсированный, встроенный
Батарейка выбранной платы
CR1220, 3 В, неперезаряжаемая
Часовой пояс
Программное соглашение; в RTC не хранится
Интерфейс
I²C
Питание модуля
Плата Adafruit PID 5188: Vin 3,3–5 В; в примере Vin/I²C 5 В и Uno R3. Резервная CR1220 — 3 В; для первого теста держатель оставлен пустым.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
Vin5VAdafruit PID 5188; I²C подтянут к Vin, поэтому такая схема для Uno R3, не ESP32.
GNDGNDОбщая земля.
SDAA4 / SDAОдин и тот же сигнал Uno R3; подтяжки к питанию модуля.
SCLA5 / SCLПорядок контактов на модуле определять по маркировке, не по положению.
BAT / держатель CR1220Не подключать в первом тестеПозднее установить CR1220 правильной полярностью по руководству Adafruit; BAT не соединять с 5V.
SQW / 32K / RSTНе подключатьДля простого чтения календаря не используются.
STEMMA QTНе подключатьВ примере используются маркированные площадки Vin, GND, SDA, SCL.

Подходит для Arduino. Выберите контакты по документации своей платы.

ВАШ ПРОЕКТ · ВАШ ДАТЧИК

Интегрируйте модуль с ChatGPT

Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.

Помоги интегрировать DS3231 Adafruit PID 5188. Сначала уточни точную плату модуля, контроллер, среду, питание и задачу. Проверь схему, логические уровни и маркировку контактов; затем дай согласованные подключение, зависимости и полный минимальный пример с обработкой ошибок. Объясни безопасную первичную проверку и ожидаемый результат. Уточни исполнение и тип резервного элемента, наличие зарядной цепи и нужный часовой пояс. Не предлагай заряжать CR-элемент и не устанавливай фиктивное текущее время.

Библиотеки

Установите библиотеку для своей среды и откройте пример из её документации.

Что именно прописать

Плата и ядро
Arduino Uno R3; Arduino AVR Boards 1.8.6

Распиновка относится к ATmega328P Uno R3; не Uno R4 и не ESP32.

Библиотека
RTClib 2.1.4

Установить с Adafruit BusIO; #include <RTClib.h>.

Адрес
0x68

Используется внутри RTC_DS3231, не адрес возможной EEPROM на чужом модуле.

Установка времени
SET_TIME = false

Чтобы один раз записать своё время, исправить DateTime в коде и включить true, затем вернуть false и загрузить снова.

Резервное питание
CR1220, 3 В

Только для выбранной Adafruit-платы. Первый тест проводится без батарейки.

Arduino: полное чтение RTC с контролем потери времени

cpp
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
const bool SET_TIME = false;
bool ready = false;
void setup() {
  Serial.begin(115200);
  Wire.begin();
  Wire.setWireTimeout(25000, true);
  if (!rtc.begin(&Wire)) { Serial.println("DS3231 not found"); return; }
  if (SET_TIME) {
    // Перед включением SET_TIME замените все значения своим временем.
    rtc.adjust(DateTime(2026, 10, 6, 12, 0, 0));
  }
  if (rtc.lostPower()) {
    Serial.println("Time is not trusted: set it explicitly first");
    return;
  }
  ready = true;
}
void loop() {
  if (!ready) { delay(1000); return; }
  Wire.beginTransmission(0x68);
  if (Wire.endTransmission() != 0) {
    Serial.println("RTC I2C error"); delay(1000); return;
  }
  DateTime now = rtc.now();
  if (!now.isValid() || Wire.getWireTimeoutFlag()) {
    Wire.clearWireTimeoutFlag();
    Serial.println("Invalid time / bus timeout");
  } else {
    Serial.println(now.timestamp(DateTime::TIMESTAMP_FULL));
  }
  delay(1000);
}

Полный скетч для Uno R3, Arduino AVR Boards 1.8.6 и RTClib 2.1.4; API сверено. Приведённая дата является редактируемым примером, а не текущим временем. Компиляция и аппаратные испытания не выполнялись. isValid проверяет календарный формат, а не точность часов.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты