Додавання годинника реального часу DS3231 на Raspberry Pi
Оценка пользователей: / 9
ПлохоОтлично 
There are no translations available.

Real Time ClockКоли ваш Pi підключений до мережі, він має можливість правильно встановити годинник, використовуючи NTP. Без підключення до мережі системний час і дата будуть майже напевно неправильними.
Для деяких проектів це проблема, особливо якщо ви фіксуєте часові мітки або виконуєте інші чутливі до часу операції.
Real Time Clock_1
Проблему можна вирішити за допомогою модуля годинника реального часу (Real Time Clock  - RTC). Це дозволить використовувати невелику батарею розміром з монету, щоб зберегти час для Pi, навіть якщо він вимкнений. Коли Pi перезавантажується, то може встановити свій власний внутрішній годинник, використовуючи час, який зберігається в RTC.
Найпростіший спосіб реалізації RTC - купити заздалегідь зроблений модуль. На щастя, модулі RTC відносно дешеві і їх легко знайти. Деякі модулі приєднуються безпосередньо до роз’єму GPIO Pi, але це можна зробити через інші пристрої, тому автор віддає перевагу більш загальним модулям, які зберігають GPIO вільним для інших цілей.
DS1307 чи DS3231?Real Time Clock_2
Модулі, засновані на мікросхемах DS1307 і DS3231, є популярними пристроями, і ви побачите їх в продажі від різних продавців. Автор купив обидва типи і швидко зрозумів, що його модулі DS1307 були марною тратою, тому радить використовувати модулі на основі DS3231. Вони більш точні і успішно запускаються від 3,3 В. Його ж два "крихітні RTC DS1307" модулі пішли прямо у відро для сміття.
Видалення резисторів
Більшість загальних модулів з шиною I2C має підтягуючі резистори на виводах SDA і SCL, але вони не потрібні, бо Pi має своє підтягування. Автор зняв їх, щоб ці резистори на платі не заважати роботі шини I2C.
Real Time Clock_Schema
Модуль також має схему основної зарядки для використання з акумуляторною батареєю LIR2032. Автор використовує звичайну батарейку, яка не перезаряджається, тому видалив ще один резистор, щоб відключити цю схему зарядки. Резистори видаляються з модуля за допомогою паяльника і деякого пінцету або невеликих плоскогубців. Розташування резисторів показане на фото нижче:
Real Time Clock_3
Установка I2C
Як і у всіх пристроїв I2C, необхідно налаштувати I2C-інтерфейс. Це досить легко зробити, і пояснюється у статті про включення інтерфейсу I2C на Raspberry Pi.
Налаштування модуля DS3231
Щоб переконатися, що встановлені останні оновлення, ви повинні виконати наступні команди:
sudo apt-get update
sudo apt-get -y upgrade
Тепер нам потрібно змінити системний файл за допомогою:
sudo nano /etc/modules
Якщо цього ще там немає, то додайте "rtc-ds3231" внизу, щоб виглядало щось на кшталт:
snd-bcm2835
i2c-bcm2835
i2c-dev
rtc-ds3231
Ви можете зберегти і вийти за допомогою CTRL-X, Y і ENTER.
Для вимкнення Pi використайте "sudo halt" і відключіть живлення, коли завершиться процес вимкнення.
Налаштування обладнання
Тепер можете підключити модуль до вимкненого Raspberry Pi. Це досить проста конфігурація, але вона повинна бути правильною, тому перевірте її. Зверніться до схеми GPIO, щоб переконатися, що використали правильні контакти на роз’ємі Pi.
Real Time Clock_Table
Не забувайте про батарею 3В!
Real Time Clock_4
Тестування інтерфейсу
Підключіть живлення до Pi і виконайте наступну команду:
sudo i2cdetect -y 1
Примітка: Якщо використовуєте Rev 1, то вам потрібно скористатися "sudo i2cdetect -y 0".
Ви повинні побачити щось схоже на це:
Real Time Clock_5
У цьому прикладі "68" є шістнадцяткою адресою модуля RTC на інтерфейсі I2C.
Налаштування пристрою I2C
Для забезпечення налаштування пристрою DS3231 і синхронізації часу, коли Pi завантажується, треба відредагувати інший системний файл:
sudo nano /etc/rc.local
Додайте наступні два рядки перед рядком exit 0:
echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -s
тепер це виглядає так:
Real Time Clock_6
Примітка: Якщо використовуєте Rev 1, то вам потрібно записати “/i2c-0/” замість “/i2c-1/”.
Ви можете зберегти і вийти за допомогою CTRL-X, Y і ENTER.
Тепер перезавантажте Pi за допомогою:
sudo reboot
Тепер, коли повторите команду i2cdetect (див. вище), то 68 перетвориться в UU:
Real Time Clock_7
Часові пояси та перехід на літній час
За замовчуванням, Pi прагне показати час за Гринвічем або UTC. Щоб сказати своєму Pi, де ви знаходитесь, можете використати:
sudo raspi-config
а потім вибрати "Internationalisation Options", далі " Change Timezone ". Ви можете потім вибрати своє місце в наступних екранах.
Читання дати і часу
Ви можете прочитати системний час Pi, використовуючи:
date
Якщо вам потрібно з якоїсь причини встановити системний час, то можете використати подібну до наступної команду:
sudo date -s "29 AUG 1997 13:00:00"
Після того, як все правильно, можете записати системну дату і час до модуля RTC за допомогою:
sudo hwclock -w
Ви повинні бути в змозі прочитати дату і час назад від RTC з використанням:
sudo hwclock -r
Розділяючи команди крапкою з комою, можна прочитати назад системний час і час RTC одночасно. Сподіваємося, що вони будуть відповідати і виглядати наступним чином:
Real Time Clock_8
"hwclock -s" ми додали до "rc.local", встановлюючи системний час з модуля RTC.
Підсумковий тест
В остаточному тесті треба визначити, чи тримає час модуль RTC, і що Pi буде використовувати цей час, коли завантажиться. Кращий спосіб зробити це в наступній послідовності:
• Вимкніть Pi
• Відключіть кабель живлення
• Видаліть мережеве підключення
• Прикріпіть Pi до монітора і клавіатури
• Залиште його на ніч
• Підключіть живлення і використайте "date", щоб побачити час, який Pi вважає зараз
Сподіваємося, що ваш Pi тепер правильно відображає дату і час та буде підтримувати їх, коли Pi вимкнений.
(Джерело EN: raspberrypi-spy.co.uk)
 
>
КнигаНовости Практика поискаПартнерыО нас
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting