Часы в ардуино: Простые часы на Arduino Uno [Амперка / Вики]

Real Time Clock (RTC)/Часы реального времени

Статья проплачена кошками — всемирно известными производителями котят.

Если статья вам понравилась, то можете поддержать проект.

Модуль DS1307
Библиотека RTClib

Иногда требуется отслеживать определённое время наступления события. Модуль часов реального времени с литиевой батарей позволяет хранить текущую дату, независимо от наличия питания на самом устройстве. Наиболее распространённые модули RTC: DS1302 (совсем не точные), DS1307 (не очень точные), DS3231 (точные), DS3232 (точные) и др.

Модуль часов представляет собой небольшую плату, которая содержит микросхему (DS1307, DS1302, DS3231), а также сам механизм установки батарейки питания. Часы ведут отсчёт в удобных для человека единицах – минуты, часы, дни недели и другие, в отличие от обычных счётчиков и тактовых генераторов, которые считывают «тики». В Arduino имеется функция millis(), которая умеет считывать различные временные интервалы, но основным недостатком функции является сбрасывание в ноль при включении таймера.

С её помощью можно считать только время, а установить дату или день недели невозможно. Модули часов реального времени позволяют решить эту задачу.

Электронная схема модуля включает в себя микросхему, источник питания, кварцевый резонатор и резисторы. Кварцевый резонатор работает на частоте 32768 Гц, которая является удобной для обычного двоичного счетчика. В схеме DS3231 имеется встроенный кварц и термостабилизация, которые позволяют получить значения высокой точности.

Как правило, все модули работают по протоколу I2C.

Модуль можно использовать в случаях, когда данные считываются довольно редко, с интервалом в неделю и более. Это позволяет экономить на питании, так как при бесперебойном использовании придётся больше тратить напряжения, даже при наличии батарейки. Наличие памяти позволяет регистрировать различные параметры (например, измерение температуры) и считывать полученную информацию из модуля.

Модуль DS1307 собран на основе микросхемы DS1307ZN, питание поступает от литиевой батарейки для реализации автономной работы в течение длительного промежутка времени. Батарея на плате крепится на обратной стороне. На модуле имеется микросхема AT24C32 – это энергонезависимая память EEPROM на 32 Кбайт. Обе микросхемы связаны между собой шиной I2C. DS1307 обладает низким энергопотреблением и содержит часы и календарь по 2100 год.

Технические характеристики

  • Питание – 5В
  • Диапазон рабочих температур от -40°С до 85°С
  • 56 байт памяти
  • Литиевая батарейка LIR2032
  • 12-ти и 24-х часовые режимы
  • Поддержка интерфейса I2C

Взаимодействие с другими устройствами и обмен с ними информацией производится с помощью интерфейса I2C с контактов SCL и SDA. В схеме установлены резисторы, которые позволяют обеспечивать необходимый уровень сигнала. Также на плате имеется специальное место для крепления датчика температуры DS18B20.Контакты распределены в 2 группы, шаг 2,54 мм.

В первой группе контактов находятся следующие выводы:

  • DS – вывод для датчика DS18B20
  • SCL – линия тактирования
  • SDA – линия данных
  • VCC – 5В
  • GND — земля

Во второй группе контактов находятся:

  • SQ – 1 МГц
  • DS
  • SCL
  • SDA
  • VCC
  • GND
  • BAT – вход для литиевой батареи

Чтобы подключить модуль к Arduino Uno, используются 4 вывода.

DS1307 | Arduino 
-----------------
   GND | GND 
   VCC | 5V 
   SCL | A5
   SDA | A4
    DS | N/A

Платы Leonardo, MEGA, ADK, DUE используют другие схемы. Ищите в интернете.

Библиотека RTClib

Для работы с модулем реального времени существует множество библиотек. Рассмотрим библиотеку от Adafruit RTClib.

Установите её через менеджер библиотек. После установки запустите один из готовых примеров из библиотеки ds1307. В Serial Monitor установите скорость 57600. Вы увидите дату на сегодняшний день.

При запуске скетча время берётся с компьютера, поэтому сначала убедитесь, что на вашем компьютере установлены правильные дата и время.

Получение даты и времени происходит через вызов функции now(), который возвращает объект DateTime. Данный объект позволяет узнать год, месяц, день, час, минуту и секунду.

Реклама

Часы – матрица на Arduino и адресных светодиодах WS2812B.

Это уже 2 версия часов матрицы на

Arduino и адресных светодиодах WS2812B. Первый вариант собирал год назад. Допустил пару ошибок. От выбора пластика до реализации рассеивателя. Но обо всем по порядку.

Печать деталей и сборка корпуса.

Распечатался детали для часов. 3D модели сам не делал, а взял готовый из интернета. Вы можете скачать модели со страницы автора или внизу страницы в разделе «файлы для скачивания».

Печатаю я на своём принтере Anet A8 на стекло. Это достаточно недорогой, но эффективный способ печати.

Для того, чтобы деталь держалась хорошо, используя

клей ПВА, наношу его на стекло. Но перед тем как печатать данный проект, у меня закончился клей, которым я мазал стекло. И решил я нанести столярный клей.

Предварительно развёл его водой. На первый взгляд результат ничем не отличался. Детали приклеились ещё лучше. Клей при высыхании становится прозрачным. Ну, в принципе, как всегда. После распечатки клей смываю горячей водой. Но, тут ожидал меня сюрприз.При смывании клей не отходил, становился белым.

Это меня очень сильно расстроила. После чего положил заготовки в горячую воду и оставил на ночь. Клей так и не отошёл. Хороший клей. Но нельзя этих целей.

Принял решение покрасить часы темно – серым цветом, развёл краску.

Цвет подбирать помогал сын. В итоги вот такой оттенок получился, мне очень понравился. С помощью тампона из губки нанёс краску на корпус часов в 2 слоя. И вот что получилось. Теперь можно приступить к сборке часов.

Сборка корпуса часов матрицы.

Приступаю к сборке часов. Для этого нам понадобится светодиодная лента, 60 светодиодами на метр.

Клеим на 2 плоские пластины-основания. Таким образом, чтобы подключение ленты была в левом нижнем углу. И укладываем ленту в виде зигзага. Важно на данном этапе не перепутать направление ленты.

Беру шлейф от компьютера, который раньше использовали для подключения CD-rom. Разделяю на 3 проводника. Нарезаю проводники нужной длины. И зачищаю края каждого провода.

Припаял провода по направлению светодиодной ленты так, чтобы получился зигзаг.

Подключаю к ESP8266, в которой загружен код из предыдущего проекта: «Елочная гирлянда на ESP8266 (ESP32). Управление с приложения».

Тестирование показала, что все сделано правильно, и светодиоды светятся. Устанавливаю решётки поверх светодиодной ленты. На светодиоды нанёс термоклей. Чтобы усилить эффект рассеивания.

После чего приступает к сборке корпуса. Для соединения двух основных частей, использую специальные фиксаторы, которые ставятся сверху и снизу в местах соединения корпуса часов.

На решётку корпуса устанавливаю матовый пластик, который вырезал из коробки под нитки. Коробку под нитки купил незадорого в фикс-прайсе.

Установил внутреннюю часть со светодиодами в корпус. Затем поставил боковые накладки, которые закрывают провода. Поверх накладок устанавливаются ножки. И с помощью винтов М3 длинной 10 мм. Закрепляю корпус и ножки. По центру часов устанавливаю корпус под электронику, который также служит фиксатором конструкции.Все скрепляю винтами М3.

Проверка электроники часов на Arduino.

Пришло время проверить работоспособность часов на Arduino и адресных светодиодах WS2812B. Для этого собираем электронику на макетной плате.

Для проекта на Arduino понадобится следующая электроника:

  • Arduino Nano или Arduino Pro Mini.
  • Лента адресных светодиодов WS2812B.
  • МодульDS-3231 или DS-3231 mini.
  • Две тактовые кнопки.
  • Соединительные провода.
  • Макетная плата.
  • Блок питания 5в. 700 мА.

Схема подключения часов матрицы на Arduino NANO.

Для тестирования и проверки кода часов матрицы собрал электронику на макетной плате по схеме.

Протестировал и поправил код, и вот что получилось.

Пришло время установить электронику в корпус часов. Плату решил использовать Arduino Pro Mini. Так как они есть у меня в наличии, и занимает меньше места в корпусе часов.

Установка электроники в корпус часов.

Подготовил всю необходимую электронику.Нарезал провода нужной длины. На необходимые проводники установил разъём Dupont. Загрузил прошивку в Arduino Pro Mini. Как это сделать, читайте в статье: «Прошивка Arduino Pro Mini с помощью конвертера PL2303HX». И после чего приступим к пайке.

