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.ino | 11 Kb | 1706 | Скачать | |
библиотека FastLED .zip | 331 Kb | 933 | Скачать | |
библиотека DS3232RTC .zip | 48 Kb | 919 | Скачать | |
Файлы для печати .zip | 958 Kb | 902 | Скачать |
с использованием Arduino от Pavanteja Penumati :: SSRN
Скачать эту статью
Открыть PDF в браузере
ssrn.com» data-abstract-auth=»false»/> Добавить бумагу в мою библиотеку
Делиться:
5 страниц Опубликовано: 5 октября 2021 г.
Просмотреть все статьи Pavanteja Penumati
Kakatiya Institute of Technology and Science, Warangal
Дата написания: 17 июня 2021 г.
Abstract
В этом проекте мы разработали часы реального времени на базе Arduino с будильником. Часы реального времени или RTC — это часы с батарейным питанием, которые измеряют время, даже когда нет внешнего питания или микроконтроллер перепрограммирован. RTC отображает часы и календарь со всеми функциями хронометража. Батарея, которая подключена к RTC, является отдельной и не связана и не подключена к основному источнику питания.
Когда питание восстанавливается, RTC отображает реальное время независимо от продолжительности отключения питания. Такие часы реального времени обычно встречаются в компьютерах и часто называются просто CMOS. Большинство микроконтроллеров и микропроцессоров имеют встроенные таймеры для сохранения времени. Но работают они только тогда, когда микроконтроллер подключен к источнику питания. Когда питание включено, внутренние таймеры сбрасываются на 0. Следовательно, в такие приложения, как, например, регистраторы данных, включается отдельная микросхема RTC, которая не сбрасывается на 0 при выключении или сбросе питания. Часы реального времени часто полезны в приложениях регистрации данных, отметках времени, сигналах тревоги, таймерах, построении часов и т. д. В этом проекте разработаны часы реального времени, которые отображают точное время и дату вместе с функцией будильника. В этом проекте предпринята попытка разработать и объясните использование цифрового будильника с помощью Arduino.
Ключевые слова: модуль RTC, Arduino, часы, резервное питание
Рекомендуемое цитирование: Рекомендуемая ссылка
Пенумати, Павантеха, Цифровой будильник с использованием Arduino (17 июня 2021 г. ). Доступно на SSRN: https://ssrn.com/abstract=3915584 или http://dx.doi.org/10.2139/ssrn.3915584.
У вас есть вакансия, которую вы хотели бы рекламировать в SSRN?
Связанные электронные журналы
Обратная связь
Обратная связь с SSRN
Обратная связь (необходимый)
Электронная почта (необходимый)
Если вам нужна немедленная помощь, позвоните по номеру 877-SSRNHelp (877 777 6435) в США или +1 212 448 2500 за пределами США с 8:30 до 18:00 по восточному поясному времени США, с понедельника по пятницу.
Что такое контакты Arduino UNO, важность часов, требования к источнику питания.
Здравствуйте, В этой статье я собираюсь подробно рассказать о выводах Arduino UNO, источнике питания и часах, используемых в Arduino Uno. Если вы не знаете, сколько энергии нужно использовать при работе с arduino uno, то вы должны прочитать эту статью, прежде чем начать, иначе вы можете взорвать свой arduino uno вместе с этим, я узнаю о контактах GPIO и почему часы важно в ардуино уно.
Оборудование:- Genuino UNO / Arduino UNO | Амазон Индия | Amazon Global
- Внешний адаптер питания | Амазон Индия | Amazon Global
- Держатель аккумулятора | Амазон Индия | Amazon Global
- Батарея AA | Амазон Индия | Амазон Глобал
Рис. 1.1 Разъемы Arduino UNO
Обратите внимание, что два разъема имеют номера для каждого из контактов. Мы не будем вдаваться в подробности, я напишу еще одну статью, объясняющую, что такое разные типы булавок. Я дам вам более подробную информацию об этом, но я просто хотел, чтобы вы знали, что каждый из этих контактов делает что-то свое на доске.
Например, несколько контактов предназначены для питания или обеспечения питания вашего щита или всего, что вы подключили.
Читайте также:- Программирование Arduino для начинающих | Как запрограммировать Arduino с нуля.
- Интеллектуальная система парковки на основе IOT с базой данных Firebase Realtime.
- Что такое Arduino UNO | Genuino UNO для начинающих.
Здесь есть несколько контактов, которые имеют дело с аналоговыми или так называемыми аналоговыми сигналами и позволяют вам измерять аналоговый сигнал из внешнего мира. Я объясню, что это такое, в другой статье.
Затем с другой стороны у вас есть контакты, которые цифровые, они могут понимать значения высокого или низкого уровня во внешнем сигнале, и они могут определять состояние сигнала из внешнего мира, или они могут генерировать такой сигнал и отправлять его другим подключенные устройства.
Опять же, не слишком беспокойтесь о деталях, если вы не совсем понимаете, о чем я говорю, потому что в этом разделе у меня есть следующие статьи, в которых конкретно обсуждаются эти вопросы.
Кроме того, вы можете видеть цифровые контакты сбоку, называемые SCL и SDA, там есть RF, а здесь внизу, TX и RX. Это особенно 1 (TX) и 0 (RX), а затем SDA и SCL. Это коммуникационные контакты, поэтому мы можем использовать эти контакты, чтобы позволить микроконтроллеру atmega 328p взаимодействовать с внешними устройствами, такими как, например, датчики или даже ваш компьютер или другой фильм Arduinos.
На самом деле вы можете создавать способы, с помощью которых ваш Arduino Uno может общаться и отправлять, например, числа или текстовые сообщения большего размера на другие подключенные устройства. Для этого мы используем механизмы или так называемые протоколы, такие как этот, здесь эти два контакта вместе реализуют очень популярный такой протокол — последовательный протокол, называемый протоколом I²C.
С другой стороны, мы можем использовать эти контакты 1 (TX) и 0 (RX) для связи по классическому протоколу последовательной связи. Я собираюсь вернуться к ним позже в другой статье.
Рис.1.2 Кабель USB A-USB B
Давайте перейдем к передней части платы, где у нас есть пара больших разъемов. То, что здесь делает этот разъем, — это разъем USB. Это разъем, который подключен к этому микроконтроллеру, и он позволяет вам программировать ваш Arduino Uno, подключив его через USB к вашему компьютеру.
У вас есть кабель USB A-USB B, который вы подключаете к USB-разъему, а другой конец подключаете к компьютеру, а затем обеспечивает питание вашей платы, а также возможность подключения, чтобы вы могли использовать Arduino IDE, например, для отправить программу на Arduino Uno.
Рис.1.3 Внешний адаптер питания
Я собираюсь подробно продемонстрировать, как это сделать, в следующей статье. Помимо USB-порта, вы также можете питать Arduino через бочкообразный разъем, чтобы у вас был внешний адаптер питания, который вы подключаете к настенной розетке, и вы можете использовать совместимый миллиметровый разъем для питания вашего Arduino.
Таким образом, вам не нужно держать Arduino подключенным к компьютеру для питания, он может использовать внешний источник питания и подключить его в другом месте, где предполагается установить ваш гаджет.
Рис. 1.4 Питание от батареи Arduino
Вы также можете использовать внешний источник питания от батареи. Просто заполните его легко доступными дешевыми батареями типа АА, и с помощью того же разъема он может обеспечить питание от батареи для вашего Arduino, так что теперь вам не нужна цепь питания на стене.
Читайте также:- Программирование Arduino для начинающих | Как запрограммировать Arduino с нуля.
- Интеллектуальная система парковки на основе IOT с базой данных Firebase Realtime.
- Что такое Arduino UNO | Genuino UNO для начинающих.
Хороший простой способ получить некоторую независимость ваших гаджетов от источников питания через аккумулятор. Это действительно помогает при создании портативных проектов.
Говоря о требованиях к питанию, ваш Arduino Uno может работать с широким диапазоном источников питания с точки зрения напряжения.
У него есть регулятор напряжения, который позволяет подключать источники питания в диапазоне, скажем, от 5 до 12 вольт. Вы также можете подняться выше, но тогда, если у вас есть источник напряжения, скажем, 15 или 16 вольт, у вас будет много энергии, потраченной впустую на регулятор напряжения.
Если вы используете внешний адаптер питания, я рекомендую, чтобы он был примерно 9 вольт или не более 12 вольт, чтобы уменьшить тепловыделение регулятора напряжения.
Точно так же, особенно если вы используете батарейный блок, чем больше батарей вы вставите, тем больше отходов вы получите на регуляторе напряжения.
Опять же, не превышайте 9 вольт до 12 вольт, так как регулятор напряжения производит много тепла. Которые иногда повреждают регулятор напряжения.
Почти закончено еще несколько вещей, которые я хотел упомянуть здесь, которые часто вызывают недоумение у новых производителей Arduino.
Многие спрашивают, что такое заголовки ICSP с двумя наборами контактов. Через заголовок ICSP вы можете использовать специальное подключенное оборудование, называемое аппаратным программатором, которое позволяет вам напрямую программировать ваш микроконтроллер. У вас есть два набора ICSP, потому что на этой плате два микроконтроллера. Один заголовок ICSP используется для программирования микроконтроллера atmega 328p, а другой набор ICSP используется для программирования контроллера USB.
Конечно, вам не нужно программировать его, когда вы покупаете его, вы уже запрограммированы. Я объяснил здесь только то, что вы знаете, что это такое для программирования микроконтроллера с использованием специального внешнего аппаратного устройства, называемого программатором ICSP, так что это одно.
Есть пара других компонентов, о которых я хочу упомянуть, это кнопка сброса. Когда вы нажимаете ее, вы сбрасываете плату и начинаете выполнять любую программу на микроконтроллере с самого начала, так что это кнопка сброса.
Тогда у вас есть это блестящее устройство, это хрустальные часы, они откалиброваны, чтобы биться с частотой 16 миллионов раз в секунду, так что это мегагерцы, и это часы, которые заставляют тикать все игровое поле.
Каждому микроконтроллеру, как и микропроцессору, для работы нужны часы.
Каждый раз, когда часы тикают, процессор выполняет следующую инструкцию. Если часов здесь нет или часы работают неправильно, то и микроконтроллер работать не будет.
Как будто время останавливается, если нет часов. В завершение и в этой статье я хотел бы объяснить, что представляют собой эти два больших устройства серебристого цвета. Вы можете видеть, что они расположены очень близко к штекерному разъему, а также очень близко к регуляторам напряжения.
Эти два устройства представляют собой конденсаторы, которые используются для очистки напряжения, поступающего через цилиндрический разъем от внешнего источника. Идея здесь в том, что микроконтроллеру нужен хороший стабильный источник питания, чтобы он работал правильно.
Он хочет, например, чтобы его напряжение было хорошим постоянным 5 вольт. Он не любит, когда напряжение колеблется, например, от 5 вольт до 5 или до 5,1 и так далее. Что делают эти два конденсатора, так это пытаются взять нечистый источник питания, который поступает через цилиндрический разъем, возможно, от адаптера питания от стены, который может содержать много помех и шума от других близлежащих устройств, и тогда эти конденсаторы также будут способствовать очистить это напряжение до того, как оно достигнет atmega 328p.