Часы реального времени DS3231 с Arduino: настройка даты и времени энкодером
Модуль DS3231 — один из самых точных и популярных часов реального времени для Arduino. В этом проекте своими руками мы соберём часы с настройкой даты и времени с помощью одного поворотного энкодера KY-040, выведем на LCD 1602 с I2C русские названия дней недели и месяцев, добавим выбор 12/24-часового формата и автоматический расчёт дня недели. Проект идеален для умного дома, метеостанций и любых устройств, где нужна точная временная метка.
Возможности проекта
- Полная настройка даты и времени одним энкодером (без кнопок)
- Выбор 12- или 24-часового формата долгим нажатием на энкодер
- Русские названия дней недели и месяцев на LCD
- Автоматический расчёт дня недели при смене даты/года
- Отображение температуры с датчика DS3231
- Сохранение настроек при отключении питания
Необходимые компоненты
- Arduino Uno / Nano / Pro Mini
- Модуль часов реального времени DS3231 (ZS-042)
- LCD 1602 с модулем I2C
- Поворотный энкодер KY-040 (или обычный с подтягивающими резисторами)
- Провода, макетная плата
Схема подключения
Оба модуля (DS3231 и LCD I2C) подключаются к одной шине I2C:
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
Энкодер KY-040:
- CLK → D2
- DT → D3
- SW → D4 (кнопка)
- + → 5V
- GND → GND
Как пользоваться часами
- Короткое нажатие на энкодер — выбор параметра (курсор снизу)
- Вращение — изменение значения
- Долгое нажатие (2 сек) — переключение 12/24 ч (AM / 24H)
- Если не трогать 2 секунды — выход из редактирования
- Точка в правом верхнем углу — режим редактирования
Устанавливаемые библиотеки
- RTClib (от Adafruit)
- LiquidCrystal_I2C
- LCD_1602_RUS_ALL — для русских символов (скачать по ссылке в описании видео)
- Encoder
Готовый скетч Arduino
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
#include <LCD_1602_RUS_ALL.h>
#include <Encoder.h>
RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x27,16,2);
Encoder myEnc(2, 3);
boolean mode12 = false; // false = 24ч, true = 12ч
// полный код в описании видео и на сайте
Заключение
Проект получился максимально удобным: всего один энкодер вместо шести кнопок, русские буквы, автоматический день недели и точность хода DS3231 лучше кварцевых часов. Такой модуль можно сразу встраивать в умный дом, будильники, термостаты и системы полива — везде, где нужна надёжная работа без подстройки времени.
FAQ — Часы DS3231 с энкодером
Чем DS3231 лучше DS1307?
DS3231 имеет встроенный TCXO-генератор и датчик температуры, погрешность менее 2 минут в год, DS1307 — до 20 минут в месяц.
Можно ли использовать обычный энкодер без модуля KY-040?
Да, просто припаяйте два подтягивающих резистора 10 кОм от CLK и DT к +5V.
Где взять русские буквы на LCD 1602?
Библиотека LCD_1602_RUS_ALL — ссылка в описании видео и на сайте.
Сохраняется ли время при отключении питания?
Да, DS3231 имеет батарейку CR2032 и хранит время годами.