====== Часы реального времени (Troyka-модуль) ====== [[amp>product/troyka-rtc?utm_source=man&utm_campaign=troyka-rtc&utm_medium=wiki|Часы реального времени RTC ]] (Real Time Clock) — модуль на базе чипа DS1307 с автономным питанием от батарейки-таблетки. Используйте его для получения текущей секунды, минуты, часа, дня недели месяца и года. {{ :продукты:troyka-rtc:rtc_overvew.jpg?nolink |}} ===== Видеообзор ===== {{youtube>feecmABi4-s?large}} ===== Подключение и настройка ===== Часы реального времени общаются с управляющей электроникой по протоколу [[Видеоуроки:7-i2c-и-processing|I²C / TWI]]. Для подключения используется два [[amp>product/3-wire-cable-digital-troyka?utm_source=man&utm_campaign=troyka-rtc&utm_medium=wiki|3-проводных шлейфа]]. При подключении модуля к Arduino удобно использовать [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-rtc&utm_medium=wiki|Troyka Shield]].{{ :продукты:troyka-rtc:troyka-rtc_scheme_troykashield.png |}} Если хотите оставить минимум проводов — воспользуйтесь [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-rtc&utm_medium=wiki|Troyka Slot Shield]].{{ :продукты:troyka-rtc:troyka-rtc_scheme_troykaslotshield.png |}} ==== Пример работы с Arduino ==== В качестве примера выведем в Serial порт текущее время, дату и день недели. Для запуска примера понадобится библиотека [[https://github.com/amperka/TroykaRTC|TroykaRTC]]. // библиотека для работы I²C #include // библиотека для работы с часами реального времени #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 ==== В качестве примера выведем в «поле консоли» текущее время, дату и день недели. Для запуска примера понадобится [[js:rtc|библиотека для 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')); ===== Элементы платы ===== {{ :продукты:troyka-rtc:rtc_annotation.png?nolink |}} ==== Микросхема DS1307 ==== Микросхема, занимающаяся подсчетом времени. Связь с микросхемой происходит по протоколу I2C. Её I2C-адрес 0b1101000. ==== Кварцевый резонатор ==== Для точной работы часов используется кварцевый резонатор на частоте 32768 Гц. Та же частота используется в кварцевых часах. Такая частота обеспечивает 215 циклов в секунду, что очень удобно для простых двоичных счётчиков ==== Гнездо для батарейки ==== Батарейка CR1225 обеспечивает работу часов реального времени при выключенном питании. Без батарейки модуль не может работать, даже если подключено внешнее питание. ==== Контакты подключения 3-проводных шлейфов ==== //Контакты питания:// * Земля (G) — чёрный провод. Соедините с пином ''GND'' Arduino. * Питание (V) — красный провод. Соедините с пином ''5V'' Arduino. * Не используется. //Контакты шины I²C:// * Сигнальный (D) — Подключите к ''SDA'' пину Arduino. * Сигнальный (С) — Подключите к ''SCL'' пину Arduino. * Не используется. ===== Принципиальная и монтажная схемы ===== {{:продукты:troyka-rtc:rtc_schematic.png?direct&350 |}} {{ :продукты:troyka-rtc:rtc_layout.png?direct&300|}} ===== Характеристики ===== * Напряжение внешнего питания: 4,5–5,5 В * Напряжение питания батарейки: 2–3,5 В * Потребляемый ток: 500 нА (≈6 месяцев на батарейке) * Выходной интерфейс: I²C * Габариты: 25,4×25,4 мм ===== Ресурсы ===== * [[https://github.com/amperka/TroykaRTC|Библиотека для работы с Arduino]] * [[http://files.amperka.ru/datasheets/DS1307.pdf|Datasheet на микросхему DS1307]] (pdf) * [[/js:rtc|Библиотека для Iskra JS]] * [[amp>product/troyka-rtc?utm_source=man&utm_campaign=troyka-rtc&utm_medium=wiki|Часы реального времени RTC ]] в магазине.