Оглавление
DS3231 – микросхема часов реального времени, которая при наличии внешнего автономного питания ведёт счёт времени независимо от состояния и питания микроконтроллера, позволяет сделать полноценные "часы" или систему управления чем-то по расписанию.
![]() |
В наборе GyverKIT | START | IOT | EXTRA |
---|---|---|---|---|
Модуль часов | ✔ |
- Партии GyverKIT 0, 1 и 2 комплектовались мини-версией модуля (второй слева на картинке выше)
- Партия GyverKIT 3 и далее – самый левый модуль синего цвета
Основные характеристики:
- Питание: 2.3.. 5.5V
- Потребление: 180 мкА
- Потребление батарейки: 0.8 мкА
- Считает часы, минуты, секунды, число, месяц, год, день недели
- Встроенный календарь до 2100 года
- Встроенный термометр, точность ±3°С
- Автономный источник питания: батарейка CR2025 или бортовой аккумулятор/ионистор
Подключение к Arduino #
Модуль подключается к шине I2C согласно распиновке микроконтроллера:
- GND -> GND
- VCC -> VCC
- Arduino: SDA -> A4, SCL -> A5
- Wemos: SDA –> D2, SCL –> D1
У мини-версии модуля пины подписаны немного иначе:
- + -> VCC
- – (минус) -> GND
- D -> SDA
- C -> SCL
Библиотеки #
Для часов есть несколько библиотек:
- RTClib - самая известная библиотека
- GyverDS3231 - моя библиотека
В примерах на этом сайте будем использовать GyverDS3231, её можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverDS3231. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
GyverDS3231 #
#include <GyverDS3231Min.h>
GyverDS3231Min rtc;
void setup() {
Serial.begin(115200);
Serial.println("start");
setStampZone(3); // часовой пояс
Wire.begin();
rtc.begin();
Serial.print("OK: ");
Serial.println(rtc.isOK()); // RTC работает
Serial.print("Reset: ");
Serial.println(rtc.isReset()); // сброс питания (батарейки)
// был сброс питания RTC, время некорректное
if (rtc.isReset()) {
rtc.setBuildTime(); // установить время компиляции прошивки
// rtc.setTime(2025, 1, 30, 12, 45, 0); // установить время вручную
}
// вывести в Datime
Datime dt = rtc.getTime();
Serial.println(dt.year);
Serial.println(dt.month);
Serial.println(dt.day);
Serial.println(dt.hour);
Serial.println(dt.minute);
Serial.println(dt.second);
}
void loop() {
// прочитать и вывести время строкой
Serial.println(rtc.getTime().toString());
delay(1000);
}
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
- Поддержать автора за работу над уроками