Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Модуль часов с автономным питанием DS-3231 ====== ===== Описание ===== Модуль часов реального времени с независимым питанием. Контроллеры Arduino/Genuino не имеют встроенных часов реального времени. Для работы со временем есть функция millis(). Однако, для проектов где требуется время и дата, возможностей данной функции недостаточно и на помощь приходят часы реального времени. Модуль DS3231 - это недорогие, точные, с работой по протоколу I2C часы реального времени, с температурной компенсацией TCXO. Устройство содержит разъём для батареи типа CR2032 и поддерживает точный отсчет времени когда питание устройства прерывается. Часы поддерживают информацию о секундах, минутах, часах, дне, месяце и годе. Дата на конец месяца автоматически корректируется, для месяцев, содержащих менее чем 31 день, включая коррекцию по високосному году. Работают в одном из режимов: 24- или 12-часовом формате (с AM/PM индикатором). Имеют два программируемых будильника. Основные характеристики часов: * Часы реального времени с подсчетом секунд, минут, часов, дня, месяца и года (с корректировкой дат в т.ч. по високосному году до 2100 года) * Погрешность хода: ±2 минуты в год * Температурный датчик с погрешностью ±3°С * Два будильника ==== Технические характеристики ==== * Рабочая температура: -40°С - +85°С * Напряжение питания: 2,3 - 5,5 В * Напряжение питания батареи: 2,3 - 5,5 В * Максимальное потребление тока: 650 нА ==== Физические размеры ==== * Модуль (Д х Ш х В): 45 х 23 х 15 мм ==== Плюсы использования ==== * Высокая точность хода часов * Имеется два будильника с функцией прерывания * Широкий диапазон рабочей температуры ==== Минусы использования ==== * Дороже некоторых аналогов ==== Библиотека для работы с модулем ==== * [[https://files.smartelements.ru/know_libs/ds3231.zip|Скачать (ds3231)]] ===== Примеры подключения и использования ===== **Пример 1:** В примере иллюстрируется подключение модуля часов к контроллеру, установка времени и даты на часах, вывод времени, даты и дня недели в монитор Serial-порта, а также получение температуры с текущего модуля. (Примеры тестировались на контроллере Smart UNO) ^ Что нужно ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[https://smartelements.ru/collection/moduli/product/modul-chasov-ds3231|Модуль часов DS-3231]] | 1 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа-мама]] | 4 | **Схема подключения:** {{ :главная:модули:ds3231.jpg |}} **Скетч для загрузки:** <file Arduino> //Подключение библиотек #include <Wire.h> #include "DS3231.h" DS3231 RTC; //Создание объекта DS3231 char weekDay[][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; //Создание массива дней недели //Создание переменной типа DateTime для задания даты в формате: //год, месяц, день, час, минута, секунда и день недели (от 0 - воскресенье до 6 - суббота) DateTime dt(2016, 8, 22, 16, 10, 0, 1); void setup () { Serial.begin(9600); //инициализация Serial-порта Wire.begin(); //инициализация библиотеки Wire RTC.begin(); //инициализация часов RTC.adjust(dt); //Задание даты-времени так как она задана в переменной 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); //задержка на 1 сек RTC.convertTemperature(); //конвертация текущей температуры в регистрах Serial.print(RTC.getTemperature()); //чтение регистров и вывод полученной температуры Serial.println(" C"); delay(1000); //задержка на 1 сек } </file>