onewire — протокол шини 1-Wire¶
Модуль onewire реалізує протокол ведучого пристрою шини 1-Wire, який використовується такими пристроями, як температурний датчик DS18x20. Для зв’язку з одним або кількома веденими пристроями на спільній шині він використовує єдиний machine.Pin, налаштований у режимі відкритого стоку.
Приклад:
from machine import Pin
from onewire import OneWire
ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
print(rom)
Класи¶
- class onewire.OneWire(pin: machine.Pin)¶
Створює ведучий пристрій шини 1-Wire на заданому
machine.Pin. Вивід автоматично налаштовується як відкритий стік з підтяжкою до живлення.Константи команд ROM:
- SEARCH_ROM: int¶
Команда Search ROM (
0xF0). Використовується внутрішньо методомscan()для виявлення пристроїв на шині.
- MATCH_ROM: int¶
Команда Match ROM (
0x55). Використовується внутрішньо методомselect_rom()для звернення до конкретного пристрою за його 64-бітним кодом ROM.
- SKIP_ROM: int¶
Команда Skip ROM (
0xCC). Звертається до всіх пристроїв на шині одночасно, пропускаючи зіставлення ROM.
Скидання шини:
- reset(required: bool = False) bool¶
Надсилає імпульс скидання на шину. Повертає
True, якщо хоча б один ведений пристрій відповів імпульсом присутності, абоFalseв іншому випадку. Якщо required має значенняTrueі жоден пристрій не відповідає, генерується виключенняOneWireError.
Побітовий/байтовий ввід/вивід:
Адресація пристроїв:
- select_rom(rom: bytes | bytearray) None¶
Надсилає скидання, після якого йде команда MATCH ROM, для звернення до пристрою, 64-бітний код ROM якого міститься у rom (8-байтний буфер).
- scan() list[bytearray]¶
Сканує шину та повертає список 8-байтних кодів ROM (один
bytearrayна кожен виявлений пристрій). Повертає порожній список, якщо пристроїв не знайдено.
Перевірка циклічного надлишкового коду:
Виключення¶
- exception onewire.OneWireError¶
Генерується при помилці операції 1-Wire. Наразі генерується методом
OneWire.reset(), коли required має значенняTrueі жоден ведений пристрій не відповідає на імпульс скидання.