Часы реального времени arduino: Обзоры модулей Arduino: описание, примеры использования

Содержание

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

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

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

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

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

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

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

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

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

Модуль DS1307

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

Модуль 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. Данный объект позволяет узнать год, месяц, день, час, минуту и секунду.

Реклама

Raspberry Pi и RTC модуль часов реального времени

В этом уроке мы научимся отслеживать дату и время на Raspberry Pi и разберемся как использовать модуль RTC.

Raspberry Pi не содержит встроенных часов, которые работают, когда плата выключена. Вместо этого он использует сетевой протокол времени (NTP), который использует соединение Ethernet или Wi-Fi при каждом включении. Чтобы отслеживать время, не используя Интернет для синхронизации каждый раз при загрузке Pi, необходим модуль часов реального времени (RTC).

RTC — это электронное устройство, которое отслеживает текущую дату и время, используя внутреннюю батарею, которая позволяет ему продолжать работу, даже когда основной источник питания выключен. Существуют различные типы модулей RTC для различных нужд.

В этой статье мы поговорим о том, как использовать модуль RTC DS3231 с Raspberry Pi в качестве аппаратных часов с использованием нужной библиотеки.

Комплектующие

Для реализации данного урока нам нужно совсем немного комплектующих — плата и часы реального времени:

Программное обеспечение:

Подключаем Pi Zero к DS3231

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

DS3231 имеет рабочее напряжение 3,3 В, поэтому для него требуется напряжение VCC 3,3 В. Мы используем протокол связи I2C для связи модуля RTC с нашим Raspberry Pi Zero.

Настройка модуля RTC

Чтобы настроить модуль RTC, нам нужно включить I2C на нашем Raspberry Pi.

Запустите raspi config на терминале:

$sudo raspi-config

В конфигурационной настройке выбираем: Interfacing Option.

Затем включите I2C, выбрав P5 I2C.

После включения I2C перезагрузите Pi с помощью:

$sudo reboot

Проверка подключения модуля RTC

С включенным интерфейсом I2C мы можем проверить, работает ли наше соединение с модулем RTC.

Перед установкой чего-либо на Pi убедитесь, что прошивка вашего Pi обновлена. Зачастую ошибки, возникающие при установке зависимостей пакетов, происходят из-за устаревшей версии Pi.

$sudo apt-get update -y

$sudo apt-get upgrade -y

Нам нужно установить python-smbus i2c-tools, чтобы увидеть, обнаружил ли наш Raspberry Pi наше соединение I2C с модулем RTC.

На терминале нужно запустить:

$sudo apt-get install python-smbus i2c-tools

Затем:

$sudo i2cdetect -y 1

Для более старшего Pi 1, запустите:

$sudo i2cdetect -y 0

0x68 — это популярный адрес для часов реального времени, особенно для DS3231. Наличие #68 в адресе означает, что драйвер не использовал адрес. Если адрес UU, то он в настоящее время используется драйвером.

Использование модуля RTC и библиотеки

Попробуем использовать RTC с использованием библиотеки SDL DS3231 (на нашем сайте можно скачать простую библиотеку DS3231).

Для версии Raspberry Pi Zero Lite или Headless нам может потребоваться установить Python, прежде чем двигаться дальше, поскольку он не включен в пакеты, установленные в Raspbian Lite.

Установите Python на Pi.

$sudo apt-get install python-pip

$sudo apt-get install python3-pip

Затем установите git, чтобы мы могли клонировать библиотеку в git.

$sudo apt install git-all

Теперь клонируем библиотеку и проверяем, можем ли мы использовать RTC с библиотекой RTC_SDL_DS3231.

Для этого введите в терминал команду ниже:

$sudo git clone https://github.com/switchdoclabs/RTC_SDL_DS3231.git

Закончив клонирование, создайте Python файл — RTCmodule.py. Скопируйте код ниже и вставьте в пустой файл .py. Сохраните это.

import time
import SDL_DS3231

ds3231 = SDL_DS3231.SDL_DS3231(1, 0x68)
ds3231.write_now()

while True:
print “Raspberry Pi=\t” + time.strftime(%Y-%m-%d %H:%M:%S”)
print “Ds3231=\t\t%s” % ds3231.read_datetime()
time.sleep(10.0)

Разбираем код

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

import time

import SDL_DS3231

Мы инициализируем часы.

ds3231 = SDL_DS3231.SDL_DS3231(1, 0x68)

Затем мы печатаем время Raspberry Pi и модуля RTC.

print “Raspberry Pi=\t” + time.strftime(%Y-%m-%d %H:%M:%S”)

print “Ds3231=\t\t%s” % ds3231.read_datetime()

Запускаем файл.

$python RTCmodule.py

Результат должен быть таким же, как на скриншоте ниже:

Как сделать время на DS3231 отличным от часов Pi

Чтобы аппаратные часы DS3231 показывали другое время в сравнении с часами  Pi, мы можем использовать команду write_all().

«ds3231.write_all(seconds, minutes, hours, day, date, month, year, save_as_24h = True)»

Диапазон:

  • seconds [0,59], #секунды
  • minutes [0,59], #минуты
  • hours [0,23], #часы
  • day [0,7], #дни
  • date [1-31], #дата
  • month [1-12], #месяц
  • year [0-99] #год

Используем тот же код, что выше, но заменяем

ds3231. now() на ds3231.write_all():

import time
import SDL_DS3231

ds3231 = SDL_DS3231.SDL_DS3231(1, 0x68)
ds3231.write_all(29,30,4,1,3,12,92,True)
while True:

print “Raspberry Pi=\t” + time.strftime(%Y-%m-%d %H:%M:%S”)
print “Ds3231=\t\t%s” % ds3231.read_datetime()
time.sleep(10.0)

Получаем:

Мы видим, что дата и время DS3231 изменились. Но так как этот проект должен использовать RTC на нашем Raspberry Pi, то нам нужно кое-что сделать еще.

Использование модуля RTC на Raspberry

На следующем шаге нам нужно настроить DS3231 для использования на Raspberry Pi. Сначала выполните действия, описанные выше.

Мы должны использовать адрес 0x68 RTC. Нам нужно отредактировать файл config.txt и добавить наложение дерева устройств.

Запустите:

$sudo nano /boot/config.txt

Затем отредактируйте конфигурацию Pi и добавьте чип RTC, который вы используете, в конец файла:

dtoverlay=i2c-rtc,ds1307

или

dtoverlay=i2c-rtc,pcf8523

или

dtoverlay=i2c-rtc,ds3231

Получаем:

Сохраните и перезапустите Pi, чтобы проверить состояние адреса 0x68.

$sudo reboot

$sudo i2cdetect -y 1

0x68 — это адрес UU:

Далее мы должны отключить «фальшивый hwclock», который мешает реальному hwclock нашей RTC.

Чтобы отключить фальшивый hwclock, выполните следующие команды в терминале:

$sudo apt-get -y remove fake-hwclock

$sudo update-rc.d -f fake-hwclock remove

$sudo systemctl disable fake-hwclock

Делаем DS3231 главными часами

Как только мы отключим фальшивый hwclock, мы сможем сделать наши часы реального времени нашими основными часами.

Запустите:

$sudo nano /lib/udev/hwclock-set

и введите следующую строчку:

#if [-e/run/systemd/system];then

#exit 0

#if

#/sbin/hwclock —rtc=$dev —systz —badyear

#/sbin/hwclock —rtc=$dev —systz

Теперь мы готовы проверить, всё ли работает как нужно.

Как синхронизировать время от Raspberry Pi к RTC

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

Для проверки даты запускается RTC:

$sudo hwclock

Чтобы скорректировать время RTC, у нас должно быть соединение Ethernet или Wi-Fi для синхронизации правильного времени из Интернета с нашим модулем RTC.

Чтобы проверить ввод даты и времени в терминале введите:

$date

Или используйте:

$ date —date=»Feb 2 2014 13:12:10″

Чтобы установить дату и время вручную. Обратите внимание, что если вы установите это вручную, оно будет автоматически исправлено, если есть подключение к Интернету через Ethernet или Wi-Fi.

Как синхронизировать время от RTC к Pi

Мы также можем установить время Pi на основе времени модуля RTC. Мы можем сделать это, введя:

$sudo hwclock —systohc

или

$sudo hwclock -w

Мы также можем установить время и дату в нашем модуле RTC, используя:

$sudo hwclock —set —date «Sat Aug 10 08:31:24 PDT 2013»

или

$sudo hwclock —set —date «8/11/2013 23:10:45»

После синхронизации времени, последний шаг — это вставить батарею в модуль RTC, чтобы он мог хранить дату и время. При следующей загрузке Raspberry Pi дата и время будут автоматически синхронизированы от модуля RTC.

DS3231 RTC Arduino

Ещё один интересный модуль для Arduino ZS-042 – это модуль часов Модуль RTC (Real Time Clock — часы реального времени) DS3231  с интерфейсом I2C(TWI).
Для микросхемы не нужен внешний кварцевый резонатор, благодаря встроенному термокомпенсированному кварцевому генератору (TCXO) с частотой 32,768 кГц.
У микросхемы есть вход для подключения батарейки, и благодаря питанию от батареи поддерживается точный отсчет времени даже когда питание системы отключается.
Интеграция кварцевого резонатора в корпус микросхемы улучшило стабильность точности хода часов.   

Модуль DS3231 RTC Arduino собран на микросхеме DS3231 и модуле памяти EEPROM на микросхеме 24C32 объемом 32 Кбит от производителя Atmel. Может работать как совместно с Arduino, так и отдельно (необходима батарейка CR2032).

         

Связь модуля с Arduino происходит по сетевому последовательному интерфейсу I2C(Inter-IntegratedCircuit) с максимальной скоростью 400 кГц, разработанному фирмой Philips.
Для питания часов и памяти модуля в автономном режиме необходима батарейка CR2032.
Модуль отслеживает состояние VCC для обнаружения сбоев питания и при необходимости автоматически переключается на резервный источник питания.
Модуль позволяет устанавливать и считывать: секунды, минуты, часы, дни, дни недели, месяц, год, а так же температуру и есть возможность установки 2-х будильников.
Что может модуль DS3231 RTC Arduino
•    Установить календарь до 2100 года с учётом високосных лет
•    Выбор режимов 12(AM/PM) или 24-часового режима
•    Возможность настроить 2 будильника
•    Использовать в качестве генератора прямоугольных импульсов
•    Измерять температуру микросхемы  для температурной компенсацией кварцевого генератора (TCXO). Она практически не нагревается поэтому можно сказать, что она равна температуре окружающей среды

Характеристики
•    Микросхема: DS3231
•    Рабочее напряжение: 3,3 В — 5 В.
•    Потребляемый ток (в режиме ожидания): до 170 мкА.
•    Потребляемый ток (во время передачи данных): до 300 мкА.
•    Потребляемый ток (во время резервного питания, без передачи данных): до 3,5 мкА.
•    Тактовая частота шины I2C: до 400 кГц.
•    Рабочая температура: 0 … 70 °C.
•    Точность хода: ±2 ppm (примерно ± 1 минута в год) при температуре от 0 до 40С
•    внутренний термометр с диапазоном от −40…+85°C.
•    Размер: мм 38 мм (длина) мм * 22 мм (Ш) мм * 14 мм (высота)
•    Вес: 8 г

ppm(partspermillion) – частей на миллион.

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

Теперь немного о самом модуле.
построен он на микросхеме DS3231N. 
Резисторная сборка RP1 (4.7 кОм),

необходима для подтяжки линий 32K, SQW, SCL и SDA (кстати, если используется несколько модулей с шиной I2C, необходимо выпаять подтягивающие резисторы на других модулях). 
Вторая сборка резисторов, необходима для подтяжки линий A0, A1 и A2, необходимы они для смены адресации микросхемы памяти AT24C32N. 
Резистор R5 и диод D1, служат для подзарядки батареи. 
Микросхема памяти EEPROM AT24C32N .   
Резистор R1 и светодиод Power, работают как индикатор, показывая, что модуль включен. 
Модуль DS3231 RTC Arduino связывается с Arduino по шине I2C(TWI), для удобства монтажа они выведены с двух сторон модуля, J1 и J2.

Datasheet DS3231 англ.
Datasheet DS3231 рус.

Скетч установки времени в модуле DS3231.

Питание DS3231 RTC Arduino
Если модуль питается от платы Arduino, то он не использует батарею на модуле.
При питании от батарейки модуль отслеживает дату и время, но не работает с шиной I2C.
При отсутствии обоих источников питания модуль прекращает работать и сбрасывает все данные в заводские настройки.
С резервной батарейкой часы способны проработать несколько лет.

Группы контактов — J1
•    32K:   выход генератора, частота 32 кГц
•    SQW: Выход прямоугольного(Square-Wave) сигнала.
•    SCL:   Serial CLock — шина тактовых импульсов интерфейса I2C
•    SDA:  Serial Data — шина данных интерфейса I2C;
•    VCC:  «+» питание модуля
•    GND: «-» питание модуля

Группы контактов — J2
•    SCL:   линия тактирования (Serial CLock)
•    SDA:  линия данных (Serial Data)
•    VCC:  «+» питание модуля
•    GND: «-» питание модуля

Подключение модуля DS3231 RTC Arduino к шине I2C
(например, для Arduino UNO, Nano, Pro Mini):
SCL → A5
SDA → A4
VCC → +5 В
GND → земля
Подключение происходит по двухпроводной шине I2C(TWI)
Выводы SDA и SCL подключаются к аналогичным выводам на Arduino Питание VCC к +5 Вольт, а GND к GND на плате Arduino

Пины SDA и SCL на разных платах Arduino:
                       SDA    SCL
UNO                A4     A5
Mini                A4      A5
Nano              A4       A5
Mega2560     20       21
Leonardo       2          3

Для работы необходимо установить библиотеку DS3231

После установки откройте пример из библиотеки

или запустите пример установки даты и времени из скаченной папки. Это тот же пример, но с комментариями на русском языке и добавлено измерение температуры.

Скетч установки времени в модуле DS3231.

Загрузите скетч в плату, после чего откройте монитор последовательного порта (Ctrl+Shift+M).
Вы увидите неправильные данные, но не переживайте – это потому, что для работы надо установить календарь и время самостоятельно. Это делается один раз, при включении. И потребуется ещё раз только если разрядится батарея.

Ну вот и всё. DS3231 RTC Arduino очень простой и интересный модуль.

В ближайшее время я напишу статью как подружить этот модуль с  4-х разрядным, семисегментным индикатором с контроллером TM1637, 4 цифры, двоеточие.
LED TM1637

Подписывайтесь и не пропустите новые интересные статьи и описания различных модулей.

Модуль часы реального времени DS1307 для Arduino

Модуль часы реального времени DS1307 используется в макетах и проектах на микроконтроллерах для снятия с него показаний реальной текущей даты и времени. Эта информация используется для мониторинга и регистрации даты и времени, а также для управления с ее помощью различными устройствами.
Для использования модуля нужно сначала собрать с его помощью макет, создать программу для управления и начинать работу.
Управление модулем реального времени осуществляется из Arduino контроллеров или других управляющих микропроцессорных устройств через IIC (Inter-Integrated Circuit) интерфейс с помощью специальных программ.
В микросхеме DS1307 имеется программируемый генератор прямоугольных импульсов, позволяющий вырабатывать одну из четырех частот (1Гц, 4096Гц, 8192Гц или 32768Гц).
Модуль часы реального времени DS1307 имеет две колодки контактов – Р1 и Р2, а также слот для подключения батареи питания 2032 85 мАч.
Колодка Р1 имеет контакты SQ, DS, SCL, SDA, VCC, GND, BAT.
Колодка Р2 имеет контакты DS, SCL, SDA, VCC, GND.
Питание модуля осуществляется или от встроенной батареи, или от Arduino контроллера (другого управляющего микропроцессорного устройства), или от внешего источника питания.
В микросхеме DS1307 имеется встроенная схема, определяющая аварийное отключение питания и автоматически подключающая резервную батарейку. При этом отсчет времени продолжается и после восстановления питания часы показывают правильное время.

Характеристики:

работа модуля осуществляется через IIC (Inter-Integrated Circuit) интерфейс;
модуль ведет отсчет времени – часов, минут, секунд, различает AM/PM;
модуль ведет отсчет даты – год, месяц, день, учитывает высокосные года;
в памяти модуля записан точный календарь до 2100 года с учетом высокосных годов;
модуль имеет 56 байт энергозависимой памяти, доступной пользователю.
батарея питания: CR2032 85 мАч;
габариты: 28 х 25 х 8 мм;
вес: 6 г.

Схема подключения к Arduino контроллеру:

Организация памяти микросхемы:

Tiny RTC i2c Часы Реального Времени

Описание

Tiny RTC i2c Часы Реального Времени DS1307 модуль для Arduino

Небольшой модуль, выполняющий функции часов реального времени. Выполнен на базе микросхемы DS1307ZN+. Непрерывный отсчет времени происходит благодаря автономному питанию от батареи, установленной в модуль. Также модуль содержит память EEPROM объемом 32 Кбайт, сохраняющую информацию при отключении всех видов питания. Память и часы связаны общей шиной интерфейса I2C. На контакты модуля выведены сигналы шины I2C. При подключении внешнего питания происходит подзарядка батареи через примитивную цепь подзарядки. На плате имеется место для монтажа цифрового датчика температуры DS18B20. В комплект поставки он не входит.

Основные технические характеристики:

• Подсчет реального времени в секундах, минутах, часах, датах месяца, месяцах, днях недели и годах с учетом високосного года вплоть до 2100 г.

• 56 байт энергонезависимого ОЗУ для хранения данных

• 2-х проводной последовательный интерфейс

• Программируемый генератор прямоугольных импульсов. Может выдавать 1 ГЦ, 4.096 кГЦ, 8,192 кГЦ и 32,768 кГц.

• Автоматическое определение отключения основного источника питания и подключение резервного

• 24-х часовой и 12-ти часовой режим

• Потребление не более 500 нA при питании от резервной батареи питания при температуре 25C° (батарея CR2032 в комплект не входит)

  • Напряжение питания 5 В
  • Размеры 27 х 28 х 8,4 мм

 

Электрическая схема

Устройство обменивается данными с электроникой прибора с помощью сигналов SCL и SDA. Микросхема IC2 – часы реального времени. Конденсаторы С1 и С2 снижают уровень помех в линии питания VCC. Резисторы R2 и R3 обеспечивают надлежащий уровень сигналов SCL и SDA. С вывода 7 микросхемы IC2 поступает сигнал SQ, состоящий из прямоугольных импульсов частотой 1 Гц. Он используется для проверки работоспособности МС IC2. Компоненты R4, R5, R6, VD1 обеспечивают подзарядку батареи BAT1. Для хранения данных модуль часов реального времени DS1307 содержит микросхему IC1 – долговременная память. US1 – датчик температуры. Сигналы модуля и линии питания выведены на соединители JP1 и P1.

Информационная шина

I2C это стандартный последовательный интерфейс посредством двух сигнальных линий SCL, SDA и общего провода. Линии интерфейса образуют шину. К линиям интерфейса I2C можно подключить несколько микросхем, не только микросхемы модуля. Для идентификации микросхемы на шине, а именно записи данных в требуюмую МС и определения от какой МС поступают данные.  Каждая микросхема имеет уникальный адрес для проложенной шины. DS1307 имеет Адрес 0x68. Он записан на заводе-изготовителе. Микросхема памяти имеет адрес 0x50. В программное обеспечение Arduino входит программная библиотека, обеспечивающая поддержку I2C.

Микросхема часов реального времени

DS1307 обладает низким энергопотреблением, обменивается данными с другими устройствами через интерфейс I2C, содержит память 56 байт. Содержит часы и календарь до 2100 г. Микросхема часов реального времени обеспечивает другие устройства информацией о настоящем моменте: секунды, минуты, часы, день недели, дата. Количество дней в каждом месяце учитывается автоматически. Есть функция компенсации для високосного года. Имеется флаг, чтобы определить, работают часы в 24-часовом режиме или 12-часовом режиме. Для работы в режиме 12 часов микросхема имеет бит, откуда считываются данные для передачи о периоде времени: до или после обеда.

Микросхема долговременной памяти

ATHYC232 24C32N относится к классу памяти EEPROM серии AT24Cxx. Для этой МС часто применяется наименование AT24C32 или 24C32. Объем хранимых данных 32 Кбайт. Производится компанией Microchip, известной своими микроконтроллерами PIC или не менее известной компанией Atmel. Передача и прием данных происходит по шине I2C. Данные хранятся при отключенном питании на протяжении десятков лет. Количество циклов записи-стирания достигает сотен тысяч.

Батарея

В держатель на обратной стороне платы устанавливается литиевая дисковая батарея CR2032. Она выпускается множеством производителей, например изготовленная фирмой GP обеспечивает напряжение 3,6 В и ток разряда 210 мАч. Батарея подзаряжается во время включения питания, с таким режимом работы литиевой батареи мы сталкиваемся на материнской плате компьютера.

Подзарядка батареи

Восстановление заряда батареи происходит током сквозь компоненты: резистор R5 и диод D1. Резисторы R4 и R6 тоже участвуют в подзарядке. Кроме своей основной функции цепи вносят небольшие отрицательные свойства. Дело в том, что при работе батареи в режиме питания модуля через R4 и R6 происходит паразитный разряд батареи. Если модуль будет работать в такой системе, где подзарядка отсутствует, то R4, R5, R6 и VD1 следует удалить. Вместо R6 установить перемычку, как изображено на фото.

 

Программное обеспечение

Для работы модуля в составе Arduino вполне подойдет устаревшая библиотека с сайта Adafruit под названием RTCLib. Скетч называется DS1307.pde. Существует обновленная версия. Следует скачать архив, распаковать его, переименовать и скопировать библиотеку в свой каталог библиотек Arduino.

Подключение к Arduino Mega

 

 

Подключение к Arduino Uno

 

 

 

Модуль часов PCF8563 [База знаний «УмныеЭлементы»]

Описание

Модуль часов реального времени с независимым питанием. Контроллеры Arduino/Genuino не имеют встроенных часов реального времени. Для работы со временем есть функция millis(). Однако, для проектов где требуется время и дата, возможностей данной функции недостаточно и на помощь приходят часы реального времени.

Модуль PCF8563 — это недорогие, точные, с работой по протоколу I2C часы-календарь реального времени. В отличии от других модулей часов — имеют низкое энергопотребление, поддерживают функцию таймера, имеют встроенный календарь. Устройство содержит разъём для батареи типа CR1220 (за счёт чего модуль имеет очень маленькие размеры) и поддерживает точный отсчет времени когда питание устройства прерывается. Часы поддерживают информацию о секундах, минутах, часах, дне, дне недели, месяце и годе. Дата на конец месяца автоматически корректируется, для месяцев, содержащих менее чем 31 день, включая коррекцию по високосному году. Имеют программируемый будильник.

Основные характеристики часов:

  • Часы реального времени с подсчетом секунд, минут, часов, дня, месяца и года (с корректировкой дат в т.ч. по високосному году до 2100 года)

  • Погрешность хода: ±2 минуты в год

  • Программируемый будильник

  • Поддержка функции таймера

  • Флаг века

  • Низкое энергопотребление (от 0,25 мА при питании от 3В и температуры 25°С)

  • Работа по шине I2C

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

  • Рабочая температура: -40°С — +85°С

  • Температура хранения данных: -65°С — +150°С

  • Напряжение питания: 3,3 — 5 В

  • Максимальное потребление тока:

Физические размеры

Плюсы использования

  • Высокая точность хода часов

  • Наличие будильника с функцией прерывания

  • Широкий диапазон рабочей температуры

  • Функция календаря

  • Функция таймера

Минусы использования

Ресурсы для загрузки

Примеры подключения и использования

Пример 1

В примере иллюстрируется первоначальная настройка модуля — установка времени и даты.

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

Скетч для загрузки:

#include <Wire.h>  //библиотека для работы с I2C
#include <Rtc_Pcf8563.h> //библиотека для работы с часами
 
Rtc_Pcf8563 rtc; //инициализация часов
 
void setup()
{
  //очистка регистров часов
  rtc.initClock();
  //Установка даты:
  //день месяца, день недели, месяц, век(1=1900, 0=2000), год(0-99)
  //установим дату 30 - (суббота) - ноября - 0 века - 2025 года
  rtc.setDate(30, 6, 11, 0, 25);
  //Установка времени
  //часы, минуты, секунды
  //установим время 15 часов 45 минут 0 секунд
  rtc.setTime(15, 45, 0);
}
 
void loop()
{
 
}

Пример 2

В примере демонстрируется подключение часов и дисплея к Расширителю I2C. Далее происходит вывод времени, дня недели и даты на дисплей.

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

Подключение расширителя и устройств к нему происходит напрямую, для этого удобно использовать 4-ёх проводной шлейф. Если на устройстве выводы расположены в другом порядке, подключите к расширителю с помощью обычных проводов мама-мама (или тех, которые подходят к Вашему устройству.

Скетч для загрузки:

#include <LiquidCrystal_I2C.h> //подключение библиотеки для работы с дисплеем
#include <Wire.h>  //библиотека для работы с I2C
#include <Rtc_Pcf8563.h> //библиотека для работы с часами
 
LiquidCrystal_I2C lcd(0x27, 16, 2); //создание объекта дисплея с адресом и количеством символов/строк
Rtc_Pcf8563 rtc; //создание объекта для работы с часами
 
void setup() {
  lcd.init(); //инициализация дисплея
}
 
void loop() {
  lcd.home(); //установка курсора в верхний левый угол
  lcd.print(rtc.formatTime()); //вывод текущего времени на дисплее
  lcd.setCursor(0, 1); //установка курсора на вторую строку
  lcd.print(rtc.getWeekday()); //вывод текущего дня недели
  lcd.setCursor(2, 1); //установка курсора на третью ячейку
  lcd.print(rtc.formatDate()); //вывод даты
}

Пример 3. Засыпать и просыпаться по будильнику часов

В данном примере формируется минипроект — часы с будильником. Часы показывают время на черырёхразрядном индикаторе. У устройства имеется кнопка — которая переводит контроллер в режим сна до следующей минуты, устанавливая на часах будильник на следующую за текущей минуту. Индикацией установки будильника служит появление на индикаторе надписи «ALAR» — от английского alarm (будильник). Для демонстрации того, что устройство находится в режиме сна, на дисплей выводится информация в виде четырёх тире (- — — -). По пробуждению, дисплей снова отображает время.

Библиотеки

Помимо библиотеки для работы с часами, понадобятся библиотеки для режимов сна и модуля индикатора. Их можно загрузить со страниц в Базе Знаний: Режимы сна и энергосбережение и Модуль 4 — разрядного индикатора

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

Скетч для загрузки

#include "SevenSegmentTM1637.h" //подключение библиотеки для работы с дисплеем
#include "SevenSegmentExtended.h" //подключение расширенных функций дисплея
#include <Wire.h>  //библиотека для работы с I2C
#include <Rtc_Pcf8563.h> //библиотека для работы с часами
#include <Sleep_n0m1.h> //подключение библиотеки для режимов сна
 
const int wakeUpPin = 3; //вывод прерывания
const int button = 6; //вывод подключения кнопки
 
Rtc_Pcf8563 rtc; //инициализация часов
SevenSegmentExtended display(13, 12); //создание объекта дисплея
Sleep sleep; //объект для ввода контроллера в сон
 
void setup() {
  display.begin(); //инициализация дисплея
  display.setBacklight(100); //установка яркости в 100%
  display.print("INIT"); //отображение надписи INIT (инициализация) на дисплее
  delay(1000); //задержка в 1 секунду
  pinMode(button, INPUT); //режим вывода кнопки
 
}
 
void loop() {
 
  rtc.getTime(); //получение времени с часов
  byte hour = rtc.getHour(); //запись в переменную количество часов
  byte minute = rtc.getMinute(); //запись в переменную количество минут
  display.printTime(hour, minute, false); //вывод времени
 
  if (digitalRead(button)) { //была нажата кнопка
 
    set_alarm(minute); //установить будильник
 
    display.print("----"); //вывести четыре тире, означающие что контроллер спит
 
    sleep.pwrDownMode(); //установка режима сна PWR_DOWN
 
    //сон будет продолжаться пока на выводе wakeUpPin не поменяется уровень сигнала
    //в данном случае с "HIGH" на "LOW"
    sleep.sleepPinInterrupt(wakeUpPin, FALLING); //(номер вывода прерывания, состояние прерывания)
 
    //очистка будильника
    clr_alarm();
  }
}
 
/* Процедура очищает регистры будильника на часах.
 *  Требуется для корректной работы модуля часов.
 */
void clr_alarm() {
  detachInterrupt(1); //отключить прерывание номер 1 (вывод контроллера - 3)
 
  rtc.clearAlarm(); //очистить будильник
  delay(1000); //секундная задержка
}
 
/* Процедура устанавливает будильник на часах на одну минуту больше.
 *  Здесь можно устанавливать будильник на любое время методом setAlarm(), 
 *  который принимает четыре параметра:
 *  - минуты будильника
 *  - часы будильника
 *  - день будильника
 *  - день недели будильника
 *  Если любое из значений равно 99 - значит берется значение текущего времени.
 */
void set_alarm(const int& minute) {
 
  rtc.setAlarm(minute + 1, 99, 99, 99); //установка будильника на одну минуту
 
  display.clear(); //очистить дисплей
  display.print("ALAR"); //вывести надпись ALAR (ALARM)
  delay(1000); //подождать секунду
  display.clear(); //очистить дисплей
}

Учебное пособие по часам реального времени Arduino (RTC) с использованием DS1307

В учебном пособии по часам реального времени Arduino мы узнаем о часах реального времени (RTC) и о том, как Arduino и микросхема часов реального времени DS1307 взаимодействуют в качестве устройства измерения времени. Если вы помните, мы уже реализовали будильник Arduino с использованием RTC DS1307 в более раннем проекте.

Но этот проект не охватывал основы часов реального времени или RTC, спецификации DS1307 RTC IC и способы взаимодействия часов реального времени, таких как DS1307 или DS3231, с Arduino.

Обзор

RTC или часы реального времени — это устройство для измерения времени, обычно в форме интегральной схемы (IC). RTC питается от батареи и отслеживает текущее время даже при отсутствии питания.

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

Читайте также: ARDUINO ALARM CLOCK

Зачем нам нужны часы реального времени (RTC)?

Хотя Arduino и почти все микроконтроллеры имеют встроенные таймеры и хронометры (millis () в случае Arduino), они зависят от мощности i.е. они работают до тех пор, пока есть питание. После выключения питания (вручную или из-за отключения электроэнергии) все таймеры сбрасываются на 0.

Хотя измерение времени с использованием внутренних таймеров приемлемо для простых проектов, нам нужна альтернатива в таких проектах, как регистраторы данных, часы, будильники и т. Д. и т.д., где таймер работает независимо от внешнего источника питания или от перепрограммирования микроконтроллера (или Arduino).

Здесь используются микросхемы часов реального времени. Почти все ИС RTC — это слаботочные устройства, которые годами работают на одном литиевом элементе (обычно CR2032).Одна из популярных и наиболее часто используемых микросхем RTC — часы реального времени DS1307.

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

DS1307 RTC — это недорогие, маломощные ИС часов реального времени, которые могут поддерживать полные часы и календарь, то есть часы, минуты, секунды, а также год, месяц и день. Некоторые из хорошо известных функций популярного DS1307 RTC упомянуты ниже.

  • Полная функция хронометража, т.е. часы, минуты, секунды, год с високосным годом, месяцем, числом месяца и днем ​​недели.
  • Действительно до 2100 года.
  • Низкое энергопотребление: потребляет менее 500 нА при работе от батареи.
  • Автоматическое переключение на питание от батареи при отключении электроэнергии.
  • 24-часовой или 12-часовой формат с индикатором AM / PM.

DS1307 RTC доступен в виде модулей, которые состоят из всех необходимых компонентов, таких как батарея, разъемы, подтягивающие резисторы и кристалл. Один такой модуль используется в этом проекте и показан ниже.

Схема выводов DS1307 RTC

На следующем изображении показана схема выводов микросхемы DS1307 RTC.Чтобы снизить энергопотребление, необходимо уменьшить количество выводов на ИС. Следовательно, DS1307 RTC использовал связь I2C.

Описание контактов DS1307 RTC
  • X1 и X2 : Это контакты для подключения кристалла с частотой 32,768 кГц для включения внутреннего генератора. Если к X1 подключен внешний генератор, то X2 можно оставить плавающим.
  • VBAT : Контакт источника питания батареи. Должен быть подключен к литиевой батарее 3 В для резервного питания.
  • GND : Контакт заземления.
  • SDA : Контакт последовательного порта данных. Это контакт ввода / вывода данных интерфейса I2C. Требуется внешний вывод 5 В, обычно через резистор 10 кОм.
  • SCL : Вывод последовательного тактового сигнала. Это входной контакт синхронизации интерфейса I2C. Его также необходимо подтянуть до 5 В через резистор 10 кОм.
  • SQW / OUT : Выходной вывод прямоугольной формы. Если не используется, его можно оставить плавающим.
  • VCC : Главный вывод питания.

Интерфейс часов реального времени Arduino DS1307

Теперь, когда мы немного познакомились с микросхемой часов реального времени DS1307, мы перейдем к интерфейсу Arduino и часов реального времени. Как упоминалось ранее, модуль RTC DS1307 использует связь I2C.

В интерфейсе I2C часов реального времени Arduino микроконтроллер Arduino всегда действует как ведущий, а DS1307 — как ведомый. Мастер в коммуникации I2C, то есть Arduino в данном случае, отвечает за тактовый сигнал, доступ к шине, сигналы запуска и остановки.

Принципиальная схема

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

Чтобы лучше понять модуль часов реального времени DS1307, следующее изображение поможет вам, поскольку оно содержит схему типичного модуля часов реального времени DS1307.

Необходимые компоненты
  • Arduino UNO [Купить здесь]
  • DS1307 Модуль RTC
  • ЖК-дисплей 16 × 2 [Купить здесь]
  • Макетная плата
  • Соединительные провода
  • Блок питания
Схемотехника

Дизайн интерфейса Arduino RTC довольно прост. Подключите контакты SDA и SCL DS1307 RTC к контактам SDA и SCL Arduino, то есть контактам A4 и A5.

Для отображения данных и информации о времени подключается ЖК-дисплей 16 × 2.Подключения выполняются согласно принципиальной схеме.

Работа часов реального времени Arduino Интерфейс DS1307

Здесь реализован простой проект, в котором Arduino UNO взаимодействует с часами реального времени DS1307. В этом проекте мы будем программировать DS1307 RTC с текущей датой и временем и посмотреть, действительно ли он сохраняет эти данные, даже если источник питания для Arduino будет отключен.

При программировании используется специальная библиотека под названием «RTClib», которую можно загрузить с по этой ссылке .Убедитесь, что он сначала загружен и добавлен в базу данных библиотеки Arduino.

Чтобы загрузить данные и время в микросхему DS1307 RTC, мы использовали функцию, доступную в библиотеке RTClib, где Arduino будет загружать дату и время с компьютера во время загрузки кода.

Код

Приложения

  • С помощью интерфейса часов реального времени Arduino мы можем реализовать несколько проектов, связанных с регистрацией данных, сигналами тревоги, часами и т. Д.
  • Поскольку модуль RTC DS1307 снабжен батареей, он будет продолжать поддерживать время даже в случае отключения электроэнергии.

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

// Часы реального времени и календарь с кнопками настройки с использованием DS3231 и Arduino

// включить код библиотеки ЖК-дисплея

#include

// включить Wire код библиотеки (необходим для устройств с протоколом I2C)

#include

// Подключения ЖК-модуля (RS, E, D4, D5, D6, D7)

LiquidCrystal lcd (2, 3, 4 , 5, 6, 7);

void setup () {

pinMode (8, INPUT_PULLUP); // кнопка 1 подключена к выводу 8

pinMode (9, INPUT_PULLUP); // button2 подключен к выводу 9

// установить количество столбцов и строк на ЖК-дисплее

lcd.begin (16, 2);

Wire.begin (); // Присоединяемся к шине i2c

}

char Time [] = «TIME:::»;

char Calendar [] = «ДАТА: / / 20»;

байт i, секунда, минута, час, число, месяц, год;

void DS3231_display () {

// Преобразование BCD в десятичное

секунда = (секунда >> 4) * 10 + (секунда & 0x0F);

минута = (минута >> 4) * 10 + (минута & 0x0F);

час = (час >> 4) * 10 + (час & 0x0F);

дата = (дата >> 4) * 10 + (дата & 0x0F);

месяц = ​​(месяц >> 4) * 10 + (месяц & 0x0F);

год = (год >> 4) * 10 + (год & 0x0F);

// Завершить преобразование

Время [12] = секунда% 10 + 48;

Время [11] = секунда / 10 + 48;

Время [9] = минута% 10 + 48;

Время [8] = минута / 10 + 48;

Время [6] = час% 10 + 48;

Время [5] = час / 10 + 48;

Календарь [14] = год% 10 + 48;

Календарь [13] = год / 10 + 48;

Календарь [9] = месяц% 10 + 48;

Календарь [8] = месяц / 10 + 48;

Календарь [6] = дата% 10 + 48;

Календарь [5] = дата / 10 + 48;

ЖК.setCursor (0, 0);

lcd.print (Время); // Отображение времени

lcd.setCursor (0, 1);

жк. Принт (Календарь); // Отображение календаря

}

void blink_parameter () {

byte j = 0;

при этом (j <10 && digitalRead (8) && digitalRead (9)) {

j ++;

задержка (25);

}

}

байта редактирования (байт x, байт y, байтовый параметр) {

текстовый символ [3];

при этом (! DigitalRead (8)); // Ждем, пока кнопка (контакт № 8) не освободится

while (true) {

while (! DigitalRead (9)) {// Если кнопка (контакт № 9) нажата

parameter ++;

if (i == 0 && параметр> 23) // Если часы> 23 ==> часы = 0

parameter = 0;

if (i == 1 && параметр> 59) // Если минуты> 59 ==> минут = 0

parameter = 0;

if (i == 2 && parameter> 31) // Если date> 31 ==> date = 1

parameter = 1;

if (i == 3 && параметр> 12) // Если месяц> 12 ==> месяц = ​​1

parameter = 1;

if (i == 4 && параметр> 99) // Если год> 99 ==> год = 0

параметр = 0;

sprintf (текст, «% 02u», параметр);

ЖК.setCursor (x, y);

жк. Печать (текст);

задержка (200); // Ждем 200 мс

}

lcd.setCursor (x, y);

lcd.print («»); // Отображаем два пробела

blink_parameter ();

sprintf (текст, «% 02u», параметр);

lcd.setCursor (x, y);

жк. Печать (текст);

blink_parameter ();

if (! DigitalRead (8)) {// Если кнопка (контакт 8) нажата

i ++; // Увеличение ‘i’ для следующего параметра

return parameter; // Возвращаем значение параметра и выходим

}

}

}

void loop () {

if (! DigitalRead (8)) {// Если кнопка (контакт # 8) нажата

i = 0;

час = редактировать (5, 0, час);

минута = редактировать (8, 0, минута);

дата = редактировать (5, 1, дата);

месяц = ​​редактировать (8, 1, месяц);

год = редактировать (13, 1, год);

// Преобразование десятичной дроби в BCD

минута = ((минута / 10) << 4) + (минута% 10);

час = ((час / 10) << 4) + (час% 10);

дата = ((дата / 10) << 4) + (дата% 10);

месяц = ​​((месяц / 10) << 4) + (месяц% 10);

год = ((год / 10) << 4) + (год% 10);

// Завершить преобразование

// Записать данные в DS3231 RTC

Wire.beginTransmission (0x68); // Запуск протокола I2C с адресом DS3231

Wire.write (0); // Отправляем адрес регистра

Wire.write (0); // Сброс сезонов и запуск генератора

Wire.write (minute); // Записываем минуты

Wire.write (час); // Запись часа

Wire.write (1); // Запись дня (не используется)

Wire.написать (дата); // Записываем дату

Wire.write (месяц); // Записываем месяц

Wire.write (год); // Записываем год

Wire.endTransmission (); // Остановка передачи и освобождение шины I2C

delay (200); // Ждем 200 мс

}

Wire.beginTransmission (0x68); // Запуск протокола I2C с адресом DS3231

Wire.написать (0); // Отправляем адрес регистра

Wire.endTransmission (false); // перезапуск I2C

Wire.requestFrom (0x68, 7); // Запрос 7 байтов от DS3231 и освобождение шины I2C в конце чтения

second = Wire.read (); // Считываем секунды из регистра 0

minute = Wire.read (); // Считываем минуты из регистра 1

hour = Wire.read (); // Считываем час из регистра 2

Wire.читать(); // Считываем день из регистра 3 (не используется)

date = Wire.read (); // Считываем дату из регистра 4

month = Wire.read (); // Считываем месяц из регистра 5

year = Wire.read (); // Считываем год из регистра 6

DS3231_display (); // Время отображения и календарь

delay (50); // Подождите 50 мс

}

adafruit / RTClib: вилка фантастической библиотеки RTC

Jeelab

Это ответвление фантастической библиотеки часов реального времени JeeLab для Arduino.

Отлично работает с прорывом Adafruit RTC:

Обратите внимание, что dayOfTheWeek () принимает значения от 0 до 6 включительно, где 0 означает «воскресенье».

Совместимость

MCU Проверенные работы Не работает Не тестировалось Банкноты
Atmega328 @ 16 МГц Х
Atmega328 @ 12 МГц Х
Atmega32u4 @ 16 МГц Х Используйте SDA / SCL на контактах D3 и D2
Atmega32u4 @ 8 МГц Х Используйте SDA / SCL на контактах D3 и D2
ESP8266 Х SDA / SCL по умолчанию для контактов 4 и 5, но любые два контакта могут быть назначены как SDA / SCL с помощью Wire.начало (SDA, SCL)
Atmega2560 @ 16 МГц Х Используйте SDA / SCL на контактах 20 и 21
ATSAM3X8E Х Используйте SDA1 и SCL1
ATSAM21D Х
ATtiny85 @ 16 МГц Х
ATtiny85 @ 8 МГц Х
Intel Curie @ 32 МГц Х
STM32F2 Х
  • ATmega328 @ 16 МГц: Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini
  • ATmega328 @ 12 МГц: Adafruit Pro Trinket 3V
  • ATmega32u4 @ 16 МГц: Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0
  • ATmega32u4 @ 8 МГц: Adafruit Flora, Bluefruit Micro
  • ESP8266: Adafruit Huzzah
  • ATmega2560 @ 16 МГц: Arduino Mega
  • ATSAM3X8E: Arduino Due
  • ATSAM21D: Arduino Zero, M0 Pro
  • ATtiny85 @ 16 МГц: Adafruit Trinket 5V
  • ATtiny85 @ 8 МГц: Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V

Adafruit вкладывает время и ресурсы в разработку этого открытого исходного кода, пожалуйста, поддержите Adafruit и оборудование с открытым исходным кодом, покупая продукты у Adafruit!

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

Документация и doxygen

Подробную документацию по API см. Https://adafruit.github.io/RTClib/html/index.html. Документация производится компанией doxygen. Вклады должны включать документацию для любого добавленного нового кода.

Некоторые примеры использования doxygen можно найти на следующих страницах руководства:

https://learn.adafruit.com/the-well-automated-arduino-library/doxygen

https://learn.adafruit.com/the-well-automated-arduino-library/doxygen-tips

Форматирование кода и clang-формат

Код должен быть отформатирован в соответствии со Стандартами кодирования LLVM, которые используются по умолчанию для инструмента clang-format.Самый простой способ обеспечить соответствие — установить clang-format и запустить

.
 clang-format -i <исходный_файл> `

Автор JeeLabs Лицензия MIT, дополнительные сведения см. В файле license.txt. Весь текст выше должен быть включен в любое повторное распространение

Для установки используйте диспетчер библиотек Arduino, найдите «RTClib» и установите библиотеку.

DS3231 Модуль часов реального времени / Arduino и Raspberry Pi

Комментарии сейчас закрыты. Перейдите на форум поддержки продукта вверху страницы.

Как купить продукты SwitchDoc Labs

США и весь мир: SwitchDoc Labs Store

Другой выбор в США: Amazon.com (Бесплатная доставка с Amazon Prime!)

Примечание. Для получения последней информации и технических характеристик перейдите на страницу продукта на сайте store.switchdoc.com

Что в этом продукте?

Модуль часов реального времени DS3231 SwitchDoc Labs содержит два устройства, оба

DS3231 Module Test Jig

, подключенный к 3.Шина I2C 3 В или 5,0 В. Он содержит высокоточные часы реального времени с температурной компенсацией Maxim DS3231 и EEPROM AT24C32 32 Кбит , организованные в виде 4096 8-битных слов в энергонезависимой памяти. Согласно тестам, проведенным в SwitchDoc Labs (см. Ниже), DS3231 является явным победителем с измеренной точностью менее 0,3 ppm (частей на миллион) или, другими словами, проигрывает или набирает менее 0,026 секунды в день. .

Программное обеспечение поддерживает функции хронометража DS3231, внутренний датчик температуры DS3231 и устройство EEPROM AT24C32.

Адрес I2C 0x68 — это DS3231, а 0x56 — это AT24C32. Обратите внимание, что на некоторых платах новой ревизии адрес AT24C32 — 0x57.

Программное обеспечение SwitchDoc Labs на Python для продукта Raspberry Pi находится здесь.

Программное обеспечение на базе Arduino находится здесь.

Вы можете купить модуль SwitchDoc Labs DS3231 в магазине SwitchDoc Labs.

DS3231 Спецификация

AT24C32 Спецификация

Результаты теста

SwitchDoc Labs Модуль DS3231 / AT24C32

Компания SwitchDoc Labs провела месяцы тестирования производительности и валидации этого модуля DS3231 и сравнила его с другими часами реального времени.Мы выбрали DS3231 из-за его превосходной точности. Мы измеряем результаты в PPM (частей на миллион). Например, потеря 1 секунды в день — это отклонение на 11,5 PPM, а 1 PPM — отклонение на 0,0864 секунды в день. Ошибка измерения PPM (частей на миллион) показана на графике ниже:

Тест 3,4 миллиона секунд — PPM

DS3231 — явный победитель. Неровные линии на графике, потому что мы можем обнаруживать только ошибки целых секунд, потому что все три часа реального времени показывают только секунды.Raspberry Pi имеет лучшее разрешение, но мы округлили его, чтобы провести разумное сравнение с данными RTC. Вот сводные данные в виде таблицы:

Таблица результатов ниже:

Устройство Продолжительность теста (секунды) Измеренное количество частей на миллион Спецификация частей на миллион
DS1307 292 869 15 частей на миллион 23 частей на миллион
DS3231 3,432,851 <0.3 частей на миллион 2 частей на миллион
PCF8563 3,432,851 24 частей на миллион 29 частей на миллион
MCP79400 3,432,851 4 частей на миллион Непосредственно не указано

Дополнительные результаты для других часов реального времени сравниваются здесь и в окончательной статье в журнале Raspberry Pi Geek Magazine, выпуск 7 и 8.

Проверка Raspberry Pi

После подключения модуля SwitchDoc Labs DS3231 к Raspberry Pi (3.3V, GND, SCL, SDA), выполните следующую команду:

 [адрес электронной почты защищен] ~ / RTCEval / SDL_DS3231 $ sudo i2cdetect -y 1

 

Результат должен быть похож на этот. 0x68 — это DS3231, а 0x56 — это AT24C32. Обратите внимание, что на некоторых платах новой ревизии адрес AT24C32 — 0x57.

 0 1 2 3 4 5 6 7 8 9 а б в г д е
00: - - - - - - - - - - - - -
10: - - - - - - - - - - - - - - - -
20: - - - - - - - - - - - - - - - -
30: - - - - - - - - - - - УУ - - - -
40: - - - - - - - - - - - - - - - -
50: - - - - - - 56 - - - - - - - - -
60: - - - - - - - - 68 - - - - - - -
70: - - - - - - - - 

После загрузки драйверов с github выполните команду:

  [электронная почта защищена]   ~ / RTCEval / SDL_DS3231 $  sudo python testSDL_DS3231.ру 
 [адрес электронной почты защищен] ~ / RTCEval / SDL_DS3231 $ sudo python test * .py 
 Тест SDL_DS3231, версия 1.0 - SwitchDoc Labs

Начало программы: 2014-12-21 02:01:23
-----------------
-----------------
 Протестируйте EEPROM AT24C32
-----------------
запись первых 10 адресов со случайными данными
адрес = 0 запись значения = 41
адрес = 1 записываемое значение = 249
адрес = 2 запись значения = 198
адрес = 3 запись значения = 238
адрес = 4 запись значения = 190
адрес = 5 запись значения = 101
адрес = 6 запись значения = 171
адрес = 7 запись значения = 62
адрес = 8 запись значения = 255
адрес = 9 запись значения = 169
-----------------
чтение первых 10 адресов
адрес = 0 значение = 41
адрес = 1 значение = 249
адрес = 2 значение = 198
адрес = 3 значение = 238
адрес = 4 значение = 190
адрес = 5 значение = 101
адрес = 6 значение = 171
адрес = 7 значение = 62
адрес = 8 значение = 255
адрес = 9 значение = 169
-----------------
-----------------
Raspberry Pi = 21.12.2014 02:01:25
DS3231 = 21 декабря 2014 г., 02:01:25
DS3231 Temp = 21.75
Raspberry Pi = 21.12.2014 02:01:35
DS3231 = 21 декабря 2014 г., 02:01:35
DS3231 Температура = 21,75
Raspberry Pi = 21.12.2014 02:01:45
DS3231 = 21 декабря 2014 г., 02:01:45
DS3231 Температура = 21,75 

Зачем нужны часы реального времени?

Часы реального времени необходимы для любого проекта, требующего точного учета времени, особенно когда у вас не всегда есть подключение к Интернету. Arduino имеет только программные часы для отсчета времени. Если он выключится, его больше нет. Raspberry Pi, отправляемый на воздушном шаре, или Pi, работающий в отдаленных районах Карибского моря, как Project Curacao.Raspberry Pi неплохо держит время, но только если он подключен к Интернету. Pi использует интернет-сервис под названием NTP для установки часов при включении, если интернет доступен. Затем он вызывает серверы NTP (некоторые из них фактически размещены Национальным институтом стандартов и технологий (NIST) и связаны с их атомными часами). Вы не получите точности атомных часов с помощью NTP, но это неплохо.

Arduino DS3231 Часы реального времени (RTC) с монитором температуры


Обзор

Мы рады представить вам часы реального времени (RTC) и монитор температуры на базе Arduino и DS3231.Это простые часы реального времени с указанием времени, дня недели и даты с использованием платы Arduino UNO и модуля DS3231 . Мы также добавили датчик температуры для дальнейшего расширения этого проекта.

Альтернативная ИС для DS3231 DS1307 . DS3231 RTC имеет встроенную функцию сигнализации, а также датчик температуры с разрешением 0,25 и точностью ± 3 ° C, что упрощает этот проект.

С предыдущей версией аналогичного проекта можно ознакомиться здесь:
1.Arduino DS3231 Часы реального времени с будильником и температурой

  1. Часы реального времени на базе ESP8266 и DS3231 (RTC)
  2. Интерфейс модуля часов реального времени PCF8563 с Arduino


Необходимые компоненты:

Для разработки Arduino и часов реального времени (RTC) на базе DS3231 и монитора температуры нам потребуются следующие компоненты.

  1. Плата Arduino
  2. DS3231 Модуль RTC
  3. ЖК-дисплей 16 x 2
  4. 3V плоская батарейка
  5. Макет
  6. Перемычки

DS3231 Модуль RTC:

Введение:

DS3231 — это недорогие, чрезвычайно точные часы реального времени (RTC) I²C со встроенным кварцевым генератором с температурной компенсацией (TCXO) и кварцевым резонатором.Устройство оснащено аккумуляторным входом и поддерживает точное хронометрирование при отключении основного питания устройства.

RTC хранит информацию секунд, минут, часов, дня, числа, месяца и года . Дата в конце месяца автоматически корректируется для месяцев с менее чем 31 днями , включая поправки на високосный год. Часы работают в 24-часовом формате или 12-часовом с индикатором активного низкого уровня AM / PM .Предусмотрены два программируемых будильника по времени и программируемый прямоугольный сигнал.

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

Основные характеристики:
  1. Высокоточные часы реального времени полностью управляют всеми функциями хронометража
  2. Часы реального времени отсчитывают секунды, минуты, часы, дату месяца, месяц,
    день недели и год, с компенсацией високосного года, действующей до 2100
  3. Точность ± 2 ppm от 0 ° C до + 40 ° C
  4. Точность ± 3.5ppm от -40 ° C до + 85 ° C
  5. Выход цифрового датчика температуры: ± 3 ° C Точность
  6. Регистр старения
  7. Активный-низкий выход RST / Вход для снятия дребезга кнопки сброса
  8. Два будильника с указанием времени суток
  9. Программируемый прямоугольный выходной сигнал
  10. Простой последовательный интерфейс для подключения к большинству микроконтроллеров
  11. Быстрый (400 кГц) интерфейс I2C
  12. Вход резервного питания от батареи для непрерывного хронометража
  13. Работа с низким энергопотреблением увеличивает время автономной работы
  14. 3.Работа 3 В
  15. Диапазон рабочих температур: коммерческий (от 0 ° C до + 70 ° C) и промышленный (от -40 ° C до + 85 ° C)
  16. Сертификат Underwriters Laboratories® (UL)

Схема:

Соедините выводы SDA и SCL DS3231 с выводами SDA и SCL, то есть A4 и A5 Arduino.

Для подключения ЖК-дисплея: соедините контакты 12, 11, 5, 4, 3, 2 Arduino с контактами 4, 6, 11, 12, 13, 14 ЖК-дисплея.


Рабочий:

Чтобы этот проект заработал, сначала добавьте библиотеку для DS3231, которая указана ниже.После этого загрузите код. После загрузки кода проект начинает работать.

В первой строке отображаются часы реального времени. Но во 2-й строке даты, время, день и температура будут отображаться каждые 3 секунды.

Примечание: Измените код, чтобы установить текущую дату, время и дату в строке ниже.

void setup ()

{

rtc.начинать();

ЖК начало (16,2);

rtc.setDOW (ВОСКРЕСЕНЬЕ); // Установить день недели

rtc.setTime (18, 50, 35); // Устанавливаем время на 12:00:00 (24-часовой формат)

rtc.setDate (16, 12, 2018); // День, Месяц, Год


Исходный код:

Загрузите файл библиотеки DS3231 отсюда: Загрузка библиотеки DS3231

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

14

18

19

20

21

22

23

24

25

26

27

28

29

30

000

000 34

35

36

37

38

39

40

# включить

#include

DS3231 rtc (SDA, SCL);

ЖК-дисплей LiquidCrystal (12, 11, 5, 4, 3, 2);

void setup () {

rtc.begin ();

ЖК начало (16,2);

rtc.setDOW (ВОСКРЕСЕНЬЕ); // Установить день недели

rtc.setTime (18, 50, 35); // Устанавливаем время на 12:00:00 (24-часовой формат)

rtc.setDate (16, 12, 2018); // День, Месяц, Год

}

void loop () {

lcd.setCursor (0,0);

lcd.print («Часы реального времени»);

lcd.setCursor (0,1);

lcd.print («Время:»);

lcd.print (rtc.getTimeStr ());

задержка (3000);

lcd.setCursor (0,1);

lcd.print («Дата:»);

lcd.print (rtc.getDateStr ());

задержка (3000);

lcd.setCursor (0,1);

lcd.print («День:»);

lcd.print (rtc.getDOWStr ());

lcd.print («»);

задержка (3000);

ЖК.setCursor (0,1);

lcd.print («Температура:»);

lcd.print (rtc.getTemp ());

lcd.print («C»);

lcd.print («»);

задержка (3000);

}


Предварительный просмотр видео и объяснение:

Часы реального времени (RTC) на базе DS3231 и монитор температуры с использованием Arduino

SainSmart I2C RTC DS1307 AT24C32 Модуль часов реального времени для Arduino — SainSmart.com

Торговая марка: SainSmart
[Снято с производства] Модуль часов реального времени для Arduino

Артикул: 101-50-142 UPC: 6955170831777 Артикул: 11091717012 ID варианта: 45100535892

5 долларов.99

Модуль RTC может предоставить вам часы реального времени.

  • 24C32 32K I2C EEPROM память
  • DS1307 на базе RTC с батареей CR2032

Модуль RTC может предоставить вам часы реального времени.

  • 24C32 32K I2C EEPROM память
  • DS1307 на базе RTC с батареей CR2032

Лучшие часы реального времени Arduino 2021 года

2181 Отзыв Отсканировано

SaleRank No.# 1 WayinTop 2 шт.DS3231 AT24C32 IIC RTC модуль часов реального времени модуль часов для Arduino
  • 【Чип часов реального времени】 DS3231RTC используется как микросхема часов реального времени, которая поддерживает текущее время даже при отключенном основном источнике питания (с помощью батареи).
  • 【Полный календарь часов】 Функциональность, включая секунды, минуты, часы, день, дату, месяц и год, с компенсацией високосного года до 2100 года.
  • 【Чрезвычайно точная】 16-контактная микросхема памяти DS3231 — AT24C32, чрезвычайно точные часы реального времени (RTC) I2C, со встроенным кварцевым генератором с температурной компенсацией (TCXO) и кварцевым резонатором.
  • 【Две программы】 Обеспечивает программируемые будильники по времени суток, а календарь может быть настроен на выход прямоугольной формы. Адрес и данные передаются последовательно через двунаправленную шину I2C.
  • Достаточно безопасно】 Прецизионная схема опорного напряжения и компаратора с температурной компенсацией контролирует состояние VCC для обнаружения сбоев питания и обеспечивает выход сброса.Кроме того, вывод RST отслеживается как генерирующий сброс микропроцессора.
SaleRank №2 Комплект часов реального времени WayinTop с учебным пособием для Arduino, модуль часов DS3231 AT24C32 + драйвер карты Micro SD + плата разработки Nano V3.0 + дисплей OLED 128X64 + зуммер + перемычки для макетной платы
  • 【Комплект цифровых часов «Сделай сам»】 Этот комплект можно использовать для создания часов реального времени и будильника с использованием DS3231RTC и SSD1306 OLED.В комплект входят все маленькие компоненты, такие как макетная плата, перемычки, активный зуммер и кнопка переключения, с помощью которых вы можете сразу же приступить к работе.
  • 【Модуль часов】 DS3231RTC используется в качестве микросхемы часов реального времени, которая поддерживает текущее время, даже если основное питание отключено (батарейка для монет в комплект не входит).
  • 【Модуль карты Micro SD】 Простое и экономичное расширение места для хранения с помощью этого модуля карты SD. Интерфейс модуля SD-карты является стандартным интерфейсом SPI. Легкое общение с протоколом SPI.
  • 【Модуль дисплея LCD 128X64】 Благодаря высокому разрешению 128 x 64 пикселей, встроенный стандартный чип драйвера SSD 1306 уже существует в библиотеках серии 51, что упрощает программирование.
Ранг №4 Модуль DS3231 AT24C32 IIC RTC Часы Таймер Модуль памяти Beats Заменить плату DS1307 I2C RTC, совместимую с Arduino (батареи в комплект не входят) + 20 шт., Штекерный соединительный кабель
  • 16-контактные микросхемы памяти DS3231 — AT24C32, чрезвычайно точные часы реального времени (RTC) I2C, со встроенным кварцевым генератором с температурной компенсацией (TCXO) и кварцевым резонатором.
  • Встроенный осциллятор повышает долговременную точность устройства и уменьшает количество компонентов производственной линии.
  • Предоставляет два настраиваемых будильника и календарь, который может быть настроен на выходной сигнал прямоугольной формы. Адрес и данные передаются последовательно через двунаправленную шину I2C.
  • Высокоточные часы реального времени полностью управляют всеми функциями хронометража. В устройстве есть батарейный вход, отсоединение от основного источника питания и поддержание точного хронометража.
  • Прецизионная схема опорного напряжения и компаратора с температурной компенсацией контролирует состояние VCC для обнаружения сбоев питания и обеспечивает выход сброса. Кроме того, вывод RST отслеживается как генерирующий сброс микропроцессора.
Ранг №5 Geekstory 2 шт.DS3231 AT24C32 IIC RTC модуль часов Высокая точность модуль часов реального времени датчик для Arduino DIY
  • Точность часов: 0-40 ℃, точность 2 ppm, годовая погрешность около 1 минуты.
  • рабочее напряжение: 3,3-5,5 В. Интерфейс шины IIC, скорость передачи 400 кГц (при рабочем напряжении 5 В)
  • Микросхемы памяти: AT24C32. Чип: высокоточная микросхема часов DS3231M
  • Может быть каскадно соединена с другими устройствами IIC . Адрес 24C32 можно изменить, закоротив A0 / A1 / A2.
  • Мы всегда заботились о впечатлениях клиентов и улучшали детали функций продукта. Если у вас есть какие-либо проблемы при использовании нашего продукта или вам нужна документация по использованию продукта, пожалуйста, свяжитесь с нами напрямую для получения помощи.Мы ответим на вашу проблему в течение 24 часов. Мы делаем все возможное, чтобы предоставить каждому клиенту самое профессиональное обслуживание.
SaleRank № 6 Набор часов реального времени WayinTop, 2 модуля часов DS3231 AT24C32 IIC RTC + 2 адаптера адаптера для карт Micro SD Mini TF + 2 0,96-дюймовых ЖК-экрана IIC OLED, светодиодный дисплей 128X64, синий + перемычка 10 см
  • 【Модуль часов без батареи типа «таблетка»】 DS3231RTC используется как микросхема часов реального времени, которая поддерживает текущее время даже при отключенном основном источнике питания (батарея в комплект не входит).
  • 【Полный календарь часов】 Функциональность, включая секунды, минуты, часы, день, дату, месяц и год, с компенсацией високосного года до 2100 года.
  • 【Micro SD Mini TF Card】 Простое и экономичное расширение ваше пространство для хранения Arduino через этот модуль SD-карты. Интерфейс модуля SD-карты является стандартным интерфейсом SPI. Простая связь с протоколом Arduino SPI.
  • 【Модуль дисплея LCD 128X64】 Благодаря высокому разрешению 128 x 64 пикселей, встроенный стандартный чип драйвера SSD 1306 уже существует в библиотеках для Arduino, Raspberry Pi и 51 Series, что упрощает программирование.
  • 【С 40-контактной перемычкой】 10 см. В комплект входит 40-контактная перемычка «папа-мама», с помощью которой вы можете легко подключаться к другим модулям. Если вы не знаете, как его использовать, свяжитесь с нами на Amazon, чтобы получить руководство в формате PDF.
Ранг № # 10 Модуль часов реального времени Rasbee с памятью Tiny DS1307 RTC I2C AT24C32 Высокая точность для Arduino AVR ARM
  • Элемент Без батареи, доступ к DS1307 осуществляется по протоколу I2C.Вывод часов DS1307 наружу.
  • RTC на базе DS1307 требуется батарея CR2032, память 24C32 32K I2C EEPROM.
  • Двухпроводной интерфейс I2C. Часы: минуты: секунды AM / PM. День месяц, дата — год , Точный календарь до 2100 года. Выходной контакт 1 Гц. 56 Байт энергонезависимой памяти, доступной пользователю.
  • Полностью заряженный, он может обеспечивать синхронизацию DS1307 1, подводит к выводу синхронизации DS1307, чтобы обеспечить тактовый сигнал для микроконтроллера. Его можно каскадировать на другие устройства I2C.
  • Комплектация: 3 модуля часов реального времени с памятью Tiny DS1307 RTC I2C AT24C32 High Precision

Последнее обновление 2021-05-04 / Партнерские ссылки / Названия продуктов, изображения, описания из Amazon Product Advertising API

Как купить лучшие часы реального времени Arduino?

Вы нервничаете, думая о покупке отличных часов реального времени Arduino? Сомнения продолжают закрадываться в вашу голову? Мы понимаем это, потому что мы уже прошли весь процесс исследования часов реального времени Arduino, поэтому мы собрали исчерпывающий список лучших часов реального времени Arduino, доступных на текущем рынке.Мы также составили список вопросов, которые, вероятно, возникают у вас самих.

Мы сделали все, что в наших силах, с нашими мыслями и рекомендациями, но по-прежнему важно, чтобы вы самостоятельно провели тщательное исследование часов реального времени Arduino, которые вы собираетесь купить. Ваши вопросы могут включать следующее:

  • Стоит ли покупать часы реального времени Arduino ?
  • Какие преимущества дает покупка часов реального времени Arduino ?
  • Какие факторы заслуживают внимания при покупке эффективных часов реального времени Arduino?
  • Почему так важно инвестировать в любые часы реального времени Arduino Real Time Clock , а тем более в самые лучшие?
  • Какие часы реального времени Arduino подходят на текущем рынке?
  • Где можно найти подобную информацию о часах реального времени Arduino?

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

Потенциальные источники могут включать руководств по покупке Arduino Real Time Clock , рейтинговые сайты, отзывы из уст в уста, онлайн-форумы и обзоры продуктов. Тщательное и внимательное исследование имеет решающее значение, чтобы убедиться, что вы заполучили лучшие часы реального времени Arduino. Убедитесь, что вы используете только заслуживающие доверия и заслуживающие доверия веб-сайты и источники.

Мы предоставляем руководство по покупке часов реального времени Arduino, которое является полностью объективным и достоверным.Для корректуры собранной информации мы используем как искусственный интеллект, так и большие данные. Как мы создали это руководство по покупке? Мы сделали это, используя специально созданный набор алгоритмов, который позволяет нам составить список 10 лучших часов реального времени Arduino, доступных в настоящее время на рынке.

Эта технология, которую мы используем для составления нашего списка, зависит от множества факторов, включая, помимо прочего, следующие:

  1. Ценность бренда : Каждая марка часов реального времени Arduino имеет свою собственную ценность.Большинство брендов предлагают своего рода уникальное торговое предложение, которое должно предложить нечто иное, чем их конкуренты.
  2. Характеристики: Какие навороты важны для часов реального времени Arduino?
  3. Технические характеристики : Можно измерить их мощность.
  4. Стоимость продукта : Это просто то, сколько денег вы получите от ваших часов реального времени Arduino.
  5. Оценки клиентов : Цифры оценивают часы реального времени Arduino объективно.
  6. Отзывы клиентов : Эти параграфы, тесно связанные с рейтингами, дают вам из первых рук подробную информацию от реальных пользователей об их часах реального времени Arduino.
  7. Качество продукции : Вы не всегда получаете то, за что платите, с часами реального времени Arduino, иногда меньше, а иногда больше.
  8. Надежность продукта : Насколько прочные и долговечные часы реального времени Arduino должны указывать на то, как долго они будут работать для вас.

Мы всегда помним, что поддержание актуальности информации о часах реального времени Arduino является нашим главным приоритетом, поэтому мы постоянно обновляем наши веб-сайты. Узнайте больше о нас из онлайн-источников.

Если вы считаете, что все, что мы здесь представляем в отношении часов реального времени Arduino, не имеет отношения к делу, неверно, вводит в заблуждение или ошибочно, то сообщите нам об этом как можно скорее! Мы все время здесь для вас. Свяжитесь с нами здесь. Или вы можете прочитать о нас больше, чтобы увидеть наше видение.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *