Пятница, 27.12.2024, 22:39
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа

Меню

Авторские проекты

Статьи

Raspberry Pi

Полезная информация

Обратная связь

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


Календарь
«  Сентябрь 2015  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930

Наш опрос

Ссылки


Яндекс.Метрика





.
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Raspberry Pi для домашней автоматизации. Часы реального времени

Raspberry Pi для домашней автоматизации. Часы реального времени

Наш канал в YouTube


DS1307

У Raspberry Pi нет собственных часов реального времени, поэтому его синхронизация происходит из интернета через NTP-сервер точного времени. С одной стороны ничего страшного в этом нет, если Raspberry Pi постоянно находится online. Однако при работе в закрытой или локальной сети, где нет NTP-серверов, системное время будет некорректным.

А собственно для чего нужно точное время в подобных устройствах? Дело в том, что в автоматике, особенно промышленной, синхронизации времени является одной из приоритетных задач. Точное время необходимо для ведения ретроспективы событий, фиксации моментов аварийных процессов, построения графиков параметров.

Синхронизация  времени, кроме NTP-сервера, может выполняться с помощью сигналов точного времени, транслируемых через радиостанции или спутниковые навигационные системы. Например, на современных электрических подстанциях, где фактически вся релейная защита, автоматика, телемеханика сейчас построена с применением микропроцессорных средств, завязанных в единую сеть, синхронизация времени выполняется обычно с помощью спутников GPS-навигации, обеспечивающих высокую точность (погрешность не хуже 90-340 нс для системы «Navstar» и 700 нс для системы «Глонасс»).

Но в нашей системе домашней автоматизации такая точность будет излишней, поэтому мы обойдемся без спутниковых систем и применим более простой способ – подключим к Raspberry Pi модуль часов реального времени RTC (Real Time Clock), выполненный на широко распространенном чипе DS1307.

В качестве такого модуля была выбрана компактная плата Tiny RTC (рис.1).

 

DS1307 Raspberry Pi

Рис.1

 

Однако оказалось, что данный модуль работает с напряжением, и, соответственно, уровнями на шине I2C (напомню, что у Raspberry Pi уровни 3,3В). Поэтому из схемы необходимо исключить подтягивающие резисторы R2 и R3 с шины I2C. Функцию этих резисторов будут выполнять подтягивающие резисторы, уже установленные непосредственно в самом Raspberry Pi и подключенные к шине питания 3,3В. Что касается напряжения питания самого модуля Tiny RTC, то оно должно быть .

Так как в нашей системе домашней автоматизации становится все больше различных датчиков и устройств, подключаемых к портам GPIO Raspberry Pi, то имеет смысл изготовить переходную плату для их подключения. На рис.2 показан вариант такой платы с подключенным датчиком давления BMP085, модулем Tiny RTC и разъемом для шины 1-wire.

 

DS1307 Raspberry Pi плата

Рис.2

 

Будьте очень внимательны при изготовлении переходной платы. Ещё раз обращаю ваше внимание, что питание Tiny RTC выполняется от источника , а всех остальных датчиков от источника 3,3В.

Да, и еще один очень важный момент, который касается всей системы в целом. Если вы отключаете какие-либо датчики, которые устанавливали на шины I2C или 1-wire ранее, то обязательно закомментируйте их в конфигурационном файле WebIOPi. Иначе web-страницы системы станут недоступны.

Итак, считаем что модуль Tiny RTC доработан и подключен к питанию и шине I2C, можно приступать к его настройке и интегрированию в нашу систему.

Открываем файл sudo nano /etc/modules, добавляем к имеющемуся тексту и сохраняем следующие строки:

i2c-bcm2708
i2c-dev
rtc-ds1307
(рис.3)

 

rtc-ds1307

Рис.3

 

Открываем файл sudo nano /etc/modprobe.d/raspi-blacklist.conf и закомментируем в нем все строки (рис.4)

 

blacklist i2c

Рис.4

 

Устанавливаем i2c-tools:

 sudo apt-get install i2c-tools

Перезапускаем систему командой sudo reboot

Далее необходимо выяснить адрес Tiny RTC, а точнее часов DS1307 на шине I2C. Сделать это можно командой

sudo i2cdetect -y 1

Должна появиться вот такая табличка (рис.5)

 

sudo i2cdetect -y 1

Рис.5

 

С высокой вероятностью могу утверждать, что у DS1307  будет адрес 68. Хотя возможны исключения. На приведенном выше рисунке адрес 50 – это ППЗУ 24С32 которая так же установлена в модуле Tiny RTC, 68DS1307, а 77 – датчик давления BMP085.

Зная  адрес часов, их можно прописать в систему. Для этого необходимо зайти в систему обязательно с правами суперпользователя:

sudo -s

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device

root@raspberrypi: exit

Теперь можно прочитать время из часов командой sudo hwclock r, а так же записать в часы системное время командой sudo hwclock w. (рис.6)

 

hwclock

Рис.6

 

Чтобы время автоматически устанавливалось при старте системы из часов DS1307, необходимо добавить в файл

sudo nano /etc/rc.local 

следующие строки:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock –s

Располагать указанные строки в файле rc.local  нужно до строки exit 0 (рис.7)

 

echo ds1307 0x68

Рис.7

 

Осталось перезапустить систему командой sudo reboot и мы получим автономную синхронизацию системных часов Raspberry Pi из модуля Tiny RTC.


 

Содержание всех статей по Raspberry Pi

 




Категория: | Просмотров: 14117 | Добавил: Admin | Теги: | Рейтинг: 5.0/1 |
Всего комментариев: 10


10 alex7759  
Присоединюсь к TomaTLAB  DS3231 действительно точнее DS1307 так как осуществляется термокомпенсация кварца отставания на 2 сек/год и еще плюс этой микросхемы она прекрасно работает от 3.3 вольт, соответственно отпадает необходимость согласования уровней. У меня с raspberrypi3 прекрасно работает

4 TomaTLAB  
Еще забыл. Была у меня какая-то ерунда пока я не прописал с помощью timedatectl в часики время в локальной TZ, хотя оно меня и пыталось отговорить от такого опрометчивого решения smile

3 TomaTLAB  
И еще момент, в raspbian jessie часики прописываются несколько иначе https://github.com/weewx/weewx/wiki/pi-RTC-with-raspbian-jessie

2 TomaTLAB  
DS1307 - плохие, не годные часы smile DS3231 - гораздо часовее. Тем более, что на али есть на них махонькие модули с батареечкой. Спецом для малинки.

5 Admin  
0
Хотя в определенной степени доля истины в этом есть, но зачастую "кривизна" 1307 прямо пропорциональна кривизне рук, которые их используют.

6 TomaTLAB  
Ну ежели вместо "часового" кварца к 1307 "Гиацинт" подключить то да, вполне годно будет. biggrin

7 TomaTLAB  
Я к тому, что несколько неудачно выразился, в самой 1307 конечно ничего плохого нет. Имел ввиду модули от китайских товарищей. Кварцы, мягко говоря оставляют желать. Тут правда как попадется.

8 Admin  
0
У меня во второй версии системы (описание скоро появится на сайте) часы на DS1307 собраны прямо на общей кросс-плате и пока точность нареканий не вызывает.
Кварцы применяю "часовые", выпаивал лет 10 назад из неисправных плат от электросчетчиков. Похоже, ещё made in USSR smile

9 TomaTLAB  
Это примерно как ENC28J60 и ардуино. Многие гонят на модули и микруху, что де, виснет постоянно веб-сервер на ней. Ну да, есть известная проблема с известной библиотекой и размером буфера. Ну дык, а куда ж со свиным рылом в калашный ряд smile У меня вот на этих модулях распрекрасно Modbus-TCP бегает. С ntp-запросами тоже проблем не было.

1 deniss1900  
Чет не получается установить часики
root@raspberrypi:~# sudo apt-get install i2c-tools
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd
De status informatie wordt gelezen... Klaar
i2c-tools is reeds de nieuwste versie.
0 pakketten opgewaardeerd, 0 pakketten nieuw geц╞nstalleerd, 0 te verwijderen en 37 niet opgewaardeerd.
root@raspberrypi:~# sudo i2cdetect -y 1
Error: Could not open file `/dev/i2c-1' or `/dev/i2c/1': No such file or directory





T2M © 2024
Сайт управляется системой uCoz