Автор Тема: Использование RTC  (Прочитано 10503 раз)

Оффлайн UB3GAD

Использование RTC
« : Январь 27, 2016, 01:32:20 pm »
Как наверно знаю все присутствующие у наших плат есть одна мелкая недоработка, а именно что когда пропадает питание и нет интернета, часы сбиваются на 1970 год...
Когда железка постоянно подключена к розетке это не критично, но а если делать что то с автономным питанием и без выхода в инет, то это становиться проблемой.
Кто нибудь пробовал как то решать этот вопрос ?
Orange Pi PC

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 556
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: Использование RTC
« Ответ #1 : Январь 27, 2016, 01:36:51 pm »
Пусть тут тоже будет.
Цитировать
Появилась поддержка реал-тайм часов
Для активации необходимо в файле /etc/init.d/hwclock.sh вставить текст перед строкой . /lib/lsb/init-functions

if [ ! -e /dev/rtc1 ]; then
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
sleep 0.5
if [ -e /dev/rtc1 ]; then
HCTOSYS_DEVICE=rtc1
/sbin/hwclock —rtc=/dev/$HCTOSYS_DEVICE —hctosys
fi
else
HCTOSYS_DEVICE=rtc1
fi
Сами часы: DS3231 Precision RTC Module Memory Module for Arduino Raspberry Pi DIY

Ссылка на пост в ВК: Появилась поддержка реал-тайм часов
« Последнее редактирование: Январь 27, 2016, 01:41:05 pm от warik »
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн bambr3312

  • Moderator
  • Посвященный
  • *****
  • Сообщений: 130
  • Лайков: 28
  • Карма: +3/-1
  • Сами Вы, сэр, осётр!
    • Просмотр профиля
Re: Использование RTC
« Ответ #2 : Январь 27, 2016, 01:38:32 pm »
Кто нибудь пробовал как то решать этот вопрос ?
Пробовал. Вот по этим двум статьям:
http://www.hobbytronics.co.uk/raspberry-pi-real-time-clock
http://www.zedt.eu/tech/hardware/using-ds1302-real-time-clock-module-raspberry-pi/
Подключил ds1302, собрал rtc-pi, но что-то там не так с последовательностью байтов. Выдавало какую-то белиберду. Поковырялся одни вечер и пока забросил
Относительность относительна (с)
Orange Pi 2, Orange Pi PC

Оффлайн bambr3312

  • Moderator
  • Посвященный
  • *****
  • Сообщений: 130
  • Лайков: 28
  • Карма: +3/-1
  • Сами Вы, сэр, осётр!
    • Просмотр профиля
Re: Использование RTC
« Ответ #3 : Январь 27, 2016, 01:40:20 pm »
Тут же вроде уже писали.
Согласен. С ds1302 лучше не связываться, я просто взял, что осталось от arduino
Относительность относительна (с)
Orange Pi 2, Orange Pi PC

Оффлайн UB3GAD

Re: Использование RTC
« Ответ #4 : Январь 27, 2016, 01:49:39 pm »
Вообщем я к тому что в Н3 уже встроен rtc....

Я просто подпаял батарейку от материнки, выкинул один резистор на ом и выставил время. В консоли сделал
sudo hwclock -w
это синхронизирует аппаратные часы с программными

После чего выдернул питание снова включил и о чудо время не сбилось :)

Но есть большой нюанс, разработчики несколько у влеклись с разводкой питания по плате и вывод проца судя по схеме запараллелен с кучей другой периферии из за чего батарейки хватит максимум на месяц... а не несколько лет как на материнках 
Orange Pi PC

Оффлайн bambr3312

  • Moderator
  • Посвященный
  • *****
  • Сообщений: 130
  • Лайков: 28
  • Карма: +3/-1
  • Сами Вы, сэр, осётр!
    • Просмотр профиля
Re: Использование RTC
« Ответ #5 : Январь 27, 2016, 01:58:28 pm »
Вообщем я к тому что в Н3 уже встроен rtc....

Я просто подпаял батарейку от материнки, выкинул один резистор на ом и выставил время. В консоли сделал
sudo hwclock -w
это синхронизирует аппаратные часы с программными

После чего выдернул питание снова включил и о чудо время не сбилось :)

Но есть большой нюанс, разработчики несколько у влеклись с разводкой питания по плате и вывод проца судя по схеме запараллелен с кучей другой периферии из за чего батарейки хватит максимум на месяц... а не несколько лет как на материнках
вроде и здорово, а с другой стороны - нафих такая реализация?  :o ;D
Относительность относительна (с)
Orange Pi 2, Orange Pi PC

Оффлайн bambr3312

  • Moderator
  • Посвященный
  • *****
  • Сообщений: 130
  • Лайков: 28
  • Карма: +3/-1
  • Сами Вы, сэр, осётр!
    • Просмотр профиля
Re: Использование RTC
« Ответ #6 : Январь 27, 2016, 02:01:29 pm »
Может проще Nokia BL5-C туда воткнуть в качестве бесперебойника :D
Относительность относительна (с)
Orange Pi 2, Orange Pi PC

Оффлайн UB3GAD

Re: Использование RTC
« Ответ #7 : Январь 27, 2016, 02:10:30 pm »
Может проще Nokia BL5-C туда воткнуть в качестве бесперебойника :D
Ну как вариант но не для носимой железки, а так по времени такой акб будет держать часы примерно пол года))
Orange Pi PC

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 556
  • Лайков: 151
  • Карма: +10/-0
    • Просмотр профиля
    • OrangePi.pp.ua
Re: Использование RTC
« Ответ #8 : Январь 27, 2016, 02:13:30 pm »
Ну если есть корпус для OPi, ну или она лежит постоянно на одном месте, то я думаю BL5-C ей не помешает.
UB3GAD, сделай фотки как и куда подключал. Ну и соответственно как настраивал.
Orange Pi PC, Orange Pi One, Orange Pi Zero

Оффлайн CHuKEPC

Re: Использование RTC
« Ответ #9 : Февраль 03, 2016, 08:36:40 pm »
Не уверен, что это недоработка ;) это нормальная ситуация на одноплатниках.
В RPi стандартные модули типа ds1307 ставятся аж бегом. На BananaPi проблема решилась пересборкой ядра.
В OPi судя по всему кроме sunxi rtc никаких других драйверов в ядре нет. Тут два пути- либо припаивать батарею либо пересобирать ядро.
Буду курить интернеты. Мне это важно, поэтому результат отпишу.
OPi plus 2, OPi plus, OPi PC, RPi B, RPi2, RPi3, RPI CM1, RPI CM3, BPi, BPi Lamobo R1. И все работает!

Оффлайн bambr3312

  • Moderator
  • Посвященный
  • *****
  • Сообщений: 130
  • Лайков: 28
  • Карма: +3/-1
  • Сами Вы, сэр, осётр!
    • Просмотр профиля
Re: Использование RTC
« Ответ #10 : Февраль 03, 2016, 10:10:00 pm »
Я сегодня добрался наконец-то до сборки UB3GAD, спасибо ему огромное.. и заметил, что там в секции GPIO script.fex несколько другое накалякано чем у меня из debian. Будет время, попробую по тем статья, что раньше указывал, подключить ds1302. Других нет  :(
Относительность относительна (с)
Orange Pi 2, Orange Pi PC

Оффлайн Kostya127

Re: Использование RTC
« Ответ #11 : Апрель 07, 2016, 02:19:23 pm »
Подцепил часы DS3231 (http://ru.aliexpress.com/item/DS3231-AT24C32-IIC-Module-Precision-Clock-Module-with-out-battary/32275534578.html) Orange PI PC + Ubuntu Mate 15.04.
Способ, указанный выше (https://vk.com/orangepi2?w=wall-96813279_96%2Fall) не сработал.
Подключил по инструкции от сюда: http://www.itcooky.com/?p=4023
sudo pluma /etc/rc.local
перед exit0 добавить:
sudo echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
sudo hwclock -s -f /dev/rtc1

Далее перезагрузился, после загрузки:
dmesg | grep rtc
sudo hwclock -s -f /dev/rtc1
sudo hwclock -w -f /dev/rtc1
Все работает! До их установки была какая то свистопляска с временем (показывал то -2, то -10 от установленного), теперь все нормально!
Orange PI PC

Оффлайн Vital864

  • Посвященный
  • ***
  • Сообщений: 247
  • Лайков: 36
  • Карма: +4/-0
  • Orange Pi Plus
    • Просмотр профиля
Re: Использование RTC
« Ответ #12 : Апрель 10, 2016, 07:27:58 pm »
Да, всё работает без проблем. И установилось без каких-либо напрягов. Теперь вопрос о системном времени решен. Я считаю это лучший вариант решить эту задачу. Цена вопроса - 80 р. Это ни о чём. Шилд такой же, DS3231.
Orange Pi Plus

Оффлайн CHuKEPC

Re: Использование RTC
« Ответ #13 : Апрель 22, 2016, 02:51:19 pm »
У меня получилось подключение в таком варианте:

1. Подключение по схеме
             DS3231                                          OP One
             GND ——————————>    pin 06  (GND)
             Vcc ——————————>       pin 01 (3.3V)
             SDA ——————————>     pin 03 (I2C SDA)
             SCL ——————————>     pin 05 (I2C SCL)

2. Проверяем устройства
root@orangepione:# i2cdetect -l
 i2c-0   i2c             twi0                                    I2C adapter
  i2c-1   i2c             twi1                                    I2C adapter

3. Наличие подключенных устройств на шине
root@orangepione:#  i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

4. Редактируем  /etc/rc.local, перед exit 0 вставляем строку
echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
 и делаем reboot

5. Проверяем время в часах rtc
root@orangepione:~# hwclock -r
Thu 01 Jan 1970 01:32:46 AM CET  -1.181072 seconds

6. Проверяем системное время
root@orangepione:~# date
Tue Mar  1 20:57:48 CET 2016

7. Перезаписываем дату в RTC
root@orangepione:~# hwclock -w
root@orangepione:~# date
Tue Mar  1 20:58:33 CET 2016

8. Еще раз редактируем  /etc/rc.local, перед exit 0 вставляем строку
hwclock -s
 и делаем reboot


Все готово!
OPi plus 2, OPi plus, OPi PC, RPi B, RPi2, RPi3, RPI CM1, RPI CM3, BPi, BPi Lamobo R1. И все работает!

Оффлайн CHuKEPC

Re: Использование RTC
« Ответ #14 : Август 18, 2016, 09:31:21 am »
А теперь две новости:
1. Моя предыдущая инструкция ШЛАК! Не работает и не должна была!
2. Готова обновленная инструкция работает и для DS3231 и для DS1307. Инструкция для ARMBIAN.

- создаем новую папку
mkdir /etc/conf.d/

- редактируем в ней файл
nano /etc/conf.d/rtc-i2c

до такого вида

CHIP="ds1307"
ADDRESS="0x68"
BUS="0"

Закрываем и сохраняем

- редактируем
nano /etc/udev/rules.d/rtc-i2c.rules

добавляем строку
ACTION=="add", SUBSYSTEM="rtc", ATTRS{hctosys}=="0", RUN+="/usr/bin/hwclock -s -f /dev/rtc1 --localtime"

Закрываем и сохраняем

-редактируем
nano /lib/systemd/system/rtc-i2c.service

- и добавляем туда

[Unit]
Description=Initialize i2c hardware RTC device driver
DefaultDependencies=no
Requires=systemd-modules-load.service
After=systemd-modules-load.service
Before=sysvinit.target
ConditionPathExists=/sys/class/i2c-adapter
Conflicts=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/etc/conf.d/rtc-i2c
ExecStart=/bin/sh -c "echo ${CHIP} ${ADDRESS} > /sys/class/i2c-adapter/i2c-${BUS}/new_device"

[Install]
WantedBy=sysinit.target

Сохраняем и закрываем

Создаем загрузку при запуске системы

systemctl enable rtc-i2c.service

Перезагружаемся.
 проверяем дату и удивляемся :)

-меняем системную дату
date 0801809282016
(date MMDDHHMMYYYY)

-читаем
hwclock -r -f /dev/rtc1

-пишем корректную
hwclock -w -f /dev/rtc1

ВСЕ почти готово.

Для тех кто внимательно читает сообщаю:
DS1307 работает в диапазоне от 3 до 6В. Но! при напряжении менее 3,75В запись в него НЕВОЗМОЖНА!
По поводу ds3231 такая инфа обнаружена не была, но на всякий пожарный питание лучше не с 1-й ноги подавать, а например со 2-й
OPi plus 2, OPi plus, OPi PC, RPi B, RPi2, RPi3, RPI CM1, RPI CM3, BPi, BPi Lamobo R1. И все работает!