iWire - Yet Another 1-Wire System

Частные объявления, обмен компонентами, сотрудничество, поиск исполнителей (любая реклама фирм, их продукции и сайтов запрещена!)
Ответить
Sasha
Сообщения: 7
Зарегистрирован: 08 фев 2015, 00:07

iWire - Yet Another 1-Wire System

Сообщение Sasha » 08 фев 2015, 03:47

Приветствую всех участников данного форума :) Если вкратце, то сегодня я хотела бы поделиться кое-какими своими наработками в сфере 1-Wire сетей. Для начала, конечно же хочу сказать огромное спасибо создателю данного сайта и форума, т.к. и отсюда в том числе мною были почепаны многие интересные идей :)
Вкратце о себе: зовут меня Саша - я студентка, учусь в радиотехническом университете в Таганроге. Живу недалеко от города. Электроникой интересуюсь очень давно, можно сказать с детства :) Технологией 1-Wire - чуть больше двух лет. Начинала с простенькой програмки для измерения температуры через COM порт на Visual Basic, но оно работало ужасно медленно %) Тогда я, научилась писать на C, и вооружившись datasheet'ами начала искать способы увеличения скорости опроса устройств, ведь из протокола было очевидно что всё это должно работать гораздо быстрее.. так родился проект, который я назвала "iWire":
iWire_Logo3.jpg
iWire_Logo3.jpg (9.68 КБ) 12467 просмотров
Итак, чего же может быть такого интересного в этом iWire?)
Ну, во первых, это быстрая скорость опроса устройств! Из текущей реализации мне удалось выжать следующее:
Опрос ключей DS1990 или просто факта наличия любого другого устройства в сети - до 55(!) устройств в секунду,
Опрос состояния входов\выходов DS2413 (сразу обоих) - до 50 устройств в секунду (до 100(!) входов/выходов в секунду),
Опрос термометров DS18B20 - до 40 устройств в секунду.
Такая скорость обеспечивается особым алгоритмом формирования пакетов данных, а также применением специального адаптера сети на базе м/с CP2102, с несколько нестандартной конфигурацией. Он хотя и достаточно простой в плане схемотехники, но тем не менее позволяет работать с сетью 'весом' до 200 метров. Единственное, скорость чего нельзя увеличить - это скорость поиска устройств в сети (не более 10 устройств в секунду), но это не должно стать большим недостатком, учитывая что в стандартных алгоритмах поиск выполняется лишь однажды для составления списка устройств для дальнейшего опроса.
Во вторых, iWire это свободное (GNU GPLv3) кроссплатформенное ПО, работающее как в Windows, так и в Linux, и даже на роутерах с OpenWrt!
Во третьих, благодаря особому методу формирования пакетов, а следовательно и временных интервалов, у iWire нет никаких проблем при работе с таким популярным бесконтактным считывателем Em-Marine карточек, как CP-Z2L! Насколько я знаю, на данный момент не существует ни одной другой программы, которая позволяла бы работать с данным считывателем с ПК, не говоря уж о том, чтобы ещё и в составе полноценной 1-Wire сети.
В четвертых, только программой и адаптером сети iWire не заканчивается. На данный момент мною разработаны следующие виды iWire модулей:
iWire_NA - адаптер сети (Network Adapter) с USB интерфейсом на базе CP2102, позволяет максимально быстро опрашивать устройства в сети с максимальным 'весом' до 200 метров. Дополнительно имеется выход питания сети 5В. Выполнене в виде традиционного 'свистка' в USB порт.
iWire_NA.jpg
iWire_NA.jpg (59.57 КБ) 12467 просмотров
iWire_TS - универсальный температурный датчик (Temperature Sensor).Модуль может работать как в режиме паразитного питания, так и с питанием 5-12В. Модуль выполнен в виде отрезка провода (длиной 25см), на одном конце находится разъем сопряжения с сетью, а на другом - собственно датчик температуры DS18B20.
iWire_TS.jpg
iWire_TS.jpg (63.83 КБ) 12467 просмотров
iWire_IO - это шеть видов двухканальных модулей на базе DS2413 (I/O Module), со всеми возможными комбинациями типов входов\выходов (A - выход 110/220В AC (до 1А), D - выход 5-12В DC (до 1А), I-универсальный вход 5-250В AC/DC). Все модули имеют опторазвязку для обоих каналов и напряжение питания 5-12В. Модули выполнены в корпусе из термоусадочной трубки с гибкими выводами. Благодаря своим небольшим размерам, такой модуль довольно легко можно установить в обычный подрозетник, распред-коробку, etc.
iWire_IO.jpg
iWire_IO.jpg (119.87 КБ) 12467 просмотров
В качестве стандартного разъёма для iWire я выбрала обычный RJ-45(8P8C), причем на сами модули устанавливается именно разъём 'мама', это позволяет использовать для соединения как уже готовые, так и самостоятельно обжатые патчкорды (с возможностью построения топологии шина-звезда), а специальная распиновка разъёмов, позволяет использовать также и обычные телефонные коннекторы RJ-11(6C4C) и провод в малых сетях.

