Первая статья этого цикла тут
Вторая часть этого цикла тут
Третья часть этого цикла тут
Многим из вас, наверняка, знакомо это устройство. Но не все знают, что это микросхема с интерфейсом 1-wire. В таких корпусах (да и не только таких) компания Maxim, ранее Dallas Semiconductor, выпускает целый ряд устройств: термохроны, микросхемы флеш-памяти, ацп, ключи и многое другое.
Всё это – микросхемы с интерфейсом 1-wire.
Коротко
1-wire это интерфейс, позволяющий строить сети из устройств с топологией общая шина, один ведущий – много ведомых. Каждое устройство имеет свой собственный уникальный 64-битный адрес. Для двухсторонней передачи сигналов, несмотря на название, используется два провода: один общий\земля, а второй для питания и передачи данных. В этом и состоит особенность этой сети, что для питания и данных используется один проводник, хотя в некоторых устройствах опционально присутствует третий вывод для подключения внешнего питания.
По иронии судьбы большое распространение в россии получили самые простые устройства ds1990a, которые используются как ключи от домофонов, дверей, иногда сигнализаций. Это самая простая микросхема-метка, которая содержит только уникальный 64-битный адрес и умеет отвечать всего на пару команд (собственно отзываться на этот адрес). В таком же корпусе, имеющем название iButton существуют и более сложные микросхемы, например термохрон – это микросхема которая умеет мерить и запоминать окружающую температуру через заданный интервал времени, потом эти данные можно считать; есть микросхемы флеш-памяти, которые часто используются для хранения ключей; со всем разнообразием кому интересно может ознакомиться на официальном сайте.
Как это работает?
Пока шина свободна, она подтягивается к положительному уровню питания и удерживается в нем. В этот момент все устройства на шине заряжают внутренний конденсатор и получают энергию. Как только мастер хочет обратиться к какому-либо устройству, он опускает шину в ноль на заданный промежуток времени и возвращает её назад, затем ждет ответа – если на шине присутствует хотя бы один ведомый, он обязан ответить кратковременным опусканием же шины в ноль. Далее примерно таким же образом ведущий передаёт адрес, к кому конкретно он хочет обратится, команду и получает какие-либо данные.
Более-менее общие сведения о 1-Wire можно прочитать в википедии, а если вас заинтересовала специфика и подробности протоколов то можно почитать, например, тут.
Про 1-wire написано достаточно много, но в основном о том как применять и общаться с ними на уровне микроконтроллеров, встраивать в устройства, или просто читать данные с помощью PC, как правило одно-два устройства и на небольших расстояниях. Я не хочу повторяться, а планирую рассказать о том, как мы в современных реалиях на предприятии строили большую сеть, которая на текущий момент охватывает три здания, имеет более 300 1-wire устройств, 3 сервера для сбора и обработки данных и работает 24 часа в сутки 7 дней в неделю, розетки 1-wire установлены в помещениях на ряду с телефонными и ethernet практически в каждой комнате и коридорах.
Так что, если это вам интересно – будем продолжать.
Ссылки по теме
Официальный сайт
Arduino и iButton
Общий обзор протокола
Ещё одна очень популярная статейка
продолжение здесь: тыц