Skip to contentSkip to main navigation Skip to footer

Arduino и часы RTC DS3231

Описание


DS3231 – микросхема часов реального времени, которая при наличии внешнего автономного питания считает время и всегда готова поделиться им с микроконтроллером. Основные характеристики:

  • Питание: 2.3.. 5.5V
  • Потребление: 180 мкА
  • Потребление батарейки: 0.8 мкА
  • Считает часы, минуты, секунды, число, месяц, год, день недели
  • Встроенный календарь до 2100 года
  • Встроенный термометр, точность ±3°С
  • Свой автономный источник питания: батарейка CR2025 или

В продаже можно найти несколько вариантов модулей на базе DS3231.

В наборе GyverKIT:

  • Партии 0, 1 и 2 комплектовались мини-версией модуля (второй слева на картинке выше)
  • Партия 3 и далее – самый левый модуль синего цвета

Подключение


Модуль подключается к шине I2C согласно распиновке микроконтроллера:

  • GND > GND
  • VCC > VCC
  • Arduino: SDA – A4, SCL – A5
  • Wemos: SDA – D2, SCL – D1

 

У мини-версии модуля пины подписаны немного иначе:

  • + > VCC
  • – > GND
  • D > SDA
  • C > SCL

Библиотеки


В примерах на этом сайте мы будем использовать microDS3231 как гораздо более лёгкую и оптимальную. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию microDS3231. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Примеры


Чтобы автоматически установить время на модуле, можно прошить следующую программу:

#include <microDS3231.h>
MicroDS3231 rtc;

void setup() {
  rtc.setTime(COMPILE_TIME);
}

void loop() {
}

Она установит дату и время, равное времени компиляции программы, то есть текущее. После этого можно работать с модулем, например выведем дату и время разными способами:

#include <microDS3231.h>
MicroDS3231 rtc;

void setup() {
  Serial.begin(9600);
}

void loop() {
  // получаем и выводим каждый элемент отдельно
  Serial.print(rtc.getHours());
  Serial.print(":");
  Serial.print(rtc.getMinutes());
  Serial.print(":");
  Serial.print(rtc.getSeconds());
  Serial.print(" ");
  Serial.print(rtc.getDay());
  Serial.print(" ");
  Serial.print(rtc.getDate());
  Serial.print("/");
  Serial.print(rtc.getMonth());
  Serial.print("/");
  Serial.println(rtc.getYear());
  
  // выводим температуру модуля
  Serial.println(rtc.getTemperatureFloat());  
  
  // выводим дату и время готовыми строками
  Serial.println(rtc.getTimeString());
  Serial.println(rtc.getDateString());
}

Домашнее задание


  • Изучить возможности библиотеки microDS3231

 

Связанные уроки

Полезный пример?

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