Подключение часов реального времени к Raspberry Pi

Подключение часов реального времени к Raspberry Pi

Когда вы включаете свой ПК или Mac, вам приходится менять время? Очень маловероятно! А на вашем Raspberry Pi? Возможно.

Каждый раз, когда ваш Raspberry Pi загружается, если у него есть подключение к интернету, он подключается к так называемому NTP-серверу (Network Time Protocol) и запрашивает у него текущее, актуальное время — но что произойдёт, если ваш Pi не подключён к интернету? Ваш Pi не будет знать, который сейчас час.

К счастью, есть решение в виде платы часов реального времени. Эти недорогие дополнительные платы подключаются к GPIO-контактам вашего Pi и содержат микросхему часов и крошечную батарейку, которые сообщают Raspberry Pi текущее время.

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

Это руководство основано на использовании Raspberry Pi OS Bookworm (но должно отлично работать и с Trixie), обновлено в октябре 2025 года для использования более надёжного метода Device Tree Overlay.

Включение I2C

Плата RTC использует протокол I2C (произносится «ай-квадрат-си») для связи с Raspberry Pi. I2C позволяет Raspberry Pi одновременно обмениваться данными с множеством различных устройств, которые также подключены к тем же I2C-контактам на Raspberry Pi.

Вам необходимо включить I2C на вашем Raspberry Pi, так как обычно он отключён по умолчанию. Вы можете сделать это одним из следующих способов:

  • Использовать интерфейс Центра управления, если вы используете рабочий стол ОС (Preferences > Control Centre > Interfaces > выберите I2C)

  • Использовать инструмент raspi-config в окне терминала

    • Введите команду sudo raspi-config

    • Выберите «Interface Options», затем «I2C», чтобы включить его.

sudo raspi-config — включение I2C

Установка платы

Всегда лучше выключить Raspberry Pi перед подключением чего-либо к GPIO-контактам. Всегда делайте это с помощью команды sudo halt или через меню выключения на рабочем столе.

Как только ваш Raspberry Pi будет выключен, подключите плату к GPIO-контактам на внутреннем углу, чтобы плата RTC была направлена внутрь, как показано ниже:

RTC-модуль, установленный на Raspberry Pi

Настройка RTC

Мы обновили эту часть руководства по состоянию на октябрь 2025 года, так как лучший способ настроить RTC теперь — это использование Device Tree Overlay. Это официальный, постоянный и встроенный в ядро способ сообщить Raspberry Pi OS о существовании вашего оборудования — и он загружается автоматически при загрузке!

Редактирование активной конфигурации загрузки

В новом окне терминала введите следующую команду:

sudo nano /boot/firmware/config.txt

В конце этого файла добавьте на новой строке следующее, что привяжет I2C RTC при загрузке:

dtoverlay=i2c-rtc,ds3231

Сохраните и выйдите из файла, используя Ctrl+X, выбрав «Y», когда вас спросят, хотите ли вы сохранить изменения.

Добавление dtoverlay в config.txt

Важно! Перезагрузка

Чтобы применить изменения, перезагрузите ваш Raspberry Pi с помощью:

sudo reboot

Проверка распознавания I2C-устройства

После перезагрузки Raspberry Pi убедитесь, что плата RTC распознана, выполнив следующую команду:

i2cdetect -y 1

Вы должны увидеть UU на пересечении строки 60 и столбца 8, что указывает на адрес 0x68 (UU означает «адрес используется драйвером»).

Примечание: если у вас оригинальный Raspberry Pi 1, вам может потребоваться использовать i2cdetect -y 0 ).

Вывод команды i2cdetect

Проверка регистрации RTC

В окне терминала выполните:

ls -l /dev/rtc*

Вы должны увидеть /dev/rtc0, что означает, что драйвер успешно зарегистрировал RTC.

Вывод ls -l /dev/rtc

Также стоит выполнить:

dmesg | grep -i rtc

Вы должны увидеть строку, похожую на rtc-ds1307 1-0068: registered as rtc0 (драйвер ds1307 также обрабатывает чип ds3231).

Вывод dmesg grep rtc

Инициализация и установка времени RTC

После настройки нам нужно сообщить вашему RTC текущее время. Просто выполните следующие команды одну за другой:

sudo hwclock -w
sudo hwclock -r

После выполнения последней команды терминал должен вернуть временную метку, подобную этой:

2025-10-30 16:41:44.084188+00:00
Временная метка RTC

Вот и всё, ваш RTC теперь настроен на вашем Raspberry Pi!