Собственно, собираются данные модули мною собственноручно и я уже весьма продолжительное время использую их для автоматизации в своем доме, задействовав для этого несколько роутеров, установленых в доме и на улице.

Так вот, сейчас, как мне кажется, проект уже подошел к стадии пробной коммерческой реализации, поэтому могу предложить всё это по следующим весьма демократичным ценам:
iWire_NA адаптер сети - 600 руб./шт.
iWire_TS датчик температуры - 300 руб./шт.
iWire_IO любой I/O модуль - 500 руб./шт.

Также, в ближайшее время есть планы по добавлению дополнительных корпусов для i/O модулей, а также идеи по поводу простого iWire датчика движения.
Програмное обеспечение (iWire Application) в данный момент находится в активной разработке, т.к. сейчас я эксперементирую с различными подходами к опросу сети, в т.ч. и для возможности добавления датчика движения.

Пока как-то так, вопросы и конструктивная критика приветствуются %)
Если кому-нибудь будет интересно, в следующем посте продолжу рассказывать о системе iWire :)

507
Сообщения: 150
Зарегистрирован: 10 янв 2013, 12:55

Re: iWire - Yet Another 1-Wire System

Сообщение 507 » 16 фев 2015, 14:47

Остается только выказать уважение потраченным силам, ну и просить продолжения повествования о трудах.
Вопрос от себя - я немного не понял это изернет-1вайр или 1вайр в чистом виде?

vladimir22
Сообщения: 219
Зарегистрирован: 15 мар 2013, 09:42

Re: iWire - Yet Another 1-Wire System

Сообщение vladimir22 » 16 фев 2015, 16:13

жаль что с OWFS туго :-(

kisoft
Сообщения: 12
Зарегистрирован: 24 сен 2014, 22:09

Re: iWire - Yet Another 1-Wire System

Сообщение kisoft » 16 фев 2015, 18:30

Фраза "до 50 устройств в секунду" не говорит ни о чем, если не приводится в сравнении с другими вариантами. Я, к примеру, никогда не измерял и даже примерно не знаю, сколько устройств можно опросить в секунду на 1-wire. В wiki пишут, что передача данных "обычно 15,4 Кбит/с, максимум 125 Кбит/с в режиме overdrive". Но километры с килограммами сложно сравнивать.
А потому, не важно, что дешевле (а так ли это?), плюс гемор с драйверами, если я правильно понимаю, либо со специальным софтом (неизвестно какие платформы поддерживаются). Какой протокол в "сети" тоже не очевидно (выше уже упоминали). Потому пока и не особо интересно :)

Sasha
Сообщения: 7
Зарегистрирован: 08 фев 2015, 00:07

Re: iWire - Yet Another 1-Wire System

Сообщение Sasha » 16 фев 2015, 22:32

507 писал(а):Остается только выказать уважение потраченным силам, ну и просить продолжения повествования о трудах.
Вопрос от себя - я немного не понял это изернет-1вайр или 1вайр в чистом виде?
Спасибо, 507 :)
С Ethernet у iWire одинаковый только разъём RJ-45, адаптер подключается в USB порт ПК, роутера, etc.
vladimir22 писал(а):жаль что с OWFS туго :(
OWFS, к сожалению, почти не изучала, мне в ней не понравилась излишняя громоздкость и осутствие реакции на события %)
kisoft писал(а):Фраза "до 50 устройств в секунду" не говорит ни о чем, если не приводится в сравнении с другими вариантами. Я, к примеру, никогда не измерял и даже примерно не знаю, сколько устройств можно опросить в секунду на 1-wire. В wiki пишут, что передача данных "обычно 15,4 Кбит/с, максимум 125 Кбит/с в режиме overdrive". Но километры с килограммами сложно сравнивать.
А потому, не важно, что дешевле (а так ли это?), плюс гемор с драйверами, если я правильно понимаю, либо со специальным софтом (неизвестно какие платформы поддерживаются). Какой протокол в "сети" тоже не очевидно (выше уже упоминали). Потому пока и не особо интересно :)
Ну, теоретическая (ограниченная временем таймслотов) максимальная скорость адресации устройств в сети ~75 узлов в секунду. Для DS2413 ко времени адресации (около 13мс) нужно ещё прибавить время опроса PIO (~1мс) - итого получается, что теоретически можно опросить ~71 DS2413 в секунду. Но это в теории %) На практике, к этому времени добавляется задержка на обработку запроса ОС и драйверами.. поэтому, максимум, что мне удалось 'выжать' из всего этого - те самые 50 девайсов в секунду, вот %) Режим overdrive, для сетей наших с вами масштабов впринципе не пременим, т.к. такая скорость возможна только при длине линии лишь в несколько десятков сантиметров. Проблем с драйверами впринципе нет, т.к. адаптер собран на базе м\с преобразователя USB->UART CP2102, драйвера для которой есть практически в любой системе. И да, максимальная скорость в 1-Wire всё таки 16.3 кбит\с.

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: iWire - Yet Another 1-Wire System

Сообщение Andrey_B » 16 фев 2015, 22:43

Sasha писал(а):
vladimir22 писал(а):жаль что с OWFS туго :(
OWFS, к сожалению, почти не изучала, мне в ней не понравилась излишняя громоздкость и осутствие реакции на события %)
owfs - это окно к сети 1-wire для любых программ. owfs сам ничего не делает.
Но зато прекрасно поддерживает "alarm" или в терминологии Maxim "conditional search command".
Вся прелесть owfs и заключается в том, что "рулить" сетью можно откуда угодно, чем угодно и как угодно в рамках того, что написано в Maxim Application Notes, а там плохого не напишут.
Это просто комментарий про owfs безотносительно к предлагаемым устройствам.

Sasha
Сообщения: 7
Зарегистрирован: 08 фев 2015, 00:07

Re: iWire - Yet Another 1-Wire System

Сообщение Sasha » 16 фев 2015, 23:08

Andrey_B писал(а):owfs - это окно к сети 1-wire для любых программ. owfs сам ничего не делает.
Но зато прекрасно поддерживает "alarm" или в терминологии Maxim "conditional search command".
Andrey_B, насчёт Conditional Search я, конечно, в курсе :) Но в этой штуковине есть несколько нехороших НО:
1) если у устройства отключиться по какой-то причине от сети 1-Wire, то флаги Conditional Search в нём, на сколько я знаю, сбрасываюся и OWFS уже не отреагирует, даже если необходимое событие произошло.
2) Если устройство, опять же, по какой-то причине отключится от сети, то OWFS об этом никогда не узнает, т.к. не отвечающее на команду условного поиска (при отсутствии необходимого события) устройство и отключеное устройство - с точки зрения (отсутствия) ответа на запрос мастера - одно и тоже.
3) Даже для самой простой DS2406 с поддержкой Conditional Search чтобы получить состояние PIO, нужно отправлять уже не 2 байта (как в DS2413), а уже 5. Посему, опрос одной DS2406, само собой, будет длиться (пусть и не намного) но дольше, чем DS2413.
4) В случае если необходимое условие будет у нескольких микросхем одновременно, однозначно определить время реакции будет несколько затруднительно.

Именно из-за этих недостатков я отказалась от, на первый взгляд, более заманчивой идеи условного поиска в пользу простого циклического опроса :) Т.к. для него в принципе не существует вышеназваных проблем, и есть пара очевидных плюсов:
1) Быстрое выявление ошибок - если с устройством что-то произошло, мы узнаем об этом уже на следующем цикле опроса.
2) Можно обойтись более дешевыми микросхемами DS2413, и при этом, даже немного выиграть в производительности :)

Andrey_B
Администратор
Сообщения: 5327
Зарегистрирован: 18 мар 2011, 12:06

Re: iWire - Yet Another 1-Wire System

Сообщение Andrey_B » 16 фев 2015, 23:55

Ну, в модулях на базе двухканального DS2406P, где один канал задействован как выход, а другой как вход (что нам необходимо контролировать), можно настроить условный поиск на конкретный канал и на конкретное состояние PIO, поэтому сам факт ответа на запрос условного поиска уже будет однозначно говорить о том, что произошло.
Настройки сбрасываются при отсутствии питания. Это проблема, но в реальности встречается не часто. А при загрузке сервера настройки должны восстанавливаться.
Мне кажется в сети с несколькими десятками модулей циклический поиск будет проигрывать условному поиску, тем более, что по своей сути одновременный ответ на условный поиск большого количества устройств говорит о какой-то неправильной конфигурации. А еще при большом количество устройств, несколько десятков, думаю, совершенно реальна ситуация "потерять" событие при циклическом опросе DS2413, тогда как в DS2406 ко всему прочему есть Activity latches, позволяющий хотя бы определить факт события.
Собственно, по всем этим названным и неназванным причинам было принято решение использовать более продвинутые микроконтроллеры в более продвинутой сети (Ethernet, а в перспективе и беспроводный XBee). Но своя ниша у 1-wire все же есть. Когда нужно дешево и относительно просто подключить 1-2 прибора (при наличии возможности кинуть провод, конечно), можно рассмотреть и этот вариант.

kisoft
Сообщения: 12
Зарегистрирован: 24 сен 2014, 22:09

Re: iWire - Yet Another 1-Wire System

Сообщение kisoft » 17 фев 2015, 07:44

Много слов, но ни одного ответа на мои (и не только) вопросы. Ок, не буду отвлекать. Удачи.

looc
Сообщения: 5
Зарегистрирован: 03 апр 2015, 22:26

В качестве стандартного разъёма для iWire я выбрала обычный

Сообщение looc » 07 апр 2015, 12:28

Буду реализовывать свой УД с использованием MegaD-238, ну а подключение датчиков тем-ры, герконов (открывания дверей, окон) на сети 1-wire.
Теперь вопросы:
1. Из Вашего разъяснения не понял про соединении по топологии звезда, что Вы имеете в виду, ведь суть 1-wire заключается в последовательном соединении. (я сейчас прикидываю сколько метров будет у меня длина сети 1-wire и возможно мне придется делать две сети на каждом этаже отдельно. Каждое окно каждая дверь (герконы), плюс датчики температуры в каждой комнате в общем хватает, конечно надо продумать логистику сети 1-wire, как я понимаю ответвление от сети 1-wire ограничено по-моему 20 см, при этом питание хочу подавать отдельно в этой же витой паре)
2. Да и конечно у меня были вопросы по поводу как физически размещать датчики DS18B20, делать самому, но все равно нужен корпус, или выбрать готовый вариант есть такие: http://radioseti.ru/index.php?route=pro ... path=63_64 и теперь вижу Ваш. цена 390 и Ваша 300.
3. Чем Ваш адаптер лучше DS9490R USB-1-WIRE или же такого: ETHERNET-1-WIRE С УСТАНОВКОЙ НА ДИН РЕЙКУ ссылка: http://radioseti.ru/index.php?route=pro ... uct_id=142, конечно по цене Ваш привлекателен однозначно.
4. Да хотелось бы посмотреть схему подключения, а то возникает вопрос зачем из датчиков отходят провода, ведь есть RJ45 им можно было ограничится. В общем небольшая схемка не помешала бы, чтобы понять.

Sasha
Сообщения: 7
Зарегистрирован: 08 фев 2015, 00:07

Re: iWire - Yet Another 1-Wire System

Сообщение Sasha » 11 апр 2015, 17:49

