Меню
Блог Гридина Семёна

Робототехника и автоматизация — это наука о будущем

Рубрики блога

Подключение часов реального времени ds1302 к Arduino

Подключение часов реального времени ds1302 к Arduino

Итак, часы реального времени. Эта полезная штучка решает большинство полезных задач, связанных со временем. Допустим управление поливом в 5 часов утра на даче. Или включение и выключение освещения в определённый момент. По дате можно запускать отопление в каком-нибудь доме. Вещь достаточно интересная и полезная. А конкретно? Мы с вами рассмотрим часы реального времени DS1302 для популярной платформы Arduino.

Из этой статьи вы узнаете:

Часы реального времени DS1302
Способ программирования Arduino для работы с DS1302

Доброго времени суток, уважаемые читатели блока kip-world! Как ваши дела? Напишите в комментариях, вы увлекаетесь робототехникой? Что значит для вас эта тема?

У меня ни на минуту не покидает мысль об этом. Я сплю и вижу, когда мы наконец — то придём к тому, что каждый сможет позволить себе купить персонального робота — помощника. Не важно, чем он будет заниматься, уборкой мусора, стрижкой газонов, мойкой автомобиля.

Я просто представляю себе, насколько сложные алгоритмы они должны содержать в своих «мозгах».

Ведь мы придём к тому, что мы будем так же прошивать ПО, как на персональных компах. Так же скачивать прикладные программы. Пришивать руки, ноги, менять клешни, манипуляторы.

Посмотрите фильмы «Я-робот», «Искусственный интеллект», «Звёздных воинов».

Японцы уже давно внедряют свои разработки. Чем мы хуже?? У нас очень слабая популярность. Я знаю немногих разработчиков. По пальцам пересчитать. Мы занимаемся другим. Мы перекупщики. Просто покупаем готовые наборчики, роботов — игрушек и всякую дребедень.

Почему не разрабатываем вот это:

Геты

Или вот это:

Я закончил свои размышления вслух. Давайте мы с вами поговорим о подключении Таймера часов реального времени DS1302 к Arduino.

Часы реального времени DS1302

Контроллер Arduino не имеет своих собственных часов. Поэтому в случае необходимости нужно дополнять специальной микросхемой DS1302.

Таймер DS1302

По питанию эти платы могут использовать свой элемент питания, или запитываться непосредственно с платы Arduino.

Таблица распиновки:

VCCПитание (+5V)
GNDЗемля (GND)
CLKК цифровому пину Arduino ( в примере – пин 6, Arduino UNO)
DATК цифровому пину Arduino ( в примере – пин 7, Arduino MEGA UNO)
RSTК цифровому пину Arduino ( в примере – пин 8, Arduino MEGA UNO)

Схема подключения c Arduino UNO:

Arduino-DS1302

Способ программирования Arduino для работы с DS1302

Обязательно нужно скачать действующую библиотеку из надёжных источников.

Универсальная библиотека для DS1302, DS1307, DS3231.

Библиотека позволяет считывать и записывать параметры реального времени. Небольшое описание я привожу ниже:

#include <iarduino_RTC.h> // Подключаем библиотеку.
iarduino_RTC ОБЪЕКТ ( НАЗВАНИЕ [, ВЫВОД_RST [, ВЫВОД_CLK [, ВЫВОД_DAT ]]] ); // Создаём объект.

Функция begin (); // Инициализация работы RTC модуля.

Функция settime ( СЕК [, МИН [, ЧАС [, ДЕНЬ [, МЕС [, ГОД [, ДН ]]]]]] ); // Установка времени.

Функция gettime ( [ СТРОКА ] ); // Чтение времени.

функция blinktime ( ПАРАМЕТР [ ЧАСТОТА ] ); // Заставляет функцию gettime «мигать» указанным параметром времени.

функция period ( МИНУТЫ ); // Указывает минимальный период обращения к модулю в минутах.

Переменная seconds // Возвращает секунды от 0 до 59.

Переменная minutes// Возвращает минуты от 0 до 59.

Переменная hours // Возвращает часы от 1 до 12.

Переменная Hours // Возвращает часы от 0 до 23.

Переменная midday // Возвращает полдень 0 или 1 (0-am, 1-pm).

Переменная day // Возвращает день месяца от 1 до 31.

Переменная weekday // Возвращает день недели от 0 до 6 (0-воскресенье, 6-суббота).

Переменная month // Возвращает месяц от 1 до 12.

Переменная year // Возвращает год от 0 до 99.

Пишем простенькую программу. Установка текущего времени в RTC модуль (DS1302):

Считываем текущее время с RTC модуля (DS1302) и выводим в "Последовательный порт" :

С вами на связи был я, Сёма. Пишите в комментах, подписывайтесь на новости, пишите письма.

С уважением, Гридин Семён.

Интересен блог? Подпишись и получай новости на почту

Подписка на новости блога

Вам так же может быть интересно

Комментариев к статье: 11
  • Доброго времени суток)

    Хорошая микросхемка, стабильная.

    «По питанию эти платы могут использовать свой элемент питания, или запитываться непосредственно с платы Arduino.» — внешнее питание микросхеме в любом случае необходимо для чтения/записи текущих времени/даты/пользовательских данных. Элемент питания на самом шилде используется исключительно для тактирования в отсутствии основного питания.

    И скетчи все-таки не тру)

    Где романтика с самописными библиотеками, ногодрыгом и курением даташита? =)))

    (как раз недавно пришлось этим заниматься с DS1307 ;-) )

    А так неплохая статья) Удачи и всего хорошего =)

  • Юрик, привет, спасибо за комментарий. Времени не очень хватает на электронную романтику, вкуривания даташита и придумывания собственных библиотек.

    Пока изучал поверхностно... :o

    Насчёт питания я уловил мысль...

  • Добрый день!

    А как с помощью данной библиотеки с подключенным DS1302 читать и писать в память часов данные (вроде память у нее 32 байта...)?

    • Привет, записывать в память я полагаю вот так

      clock.set (20,29,45,27,07,2005,THURSDAY); ,

      запросить вот так

      clock.read ();

      присвоить переменным вот так

      int hour = clock.getHour ();

      int minute = clock.getMinute ();

  • Доброе время суток,

    После подключения Ардуино упорно в монитор выводила полночь. По моему в примере перепутаны пины. Строку, «iarduino_RTC time (RTC_DS1302,6,7,8);» поменял на «iarduino_RTC time (RTC_DS1302,8,6,7);» и все заработало.

    Может подскажите есть ли возможность синхронизации DS1302 с компьютером?

    • Приветствую, я так предполагаю — нет. Так как DS1302 напрямую не связывается с компьютером. С шильдиком работает скетч в Ардуино.

    • Можно это осуществить через serial и Python

  • Текст библиотеки читается с трудом! Одна строка пишется левой рукой, другая правой, а потом наоборот.

    • Именно в блоге не удобно, или сама библиотека?

  • Потому что библиотеку, как и код программы, писал не автор.

    Если решили скопировать, то укажите первоисточник. ;-)

    • Я и не отрицаю, в этой статье и код и библиотека не мои. Зачем изобретать велосипед, когда есть готовое в открытых источниках.

Оставить комментарий

  • ;-)
  • :smile:
  • :sad:
  • :roll:
  • :razz:
  • :oops:
  • :o
  • :lol:
  • :idea:
  • :grin:
  • :cry:
  • :cool:
  • :???: