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

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

Исправить данную ситуацию нам поможет небольшой модуль который имеет у себя все необходимое для удержания точного времени даже без питания самой Raspberry.
Есть масса различных модулей выполняющих данную функцию, но из всей массы мне понравился модуль на основе микросхемы DS3231.

Небольшой экскурс в характеристики:
I2C — передача данных.
TCXO — термокомпенсация работы кварцевого резонатора и кристалла чипа.
Наличие встроенной литиевой батареи.
Очень точные часы реального времени с продолжительной автономной работой.

 

И так подключим наш модуль к Raspberry PI.

На изображении выше можно увидеть все доступные пины которые есть у нас в наличии.
Для подключения нам понадобятся первые 5 пинов это 1-3-5-7-9

 

Итак подключили приступим к настройке.
Подключаемся по SSH и начинаем.
Первым делом включаем I2C для этого необходимо вызвать утилиту raspi-config

Выбираем Interfacong Options

Затем I2C
И активируем
Перезагружаемся

Теперь установим зависимости и необходимый для работы софт:

Проверим что у нас получилось и все ли хорошо

Если все в порядке мы увидим следующее:
Наличие цифр 68 говорит о том, что у нас на I2C шине обнаружено устройство.

Перейдем в /boot и отредактируем config.txt нам необходимо добавить в загрузку наше новое устройство, для этого после # Additional overlays and parameters are documented /boot/overlays/README добавим следующее:

Перезагрузимся

Проверим что у нас теперь

Мы должны увидеть следующее
Наличие символов UU говорит нам о том что все в порядке.

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

Так же удалим их из загрузки

Так же теперь нам необходимо исправить файл /lib/udev/hwclock-set поскольку мы больше не используем эмуляцию, а реальные часы.
Для этого нужно привести файл к такому виду:

Проверим все ли теперь у нас работает:

или

Если все ок, то увидим следующее

Теперь проверим что в часах системы:

Для того что бы работала синхронизация с NTP необходимо установить chronyd
Если устанавливать chronyd не хочется или не получается, можно установить ntpdate и синхронизировать время с NTP к примеру вот так:

Проверим что у нас в хардварных часах hwclock -r если время совпадает с date значить все ок часы системы синхронизировались с NTP и записали обновленные значения в хардварные часы.

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

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

2 комментария

  1. Ростік Ответить
    02.01.2020 at 12:10

    Дякую! Дуже вичерпно.

  2. Alex Ответить
    09.12.2020 at 21:17

    09-12-2020
    Благодарствую за инструкцию
    Поставил, все работает.
    RPI3

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

Пожалуйста, будьте вежливы. Мы ценим это. Обязательные поля отмечены *