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на каждое обнаруженное устройство). Возвращает пустой список, если устройства отсутствуют.
Циклический избыточный код (CRC):
Исключения¶
- exception onewire.OneWireError¶
Возбуждается при сбое операции 1-Wire. В настоящее время возбуждается методом
OneWire.reset(), когда required равноTrueи ни одно ведомое устройство не отвечает на импульс сброса.