Учебное пособие по часам реального времени Arduino и DS3231
<основной класс="главный сайт" id="главный">
В этом уроке по Arduino мы узнаем, как использовать модуль часов реального времени DS3231. Вы можете посмотреть следующее видео или прочитать письменное руководство ниже.
Обзор
Первый вопрос, который возникает здесь, заключается в том, почему нам на самом деле нужен отдельный RTC для нашего проекта Arduino, когда сама Arduino имеет встроенный хронометр. Дело в том, что модуль RTC работает от батареи и может отслеживать время, даже если мы перепрограммируем микроконтроллер или отключим основное питание.

Часы реального времени DS3231
DS3231 — это недорогие высокоточные часы реального времени, которые могут отображать часы, минуты и секунды, а также информацию о дне, месяце и годе. Кроме того, он автоматически компенсирует високосные годы и месяцы, в которых меньше 31 дня.

Модуль может работать как от 3,3, так и от 5 В, что делает его подходящим для многих платформ разработки или микроконтроллеров. Входное напряжение батареи составляет 3 В, и типичная батарея 3 В CR2032 может питать модуль и сохранять информацию более года.
Модуль использует протокол связи I2C, который делает подключение к плате Arduino очень простым.
Вот принципиальная схема:

Итак, все, что нам нужно, это 4 провода, контакты VCC и GND для питания модуля, а также два коммуникационных контакта I2C, SDA и SCL.
Компоненты, необходимые для этого руководства по Arduino, можно получить по ссылкам ниже:
- Часы реального времени DS3231……………..
- Плата Arduino ……………………………
- Макет и соединительные провода………
Программирование
После подключения модуля нам нужно запрограммировать плату Arduino для работы с часами реального времени. Однако, когда дело доходит до программирования связи между Arduino и модулем I2C, код оказывается не таким уж маленьким и простым. К счастью, для DS3231 RTC уже есть несколько библиотек, которые можно найти в Интернете.
Для этого урока я решил использовать библиотеку, созданную Хеннингом Карлсеном, которую можно найти и загрузить с его веб-сайта www.rinkydinkelectronics.com.
Итак, как только мы загрузим и установим библиотеку, мы можем использовать ее первый демо-пример, чтобы первоначально активировать часы модуля RTC. В разделе настройки кода демонстрационного примера мы можем заметить, что есть три строки, которые нам нужно раскомментировать, чтобы изначально установить день недели, время и данные.
// Code from the Demo Example of the DS3231 Library
void setup()
{
// Setup Serial connection
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino Leonardo
//while (!Serial) {}
// Initialize the rtc object
rtc.begin();
// The following lines can be uncommented to set the date and time
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
//rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014
}
Code language: Arduino (arduino)
Первая строка предназначена для установки дня недели, вторая строка — для установки времени в часах, минутах и секундах, а третья строка — для установки даты в днях, месяцах и годах.
Как только мы загрузим этот код, нам нужно прокомментировать три строки и повторно загрузить код.
// Code from the Demo Example of the DS3231 Library
void loop()
{
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");
// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// Send time
Serial.println(rtc.getTimeStr());
// Wait one second before repeating
delay (1000);
}
Code language: Arduino (arduino)
Если мы посмотрим на цикл кода, мы увидим, что теперь, используя три пользовательские функции, мы получаем информацию от RTC и печатаем ее в последовательном мониторе. Вот как они отображаются в последовательном мониторе.

Теперь, даже если мы отключим питание Arduino, а затем снова подключим его и снова запустим Serial Monitor, мы можем заметить, что время продолжает идти без сброса.
Итак, теперь у нас есть часы реального времени, и мы можем использовать их в любом проекте Arduino. В качестве второго примера я подключил ЖК-дисплей к Arduino и напечатал на нем время и дату.

Вот исходный код этого примера:
/*
* Arduino DS3231 Real Time Clock Module Tutorial
*
* Crated 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> // includes the LiquidCrystal Library
DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
rtc.begin(); // Initialize the rtc object
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
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);
}
Code language: Arduino (arduino)
Это все, что касается этого руководства по Arduino. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже.
Производственный процесс
- Часы видения Arduino pov
- Учебное пособие по блокировке RFID для Arduino
- Основные часы
- Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
- Берлинские часы
- Цифровые часы TM1637 с функцией настройки времени и будильника
- eDOT - точные часы и метеостанция на базе Arduino
- Отображение температуры Arduino OLED с часами реального времени
- Учебное пособие по датчику отпечатков пальцев Arduino
- Робот обнаруживает изменения в 3D и делится ими в режиме реального времени