Часы реального времени 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 поскольку мы больше не используем эмуляцию, а реальные часы.
Для этого закоментируем лишнее:

И было бы неплохо еще заккоментировать все что может в будущем вызвать ошибки:

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

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

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

Если время с hwclock -r совпадает с date то все работает хорошо.

Осталось лишь синхронизировать время с NTP сервером для этого делаем к примеру вот так:

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

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

1 комментарии

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

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

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

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