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

Оффлайн UB3GAD

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

Оффлайн warik

  • Administrator
  • Старейшина
  • *****
  • Сообщений: 534
  • Лайков: 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
  • Старейшина
  • *****
  • Сообщений: 534
  • Лайков: 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, 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

  • Посвященный
  • ***
  • Сообщений: 245
  • Лайков: 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, 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, BPi, BPi Lamobo R1. И все работает!