1. Под топологией "шина-звезда", я имела в виду тот вариант подключения, когда от центра звезды к модулю идут не две, а четыре пары проводов (две 'туда', и две 'обратно'), а в центре звезды всё это уже коммутируется в обычную линейную шину. Ответвления действительно нежелательны, особенно при большом 'весе' 1-wire сети.
2. По поводу корпуса для термометра. Такой формфактор (с отрезком провода между DS18B20 и разъёмом) мне показался наиболее удачным, т.к. в таком случае датчик можно легко расположить как просто в воздухе, так и на поверхности, температуру которой нужно контролировать (труба отопления, etc.). Вариант с датчиком в корпусе (в телефонной розетке, как в примере), мне кажется на практике малоприменимым, именно из-за невозможности контакта датчика с контролируемой поверхностью.
3. Адаптер iWire_NA, по сути является обыкновенным переходником USB-UART с обвязкой выхода для работы с 1-wire (но с несколько необычной конфигурацией самой м/c преобразователя), т.е. для компьютера он будет представляться как обычный COM-порт. Являясь практически аналогом вышеуказанного 1-wire-Ethernet адаптера, но с USB интерфейсом. В отличие от DS9490R, он намного дешевле и его проще собрать своими руками, хотя он может совсем незначительно проигрывать ему в производительности.
4. Если речь идёт о двухканальных модулях ввода/вывода, то отходящие по обе стороны от разъёма RJ-45 провода это выводы для подключения нагрузки/контролируемого напряжения. Ограничиться RJ-45, не получилось бы, т.к. тогда в одном разъёме оказались бы и низковольтные линии и сеть 220В, что плохо само по себе, учитывая изоляцию витой пары (а какой либо другой провод в RJ-45 обжать проблематично).

looc
Сообщения: 5
Зарегистрирован: 03 апр 2015, 22:26

Re: iWire - Yet Another 1-Wire System

Сообщение looc » 11 апр 2015, 18:43

4. Почему 220, 12В, для питания датчиков.

Sasha
Сообщения: 7
Зарегистрирован: 08 фев 2015, 00:07

Re: iWire - Yet Another 1-Wire System

Сообщение Sasha » 11 апр 2015, 19:07

Питание 12В и данные 1-wire подаются на разъём RJ-45 (взять питание на датчики можно с него же). Гибкие выводы это входы/выходы PIOA и PIOB с оптической изоляцией от 1-wire шины.

looc
Сообщения: 5
Зарегистрирован: 03 апр 2015, 22:26

Re: iWire - Yet Another 1-Wire System

Сообщение looc » 11 апр 2015, 20:44

Да именно это хотел спросить, я сомневался не будет ли питание 12В мешать сети 1-wire.
Да и вопрос:
датчик DS18B20 подключается к сети 1-wire без какой-либо обвязки? либо требуется какая-то схема, в этом варианте прямо сотворили целую плату ссылка: http://radioseti.ru/index.php?route=pro ... path=63_64, конечно я понимаю, что его надо физически и эстетически как-то разместить, типа в каком-то пластиковом корпусе, типа как пожарная сигнализация.
Вопрос 2 у меня два этажа и подвал и я думаю делать мне 1 сеть 1-wire или поэтажно? Не будет конфликта в ПО, или же реализовывать в одной сети.

Sasha
Сообщения: 7
Зарегистрирован: 08 фев 2015, 00:07

Re: iWire - Yet Another 1-Wire System

Сообщение Sasha » 12 апр 2015, 00:13

Обвязка, конечно, требуется, но приведённая вами схема показалась мне излишней, кроме того, использованый в ней номинал защитного резистора (100 Ом) слишком велик для протяженной сети %) В iWire_TS применяется самая простая (но от этого не менее хорошо работающая) схема с питанием на стабилитроне:
Вложения
iWire_TS.png
iWire_TS.png (3.18 КБ) 11841 просмотр

Sasha
Сообщения: 7
Зарегистрирован: 08 фев 2015, 00:07

Re: iWire - Yet Another 1-Wire System

Сообщение Sasha » 12 апр 2015, 01:33

Для снижения нагрузки на сеть 1-wire, думаю, лучше будет развести отдельную ветку со своим адаптером на каждый этаж. Каких-либо проблем в ПО такое подключение вызвать не должно.

Ответить