Подключение часов DS3231 к ESP32

Модуль часов реального времени

DS3231 с ESP32 соединяется по I2C: SDA — GPIO21, SCL — GPIO22, питание 3,3 В. Часы ведут время сами, а батарейка на плате сохраняет его при отключении питания.

Схема подключения часов DS3231 к ESP32

DS3231ESP32
SCLGPIO22
SDAGPIO21
VCC3V3
GNDGND

Схема из примера «Часы: поставить время и читать».

Часы: поставить время и читать

Открыть пример целиком

Выводы DS3231

ВыводНазначение
SCLтактовая линия I2C
SDAлиния данных I2C
SQWвыход меандра или сигнал будильника (прерывание); для часов не нужен
VCCпитание 3,3–5 В
GNDобщий провод

Код для ESP32

#include <RTClib.h>

RTC_DS3231 rtc;

void setup() {
  Serial.begin(115200);
  delay(200);

  if (!rtc.begin()) {
    Serial.println("часы не отвечают: проверьте SDA, SCL и питание");
    while (true) delay(1000);
  }

  // Признак «часы стояли» микросхема поднимает, когда пропадало
  // питание. Ставить время каждый запуск нельзя: тогда часы всегда
  // будут показывать время последней прошивки, а не текущее.
  if (rtc.lostPower()) {
    Serial.println("часы стояли — ставлю время сборки");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();
  Serial.printf("%04d-%02d-%02d %02d:%02d:%02d\n",
                now.year(), now.month(), now.day(),
                now.hour(), now.minute(), now.second());
  delay(1000);
}

Скетч можно править и запускать в симуляторе без платы и установки среды.

Что учесть на ESP32

В железе

На популярном модуле ZS-042 стоит цепь зарядки батарейки (резистор 200 Ом и диод). Для обычной CR2032 это вредно: её нельзя заряжать. Либо выпаивают резистор, либо ставят аккумулятор LIR2032.

Частые ошибки при подключении к ESP32

Другие детали для ESP32