понедельник, 15 февраля 2016 г.

Добавление часов реального времени (на основе DS3231) к Raspberry Pi 2

Все описанные инструкции работают для Raspberry Pi 2 c версией ядра

uname -a
Linux raspberrypi 4.1.7-v7+ #817 SMP PREEMPT Sat Sep 19 15:32:00 BST 2015 armv7l GNU/Linux

Никаких blacklist файлов в моем случае не оказалось, поэтому ничего модифицировать не надо (отсылка к blacklist файлу идет во многих сетевых туториалах).

1) Добавим необходимый модуль в ядро, выполнив команду

modprobe i2c-bcm2708

Список модулей можно вывести командой lsmod. В списке должны присутствовать - rtc_ds1307   
i2c_bcm2708

2) В конец файла /boot/config.txt добавляем следующие две строки:

dtparam=i2c_arm=on
dtoverlay=i2c-rtc,ds3231

3) Подключаем плату с часами по следующей таблице:

DS1307Pi GPIO
GNDP1-06
VccP1-01 (3.3V)
SDAP1-03 (I2C SDA)
SCLP1-05 (I2C SCL)
Резисторы (подтягивающие) не выпаивал (где то в сети их выпаивают). На плате загорится led indicator POWER.

4) Удаляем fake-hwclock и ntp синхронизацию.

update-rc.d -f  fake-hwclock removeupdate-rc.d -f  ntp remove

fake-hwclock можно вообще удалить из пакетов. (см. dpkg purge).

5) Ребутим raspberry
reboot

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

ls /sys/class/i2c-adapter/i2c-1
1-0068  delete_device  device  name  new_device  of_node  subsystem  uevent

Если этой директории нет, то видимо надо выполнить
echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-1/new_device
я этого не делал, так как запись появлялась автоматически.

Для работы с RTC в Linux существует утилита hwclock
# hwclock -r — считать время, сохранённое в RTC
# hwclock -s — синхронизировать время системы с временем RTC
# hwclock -w — записать текущее системное время в RTC

6) Запишем показания часов в DS3231

hwclock --set --date="2016-02-15 09:00:00"

7) Просмотр данных часов

 hwclock -r

Mon 15 Feb 2016 12:37:30 UTC  -0.556879 seconds

8) Синхронизируем показания системных часов с данным из hwclock

hwclock -s

В общем, время по команде date и время по команде hwclock -r должно быть одним и тем же.

9) Для того, чтобы часы синхронизировались при стартапе raspberry в файл /etc/rc.local добавляем до строки exit 0 следующую строку 

#set the system time from hardware clock ds3231
sudo hwclock -s

10) Выключаем raspberry и включаем ее через минут 5. Вывод команды date должен показывать актуальное текущее время. Профит!




Комментариев нет:

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