вторник, 12 мая 2020 г.

Як встановити та налаштувати апаратний годинник в Raspberry Pi

Ні для кого не секрет, що в Малині немає вбудованого годинника. Тобто, при ввімкнені, комп'ютер немає ніц уяви котра зараз година та дата. А дізнається лише тоді, коли під'єднається до серверів часу, через інтернет або з допомогою дротового з'єднання, або з допомогою WiFi. Як можна зробити так, щоб Малина завжди знала котра година, навіть коли вимкнена ?

В цьому допоможе плата RTC (Real Time Clock) - годинник реального часу. Плати можуть бути зібрані або на PCF8523, або на DS1307, або на DS3231. Одразу порекомендую DS3231. В неї найкраща точність. Виглядає вона ось так.







Її можна придбати тут.  Коштує вона не надто дорого, але з її встановленням Малина стала зручніше в користуванні. Під'єднується вона на роз'єм GPIO згідно нижченаведеної схеми підключення.


Розпіновка GPIO виглядає так


Щоб довго не ламати голову я приведу фото як плата встановлена.




Для того, щоб ця плата запрацювала, потрібно активувати шину i2c в Raspberry Pi. Для цього виконаємо

sudo raspi-config



Далі  Interfacing Options -> I2C ->







На запитання Would you like the ARM I2C interface to be enabled ? потрібно відповісти Yes.


Система повідомить про активацію I2C.


Перевантажимо систему командою

sudo reboot

Далі потрібно довстановити необхідні пакети

sudo apt-get install python-smbus i2c-tools



Після встановлення пакетів перевсіримо, чи Малина бачить під'єднану плату.
 
sudo i2cdetect -y 1


Відповіддю на цю команду буде показана адреса ID # 68  - це адреса модуля.



Якщо адресу не побачите, то дивіться чи все вірно під'єднали.

Тепер потрібно прописати цей модуль (додати драйвер для завантаження). 

В кінець файлу /boot/config.txt додаємо строку

dtoverlay=i2c-rtc,ds3231

Відредагуємо файл

sudo nano /boot/config.txt


а ось і ця строка, вписана в файл



Зберігаємо файл і перезавантажуємо.

Після перезавантаження для перевірки роботи знову виконаємо команду

sudo i2cdetect -y 1

В місці відображення адреси буде стояти UU. Це означає, що все працює.





Тепер потрібно деактивувати fake-hwclock, адже в нас є апаратний годинник.

sudo apt-get -y remove fake-hwclock
sudo update-rc.d -f fake-hwclock remove
sudo systemctl disable fake-hwclock







Тепер, коли відключений fake-hwclock, потрібно активувати скрипт, що буде запускати апаратного годинника.

Виконаємо

sudo nano /lib/udev/hwclock-set



Закоментовуємо три рядки bash скрипта.




#if[ -e /run/systemd/system ]; then
# exit 0
#fi





Також потрібно закоментувати дві строчки

/sbin/hwclock --rtc=$dev --systz --badyear

/sbin/hwclock --rtc=$dev --systz


Має вийти так



Тепер перезавантажте Малину.


Настав час засинхронізуватися.

Прочитаємо яка дата та час записані зараз в апаратному годиннику

sudo hwclock -D -r



Увага. Коли вперше під'єднано модуль, годинник покаже невірне значення. Не лякайтеся. Це нормально.

Під'єднайте Малину до інтернету для отримання вірної дати або через WiFi або через дротове з'єднання.

Тепер цей час потрібно записати в годинник.

sudo hwclock -w

Прочитати всановлений час

sudo hwclock -r



Якщо дата та час збігається, то все гаразд !

Проведемо експеримент чи все вдалося. Вимикаємо Малину і перезапустимо її. Інтернет з'єднання повинно бути відсутнє, інакше Малина засинхронізується через інтернет. В такому випадку ми не зможемо бути впевнені в позитивному результаті.



Тепер Малина завжди буде знати котра година, навіть коли вимкнена і коли відсутній інтернет.

Я думаю, що зрозуміло для чого це робилося. При відсутності можливості синхронізації часу через інтернет буде неможливо працювати в цифрових режимах як FT8, JS8Call і т.д.

73 ! de UT2YR










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

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