DS3231 с Arduino: подключение, настройка времени и будильник на кнопках

Модуль DS3231 — самые точные и надёжные часы реального времени для Arduino. В этом проекте своими руками мы подключим DS3231 по шине I2C, выведем дату, время и температуру на LCD 1602, реализуем удобную настройку времени тремя кнопками и добавим будильник со звуковым сигналом. Проект идеален для умного дома, электронных часов, таймеров и систем автоматики.

DS3231 подключение к Arduino и настройка времени кнопками

Возможности проекта

  • Подключение DS3231 и LCD 1602 по I2C (всего 4 провода)
  • Настройка даты и времени тремя кнопками прямо на устройстве
  • Отображение температуры с точностью 0.25 °C
  • Будильник с пьезопищалкой
  • Сохранение всех настроек при отключении питания
  • Простая и понятная схема сборки

Необходимые компоненты

  • Arduino Uno / Nano
  • Модуль часов реального времени DS3231
  • LCD 1602 с модулем I2C
  • 3 кнопки
  • Пьезопищалка (buzzer)
  • Макетная плата и провода

Схема подключения

DS3231 и LCD:

  • VCC → 5V
  • GND → GND
  • SDA → A4
  • SCL → A5

Кнопки и пищалка:

  • Режим → A0
  • + → A1
  • – → A2
  • Будильник → A3
  • Пищалка → D8

Установка библиотек

  • LiquidCrystal_I2C
  • RTClib by Adafruit

Готовый скетч Arduino

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>

LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS3231 rtc;

#define btnMode  A0
#define btnUp    A1
#define btnDown  A2
#define btnAlarm A3
#define buzzer   8

// Полный код в прикреплённых файлах ниже

Как пользоваться

  • A0 — выбор параметра (часы → минуты → день → месяц → год → будильник)
  • A1 / A2 — увеличение / уменьшение
  • A3 — включить/выключить будильник

Почему DS3231

Термокомпенсированный генератор, погрешность менее 2 минут в год, батарейка CR2032 — время идёт даже без Arduino.

Заключение

Полностью автономные часы с настройкой без компьютера — отличная основа для настенных часов, будильников и проектов умного дома.

FAQ — DS3231 с Arduino: подключение, настройка времени и будильник на кнопках

Как подключить DS3231 к Arduino?

По шине I2C: VCC → 5V, GND → GND, SDA → A4, SCL → A5. LCD 1602 с I2C подключается к тем же линиям.

Как первый раз установить время на DS3231?

Залейте скетч с функцией rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); один раз — время синхронизируется с компьютером, затем закомментируйте строку и залейте снова.

Почему после отключения питания время сбивается?

Не вставлена или разряжена батарейка CR2032 в модуле DS3231. При исправной батарейке время хранится годами.

Как добавить русские буквы на LCD 1602?

Замените библиотеку LiquidCrystal_I2C на LCD_1602_RUS_ALL или LiquidCrystal_I2C_Russian — подробнее в проекте с энкодером.

Можно ли использовать аппаратные будильники самого DS3231 вместо программного?

Да, модуль имеет два независимых будильника с выводами INT/SQW. Их можно подключить к прерыванию Arduino — экономит ресурсы.

Сколько кнопок нужно минимум для настройки?

Достаточно двух: одна — переключение параметра, вторая с удержанием — увеличение/уменьшение. В следующем проекте показано с одним энкодером.

Сколько памяти Arduino занимает этот проект?

На Arduino Uno — около 18–20 КБ (60–65 % Flash) и примерно 1 КБ ОЗУ. Остаётся достаточно места для дополнительных функций.

📁 Скачать примеры