Собрал RTC и 1-Wire.
Схема:
То что получилось
Настройка RTC
Добавляем в систему I2C если ранее это не сделано.
Редактируем файл /etc/modprobe.d/raspi-blacklist.confsudo
nano /etc/modprobe.d/raspi-blacklist.conf
редактируем файл /etc/modules, вставляем #перед строкой blacklist i2c-bcm2708
nano /etc/modules
вставляем в конец строку i2c-dev
ставим I2C тулс
sudo apt-get install i2c-tools
смотрим какие I2C устройства есть на шине
pi@raspberrypi ~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e
f00:-- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- --
18 -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- --
68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
sudo modprobe rtc-ds1307
18 - это адрес 1-wire
68 - это RTC DS1307
набираем
потом меняем пользователя на root: sudo -s и вводим
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device (для rev 1 Pi)
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device (для rev 2 Pi)
теперь выведем в консоль время с RTC:
pi@raspberrypi ~ $ sudo hwclock -r Set 01 Jan 2000 00:01:20 EEST -0.814742 seconds
pi@raspberrypi ~ $ dateSun Jun 16 13:40:36 EEST 2013
для того чтобы записать время из системы в RTC
sudo hwclock -w
Tеперь настроим чтобы часы находились после перезагрузки. Для этого отредактируем файл modules командой
sudo nano /etc/modules
и добавим туда rtc-ds1307
потом отредактируем файл /etc/rc.localsudo
nano /etc/rc.local
и добавим в него
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device (для v1 raspberry pi)
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device (для v2 raspberry pi)sudo hwclock -s
эти строчки нужно вставить перед строкой exit 0
Все теперь в системе есть RTC.OWFS настраивал по инструкции с этого сайта
http://wiki.temperatur.nu/index.php/OWFS_with_i2c_support_on_Raspberry_Pi_(English_version)
Комментариев: 8
MaksMS10
19.06.2013 в 15:40 ответКак-то не оправдано использование DS2482s ,т.к. в ядре имеется поддержка устройств 1-wire на 4 выводе GPIO
artyr_n0
19.06.2013 в 21:16 ответМне нужно подключить 6 температурных датчиков самый дальний 20 метров от raspberry.
MaksMS10
20.06.2013 в 09:16 ответСудя по вики http://ru.wikipedia.org/wiki/1-Wire 1-Wire тянет до 300 метров :) У меня у самого квартира окутана этой шиной и все работает..
artyr_n0
20.06.2013 в 09:21 ответРаботает просто с ножки GPIO?
MaksMS10
20.06.2013 в 12:47 ответНу на raspberry сантиметров 20 пару датчиков ds18b20 подключал - работает. Не думаю что при 20 метрах что-то изменится.. А так используется arduino...
kukabu1
21.06.2013 в 08:40 ответоправдано, т.к. ядро для 4 GPIO реализует программный 1-wire
artyr_n0
21.06.2013 в 09:29 ответПоставил на тесты. Температура считывается каждые 30 секунд. Каждый датчик опрашивается в цыкле, если вернул температуру цыкл заканчивается если нет то повторяется 100 раз. Даже с DS2482s за сутки от 2 до 6 раз с датчика за 100 опросов или ничего не считывается или считывается ерунда в виде -2000 градусов. Причем наблюдал подобное используя DS9490R (USB - 1-Wire).
artyr_n0
29.06.2013 в 11:23 ответДобавил блокирующие конденсаторы на 0,1 мкФ по питанию перед датчиками. И программно проверяю, что бы выдаваемая температура не выходила за возможности датчика, если выходит то считываю температуру еще раз. Сталкивался ли кто то с подобными проблемами? Кажется мне, что тут проблема OWFS и производительности системы. Около года мониторил температуру дома на котле и радиаторах. Расстояния до датчиков было раза в два больше использовал стационарный компьютер под Ubuntu и USB - 1 Wire переходник DS9490R. И с проблемой что бы датчик вернул -2000 градусов ни разу не столкнулся.