1-Wire в Wiren Board 2.8: различия между версиями
(Удалённая из перевода страница) |
м (→Содержание) Метка: visualeditor-switched |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
<!--T:1--> | |||
'''Внимание! Эта страница относится только к очень старой версии устройства. Для всех новых смотрите статью [[Special:MyLanguage/1-Wire|1-Wire]].''' | '''Внимание! Эта страница относится только к очень старой версии устройства. Для всех новых смотрите статью [[Special:MyLanguage/1-Wire|1-Wire]].''' | ||
==Подключение== | ==Подключение== <!--T:2--> | ||
1- | <!--T:3--> | ||
1-Wire датчики можно подключать к линиям GPIO Wiren Board. | |||
<!--T:4--> | |||
Существует два типа подключения датчиков: обычный и с использованием паразитного питания: | Существует два типа подключения датчиков: обычный и с использованием паразитного питания: | ||
* обычное подключение датчиков: подключите линию GND к земле, линию DATA к [[Special:MyLanguage/Список GPIO|GPIO]], линию VCC к питанию +3.3V или +5V | * обычное подключение датчиков: подключите линию GND к земле, линию DATA к [[Special:MyLanguage/Список GPIO|GPIO]], линию VCC к питанию +3.3V или +5V | ||
* подключение с использованием паразитного питания: подключите линию GND к земле, линию DATA к GPIO. Линия VCC должна быть соединена с линией GND. | * подключение с использованием паразитного питания: подключите линию GND к земле, линию DATA к GPIO. Линия VCC должна быть соединена с линией GND. | ||
<!--T:5--> | |||
В любом случае рекомендуется использование внешнего подтягивающего резистора номиналом 2-10 кОм между линией DATA и напряжением питания +3.3V или +5V. | В любом случае рекомендуется использование внешнего подтягивающего резистора номиналом 2-10 кОм между линией DATA и напряжением питания +3.3V или +5V. | ||
Строка 14: | Строка 20: | ||
==Настройка Device Tree== | ==Настройка Device Tree== <!--T:6--> | ||
После подключения 1- | <!--T:7--> | ||
После подключения 1-Wire сети к какому-либо GPIO необходимо внести соответствующие изменения в файл Device Tree. См. [[Special:MyLanguage/Пересборка Device Tree|Пересборка Device Tree]] | |||
<!--T:8--> | |||
<pre> | <pre> | ||
onewire@0 { | onewire@0 { | ||
Строка 25: | Строка 33: | ||
</pre> | </pre> | ||
<!--T:9--> | |||
Соответствующую запись необходимо добавить внутри корневой секции. | Соответствующую запись необходимо добавить внутри корневой секции. | ||
Параметр <b>gpios</b> указывает на используемый GPIO. В данном примере это GPIO номер <b>2</b> т.е. клеммник номер 9 (см. [[Special:MyLanguage/Список GPIO|Список GPIO]]). Подробнее про формат поля <b>gpios</b>: [[Special:MyLanguage/Работа с GPIO|Работа с GPIO]] | Параметр <b>gpios</b> указывает на используемый GPIO. В данном примере это GPIO номер <b>2</b> т.е. клеммник номер 9 (см. [[Special:MyLanguage/Список GPIO|Список GPIO]]). Подробнее про формат поля <b>gpios</b>: [[Special:MyLanguage/Работа с GPIO|Работа с GPIO]] | ||
==Работа с 1- | <!--T:10--> | ||
==Работа с 1-Wire в Linux== | |||
Для работы используется ядерный интерфейс в <b>/sys/bus/w1/</b>: | Для работы используется ядерный интерфейс в <b>/sys/bus/w1/</b>: | ||
<!--T:11--> | |||
<pre> | <pre> | ||
root@wirenboard:~# ls /sys/bus/w1/ | root@wirenboard:~# ls /sys/bus/w1/ | ||
Строка 37: | Строка 48: | ||
</pre> | </pre> | ||
<!--T:12--> | |||
<pre> | <pre> | ||
root@wirenboard:~# ls /sys/bus/w1/devices/ | root@wirenboard:~# ls /sys/bus/w1/devices/ | ||
Строка 42: | Строка 54: | ||
</pre> | </pre> | ||
Здесь <b>28-000002dc22b0</b> - идентификаторы обнаруженных устройств на шине, а <b>w1_bus_master1</b> - ведущие устройства 1- | <!--T:13--> | ||
Здесь <b>28-000002dc22b0</b> - идентификаторы обнаруженных устройств на шине, а <b>w1_bus_master1</b> - ведущие устройства 1-Wire, каждый из которых соответствует одному GPIO. | |||
<!--T:14--> | |||
Список обнаруженных устройств можно также посмотреть командой: | Список обнаруженных устройств можно также посмотреть командой: | ||
<pre> | <pre> | ||
Строка 53: | Строка 67: | ||
</pre> | </pre> | ||
<!--T:15--> | |||
По-умолчанию сканирование шины происходит раз в 10 секунд. | По-умолчанию сканирование шины происходит раз в 10 секунд. | ||
==Работа с температурными датчиками== <!--T:16--> | |||
<!--T:17--> | |||
За работу с датчиками температуры отвечает модуль ядра w1_therm. | За работу с датчиками температуры отвечает модуль ядра w1_therm. | ||
<!--T:18--> | |||
Загрузим модуль (автозагрузка отключена намеренно): | Загрузим модуль (автозагрузка отключена намеренно): | ||
<pre> | <pre> | ||
Строка 67: | Строка 81: | ||
</pre> | </pre> | ||
<!--T:19--> | |||
Теперь в директориях устройств-термометров появляется файл w1_slave: | Теперь в директориях устройств-термометров появляется файл w1_slave: | ||
<!--T:20--> | |||
<pre> | <pre> | ||
root@wirenboard:~# ls /sys/bus/w1/devices/28-000004a7d3f9/ | root@wirenboard:~# ls /sys/bus/w1/devices/28-000004a7d3f9/ | ||
Строка 74: | Строка 90: | ||
</pre> | </pre> | ||
<!--T:21--> | |||
С его помощью можно считывать показания термометра: | С его помощью можно считывать показания термометра: | ||
<!--T:22--> | |||
<pre> | <pre> | ||
root@wirenboard:~# cat /sys/bus/w1/devices/28-000004a7d3f9/w1_slave | root@wirenboard:~# cat /sys/bus/w1/devices/28-000004a7d3f9/w1_slave | ||
Строка 82: | Строка 100: | ||
</pre> | </pre> | ||
<!--T:23--> | |||
Здесь <b>t=25187</b> температура в тысячных долях градусов Цельсия, т.е. <b>25.187C</b>. | Здесь <b>t=25187</b> температура в тысячных долях градусов Цельсия, т.е. <b>25.187C</b>. | ||
<!--T:24--> | |||
Последовательно прочитаем показания всех термометров на шине: | Последовательно прочитаем показания всех термометров на шине: | ||
<pre> | <pre> | ||
Строка 97: | Строка 117: | ||
99 01 4b 46 7f ff 07 10 79 t=25562 | 99 01 4b 46 7f ff 07 10 79 t=25562 | ||
</pre> | </pre> | ||
</translate> |
Версия 17:21, 24 апреля 2019
Внимание! Эта страница относится только к очень старой версии устройства. Для всех новых смотрите статью 1-Wire.
Подключение
1-Wire датчики можно подключать к линиям GPIO Wiren Board.
Существует два типа подключения датчиков: обычный и с использованием паразитного питания:
- обычное подключение датчиков: подключите линию GND к земле, линию DATA к GPIO, линию VCC к питанию +3.3V или +5V
- подключение с использованием паразитного питания: подключите линию GND к земле, линию DATA к GPIO. Линия VCC должна быть соединена с линией GND.
В любом случае рекомендуется использование внешнего подтягивающего резистора номиналом 2-10 кОм между линией DATA и напряжением питания +3.3V или +5V.
Настройка Device Tree
После подключения 1-Wire сети к какому-либо GPIO необходимо внести соответствующие изменения в файл Device Tree. См. Пересборка Device Tree
onewire@0 { compatible = "w1-gpio"; gpios = <&gpio0 2 0>; };
Соответствующую запись необходимо добавить внутри корневой секции. Параметр gpios указывает на используемый GPIO. В данном примере это GPIO номер 2 т.е. клеммник номер 9 (см. Список GPIO). Подробнее про формат поля gpios: Работа с GPIO
Работа с 1-Wire в Linux
Для работы используется ядерный интерфейс в /sys/bus/w1/:
root@wirenboard:~# ls /sys/bus/w1/ devices drivers drivers_autoprobe drivers_probe uevent
root@wirenboard:~# ls /sys/bus/w1/devices/ 28-000002dc22b0 28-000004a7d3f9 28-000004d01255 28-000004d11d72 w1_bus_master1 w1_bus_master2 w1_bus_master3
Здесь 28-000002dc22b0 - идентификаторы обнаруженных устройств на шине, а w1_bus_master1 - ведущие устройства 1-Wire, каждый из которых соответствует одному GPIO.
Список обнаруженных устройств можно также посмотреть командой:
root@wirenboard:~# cat /sys/bus/w1/devices/w1_bus_master1/w1_master_slaves 28-000004a7d3f9 28-000002dc22b0 28-000004d11d72 28-000004d01255
По-умолчанию сканирование шины происходит раз в 10 секунд.
Работа с температурными датчиками
За работу с датчиками температуры отвечает модуль ядра w1_therm.
Загрузим модуль (автозагрузка отключена намеренно):
root@wirenboard:~# modprobe w1_therm
Теперь в директориях устройств-термометров появляется файл w1_slave:
root@wirenboard:~# ls /sys/bus/w1/devices/28-000004a7d3f9/ driver id name power subsystem uevent w1_slave
С его помощью можно считывать показания термометра:
root@wirenboard:~# cat /sys/bus/w1/devices/28-000004a7d3f9/w1_slave 93 01 4b 46 7f ff 0d 10 32 : crc=32 YES 93 01 4b 46 7f ff 0d 10 32 t=25187
Здесь t=25187 температура в тысячных долях градусов Цельсия, т.е. 25.187C.
Последовательно прочитаем показания всех термометров на шине:
root@wirenboard:~# for i in /sys/bus/w1/devices/28-*; do cat $i/w1_slave; done c4 01 4b 46 7f ff 0c 10 3b : crc=3b YES c4 01 4b 46 7f ff 0c 10 3b t=28250 97 01 4b 46 7f ff 09 10 1c : crc=1c YES 97 01 4b 46 7f ff 09 10 1c t=25437 9a 01 4b 46 7f ff 06 10 78 : crc=78 YES 9a 01 4b 46 7f ff 06 10 78 t=25625 99 01 4b 46 7f ff 07 10 79 : crc=79 YES 99 01 4b 46 7f ff 07 10 79 t=25562