Схема подключения часов на Arduino Pro Mini и светодиодах WS2812B.

Паяем электронику по схеме.

Вот такой результат получился, осталось уложить все в корпус часов.

Чтобы Arduino Pro Mini и DS-3231 не стучали об корпус, приклеил их на двухсторонний вспененный скотч.

Тактовые кнопки устанавливают на место и креплю специальными пластинами, распечатанными заранее. Устанавливаю крышку на бокс с электроникой.А теперь можно подключить часы к питанию и приступить к финальному тестированию.

А сейчас немного о прошивке часов.

Код часов на Arduino и светодиодах WS2812B.

Для начала необходимо установить 2 библиотеки: DS3232RTC –для работы с модулем реального времени DS3231 и FastLED – для управления адресными светодиодами WS2812B.

Внимание! При установке библиотеки FastLED будьте внимательны нужно ставить версию, не больше, чем 3.3.2. Если у вас уже установлена более поздняя версия библиотеки, её нужно переустановить.

Установить эти библиотеки можно из файла. Скачать их можно внизу статьи в разделе «файлы для скачивания».

Также установить данные библиотеки можно через менеджер библиотек. Для этого в Arduino IDE переходим в пункт меню Скетч > Подключить библиотеку > Управлять библиотеками …

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

Отфильтруйте результаты поиска, набрав «DS3232RTC». Устанавливаем последнюю версию библиотеки.

Затем установить библиотеку FastLED для этого отфильтруйте результаты поиска, набрав «FastLED».

Выбираем версию 3.3.2. и устанавливаем. Если у вас была установлена более новая версия, её нужно переустановить что можно сделать через менеджер – библиотека. Аналогичным образом.Выбрать нужную версию и нажать, установить. Ваша версия библиотеки будет переустановлена на ту версию, которую вы выбрали.

Модуль DS-3231 подключён по шине I2C, по этому контакт SDA подключаем к пину А4 Arduino и SCL подключаем к A5.

#define LED_PIN 6                     // Пин поключения ленты 6

Контакт данных ленты подключаем к 6 пину Arduino. Тактовые кнопки подключаем к 3 и 4 пинам Arduino.

byte button_1 = 4;  // кнопка
byte button_2 = 3;  // кнопка

Данные настройки можно оставить без изменений, но про них нужно знать.

После чего можно приступить к загрузке скетча в Arduino. Код мы рассмотрели, тут ничего сложного нет, а сейчас приступим к сравнению предыдущей версии часов с текущей.

Сравнение первой версии часов с данной реализацией.

Подобные часы я уже собирал около года назад, но допустил ряд ошибок:

  • Напечатал пластиком PLA. И буквально через месяц пластик начал трескаться, и часы потеряли свою привлекательность. Данную версию напечатал пластиком PETG.
  • Размер матрицы не позволяла водить время в формате 24 часа, что было исправлено в данном весе часов.
  • В первой версии не было фальш – панелей, которые прикрывают провода. Что исправлено данной версии.
  • В данной версии также реализовал вывод температуры со встроенного датчика модуля часов DS3231.Данные не очень точные, это связано с тем, что модуль установлен в корпус. И реагировать на изменение температуры будет медленно. Но в помещении нет резких перепадов температуры, и данной точности будет достаточно.
  • Покрасил корпус часов матовым серым цветом, что делать часы более красивыми.

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

Понравились часы, не забудь нажать на сердечко. И поделиться с друзьями в соцсетях нажав на иконку в правом верхнем углу статьи. Или ниже статьи, если вы читаете с телефона.

Понравился проект Часы – матрица на Arduino и адресных светодиодах WS2812B? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скачивая материал, я соглашаюсь с Правилами скачивания и использования материалов.

Код часов на Arduino и светодиодах WS2812B.ino11 Kb 1706Скачать
библиотека FastLED .zip331 Kb 933Скачать
библиотека DS3232RTC .zip48 Kb 919Скачать
Файлы для печати .zip958 Kb 902Скачать
Цифровой будильник

с использованием Arduino от Pavanteja Penumati :: SSRN

Скачать эту статью

Открыть PDF в браузере

ssrn.com» data-abstract-auth=»false»/> Добавить бумагу в мою библиотеку

Делиться: