Последние статьи
- Управляем Arduino через Bluetooth HC-06, с компьютера или смартфона
- Паяльник с регулятором мощности ZD-99. Обзор и ремонт после четырёх лет эксплуатации
- Подключаемся к VPN, через PPTP, на примере Windows 10 mobile и Windows XP
- Подключаем ультразвуковой дальномер HC-SR04 к Arduino
- Китайский аналог Arduino Nano в подарок на Новый год!
Последние комментарии
- 08.04.2018 18:34
-
08.04.2018 18:13
Ай ца-ца молодца. Только собирался под микроскопом ...
-
03.04.2018 00:15
Когда соединяете пин RESET на UNO, с пином ...
-
02.04.2018 12:14
Не могу понять про пошивку про через уно.
-
25.03.2018 08:43
У меня и Made in Italy, и белая окраска снизу.
Самое читаемое
- Переходник USB to COM (RS232) YP-01 на чипе PL2303HX
- Знакомство с Arduino Pro mini на примере китайского аналога
- Знакомство с Arduino UNO на примере китайского аналога
- Обход блокировки Одноклассников, Вконтакте, Яндекс и Маил.ру с помощью OpenVPN
- Часы реального времени DS3231SN (ZS-042). Подключение к Arduino
Часы реального времени 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.
Подробнее...