Общая информация
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