Последние комментарии
- 04.12.2020 23:39
-
04.12.2020 13:36
При выключении роутера все настройки сбиваются, что ...
-
14.10.2020 13:25
В мире нет ни одного полноценного эмулятора LPT ...
-
13.10.2020 02:19
CH341 підтримує напругу джерела 5 В і 3,3 В. При ...
-
28.09.2020 21:41
Будет в октябре)
Самое читаемое
- Переходник USB to COM (RS232) YP-01 на чипе PL2303HX
- Знакомство с Arduino Pro mini на примере китайского аналога
- Подключаем мощную нагрузку к Arduino, через реле модуль
- Обход блокировки Одноклассников, Вконтакте, Яндекс и Маил.ру с помощью OpenVPN
- Знакомство с Arduino UNO на примере китайского аналога
- Многофункциональный программатор на CH341A
- Часы реального времени DS3231SN (ZS-042). Подключение к Arduino
- Управляем Arduino через Bluetooth HC-06, с компьютера или смартфона
- Знакомство с Arduino Micro (ATmega32U4) на примере китайского аналога Pro Micro
- Преобразователь напряжения XL6009 и практическое его применение
Часы реального времени 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.
Подробнее...