View Categories

Часы RTC DS3231

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);
}

Полезные страницы #

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх