Подключение часов реального времени к 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», чтобы включить его.
Установка платы
Всегда лучше выключить Raspberry Pi перед подключением чего-либо к GPIO-контактам. Всегда делайте это с помощью команды sudo halt или через меню выключения на рабочем столе.
Как только ваш Raspberry Pi будет выключен, подключите плату к GPIO-контактам на внутреннем углу, чтобы плата RTC была направлена внутрь, как показано ниже:
Настройка RTC
Мы обновили эту часть руководства по состоянию на октябрь 2025 года, так как лучший способ настроить RTC теперь — это использование Device Tree Overlay. Это официальный, постоянный и встроенный в ядро способ сообщить Raspberry Pi OS о существовании вашего оборудования — и он загружается автоматически при загрузке!
Редактирование активной конфигурации загрузки
В новом окне терминала введите следующую команду:
sudo nano /boot/firmware/config.txt
В конце этого файла добавьте на новой строке следующее, что привяжет I2C RTC при загрузке:
dtoverlay=i2c-rtc,ds3231
Сохраните и выйдите из файла, используя Ctrl+X, выбрав «Y», когда вас спросят, хотите ли вы сохранить изменения.
Важно! Перезагрузка
Чтобы применить изменения, перезагрузите ваш Raspberry Pi с помощью:
sudo reboot
Проверка распознавания I2C-устройства
После перезагрузки Raspberry Pi убедитесь, что плата RTC распознана, выполнив следующую команду:
i2cdetect -y 1
Вы должны увидеть UU на пересечении строки 60 и столбца 8, что указывает на адрес 0x68 (UU означает «адрес используется драйвером»).
Примечание: если у вас оригинальный Raspberry Pi 1, вам может потребоваться использовать i2cdetect -y 0 ).
Проверка регистрации RTC
В окне терминала выполните:
ls -l /dev/rtc*
Вы должны увидеть /dev/rtc0, что означает, что драйвер успешно зарегистрировал RTC.
Также стоит выполнить:
dmesg | grep -i rtc
Вы должны увидеть строку, похожую на rtc-ds1307 1-0068: registered as rtc0 (драйвер ds1307 также обрабатывает чип ds3231).
Инициализация и установка времени RTC
После настройки нам нужно сообщить вашему RTC текущее время. Просто выполните следующие команды одну за другой:
sudo hwclock -w
sudo hwclock -r
После выполнения последней команды терминал должен вернуть временную метку, подобную этой:
2025-10-30 16:41:44.084188+00:00
Вот и всё, ваш RTC теперь настроен на вашем Raspberry Pi!