LINUX.ORG.RU

Есть кто с Raspberry Pi и 1-wire?

 , ,


1

1

Всем привет.

Не могу завести 1-wire на raspberry pi. Делаю через owfs, но, думаю, проблема глубже.

Важно: предполагается использование встроенного адаптера 1-wire, не внешнего.

У кого есть работающий 1-wire? - Покажите/подскажите следующее:
1. lsusb (lspci) должны выводить что-то про адаптер? Покажите свой вывод lsusb, lspci
2. Зачем редактировать в /boot/config.txt добавлять «dtoverlay=w1-gpio-pullup,gpiopin=4,pullup=1»? Что будет если этого не сделать?
3. Говорят, что в каких-то ядрах есть бага, которая что-то ломает в 1wire. Есть инфа, какая версия 100% рабочая? Какая у вас версия ядра?
4. Я правильно понимаю, что для owfs модули ядра не обязательны?
5. У себя я вообще не нашел модулей ядра. Они как-то доставляются? Или где их взять?
6. Покажите свой owfs.conf. Интересно что писать в server:.
7. У меня датчик не видится, но есть фейковые устройства. Как их убрать?
8. Я правильно понимаю, что pullup резистор не обязателен? Есть какая-то разница в конфигурациях с резистором или без?

Спасибо.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 3)

Юзаю 1-wire на rpi для небольшой сети датчиков температуры.

1. lsusb и lspci ничего не покажут, 1wire реализовано через GPIO.

2. Это указывает, какой пин на гребёнке RaspberryPi будет использовать драйвер 1wire.

3. Хз, кто там кого ломает, но есть патч для owfs, который всё чинит. http://sourceforge.net/p/owfs/mailman/message/34661236/. Пересобирал с ним owfs (2.9p8-6), работает.

4. w1_gpio нужен же.

5. У меня уже были в raspbian

6.

! server: server = localhost:4304

server: w1

server: port = localhost:4304

7. Правь конфиг на использование физической шины («server: w1»)

8. У меня в config.txt стоит «dtoverlay=w1-gpio,gpiopin=4». Использую внешнее питание (к датчикам идёт три провода) и резистор на 4.7кОм между питанием и проводом данных (как тут http://www.scienceprog.com/wp-content/uploads/2007i/1wire/1_wire_normal.PNG)

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за ответ, помогло.

Нюансы:
- Резистор подтяжки обязятелен. Соединял с пином 3.3В, номинал пробовал и 2.4к и 4.8к (оба работают), в Интернете пишут, что нужно от 1к до 5к. Также, читал, что можно и от 5В, и от 3.3В; у меня работало от 3.3В. При этом можно питаться только от паразитного питания, то есть вести только два провода к устрйству: GND и DATA. Пробовал на DS18B20 (термодатчик) и DS2408 (8-канальный ключ, но у меня работл как ввод) - оба нормально работают от паразитного питания.

- Строка

dtoverlay=w1-gpio,gpiopin=4
в /boot/config.txt обязательна.
В Интернете пишут, что работает только на 4-м GPIO, но небольшими патчами ядра можно назначить и другой пин, и вообще подключить несколько линий 1-wire (то есть задействовать несколько пинов). Но станадртный - только один и только gpiopin=4.

- Работал через модули ядра w1_gpio + w1_therm. Появились после установки последнего образа Raspbian. При этом через /sys/bus/w1 всё видится (пробовал только DS18B20).

- owfs работал через модули ядра, то есть в /etc/owfs.conf было
server: w1  
При этом был запущен сервер owserver, а owfs и owhttpd работали через owserver (ключ -s localhost)

- owfs который идет c Raspbian (какой-то 2.9) имеет баг, в результате которого термодатчик не видится или видится с большой задержкой (несколько минут). Решилось скачиванием и сборкой из исходников последнего owfs:
https://sourceforge.net/projects/owfs/files/owfs/3.1p1/
Major Fixes
-----------
* Fixes for a w1 kernel driver change introduced in Linux-3.16-rc1
...
При сборке из исходников пришлось помучаться с активированием usb (просто ради спортивного интереса; ничего к Raspbery Pi по USB подключено не было). Оказалось, что нужно еще установить libusb-1.0-0-dev:
$ apt-get install automake autoconf autotools-dev libtool
$ apt-get install libusb-dev libfuse-dev fuse-utils
$ apt-get install libusb-1.0-0-dev
Правда, скомпиленный owfs запустить как стандартный демон не смог (лень было разбираться), так что запускал так (пишу по памяти, могу где-то ошибиться, но принцип, думаю, понятен):
$ /opt/owfs/bin/owserver -c /etc/owfs.conf
$ /opt/owfs/bin/owhttpd -c /etc/owfs.conf -s localhost
$ /opt/owfs/bin/owfs -c /etc/owfs.conf -s localhost
(owfs.conf перед этим правил).
Для автозапуска прописал в rc.local.

Это нюансы; всё остальное гуглится легко.

Kroz ★★★★★
() автор топика
10 ноября 2017 г.

Ещё один с синяками от owfs

Здравствуйте.Не могли бы вы показать,как полностью выглядит файл owfs.fuse?И нужно ли редактировать fuse.conf? Просто собирал всё,как в этой статье http://www.gardaricafm.ru/?ln=ru&pg=7&good=160329165103.Отличие только в том,что использую DS2413. Скачал тот же fuse версии 2.9.2 и собрал, потом owfs предложенный на сайте и в конце libfuse-dev. Также по вашему совету добавил строчку gpiopin=4 в файл conf. В файле owfs.conf добавил строчки server: w1 и server: port=localhost:4304 после строки !server: port=localhost:4304, а также строчки mountpoint = /mnt/1wire allow_other после OWFS. Но при просмотре директории /mnt/1wire я там обнаружил только папки bus.1 bus.2 settings statictics strcture system uncached.И при это тормозит всё.Подскажите,пожалуйста,что делать?

gubilon
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.