Монтаж линии датчиков (1-wire). Подключение датчиков температуры к умному дому Loxone 1 wire датчики давления
- Tutorial
Имеем в наличии гермозону на 4 ряда с 16-тью открытыми стойками в каждом ряду.
Схема кондиционирования: горячие-холодные коридоры, внутренние кондиционеры с внешними испарителями, 3 кондиционера на ряд, то есть 6 кондиционеров на холодный коридор.
Задача: построить систему мониторинга температуры гермозоны с возможностью предупреждения выхода кондиционеров из строя.
Для решения данной задачи решено было использовать сеть 1-wire температурных датчиков и систему мониторинга Zabbix 2.
Собираем сеть 1-wire.
Нам необходимо:
1. Контроллер 1-Wire сети DS9490R
2. Температурные датчики DS18B20 , в количестве, расчитываем: 4 ряда * 16 стоек в ряду * 2 датчика на стойку (холодный и горячие коридоры), то есть 128 датчика.
3. Для удобной установки датчика использовали вот такой переходник RJ45 на RJ45, кат. 5e GCT11-8p8c , так же в количестве 128 штук
4. И на каждый датчик по 2 патч-корда, то есть 128 * 2 = 256, длина патч-корда половина ширины стойки сервера
Собираем датчик, выбираем в переходнике три любых провода, делаем 3 дырки в переходнике, припаиваем датчик и так 128 раз:)
Рекомендуется залить место припоя клеем из термопистолета, получается что-то похоже на это:
Датчики сразу рекомендуется проверять на работу, прямым подключением к контролеру 1-wire сети и считывания с него информации. Так же рекомендуется пронумеровать датчики: последовательно наклеить номера с 1 по 128. Инициализация 1-wire сети будет описана ниже.
А так это смотрится если закрепить на стойке.
Так как на контролере разъем RJ11, а не RJ45, то рекомендую сделать нулевой датчик-переходник, его порядковый номер будет ноль, а номера стоек будут начинаться с 1, что более привычно.
ВАЖНО!
Протяженность нашей сети составила около 140 метров, так как сервер находился в 2 ряду.
В процессе тестирования выяснилось, что питания порта USB не хватает для такой длиной сети, контролер просто не может опросить датчики, дальше половины сети, поэтому рекомендую купить USB хаб, обязательно с внешнем питанием, и подключить контролер к нему. После подключения хаба, скорость опроса датчиков возросла, и в сети перестали появляться ошибки, все датчики читались.
Разбить сеть на два сегмента мне не удалось, так как программа которая считывает данные с датчиков, так и не смогла понять с каким контролером работать, по крайне мере заставить мне не удалось.
Инициализация 1-wire сети и получение значений датчиков.
Итак приступаем к настройке программной части.
Сервер к которому подключен USB контролер 1-wire сети работает под управлением FreeBSD 9.1, Zabbix 2.0.8 установлен из портов.
Для получения значений датчиков используется программа DigiTemp
Скачиваем исходники DigiTemp и компилируем, скомпилированные программы у меня располагаются: /usr/local/etc/digitemp/new/digitemp-3.6.0/
Для работы с нашем контроллером используем программу digitemp_DS2490
# cd /usr/local/etc/digitemp/new/digitemp-3.6.0/
# ./digitemp_DS2490 -i
DigiTemp нужно запускать из под root, чтобы она могла читать данные с устройства.
Необходимо запускать программу только из ее каталога, так как там хранится файл конфигурации сети.
./digitemp_DS2490 -i - результатом выполнения будет являться файл конфигурации сети 1-wire с названием.digitemprc, в домашнем каталоге программы.
При этом digitemp выведет 64-битные ID датчиков, которые запишет в файл.
Пример.digitemprc
TTY USB
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 133
ROM 5 0x28 0xCB 0xE2 0x19 0x03 0x00 0x00 0x6F
ВАЖНО
Номер счетчика ROM 0 0x28 0x62 0xB5 0x19 0x03 0x00 0x00 0x61, НЕ ЯВЛЯЕТСЯ его физически последовательным номером в сети, этот номер получен во время инициализации сети, то есть кто первым ответил, тот и записался в файл.
Поэтому на стадии пайки датчиков и их проверки рекомендую формировать, сразу последовательную сеть. То есть берем датчик, спаяли, подсоединили сразу к контролеру, запустили./digitemp_DS2490 -i получили его ID, скопировали его в Excel таблицу и так же добавили последовательно ROM номер … в таблицу.
Отсоединили датчик, наклеили на него последовательный номер, и повесили на гирлянду, соединяя патч-кардами. Не рекомендую подсоединять гирлянду к контролеру и запускать проверку, во-первых это будет гораздо дольше, а во-вторых в свете вышесказанного, из-за того, что ответы от датчиков приходят не последовательно, искать ID нового датчика будет сложнее.
После того как вы протестировали все датчики, подсоедините гирлянду к контролеру и запустите./digitemp_DS2490 -i
Сформируется конфигурационный файл вашей сети.digitemprc
Вам необходимо заменить
ROM 0 0x28 0x62 0xB5 0x19 0x03 0x00 0x00 0x61
ROM 1 0x28 0x29 0xD5 0x19 0x03 0x00 0x00 0xFD
ROM 2 0x28 0x59 0xDE 0x19 0x03 0x00 0x00 0x15
ROM 3 0x28 0xDA 0xD6 0x19 0x03 0x00 0x00 0x98
ROM 4 0x28 0xFD 0xBE 0x19 0x03 0x00 0x00 0x84
На ту последовательно которая у вас получилась в Excel файле в таком же формате.
Сохраните полученный файл.digitemprc в другой папке, так как если вы вдруг запустите еще раз./digitemp_DS2490 -i , то ваш файл будет перезаписан, и тогда физическая адресация будет неверной с большой долей вероятности.
После того как 1-wire сеть настроена, можно считывать значения датчиков, запустите./digitemp_DS2490 -q -a -r1 -n1 , программы выведет значения датчиков.
Проверьте правильность последовательного подключения в сети, например нагрейте 5 датчик, и запустите программу, температура должна возрастать на 4 (так как нумерация идет с 0)
Переходим к настройке Zabbix .
Сервер на котором установлен Zabbix в zabbix’е называется ZabbixServer.
Создаем в нем 129 элементов данных, то есть на каждый датчик температуры по элементу данных.
Для нас здесь важно понимать:
gmz.temp.t17 - это ключ элемента, они используется для отсылки значения датчика
и тип элемента должен быть “Zabbix trapper”, так как отправка значений будет происходить через программу zabbix_sender.
Создаем также 12 дополнительных элементов данных, на каждый из 12 кондиционеров. Датчики расположены так, что 3 датчика находится под выводом холодного воздуха кондиционера, поэтому считаем среднее этих трех датчиков, то элемент данных будет вычисляемым.
Обратите внимание на формулу, то есть складываются последние полученные значения датчиков и делится на три.
В crontab пользователя root добавляем задание:
*/1 * * * * /usr/local/etc/digitemp/digitemp_cron.sh > /dev/null 2>&1
То есть запускаем раз в минуту скрипт digitemp_cron.sh
cat /usr/local/etc/digitemp/digitemp_cron.sh
#!/usr/local/bin/bash
cd /usr/local/etc/digitemp/new/digitemp-3.6.0/
./digitemp_DS2490 -q -a -r1 -n1 -o"ZabbixServer gmz.temp.t%s %N %.2C" | /usr/local/bin/zabbix_sender -vv -z 127.0.0.1 -I 127.0.0.1 -T -i -
O"ZabbixServer gmz.temp.t%s %N %.2C" - это строка определяет формат вывода данных.
ВАЖНО!
ZabbixServer - это название хоста с установленным Zabbix server в Zabbix.
Запустите./digitemp_DS2490 -q -a -r1 -n1 -o"ZabbixServer gmz.temp.t%s %N %.2C" | /usr/local/bin/zabbix_sender -vv -z 127.0.0.1 -I 127.0.0.1 -T -i -
В результате работы zabbix_sender должно быть, что все строки отправлены и приняты:
Info from server: «Processed 133 Failed 0 Total133 Seconds spent 0.000540»
sent: 133; skipped: 0; total: 133
Если все так, то вы можете добавлять графики и триггеры, и настраивать оповещения.
Теперь же перейдем к самой простой платформе для создания умного дома - 1-WIRE. Платформа разрабатывалась с конца 80-х до конца 90-х годов компанией Dallas Semiconductor (с 2001 года - Maxim Integrated) и предназначалась для задач контактной идентификации объектов, в т.ч. с функциями измерения и регистрации температуры, влажности, параметров автономного электропитания, а также с функциями съема, хранения и переноса данных. Пожалуй, самым известным примером применения этой платформы является iButton - ключ-таблетка для домофона:
В данном случае компонент 1-Wire размещается внутри небольшой «таблетки» из нержавеющей стали и подключается к системам шины 1-Wire посредством розеток с контактами, которые касаются «крышки» и «дна» таблетки. Однако в дальнейшем, благодаря умению работы с температурой, шину стали использовать при создании умного дома, в первую очередь в системах контроля микроклимата.
Возможность подключения устройств в
«горячем
» режиме
Протокол 1-Wire предусматривает выдачу устройством, подключаемым к магистрали в «горячем» режиме, импульса, оповещающего о появлении на магистрали нового устройства. Иными словами, в сеть можно добавлять новые устройства и они тут же смогут работать.
Уникальный идентификатор устройства
Каждая микросхема 1-Wire содержит уникальный 64-битный код, записываемый на этапе производства. Данный код позволяет индивидуализировать все выпускаемые устройства 1-Wire, для чего производитель гарантирует отсутствие одинаковых кодов (аналогично MAC-адресам сетевых адаптеров). При подключении к магистрали данный код считывается контроллером и используется для идентификации связанного с этим устройством объекта, а также для определения типа устройства. При подключении к магистрали нескольких устройств их коды могут использоваться в качестве их адресов, что позволяет строить технологические сети, получившие название MicroLAN.Топология
В сети обязательно есть центральный контроллер-мастер, благодаря которому происходит обмен информацией, и адаптер - для согласования контроллера с магистралью. Все остальные устройства-слэйвы (подчиненные) подсоединены к двум проводам, сигнальному и общему:
Так как шина двунаправленная, то при наличии одного контроллера топология (принцип устройства сети) - линия, то есть все устройства нанизаны на один общий кабель. Однако при наличии нескольких взаимосвязанных контроллеров возможно сделать и и ветвящуюся древовидную структуру.
Основные параметры интерфейса 1-Wire следующие:
- максимальная длина магистрали при использовании витой пары - до 300 м;
- максимальное количество абонентов на магистрали максимальной длины - до 250;
- скорость обмена по магистрали максимальной длины - до 16,3 кбит/c.
Обмен данными по магистрали включает три фазы:
- фазу сброса, включающую импульс сброса от контроллера и ответный импульс подтверждения присутствия от абонента (абонентов);
- фазу выборки устройства, включающую команду его выборки (по коду, без кода, групповую, поиска) и его код, если командой он предусмотрен;
- фазу записи/чтения данных, включающую код команды и данные.
Логика всех устройств тактируется отрицательным фронтом сигналов контроллера как в режиме записи, так и в режиме чтения. Биты кодируются длительностью положительного импульса: «1» передается длинным импульсом, а «0» - коротким. В режиме записи все импульсы данных формируются контроллером. В режиме чтения контроллер формирует последовательность единиц, а абонент накладывает на них свою маску нулей:
Иными словами контроллер пускает в сеть последовательность единиц, подключенное к сети устройство в нужном месте меняет 1 на 0 (тем самым обеспечивая себе питание), а на контроллер приходит последовательность нулей и единиц - ответ от слэйва.
Программное обеспечение
Фирма Maxim Integrated (создатель шины 1-WIRE) предоставляет для программирования систем на базе 1-Wire библиотеки API и SDK для широкого ряда платформ - персональных компьютеров с ОС Windows/Linux/MacOS, мобильных устройств, микроконтроллеров, .NET и JAVA. Так же предлагается программный cканер сети OneWire Viewer, позволяющий находить и идентифицировать подключенные к сети устройства и отображать полный перечень их параметров и данных.
Из сторонних разработок наибольший интерес представляют следующие:
- OWFS - One Wire File System. Свободно распространяется по лицензии GPLv2. Предназначен для UNIX-платформ, но при использовании UNIX-эмулятора cygWin может работать и в среде Windows. Имеет веб-интерфейс, что делает возможным удаленный доступ, например, через Интернет. OWFS является самой популярной программной средой для домашней автоматизации на базе платформы 1-Wire.
- Бенукс - программная среда для различных задач автоматизации. Является коммерческим продуктом. Позволяет взаимодействовать с системой автоматизации по различным каналам, в т.ч. с помощью веб-интерфейса и SMS. Предоставляет возможности автоматизированного управления по сценариям.
- jHomeNet - свободно распространяемый программный комплекс для сервера 1-Wire на Java.
Цифровые датчики температуры и относительной влажности и автономные регистраторы температуры и относительной влажности, а так же все модули расширения, подключаются к линии датчиков 1-wire прибора ГИГРОТЕРМОН параллельно, используя 3 провода: «DQ» (шина данных 1-wire), «GND» (общий) и «+5В» (питание). Однако для надежности необходимо использовать все контакты разъема 6P6C (RJ12). Внимание: важно, чтобы контакты «DQ» (1-wire) и «GND 1-wire» (контакты 3 и 4 на рис. ниже) были одной витой парой, например, зеленый и бело-зеленый. Внешний вид разъема 6Р6С, а также назначение контактов и рекомендуемая расцветка проводов см. рис. ниже.
Для надежности связи прибора с датчиками и достижения максимальной протяженности линии датчиков 1-wire цифровые датчики и модули расширения рекомендуется подключать по схеме «гирлянда»: кабель от прибора ГИГРОТЕРМОН должен подходить к первому датчику (или модулю расширения), от первого ко второму и т.п., чтобы все датчики и модули были на одной линии, без ответвлений. См. рис. ниже.
Рекомендуемая максимальная протяженность линии 1-wire при использовании кабеля «витая пара» категории 5Е – не более 100 метров. Если фактическая длина кабеля более 100 метров, рекомендуется разбить линию на две малые с использованием дополнительного прибора ГИГРОТЕРМОН. Для удобства подключения и монтажа, все модули расширения и цифровые датчики и адаптеры для цифровых автономных регистраторов имеют не менее 2-х разъемов 6P6C (RJ12) – вход/выход 1-wire.
Внешний вид платы цифрового датчика 1w-2/3
Внешний вид модуля расширения дискретных датчиков «1wio2»
Внешний вид платы модуля расширения унифицированных (аналоговых) сигналов «HIHx2»
Таблица 1. Результаты испытаний линии связи регистраторов температуры (и относительной влажности) на максимальную протяженность,
при которой наблюдается устойчивая связь регистраторов с прибором Гигротермон
Длина кабеля, м. | Тип регистраторов температуры и влажности / наличие связи (да / нет) | |
Регистраторы температуры DS1921G-F5, DS1921Z-F5 |
Регистраторы температуры и относительной влажности DS1923-F5, DS1922L-F5 | |
350 | да (с подтяжкой 5В) | |
нет (без подтяжки 5В) | ||
300 | да (с подтяжкой 5В) | |
нет (без подтяжки 5В) | ||
250 | да (с подтяжкой 5В) | нет (с подтяжкой 5В) |
нет (без подтяжки 5В) | нет (без подтяжки 5В) | |
200 | да (с подтяжкой 5В) | да (с подтяжкой 5В) |
нет (без подтяжки 5В) | нет (без подтяжки 5В) | |
150 | да (с подтяжкой 5В) | да (с подтяжкой 5В) |
да | да (без подтяжки 5В) | |
100 | да (с подтяжкой 5В) | да (с подтяжкой 5В) |
да | да (без подтяжки 5В) | |
|
Таблица 2. Результаты испытаний линии связи комбинированных датчиков** 2RJ11-HIH5031E-DS18S20
на максимальную протяженность, при которой наблюдается устойчивая связь с прибором Гигротермон
Длина кабеля, м. | Измеряемый параметр / наличие связи (да / нет) | |
Температура | Относительная влажность | |
100 | да (без подтяжки) | да (без подтяжки) |
125 | да (с подтяжкой) | да (с подтяжкой) |
150 | да (с подтяжкой) | да (с подтяжкой) |
175 | да (с подтяжкой) | да (с подтяжкой) |
200 | да (с подтяжкой) | нет (с подтяжкой) |
300 | да (с подтяжкой) | нет (с подтяжкой) |
**) В испытаниях использовано 10 комплектов комбинированных (температура + влажность) датчиков 2RJ11-HIH5031E-DS18S20, подключенных одновременно в конце линии.
Данные получены в "идеальных" лабораторных условиях с использованием кабеля NIKOLAN NKL 4200A-GY F/UTP 4 пары кат.5e, 24 AWG. Поэтому, в реальных производственных условиях значения длин могут отличаться в меньшую сторону из-за присутствия электромагнитных помех или использования другого типа используемого кабеля.
Цель этой статьи - рассказать, как использовать эти датчики (или другие устройства сети) в суровых "полевых условиях". Не секрет, что на столе под лампой светлой цифровой датчик DS18B20
или его бюджетный брат DS18S20
замечательно работает с минимальным обвязом со стороны микроконтроллера в т.н. двухпроводной
схеме:
Дополнительная выделенная линия питания сулит нам следующие "бонусы":
- Длина сетевого кабеля 100 метров и более;
- Количество одновременно подключенных датчиков - не менее 32шт.;
- Разрешающая способность АЦП - 0,0625 °C и точность измерения - 1°C.
Однако, еще остается борьба с помехами на длинных линиях связи. Простейшей защитой является включенный в обратном направлении диод Шоттки между линией данный и общим проводом, именно так советует поступать Brian C. Lane , автор популярного проекта DigiTemp . Мы лишь немного расширим данное решение для трехпроводной схемы включения:
L1, L2 - фербиды BLM21AG221SN1D - индуктивности для защиты от высокочастотных помех, возникающих при коммутации сильноточных потребителей;
C1 - керамический конденсатор, естественный спутник ножек питания цифровой микросхемы;
IC1 - собственно цифровой датчик температуры DS18B20Z в корпусе SOIC8.
Все компоненты - SMD (0805 и SOT23) для уменьшения размера платы датчика:
После сборки, плата температурного датчика выглядит следующим образом:
Обязательно
защищаем плату датчика от влаги (цапонлаком или акриловым лаком):
Для монтажа датчика на поверхность, например на трубопровод, очень хорошо подходит самовулканизирующаяся резиновая изолента. Кроме того, необходимо хорошо теплоизолировать точку установки датчика. Я использую пористую самоклеющуюся ленту.
Контактные площадки для пайки кабеля сети 1-Wire сознательно сделаны крупными и вот почему...
Трактат о проводочках кабеля
Самой распространенной ошибкой при построении сети 1-Wire является выбор в пользу Ethernet-кабеля Cat.5 ! Подавляющее большинство читателей скажет - "у нас все очень хорошо и бодро работает на обрезках сетевухи ". Не спорю ни в коем случае, кабель Cat.5 длиной 10..30 м вполне годится для 3-х проводного способа подключения датчиков, более того - вот вам рекомендованная схема использования народного кабеля, которую и сам использую на даче для водоснабжения дома:
"Ну таки и в чем дело?" - скажет проницательный читатель. А вот в чем: в кардинальном различии "физики и логики" сетей Ethernet и 1-Wire. Не вдаваясь в сложности организации сети Ethernet, просто прошу поверить (и с мультиметром про верить) в то, что из-за значительного падения напряжения на длинных и весьма тонких проводах кабеля Cat.5e датчику сети 1-Wire банально не хватает напряжения питания !
Технология достаточно старая и широко употребляемая
Изначально, выведена на рынок компанией Dallas - Все помнят таблетки для домофонов iButton- это оно
Устройство соединяется с контроллером по одному проводу (кроме общего) - отсюда название. Большое преимущество в том, что каждый чип имеет свой адрес, что позволяет термометры соединять просто параллельно
Я провел массу экспериментов с данным стандартом. Изначально, предполагая очень широко использовать его для управления Умным Домом
Хуже всего, если для управления 1-wire шиной не использовать никаких специализированных контроллеров (подключение напрямую к PIN у Arduino устройств) - в этом случае, проблемы возникают уже при длине кабеля более 3-х метров
Для моих целей такое расстояние не подходило, поэтому я использовал I2C to 1-wire мост DS2482-100
Стоимость чипа на Aliexpress менее 100 руб, чип имеет аппаратный драйвер шины с режимом strong-pullup, что в разы увеличивает надежность работы системы.
Альтернативные решения, как правило, используют USB контроллеры шины 1-Wire на основе DS2490 но это подразумевает использование компьютера в составе контура управления. По опыту, надежность комплексного решения, включающего в себя PC, операционную систему, ПО, сетевую инфраструктуру, в любом случае ниже решения, локализованного в пределах одного контроллера. Поэтому ответственные задачи регулирования я реализовывал таким образом, что это регулирование происходит автономно, контроллером.
У себя я использую шлейф длиной около 150 м.
Термометры опрашиваются, относительно, устойчиво, что позволило предельно дешево и управляемо реализовать систему управления теплыми полами. Но сбои в считывании значений датчиков присутствуют. (В особенности, когда задействовано диммирование освещения или работает приточная вентиляция с фазовой регулировкой мощности нагревательного элемента)
Контроллер опрашивает датчики циклично, поэтому, единичные сбои не влияют на функционирование.
Кроме термометров, я пробовал использовать самую разнообразную перефирию, вооружившись Datasheet - ами написав множество процедур для управления следующими чипами и устройствами на их базе:
Если коротко - себя это не оправдало
Основная проблема - все же не очень хорошая помехозащищенность
Борьба с помехами в сети 1-Wire
Это, пожалуй, самое непростое в данной технологии. Описываю свой опыт:
- Шину 1-Wire прокладывайте на расстоянии от высоковольтных проводов, трансформаторов LED освещения и проводов LED освешения (провода дают сильную помеху за счет того, что сила тока велика и используется ШИМ модулирование)
- Не надо использовать экранированную витую пару. Я проложил STP 5-й категории, но при попытке заземлить экран - связь полностью теряется. Предполагаю, что это связано с увеличением емкости проводника.
- По отзывам, невитая пара (самый дешевый двужильный провод) дает лучший результат.
- Хороший опыт - подтягивать дальний конец провода через резистор 3-4 КОм к стабилизированному фильтрованному источнику питания 5Вольт.
- Отводы от шины в 2-3 метра, в целом, не ухудшают качества работы системы, но прилично упрощают монтаж.