Собираюсь сделать мониторинг температуры с помощью роутера dir-620 d1 на openwrt и термодатчиков ds18b20 Хочется выжать из 1-wire максимум расстояния и исследовать все возможности этой технологии. Так же возможно будет изучено подключение теплых, аналоговых терморезисторов через ацп и щелканье релюхами по 1-wire используя gpio+ацп ds2450. Плюс опробую подключение ключей touch memory.
Все это будет подключено к gpio роутера, uart и возможно USB.
ds18b20
Поскольку роутер имеет usb разъем возможно будет опробован адаптер DS9490R
Аппаратная часть и спецификации:
http://ru.wikipedia.org/wiki/1-Wire Краткое описание 1-wire RUS
http://www.1wire.org/Files/Articles/1-W ... 20v1.0.pdf Основной талмуд (Много полезной инфы)ENG
http://www.maximintegrated.com/app-note ... mvp/id/148 аппноут(наиболлее полезный)ENG
http://neutrino.phys.ksu.edu/~gahs/doub ... /AN148.pdf он же, но в pdf
http://www.elektroniikka.org/thermometer/bin/app147.pdf аппноут о паразитном питании от шины ENG
С начала я решил подключить датчики к COM порту компьютера и опробовать софт для работы с 1-wire сетями, были найдены несколько вариантов простых схем мастера 1-wire сети:
ds9097 от dallas рекомендуемый для связи на расстояния до 40 метров
Второй вариант ds9097 имеющий альтернативный принцип формирования сигналов
Мною была выбрана вторая схема, так как шина минуса питания датчиков в первой реализации не подключена к минусу питания компьютера и из за чего невозможно было использование питания датчиков от +5 вольт USB.
После сборки второй схемы и чтения аппноутов выяснилось что при замене номинала резистора R2 на 1к связь с датчиками получалась более устойчивой. Так же при чтении аппноутов было выяснено что из за того что применяется последовательный порт компютера тайминги получаемые от такого адаптера не полностью соответствуют спецификации от Dallas и дальнобойную сеть на таких переходниках построить невозможно.
Dallas рекомендует использовать микросхему ds2480b(применяется в адаптере ds9097u) для таких целей. Длина сети на ней может достигать 200 метров, так как тайминги формируются микросхемой а не портом компьютера, и используется активная подтяжка линии данных взамен резистора.
Вдоволь наигравшись с софтом на компьютере было решено попробовать завести все это дело на одноплатном компьютере с linux на борту, коим является любой роутер с openwrt. Для соединения роутера с сетью 1-wire я планирую использовать два варианта подключения, uart и gpio.
Для подключения через uart лучше использовать ds2480b, или можно использовать схему
А для подключения к gpio
http://cyber-place.ru/showthread.php?t=485&page=2#20 Подключение датчика ds18b20 к gpio роутера на openwrt
Есть подозрение что такие варианты подключения не будут работать на больших расстояниях.
Программная часть:
Показания температуры можно получить тремя способами:
1: digitemp работает хорошо, но умеет только мониторить, нет возможности управлять микросхемами gpio и ds2450
2. owfs драйвер представляющий 1-wire сеть как файловую систему в юзерспейсе, поддерживает болшое количество 1-wire устройств.
3. w1 Еще не изучено мной.
визуализировать показания можно с помощью программ:
1. rrdtool (движок кольцевых баз данных, умеет рисовать графики) реализация
2. mango m2m (работает не со всеми адаптерами)
3. ScadaBR (форк mango m2m)
4. zabbix (система мониторинга серверов)
5. cacti (система мониторинга серверов)
6. openscada (не поддерживает 1-wire напрямую, требуется шаманские навыки или написать свой драйвер 1-wire)