Функции для работы с однопроводным интерфейсом One Wire
Библиотека для работы с интерфейсом One Wire (1-Wire) представляет собой набор функций для связи с внешним устройством по однопроводной шине, например, с цифровым термометром DS1820.
Протокол этого интерфейса, требующего для связи всего один провод, поддерживает ведущий (master) и ведомый (slave) микроконтроллер.
Благодаря используемой для этого интерфейса конфигурации аппаратуры (подтяжка к питанию и драйверы с открытым коллектором), он позволяет устройству slave получать питание по проводнику, используемому для связи.
Протокол интерфейса One Wire имеет следующие основные характеристики:
• только одно ведущее устройство в системе;• скорость обмена до 16 Кбод;• расстояние между устройствами до 300 м;• небольшие пакеты данных;
• низкая стоимость.
Каждое устройство One Wire шины имеет уникальный 64-битовый регистрационный номер (8 бит – тип устройства, 48 бит – серийный номер и 8 бит – CRC), поэтому большое количество ведомых устройств могут сосуществовать на одной шине.
Для работы с USART используются функции Ow_Reset, Ow_Read и Ow_Write. Описание этих функций представлено в таблицах 41 – 43 соответственно.
Таблица 41. Описание функции Ow_Reset
Прототип
unsigned short Ow_Reset(unsigned short *port, unsigned short pin)
Возвращаемое значение
0, если DS1820 присутствует, и 1 – если нет
Описание
Выдаёт сигнал сброса для One Wire DS1820. Аргументы port и pin определяют подключение DS1820 к микроконтроллеру
Требования
Работает только с цифровым термометром DS1820
Пример
//Cброс DS1820, который подключен к выводу RA5:Ow_Reset(&PORTA, 5)
Таблица 42. Описание функции Ow_Read
Прототип
unsigned short Ow_Read(unsigned short *port, unsigned short pin)
Возвращаемое значение
Данные, прочитанные из внешнего устройства по шине OneWire
Описание
Читает один байт данных по шине OneWire
Требования
Нет
Пример
unsigned short tmp;…tmp = Ow_Read(&PORTA, 5);
Таблица 43. Описание функции Ow_Write
Прототип
void Ow_Write(unsigned short *port, unsigned short pin, unsigned short par)
Возвращаемое значение
Нет
Описание
Передаёт один байт данных (аргумент par) по шине OneWire
Требования
Нет
Пример
Ow_Write(&PORTA, 5, 0xCC)
Схема подключения цифрового термометра DS1820 по шине One Wire к выводу RA5 микроконтроллера показана на рисунке 28.
Рис. 28. Схема подключения цифрового термометра DS1820 к микроконтроллеру по шине One Wire
Описание системы
Драйвера
для отправки сообщений по электронной почте | |
pushover | для отправки сообщений на мобильные клиенты (http://pushover.net) |
mysql | запись событий в базу данных |
graphite | пересылка событий в graphite (http://graphite.wikidot.com/screen-shots). Группировка данных в мыслимых и немыслимых формах и их отображение в виде графиков. |
ical | Google и Apple iCloud календари |
geofency | поддержка Apple системы геолокации geofency |
growl | сообщения на Apple Growl App |
currency | курсы валют с европейского центрального банка. (Есть EUR-RUB и USD-RUB) |
telnet | управление приборами по telnet протоколу |
ping | пингует IP устройства в сети |
lirc | для управления приборами и принятия команд по инфракрасному порту (требуется дополнительное железо) |
irtrans | поддержка IRTrans инфракрасной системы (http://www.irtrans.de/en/) |
hue | управление PhilipsHUE лампами |
lgtv | управление LG телевизорами по сети |
denon | управление DENON ресиверами |
onkyo | управление ONKYO ресиверами |
yamaha | управление YAMAHA ресиверами |
sonos | управление SONOS системой звука |
dream | управление DreamBOX спутниковыми ресиверами (http://ru.wikipedia.org/wiki/Dreambox) |
owfs | One Wire File System (http://owfs.org/) — сбор данных с датчиков Dallas/Maxim по 1-Wire |
B-control Energy Manager | мониториг расхода электроэнергии www.b-control.com/energiemanagement.html (нет описания на английском) |
all3418v2 — ALLNET ALL3418v2 / IP Thermometer LAN / WLAN | беспроводной термометр — www.allnet.de/en/allnet-brand/pr… r-lanwlan/ |
homepilot | управление системой автоматизации Rademacher. |
homematic | управление системой автоматизации HomeMatic (встроено в CCU.IO). |
rego | мониторинг котлов Junkers TM75, IVT Rego 634 |
megaD | поддержка MegaD-328. |
rpi | мониторинг основных параметров (CPU, Mem, Temperature) RaspberryPI. Поддержка 1-Wire интерфейса и PiFace. |
cubie | мониторинг основных параметров (CPU, Mem, Temperature, Battery) Cubietruck. |
sayit | голосовые сообщения (text2speech или wav) на системе(Linux, Windows, OsX) или android планшете (через Home24 Mediaplayer — play.google.com/store/apps/deta… ayer&hl=ru). |
textCommands | интерфейс для команд, заданных обычным текстом (Пример: Какая температура дома?) |
owm | OpenWeatherMap (http://openweathermap.org/) — погода по всему миру |
yr | погода с норвежского сервера www.yr.no |
dwd | официальные предупреждения о штормах в Германии |
fritzBox | отображение списка звонивших для fritzBox |
speedport | отображение списка звонивших для speedport |
sun_and_time | время захода и восхода солнца, а также праздничные дни для Германии |
muell_stuttgart | время вывоза мусора в Штутгарте |
демо драйвер
Dash UI
DashUI.ccu.io
www.youtube.com/watch?v=viE5y8YmZo0&list=PLsNM5ZcvEidgGDCFnm23bub3Mj-ZU4Cp4www.youtube.com/watch?v=gS-O5OKjQhk
github.com/hobbyquaker/DashUI
Graphite
graphite.wikidot.com/screen-shotsgithub.com/graphite-project/graphite-web
Реальное применение
Dash UIHighchartEventlistScript-EngineHomeListener Apppingжены pushoverccuicalsonosfritzboxyahooWeatherlgtvsayitrpitextCommands
Ссылки
- ccu.io — http://ccu.io/ru (Ещё не до конца переверден)
- ccu.io форум — http://forum.iobroker.com
P.S.Node-REDSmartVISUMajorDoMoOpenHABOpenRemoteFreedomoticAgocontrolNinja BlocksDomoticzThe Thing System
Применение
Технология iButton
Ключ IButton
Каждая микросхема 1-Wire имеет уникальный номер. Это позволяет использовать устройства iButton в качестве простых идентификаторов личности, например, в системах контроля и управления доступом (СКУД). В этом качестве они успешно конкурируют с бесконтактными карточками, использующими технологию RFID.
Имеются устройства iButton с поддержкой криптографии, что позволяет создавать на их основе защищённые хранилища небольших объёмов данных или средства сильной аутентификации. Такие устройства могут конкурировать со смарт-картами в некоторых применениях.
Датчики измерения
Датчик температуры
Устройства 1-Wire очень удобны для измерений. Не требуется отдельного питания, возможно подключить по одному проводу целую гирлянду разнообразных датчиков. Система таких датчиков легко контролируется на предмет аварий. Записи о калибровках могут храниться прямо в датчиках.
Измерение температуры — одно из самых массовых применений 1-Wire устройств. В сельском хозяйстве применяется для многоточечного контроля температуры теплицах, ульях, элеваторах, инкубаторах, овощехранилищах. Популярны домашние метеостанции, подключаемые по этому интерфейсу.
Метеостанции
Метеостанция
Другим примером, наглядно демонстрирующим на практике возможности технологии однопроводной шины, является проект построения полностью автоматических метеорологических станций (1-Wire Weather Station (1-WWS)), который разрабатывался совместно фирмами PointSix, AAG Electronica, Dallas Semiconductor и Texas Weather Instruments. Технология обеспечивала контроль сигналов от датчиков: барометрического давления, разрядов молнии, количества осадков на поверхности, солнечной активности, влажности почвы и т.д. Данные со всех сенсоров, регистрируемые каждой из подобных систем, поступали в персональный компьютер и через Интернет транслировались в режиме реального времени на центральный операторский пульт. Там выполнялись прием, обработка и архивация результатов о погоде всего региона, получаемых благодаря анализу информации от нескольких территориально рассредоточенных станций.
Умный дом
Система «умного дома»
«Умный дом» — это комплекс автоматики, который управляет инженерными системами жилища. Например, освещением, отоплением, вентиляцией, кондиционированием, энергоснабжением, водоснабжением, электроприводами, оборудованием пожарных и охранных систем и прочим. Температура — это часто основа и мерило комфорта любого жилища, а в чрезвычайной ситуации — индикатор пожара. На сегодняшний день для многоточечного контроля температуры ничего лучше применения однопроводных термометров по соотношению функциональность/цена еще не придумано. Поэтому в абсолютном большинстве проектов направления «Умный дом» именно датчики DS18#2# чаще всего обеспечивают функции термометров. А это часто тянет за собой применение и других компонентов с 1-Wire-интерфейсом: ключи для переключения силового оборудования, АЦП для контроля других параметров микроклимата, регистры для управления различным бытовым оборудованием и т.д. Хотя подход, связанный с подстройкой всех подсистем автоматизации под однопроводную магистраль управления совсем необязателен, систем типа «Умный дом» (если они делаются за разумные деньги), где, так или иначе, присутствуют 1-Wire-решения, сегодня достаточно много, если не большинство.
Маркировка оборудования
Микросхемы 1-Wire популярны для маркировки и хранения параметров дополнительного оборудования к установкам. Например, медицинские и лабораторные приборы, использующие в работе множество различных сменных головок и датчиков, снабжаются микросхемой. При подключении прибор сразу распознаёт сменную головку и корректно устанавливает режим работы. Аналогично может контролироваться наработка узлов с ограниченным ресурсом.
Другие применения
Существуют решения iButton для охраны недвижимости, для систем обнаружения проникновения, другое использования. Есть также системы для доступа в менее очевидных областях безопасности. Например, iButton может быть использован для аутентификации пользователей компьютерных систем (аппаратный ключ в системах защиты информации), или в системе табельных часов.
101 применение шлюза UART-to-I2C/SPI/1W (RH-0004). Часть 8. USB программатор микросхем с интерфейсом 1-Wire
Так уж сложилось, что программы для работы через шлюз с I2C и SPI микросхемами сразу были рассчитаны на работу с большим количеством чипов, а если нужно было добавить возможность программировать ещё какую-то микросхему, то я просто расширял функционал этих программ. В то же время ситуация с программированием через шлюз 1-Wire микросхем развивалась иначе, — для каждой конкретной микросхемы я писал отдельную программу.
У такого решения было несколько причин:
В общем, в итоге я оказался неправ, люди хотели не писать программы, а пользоваться готовыми. Ну, ок, пусть будет так. Cегодня я представляю вашему вниманию единую программу для работы через шлюз с микросхемами 1-Wire. То есть теперь шлюз RH-0004 можно будет использовать как полноценный USB-программатор различных устройств с интерфейсом 1-Wire.
С точки зрения железа всё стандартно и аналогично USB-программаторам I2C и SPI. Нам понадобится сам шлюз RH-0004 + конвертер USB-to-UART RH-0003. UART-разъём конвертера — это ответная часть UART-разъёма шлюза, поэтому для их соединения вам не придётся ничего изобретать. Конвертер позволяет не только организовать обмен данными между шлюзом и компьютером, но и запитать шлюз (причём любым напряжением: +3,3В или +5В, оба они присутствуют на разъёме конвертера как раз в нужных местах). Всё вместе это выглядит вот так:
Теперь переходим к программной части.
Во-первых, нужно установить на компьютер драйвера для USB-to-UART конвертера. Конвертер сделан на базе чипа cp2102 фирмы silabs, дрова для него (VCP Drivers) можно скачать на их официальном сайте, вот по этой ссылке.
После установки драйверов на USB-to-UART конвертер у вас на компьютере появляется виртуальный com-порт, через который специально написанная программа может общаться со шлюзом. Эта программа сама устанавливает нужный для данного чипа режим 1-Wire и реализует нужные для работы с чипом алгоритмы. Ссылки для скачивания смотрите в конце статьи).
Окно программы показано на картинках ниже.
Работать с программой достаточно просто, — выбираем com-порт, выбираем чип, вводим ROM, подключаемся и можем c этим чипом работать. Либо просто запускаем поиск, который найдёт и отобразит в специальном окне все подключенные к шлюзу устройства 1-Wire, а нам останется только выбрать нужное устройство, щёлкнув по нему правой кнопкой мыши и подтвердив выбор во всплывающем контекстном меню. Для удобства в правом верхнем углу программы отображается схема подключения шлюза к выбранному чипу (к каким ногам что подключать).
Через верхнее меню доступны сохранение / загрузка данных памяти в файлы форматов bin и hex, сохранение логов работы в текстовые файлы, выбор языка (пока только английский и русский). Кроме того, специально добавил возможность ручного ввода ROM, на случай, если вдруг у чипа он окажется нестандартным (я такого ни разу не видел, но пользователи писали, что такое бывает).
Если нужного чипа нет в списке — можно написать на форум или в личку админу (rhf-admin) письмо с указанием того, какой чип вы хотели бы добавить. Если интересно — можете попробовать добавить нужный чип сами, программа выложена с исходниками на C++ Builder.
Протокол 1-Wire подробно описан вот здесь.
Список функций и регистров шлюза можно посмотреть здесь.
1-Wire. Работа с DS18B20. Часть 1
Все (и в том числе я) называют DS18B20 цифровым датчиком температуры. Однако это не просто датчик, это программируемый цифровой термометр.
Он измеряет температуру в диапазоне от –55 до +125 градусов Цельсия, имеет программируемое температурное разрешение от 9 до 12 бит и позволяет задавать верхний и нижний температурные пороги, в случае превышения которых, устанавливается флаг аварии.
Каждый термометр DS18B20 имеет уникальный 64 битный серийный номер, который используется для его адресации на 1-Wire шине. Это позволяет объединять на одной шине несколько независимо работающих термометров и осуществлять между ними и микроконтроллером обмен данными по 1-Wire протоколу.
Также особенностью данного термометра является то, что его можно запитывать не только от источника питания, но и от сигнального провода. Это так называемый режим паразитного питания. В этом режиме для подключения DS18B20 требуется всего два провода — сигнальный и возвратный (земляной, GND).
Схема подключения нескольких датчиков DS18B20 с внешним питанием. 1-Wire шина должна быть обязательно подтянута к плюсу питания через резистор номиналом 4,7 Ком. Напряжение источника питания от 3 до 5 Вольт.
Схема подключения датчика DS18B20 в режиме паразитного питания.
Вывод Vdd соединяется с GND, а 1-Wire шина дополнительно подключается к источнику питания через полевой транзистор.
Когда датчик DS18B20 выполняет преобразование температуры или копирует данные из ОЗУ в EEPROM память, он потребляет ток до 1,5 мА. Этот ток может вызывать недопустимое снижение напряжения на 1-Wire шине. Чтобы этого не происходило, 1-Wire шину на время выполнения этих операций подключают к источнику питания. Для этого и нужен полевой транзистор.
Для обмена данными термометр DS18B20 использует 1-Wire протокол (однопроводный протокол).
Это низкоскоростной двунаправленный полудуплексный последовательный протокол обмена данными использующий всего один сигнальный провод.
Имеется несколько типов сигналов, определенных 1-Wire протоколом – импульс сброса, импульс присутствия, запись 0, запись 1, чтение 0 и чтение 1. Все эти сигналы, за исключением импульса присутствия, формируются на шине главным устройством — MASTERом . В нашем случае это микроконтроллер AVR.
Принцип формирования сигналов во всех случаях одинаковый. В начальном состоянии 1-Wire шина с помощью резистора подтянута к плюсу питания. Главное устройство «проваливает» на определенное время 1-Wire шину в ноль, затем «отпускает» ее и, если нужно, «слушает» ответ подчиненного (SLAVE) устройства. В нашем случае подчиненное устройство – термометр DS18B20.
Физически это реализуется так.
Операция записи бита: Вывод микроконтроллера устанавливается в режим выхода и на нем устанавливается логический ноль. Выдерживается пауза, длительность которой зависит от значения передаваемого бита (0 или 1), затем вывод переводится в режим входа в состоянии Hi-z и снова выдерживается пауза.
Все сеансы связи микроконтроллера с датчиком DS18B20 начинаются с сигнала сброса. Микроконтроллер на 480 мкс «проваливает» 1-Wire шину в ноль, а затем «отпускает» ее. Если к шине подключен термометр DS18B20, то он обнаруживает положительный перепад и после паузы в 15-60 мкс отвечает микроконтроллеру импульсом присутствия — «проваливает» шину в ноль на время от 60 до 240 мкс.
Обмен данными по 1-Wire шине происходит последовательно, младшим битом вперед. Передача или прием одного бита данных выполняются в течении фиксированного промежутка времени, так называемого тайм слота (time slot). Различают тайм слоты записи и тайм слоты чтения. Длительность всех тайм слотов должна быть > 60 мкс, а пауза между тайм слотами > 1 мкс.
Для передачи нуля микроконтроллер «проваливает» 1-Wire шину на время от 60 до 120 мкс. Затем «отпускает» ее и перед записью следующего бита выдерживает паузу >1 мкс.
DS18B20 является подчиненным устройством и может передавать данные, только когда микроконтроллер формирует на 1-Wire шине тайм слоты чтения.
Для формирования тайм слота чтения микроконтроллер «проваливает» 1-Wire шину на время от 1 до 15 мкс, а затем «отпускает» ее, передавая управление состоянием 1-Wire шины датчику DS18B20.
Если DS18B20 передает ноль, он удерживает шину в «проваленном» состоянии (в состоянии логического нуля) до конца тайм слота. Если он передает 1, он оставляет шину в «подтянутом» состоянии.
Микроконтроллер может считывать данные датчика DS18B20 через 15 мкс после начала тайм слота чтения.
Интерфейс 1-Wire
В этой статье я попытаюсь рассказать о потрясающей вещи – интерфейсе 1-Wire. Что в нем потрясающего? В нем данные передаются всего по одному проводу! Только вдумайтесь, куча датчиков может быть подключена к однопроводной шине.
Интерфейс One-Wire (встречается и такая нотация) был разработан компанией Dallas Semiconductor и применен в виде огромного количества устройств изготовленной данной компанией. Думаю практически все знают температурные датчики c 1-Wire интерфейсом – DS18B20.
Каждое устройство 1-Wire имеет собственный уникальный идентификатор, что обуславливает применение данных устройств в качестве устройств идентификации личности, маркировки оборудования и пр.
Как же передаются данные по однопроводной шине в обе стороны?
Данный вопрос очень удобно (и практично) рассмотреть на примере работы с датчиком температуры DS18B20.Вот так выглядит схема его подключения:
Есть еще вариант с питанием датчика от линии данных, в таком случае вы получаете рабочий датчик температуры подключенный всего при помощи двух проводов!
Первым делом при работе с шиной 1-Wire необходимо её инициализировать, послать сигнал сброса.
Как видно из временной диаграммы (я позаимствовал её из даташита на датчик), мастер (т.е. контроллер устанавливает на шине нулевой потенциал на временя не менее 480 мкс, после чего устанавливает её в единичный потенциал.
После чего необходимо подождать 15-60мкс, чтобы датчик получил передний фронт и отправил импульс присутствия (presence pulse) длиной 60-240мкс.
Если данный импульс не получен, значит на шине нет датчиков готовых к обмену данными.
Теперь рассмотрим процедуру отправки и приема бита.
Операция чтения бита очень похожа на операцию записи. Мы также должны установить шину в низкий потенциал, по крайней мере на 1мкс.
После чего переводим ножку микроконтроллера в режим приема данных и ожидаем 14мкс. После этого можно считать состояние линии. Она будет в высоком состоянии если передается “1” и в никзом, если “0”.
Наконец мы должны подождать ещё 45мкс до окончания периода в 60мкс.
Операция отправки/приема байта производиться в цикле, путем отправки/приема бита и сдвигов операнда.
Также существует режим работы с шиной 1-Wire при помощи USART:
Такой режим намного удобнее для stm32 контроллеров. Там проблем с нехваткой USART’ов нет, да ножек хоть отбавляй.
Пример использования
Устройства 1-Wire доступны в различных корпусах: интегральные схемы , транзистор в стиле TO-92 и портативная форма, называемая iButton или Dallas key, которая представляет собой небольшой корпус из нержавеющей стали, напоминающий батарейку для часов . Производители также производят устройства более сложные, чем отдельный компонент, которые используют шину 1-Wire для связи.
Устройства 1-Wire могут размещаться в разных местах системы. Это может быть один из многих компонентов на печатной плате продукта. Это также может быть отдельный компонент в устройстве, таком как датчик температуры. Он может быть подключен к контролируемому устройству. Некоторые лабораторные системы подключаются к устройствам 1-Wire с помощью кабелей с модульными разъемами или кабеля CAT-5 . В таких системах популярны ( модульные разъемы 6P2C или 6P4C , обычно используемые для телефонов).
Системы датчиков и исполнительных механизмов могут быть построены путем соединения множества компонентов 1-Wire. Каждый компонент 1-Wire содержит всю логику, необходимую для работы на шине 1-Wire. Примеры включают регистраторы температуры , таймеры, датчики напряжения и тока, мониторы батарей и память . Их можно подключить к ПК с помощью преобразователя шины. Интерфейсы последовательного порта USB , RS-232 и параллельного порта являются популярными решениями для подключения MicroLan к главному компьютеру. Устройства 1-Wire также могут напрямую подключаться к микроконтроллерам различных производителей.
iButton подключаются к системам шины 1-Wire с помощью розеток с контактами, которые касаются «крышки» и «дна» контейнера. В качестве альтернативы соединение может быть полупостоянным с помощью гнезда, в которое защелкивается iButton, но из которого он легко извлекается.
Каждая микросхема 1-Wire имеет уникальный идентификационный код. Эта особенность делает микросхемы, особенно iButton, подходящими электронными ключами. Некоторые виды использования включают в себя замки, охранную сигнализацию, компьютерные системы, одобренные производителем аксессуары и часы. iButtons использовались в качестве смарт-билетов Akbil для общественного транспорта в Стамбуле .
Источники питания
Блоки питания, дисплеи и ноутбуки Mac с разъемом Apple MagSafe и MagSafe 2 используют протокол 1-Wire для отправки и получения данных с подключенного ноутбука Mac через средний контакт разъема. Данные включают модель источника питания, мощность и серийный номер; и команды ноутбука для передачи полной мощности и включения красных или зеленых светодиодов в разъеме.
Подлинные блоки питания Dell для портативных компьютеров используют протокол 1-Wire для передачи данных по третьему проводу на портативный компьютер о номинальной мощности, токе и напряжении. Ноутбук откажется от зарядки, если адаптер не соответствует требованиям.
История
Оригинальная версия OneWire была разработана в 2007 году Джимом Стадтом (Jim Studt), и ее целью было упростить работу с девайсами типа 1-Wire. Эволюцию библиотеки можно наблюдать в этом форумном посте. Первая версия OneWire работала только с arduino-0007 и требовала большой (256-байтной) таблицы поиска для выполнения CRC-вычислений. Позже библиотека была обновлена и получила совместимость с arduino-0008 и более поздними релизами. В самой последней версии таблицы поиска для CRC-вычислений больше нет, и эта версия тестировалась только для arduino-0010 и ниже.
В библиотеке OneWire есть баг, из-за которого при использовании функции поиска запускается зацикливание. О том, как его исправить, можно прочесть в этом посте – разные способы можно найти в ответах #3, #17, #24, #27.
В версии 2.0 объединены улучшенная функция поиска от Робина Джеймса (Robin James) и улучшенные I/O функции Пола Стоффрегена (исправлены случайные ошибки подключения). Кроме того, добавлено несколько небольших оптимизаций.
Версия 2.1 добавляет совместимость с бетой Arduino 1.0 и chipKit (Джейсон Дэнжел), вспомогательные функции, CRC16, а также улучшенный температурный пример (Пол Стоффреген), пример для считывания с PROM-чипа DS250x (Гильермо Ловато) и пример для работы с PIO-чипом DS2408(Гленн Тревитт).
Интерфейсы 1-Wire
Управление шиной при помощи специальных устройств
Шина 1-Wire может управляться посредством специальных устройств – их называют «хозяевами шины» или «контроллерами шины». Такие устройства производит, к примеру, та же Dallas, а также ряд других компаний-производителей. Большинство «хозяев шин» перечислены здесь.
Эти устройства специально созданы и оптимизированы для того, чтобы максимально эффективно осуществлять операции записи/считывания с устройствами типа 1-Wire. Будучи похожими на UART/USART, они управляют тактовыми операциями при помощи буфера, тем самым увеличивая точность и высвобождая вычислительные ресурсы главного процессора (к примеру, микроконтроллера). Внешние подтягивающие резисторы тоже не требуются.
Многие из этих чипов осуществляют также исправление ошибок, которые возникают при использовании шин данных (к примеру, потери целостности сигнала, колебания уровня сигнала, отражений и т.д.) и способны повлечь различные проблемы, особенно с крупными сетями. Кроме того, многие из этих девайсов обладают дополнительными функциями и могут работать с большим количеством интерфейсов. Их цена варьируется от 1 до 30 долларов.
Другим важным преимуществом является поддержка owfs – это файловая система для считывания/записи, совместимая с большим количеством устройств для управления шиной 1-Wire.
Управление шиной при помощи UART/USART
Большинство UART/USART идеально подходят для того, чтобы работать со скоростями свыше 15,4 Кбит/сек – скорости, требуемой для стандартного режима шины 1-Wire. Но важнее то, что частота и буфферизация управляются ими раздельно, что, опять же, позволяет разгрузить главный процессор микроконтроллера. Более подробно о реализации этого метода можно почитать тут.
Управление шиной при помощи технологии Bit-Banging
Если управление буфферизацией/частотой при помощи контроллера или UARTUSART по какой-то причине невозможно, шину 1-Wire можно настроить на GPIO-контакте. То есть это, по сути, программная эмуляция UARTUSART с ручным переключением состояния контакта и реконструкцией сигнала от присланных данных. Однако поскольку это программный процесс, на него будут напрямую влиять другие системные процессы, выполняемые в процессоре, что может негативно сказаться на его работе.
На Arduino и прочих совместимых чипах это можно выполнить как раз при помощи библиотеки OneWire – она позволяет реализовать эту технологию на любом цифровом контакте.
На одноплатных компьютерах вроде Raspberry Pi имеется встроенная поддержка протокола 1-Wire, реализованная при помощи драйверов ядра. В частности, очень популярны w1-gpio, w1-gpio-therm и w1-gpio-custom, которые включены в большинство последних дистрибутивов Raspbian. С их помощью можно настроить коммуникацию с устройствами типа 1-Wire, не используя при этом никакого дополнительного оборудования. На данный момент, однако, поддерживается ограниченное количество устройств, а на программном уровне есть ограничение на размер шины.