Урок 28: Модуль реального времени DS3231
1. Введение
DS3231 — высокоточный модуль реального времени (RTC) с интегрированным кварцевым резонатором и температурной компенсацией (TCXO). Он поддерживает резервное питание от батареи, работает по интерфейсу I2C и обеспечивает точный отсчёт времени даже при отключении питания Arduino. Модуль совместим с системами 3.3В и 5В.
2. Необходимое оборудование
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
Модуль часов реального времени DS3231 |
1 |
Перемычки |
1 |
USB-кабель |
3. Спецификация
Параметр |
Значение |
---|---|
Диапазон температур |
-40…+85°C |
Точность времени |
±5ppm (±0.432 сек/день) |
Резервное питание |
Да (батарея) |
Энергопотребление |
Низкое |
Календарь |
Секунды, минуты, часы, день недели, дата, месяц, год (до 2100) |
Выходы |
1Гц, 32.768кГц |
Интерфейс |
I2C (400кГц) |
Напряжение питания |
3.3В – 5.5В |
Датчик температуры |
±3°C |
Корпус |
16-контактный (300 мил) |
4. Подключение
SDA — A4 Arduino
SCL — A5 Arduino
VCC — 5V Arduino
GND — GND Arduino
5. Пример кода
Перед компиляцией кода установите библиотеку DS3231 (например, RTClib).
//////////////////////////////////////////////////////////
//DS3231
#include <Wire.h>
#include "DS3231.h"
DS3231 RTC;
char weekDay[][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
DateTime dt(2011, 11, 10, 15, 18, 0, 5);
void setup (){
Serial.begin(57600);
Wire.begin();
RTC.begin();
RTC.adjust(dt);
}
void loop (){
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print("/");
Serial.print(now.month(), DEC);
Serial.print("/");
Serial.print(now.date(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(":");
Serial.print(now.minute(), DEC);
Serial.print(":");
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(weekDay[now.dayOfWeek()]);
Serial.println();
delay(1000);
}
//////////////////////////////////////////////////////////
6. Результат теста
После загрузки кода и подключения модуля, откройте серийный монитор (57600 бод). Вы увидите текущие дату, время и день недели.
7. Частые ошибки
Нет данных — проверьте подключение SDA/SCL к A4/A5.
Время сбрасывается — батарея разряжена или отсутствует.
Некорректная дата/время — проверьте корректность инициализации DateTime.
8. Практические задачи
Часы с календарём и будильником.
Логирование данных с временной меткой.
Автоматизация по расписанию (освещение, полив).
9. Идеи для расширения
Синхронизация времени по интернету (NTP).
Использование дисплея для вывода времени.
Управление устройствами по расписанию.
Подробнее о DS3231: https://randomnerdtutorials.com/arduino-ds3231-real-time-clock/