Мастерство работы с RTC DS3231 на Arduino: пошаговое руководство
В этом уроке Arduino мы научимся использовать модуль реального времени DS3231. Вы можете посмотреть следующее видео или прочитать письменное руководство ниже. Первый вопрос, который возникает здесь: зачем нам нужен отдельный RTC для проекта Arduino, когда у самого Arduino есть встроенный таймер? Суть в том, что модуль RTC работает от батареи и может отслеживать время даже если мы перепрограммируем микроконтроллер или отключим основное питание. DS3231 — это недорогой, высокоточный модуль реального времени, который может поддерживать часы, минуты и секунды, а также день, месяц и год. Также он имеет автоматическую компенсацию високосных годов и месяцев с менее чем 31 днем. Модуль может работать от 3,3 или 5 В, что делает его подходящим для многих платформ разработки или микроконтроллеров. Вход батареи — 3 В, и типичная батарея CR2032 3 В может запитывать модуль и сохранять информацию более года. Модуль использует протокол связи I2C, что делает подключение к плате Arduino очень простым. Вот схема подключения: Нам нужно всего 4 провода: VCC и GND для питания модуля, и два вывода I2C — SDA и SCL. Компоненты, необходимые для этого урока Arduino, можно найти по ссылкам ниже: После подключения модуля нужно запрограммировать плату Arduino для работы с модулем реального времени. Однако, когда речь идет о программировании связи между Arduino и I2C-модулем, код не так мал и прост. К счастью, в интернете уже есть несколько библиотек для RTC DS3231. Для этого урока я выбрал библиотеку, созданную Хеннингом Карлсеном, которую можно найти и скачать с его сайта www.rinkydinkelectronics.com. После скачивания и установки библиотеки можно использовать её первый демонстрационный пример для первоначальной активации часов RTC-модуля. В разделе setup демонстрационного примера кода можно заметить три строки, которые нужно раскомментировать, чтобы первоначально установить день недели, время и дату. Первая строка устанавливает день недели, вторая — время в часах, минутах и секундах, третья — дату в днях, месяцах и годах. После загрузки этого кода нужно закомментировать обратно эти три строки и загрузить код снова. Если посмотреть на раздел loop кода, можно увидеть, что теперь, используя три пользовательские функции, мы получаем информацию от RTC и выводим её в монитор последовательного порта. Вот как это выглядит в мониторе последовательного порта. Теперь, даже если мы отключим питание Arduino, а затем снова подключим и запустим монитор последовательного порта, мы заметим, что время продолжает идти без сброса. Теперь у нас есть работающие часы реального времени, и мы можем использовать их в любом проекте Arduino. В качестве второго примера я подключил LCD к Arduino и вывел на него время и дату. Вот исходный код этого примера: Это всё для этого урока Arduino. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже.Обзор

Модуль реального времени DS3231


Программирование
// Код из Demo Example библиотеки DS3231
void setup() {
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino Leonardo
//while (!Serial) {}
rtc.begin();
// Следующие строки можно раскомментировать для установки даты и времени
//rtc.setDOW(WEDNESDAY); // Установить день недели на СРЕДУ
//rtc.setTime(12, 0, 0); // Установить время на 12:00:00 (24-часовой формат)
//rtc.setDate(1, 1, 2014); // Установить дату на 1 января 2014
}Язык кода: Arduino (arduino)// Код из Demo Example библиотеки DS3231
void loop() {
Serial.print(rtc.getDOWStr());
Serial.print(" ");
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
Serial.println(rtc.getTimeStr());
delay(1000);
}Язык кода: Arduino (arduino)

/*
* Arduino DS3231 Real Time Clock Module Tutorial
* Created by Dejan Nedelkovski,
* www.HowToMechatronics.com
* DS3231 Library made by Henning Karlsen which can be found and downloaded from his website, www.rinkydinkelectronics.com.
*/
#include <DS3231.h>
#include <LiquidCrystal.h>
DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
void setup() {
rtc.begin();
lcd.begin(16,2);
}
void loop() {
lcd.setCursor(0,0);
lcd.print("Time: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());
delay(1000);
}Язык кода: Arduino (arduino)
Производственный процесс
- Arduino POV-часы: сборка дисплея на эффекте сохранения образа
- Создание надежного RFID-замка на Arduino — пошаговое руководство
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Монитор температуры и реальные часы на Arduino Due с TFT-дисплеем 3.2"
- Сборка Берлинских часов на Arduino UNO — LED-матричные часы своими руками
- Цифровые часы на TM1637 с настройкой времени и будильником — прототип на Arduino Nano
- eDOT: точные Arduino-часы и метеостанция с встроенным ИК-пультом
- Arduino погодные часы реального времени: OLED-дисплей для времени, даты и температуры
- Проект датчика отпечатков пальцев на Arduino Nano – Пошаговое руководство
- Робот в реальном времени обнаруживает 3D-изменения и повышает безопасность солдата через AR