Последние комментарии
- 09.03.2023 10:51
-
25.01.2023 16:05
Спасибо. Хорошая статья. Хотелось бы увидеть как ...
-
21.01.2023 22:58
Доброго дня! Як можна замовити? І чи є схема або ...
-
05.05.2022 19:14
Спасибо автору, понял почему блинк не работал
-
21.04.2022 13:18
В моём случае он используется совместно с AGP ...
Самое читаемое
- Многофункциональный программатор на CH341A
- Переходник USB to TTL (RS232) YP-01 на чипе PL2303HX
- Знакомство с Arduino Pro mini на примере китайского аналога
- Подключаем мощную нагрузку к Arduino, через реле модуль
- Твердотельное реле из симистора для коммутации мощной нагрузки через Ардуино
- Знакомство с Arduino Micro (ATmega32U4) на примере китайского аналога Pro Micro
- Знакомство с Arduino Nano на примере китайского аналога
- Знакомство с Arduino UNO на примере китайского аналога
- Обход блокировки Одноклассников, Вконтакте, Яндекс и Маил.ру с помощью OpenVPN
- Управляем Arduino через Bluetooth HC-06, с компьютера или смартфона
Часы реального времени DS3231SN (ZS-042). Подключение к Arduino
Многие устройства требуют постоянного учёта хронометрических данных (дата, время), эту функцию выполняют специальные электронные схемы, которые называются часами реального времени. Часы реального времени, в нынешнее время, реализованы в виде отдельной микросхемы, к которой нужно добавить кварцевый резонатор и автономный источник питания. В некоторых микросхемах, кварцевый резонатор встроен внутри. Одни из таких часов на микросхеме DS3231SN я купил для своих проектов. В примере буду подключать часы реального времени к китайскому аналогу Arduino UNO.
Представляют из себя законченный модуль ZS-042, который можно подключать к различным устройствам, не только к платформе Arduino.
Модуль построен на микросхеме DS3231SN, которая по сути и является часами реального времени. В отличии от старой модели часов, например на микросхеме DS1307, эти часы содержат внутренний кварцевый резонатор, благодаря чему часы имеют точный ход.
Реализовать часы на Arduino можно и без DS3231SN, но тогда при пропадании питания, значения таймера сбрасываются. Эти же часы имеют резервное питание, поэтому при пропадании питания, они продолжают дальше работать.
Часы умеют производить подсчёт часов, минут, секунд, дат, месяцев, лет (високосные года учитываются до 2100 года). Работают в 12 или 24 часовом режиме, содержат два будильника, а так же имеют внутренний термометр, с диапазоном от -40 ° C до + 85 ° C. Для подключения к различным устройствам, часы подключаются по I2C интерфейсу.
Расположение и назначение пинов на модуле ZS-042:
32К -
SQW - Программируемый выход Square-Wave сигнала.
SCL – Через этот пин по интерфейсу I2C происходит обмен данными с часами.
SDA – Через этот пин передаются данные с часов.
VCC – Питание часов реального времени, нужно 5 вольт. Если на этот пин не поступает напряжение, часы переходят в спящий режим.
GND - Земля.
Для подключения к Arduino UNO, пин SDA часов подключаем к пину A4, а пин SCL к A5. Для питания используются пины GND(-) и VCC(+5v).
Пины SDA и SCL на разных платах Arduino:
SDA | SCL | |
UNO | A4 | A5 |
Mini | A4 | A5 |
Nano | A4 | A5 |
Mega2560 | 20 | 21 |
Leonardo | 2 | 3 |
Установим батарейку CR2032 в часы, такие элементы используются для питания BIOS в компьютерах.
При подключении USB кабеля к Arduino, на часах должен загореться светодиод «POWER» (красный светодиод).
Для того что бы запрограммировать часы через Arduino IDE нужно установить библиотеки.
Скачать библиотеку Time и DS1307RTC.
Последняя библиотека была написана для часов на микросхеме DS1307, но её протоколы взаимодействия совместимы с DS3231, поэтому библиотека подойдёт к нашим часам.
Библиотеки нужно скачать, распаковать и поместить в папку «libraries». При запуске Arduino IDE, они с примерами должны появится в «Образцах».
Устанавливаем Дату и время.
Для этого скопируем данный код в Arduino IDE.
//Подключаем библиотеки: #include <Time.h> #include <Wire.h> #include <DS1307RTC.h> void setup() { setSyncProvider(RTC.get); //Устанавливаем время в формате: //Часы, минуты, секунды, день, месяц, год setTime(13,35,0,22,12,2016); //Применяем: RTC.set(now()); } void loop() { delay(100); } |
Для корректной настройки нужно изменить данные в строке
setTime(13,35,0,22,12,2016);
В скобках через запятую устанавливаем правильные: часы, минуты, секунды, число, месяц, год. У меня в примере установлено 13 часов 35 минут 0 секунд, 22 декабря 2016 год. Вгружаем скетч в Arduino.
Теперь для того что бы прочитать показания из часов, можно воспользоваться примером: «Файл» - «Образцы» - «DS1307RTC» - «ReadTest» и загрузить его в Arduino.
Далее открываем монитор последовательного порта, нажав на соответствующую кнопку.
В открывшемся окне будет отображаться текущие дата и время. Если отключить питание модуля часов от Arduino, Arduino не сможет отслеживать значения и в мониторе через какое то время появится надпись "...read error!" (выделил красным). После возобновления питания, показания даты и времени будут отсчитываться далее. Показания даты и времени не сбросились, поскольку часы питались от своей батарейки CR2032.
Подробнее...