Вставляем контроллер в cubietruck.
- # dmesg
- [ 512.230242] The port change to OHCI now!
- [ 512.532997] usb 5-1: new full-speed USB device number 2 using sw-ohci
- # apt-get install owfs
- # lsusb
- Bus 005 Device 003: ID 04fa:2490 Dallas Semiconductor DS1490F 2-in-1 Fob, 1-Wire adapter
- # mkdir /mnt/1wire
- # owfs -C -uall -m /mnt/1wire --allow_other
- # ls -lah /mnt/1wire
- total 4.0K
- drwxr-xr-x 1 root root 8 Dec 24 06:15 .
- drwxr-xr-x 4 root root 4.0K Dec 24 06:14 ..
- drwxrwxrwx 1 root root 8 Dec 24 06:16 05.4AEC29CDBAAB
- drwxrwxrwx 1 root root 8 Dec 24 06:16 10.67C6697351FF
- drwxrwxrwx 1 root root 8 Dec 24 06:16 81.EE6F32000000
- drwxr-xr-x 1 root root 8 Dec 24 06:15 alarm
- drwxr-xr-x 1 root root 8 Dec 24 06:15 bus.0
- drwxr-xr-x 1 root root 8 Dec 24 06:15 bus.1
- drwxr-xr-x 1 root root 8 Dec 24 06:15 settings
- drwxrwxrwx 1 root root 8 Dec 24 06:16 simultaneous
- drwxr-xr-x 1 root root 8 Dec 24 06:15 statistics
- drwxr-xr-x 1 root root 32 Dec 24 06:15 structure
- drwxr-xr-x 1 root root 8 Dec 24 06:15 system
- drwxr-xr-x 1 root root 8 Dec 24 06:15 uncached
Информация:
owfs - это программа, которая отображает сеть в виде файловой системы. То, что owfs совпадает с названием всего пакета - чистая случайность.
owhttpd - это программа, которая делает доступной сеть по HTTP протоколу (по-народному, через браузер)
И та и другая программы могу работать с мастером сети самостоятельно, но не вместе!
Чтобы owfs и owhttpd работали одновременно, нужно запустить owserver.
owserver -u -p 3000
Запускает сервер работы с сетью, -u значит физическое устройство USB типа DS9490R, и отвечает на запросы по 3000 порту.
owhttpd -s 3000 -p 3001
-s 3000 - порт, на котором запущено owserver
-p 3001 - порт, на котором owhttpd сам отвечает по протоколу HTTP
owfs -s 3000 /mnt/1wire/
-s 3000 понятно, дальше идет mount point, который является обязательным параметром
Пробуем зайти http://192.168.xx.xx:2121/
Добавим в /etc/modprobe.d/fbdev-blacklist.conf (чтобы не использовать модули ядра линукс, а брать из пакета owfs)
- blacklist ds9490r
- blacklist ds2490
- blacklist wire
Редактируем файл /etc/owfs.conf
- # Sample configuration file for the OWFS suite for Debian GNU/Linux.
- # This is the main OWFS configuration file. You should read the
- # owfs.conf(5) manual page in order to understand the options listed
- # here.
- ######################## SOURCES ########################
- # With this setup, any client (but owserver) uses owserver on the
- # local machine...
- ! server: server = localhost:4304
- # ...and owserver uses the real hardware, by default fake devices
- # This part must be changed on real installation
- #server: FAKE = DS18S20,DS2405
- # USB device: DS9490
- server: usb = all
- # Serial port: DS9097
- #server: device = /dev/ttyS1
- # owserver tcp address
- #server: server = 192.168.10.1:3131
- # random simulated device
- #server: FAKE = DS18S20,DS2405
- ######################### OWFS ##########################
- mountpoint = /mnt/1wire
- allow_other
- ####################### OWHTTPD #########################
- http: port = 2121
- ####################### OWFTPD ##########################
- ftp: port = 2120
- ####################### OWSERVER ########################
- server: port = localhost:4304
Редактируем /etc/fuse.conf:
- # Set the maximum number of FUSE mounts allowed to non-root users.
- # The default is 1000.
- #
- #mount_max = 1000
- # Allow non-root users to specify the 'allow_other' or 'allow_root'
- # mount options.
- #
- user_allow_other
После этого монтировать можно командой # owfs. Хотя в прицнипе монтирование нам особо и не нужно ибо есть tcp owserver, монтировать датчики в файловую систему удобно для тестов. Поэтому процесс автомонтирования при загрузке рассматривать не будем (примеры скрипта можно найти в сети) update. или здесь.
Создание сети 1-wire.
Небольшой ликбез по поводу сети 1-wire для новичков как я (после моего месячного изучения урывками). Если профи увидят ошибки, прошу комментировать. Итак, сеть 1-wire - сеть на одной шине, компоненты которой подключаются последовательно. Компонентами могут выступать как уже готовые микросхемы с датчиками и так и микросхемы управления вводом\выводом (то есть для подключения дополнительных цифровых или аналоговых датчиков). В сети 1-wire по умолчанию всего два контакта - data и земля. В data передаются данные (как видно по названию), а также т.н. паразитное питание. То есть можно использовать всего два провода. Вначале я не очень понимал это принцип, поэтому накупил штук 10 ds2401 которые как раз от него и работают - сегодня будем тестировать сеть на них. Так вот, строить сеть на паразитном питании (питание идет с контроллера DS9490R) можно, но не нужно. :) Для пары датчиков и короткой шине можно использовать паразитное питание, а вот если шина длиной более 30 метров и датчиков много - ожидается просадка по напряжению, поэтому умные люди придумали (по ссылке много интересного про 1wire) и используют отдельное питание 5V, но не простое, а канал с повышенным напряжением. По ссылке прекрасно все описано. Я лишь дополню зачем это надо - 12 V в каждом модуле преобразуется стабилизатором в 5V, а 18V в 12V. Это сделано для того, чтобы даже при просадке напряжения в шине на компоненты гарантировано поступало 5V и на некоторые датчики 12V. Далее, сразу используем витую пару 5ой категории, чтобы не переделывать потом. Для коммутации также используем телефонные (rj11\12) коннекторы и внешние телефонные розетки.
Ну вот в принципе и все.
Делаем первое устройство сети 1-wire.
Сейчас мы будем делать устройство с паразитным питанием, потому что пока у меня нет нужной микросхемы 1-wire с внешним питанием. Тырим одну картинку по ссылке выше:
Итак, используем так:
светло-зеленый:data (3ий пин в контроллере)
зеленый:земля(GRND) (4ый пин в контроллере)
Обжимаем два провода, остальные пока не нужны. Обжато не очень, в следующий раз наверное по другому обожму. Но для теста пойдет.
Подключать мы будем устройство, которое выдает уникальный id (например, если устройство с определенным id доступно - дверь закрыта, а если не доступно - значит дверь открыта) - ds2401. Нагло тырим еще одну картинку с форума.
Второй конец я впаял в макет плату. Распиновку ds2401 смотрим здесь.
Подключаем (геркон замкнут - вот эти две коричневые цилиндрические штуки и есть магнит с герконом):
- /mnt/1wire# ls -l
- total 0
- drwxrwxrwx 1 root root 8 Dec 24 14:47 01.E890ED150000
- drwxrwxrwx 1 root root 8 Dec 24 14:47 81.EE6F32000000
- drwxr-xr-x 1 root root 8 Dec 24 10:12 bus.0
- drwxr-xr-x 1 root root 8 Dec 24 10:12 settings
- drwxr-xr-x 1 root root 8 Dec 24 10:12 statistics
- drwxr-xr-x 1 root root 32 Dec 24 10:12 structure
- drwxr-xr-x 1 root root 8 Dec 24 10:12 system
- drwxr-xr-x 1 root root 8 Dec 24 10:12 uncached
- /mnt/1wire/01.E890ED150000# cat type
- DS2401
- /mnt/1wire/01.E890ED150000# cat r_address
- A9000015ED90E801
- /mnt/1wire/01.E890ED150000# cat id
- E890ED150000
Обратите внимание, что появление датчика в сети 1wire может занять некоторое время (около 15 секунд, а может и больше).
ps. Почти все элементы покупались онлайн, могу поделиться ссылками.