Общая информация

1-Wire – шина для подключения устройств с низкоскоростной передачей данных по двум (реже трем) проводам. В ней используется общий провод (GND), провод для питания и данных (DQ), а также в некоторых случаях может использоваться отдельный провод питания 5V (VDD). Топология сети на основе 1-Wire — общая шина. Применяется для подключения внешних датчиков, как правило, температурных.

Физическое подключение

1. Подключение одного датчика по трем проводам

  • Сигнал датчика VDD соединить с клеммой +5V Out

  • Сигнал датчика GND соединить с клеммой GND

  • Сигнал датчика DQ соединить с клеммой 1A

2. Подключение одного датчика по двум проводам

  • Сигналы датчика VDD и GND соединить с клеммой GND

  • Сигнал датчика DQ соединить с клеммой 1A

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

3. Подключение нескольких датчиков на одну шину

Основные требования при проектировании шины изложены в инструкции разработчика. Основные тезисы из этого документа:

  • Длина шины при подключении одного датчика может составлять 200 метров;

  • Если вы собираетесь подключать несколько датчиков, обязательно подключайте их к питанию 5В (не используйте двухпроводную схему подключения);

  • Если вы прокладываете шину на несколько метров, или короткую, но в условиях повышенных помех (например, в щитке) – используйте витую пару, например, Cat 5, желательно экранированную;

  • Количество датчиков, которые можно подключить к одному мастеру (например, контроллеру AntexCloud), зависит как от длины шины, так и от её топологии;

  • Прокладка линии одной шиной лучше, чем прокладка звездой. При прокладке линии звездой надёжная работа не гарантируется.

Подключение датчика

Рассмотрим пример подключения одного из самых популярных датчиков температуры DS18B20 к контроллеру AntexGate.

Соединяем выход 1 датчика с клеммой Ground, выход 2 – с выходом GPIO 4, выход 3 – 3V3 Power. А между выходами 2 и 3 соединяем с резистором сопротивлением от 4.7 кОм до 10 кОм.

Подключаемся к плате по SSH, открываем файл в текстовом редакторе nano и добавляем поддержку OneWire в config.txt:

sudo nano /boot/config.txt

И добавляем в конец файла следующую строчку:

dtoverlay=w1-gpio

Сохраняем изменения комбинацией Ctrl+O, выходим из файла Ctrl+X, затем перезагружаем устройство:

sudo reboot

После перезагрузки приступим к проверке работоспособности датчика, для этого добавим модули w1-gpio и w1-therm в ядро следующими командами:

sudo modprobe w1-gpio

sudo modprobe w1-therm

Перейдем в каталог с устройствами OneWire и посмотрим доступные устройства:

cd /sys/bus/w1/devices

ls

Должны увидеть следующие каталоги

pi@raspberrypi /sys/bus/w1/devices $ ls

28-01186c75ddff w1_bus_master1

Каталог 28-01186c75ddff и есть уникальный номер датчика DS18B20.
Перейдем в этот каталог:

cd 28-01186c75ddff

И выведем содержимое файла w1_slave на экран:

cat w1_slave

На экране должны появиться следующие 2 строчки:

pi@raspberrypi /sys/bus/w1/devices/28-01186c75ddff $ cat w1_slave

2b 00 4b 46 ff ff 02 10 8a : crc=8a YES

2b 00 4b 46 ff ff 02 10 8a t=27312

Если в конце первой строчки будет YES, то в конце второй строчки будет температура в градусах Цельсия умноженная на 1000. В нашем случае это 27.312 ℃.

Подключение к NodeRed

Для того чтобы подключить DS18B20 к NodeRed необходимо скачать расширение node-red-contrib-1wire из библиотеки NodeRed. Для этого нажимаем на правый верхний угол в веб-интерфейсе и в выпадающем окне выбираем “Manage palette”:

В появившемся окне выбираем “Palette” -> “Install”. В окне поиска вводим “1-wire”, в результатах находим “node-red-contrib-1wire” и скачиваем расширение нажатием на “install”:

Ниже представлен пример считывания значений с датчика температуры DS18B20:

Нажимаем дважды на блок “1-Wire” и в открывшемся окне указываем уникальный номер датчика из предыдущего пункта. В нашем случае это 28-01186c75ddff:

В результате получаем значения с датчика температуры в градусах Цельсия:

Остались вопросы? Напишите нам в техническую поддержку и мы обязательно Вам поможем!