Часы реального времени RTC (Real Time Clock) — модуль на базе чипа DS1307 с автономным питанием от батарейки-таблетки. Используйте его для получения текущей секунды, минуты, часа, дня недели месяца и года.
Часы реального времени общаются с управляющей электроникой по протоколу I²C / TWI. Для подключения используется два 3-проводных шлейфа. При подключении модуля к Arduino удобно использовать Troyka Shield.
Если хотите оставить минимум проводов —
воспользуйтесь Troyka Slot Shield.
В качестве примера выведем в Serial порт текущее время, дату и день недели. Для запуска примера понадобится библиотека TroykaRTC.
// библиотека для работы I²C #include <Wire.h> // библиотека для работы с часами реального времени #include "TroykaRTC.h" // размер массива для времени #define LEN_TIME 12 // размер массива для даты #define LEN_DATE 12 // размер массива для дня недели #define LEN_DOW 12 // создаём объект для работы с часами реального времени RTC clock; // массив для хранения текущего времени char time[LEN_TIME]; // массив для хранения текущей даты char date[LEN_DATE]; // массив для хранения текущего дня недели char weekDay[LEN_DOW]; void setup() { // открываем последовательный порт Serial.begin(9600); // инициализация часов clock.begin(); // метод установки времени и даты в модуль вручную // clock.set(10,25,45,27,07,2005,THURSDAY); // метод установки времени и даты автоматически при компиляции clock.set(__TIMESTAMP__); // что бы время менялось при прошивки или сбросе питания // закоментируйте оба метода clock.set(); } void loop() { // запрашиваем данные с часов clock.read(); // сохраняем текущее время, дату и день недели в переменные clock.getTimeStamp(time, date, weekDay); // выводим в serial порт текущее время, дату и день недели Serial.print(time); Serial.print("\t"); Serial.print(date); Serial.print("\t"); Serial.println(weekDay); // ждём одну секунду delay(1000); }
В качестве примера выведем в «поле консоли» текущее время, дату и день недели. Для запуска примера понадобится библиотека для Iskra JS. Она обеспечивает простую работу с модулем и прячет в себе все тонкости протокола обмена данными между часами реального времени и управляющей платой.
// Настраиваем шину I2C PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000}); // Создаем новый объект Rtc var rtc = require('@amperka/rtc').connect(PrimaryI2C); // Устанавливаем на часах текущее время контроллера rtc.setTime(); // Результат в виде строки ISO: 2016-21-1T12:1:14 print(rtc.getTime('iso'));
Микросхема, занимающаяся подсчетом времени. Связь с микросхемой происходит по протоколу I2C. Её I2C-адрес 0b1101000.
Для точной работы часов используется кварцевый резонатор на частоте 32768 Гц. Та же частота используется в кварцевых часах. Такая частота обеспечивает 215 циклов в секунду, что очень удобно для простых двоичных счётчиков
Батарейка CR1225 обеспечивает работу часов реального времени при выключенном питании. Без батарейки модуль не может работать, даже если подключено внешнее питание.
Контакты питания:
GND
Arduino.5V
Arduino.Контакты шины I²C:
SDA
пину Arduino.SCL
пину Arduino.