onewire — protocolo de barramento 1-Wire

O módulo onewire implementa o protocolo mestre do barramento 1-Wire usado por dispositivos como o sensor de temperatura DS18x20. Ele utiliza um único machine.Pin configurado como dreno aberto (open-drain) para se comunicar com um ou mais dispositivos escravos no barramento compartilhado.

Exemplo:

from machine import Pin
from onewire import OneWire

ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
    print(rom)

Classes

class onewire.OneWire(pin: machine.Pin)

Constrói um mestre de barramento 1-Wire no machine.Pin fornecido. O pino é automaticamente configurado como dreno aberto (open-drain) com pull-up.

Constantes de comando ROM:

SEARCH_ROM: int

Comando Search ROM (0xF0). Usado internamente por scan() para descobrir dispositivos no barramento.

MATCH_ROM: int

Comando Match ROM (0x55). Usado internamente por select_rom() para endereçar um dispositivo específico pelo seu código ROM de 64 bits.

SKIP_ROM: int

Comando Skip ROM (0xCC). Endereça todos os dispositivos do barramento simultaneamente, pulando a correspondência de ROM.

Reset do barramento:

reset(required: bool = False) bool

Emite um pulso de reset no barramento. Retorna True se ao menos um dispositivo escravo respondeu com um pulso de presença, caso contrário retorna False. Se required for True e nenhum dispositivo responder, lança OneWireError.

E/S de bits/bytes:

readbit() int

Lê um único bit do barramento e o retorna como 0 ou 1.

readbyte() int

Lê um único byte do barramento e o retorna como um inteiro (0–255).

readinto(buf: bytearray) None

len(buf) bytes do barramento para o buffer pré-alocado fornecido.

writebit(value: int) None

Escreve um único bit (0 ou 1) no barramento.

writebyte(value: int) None

Escreve um único byte (0–255) no barramento.

write(buf: bytes | bytearray) None

Escreve os bytes de buf no barramento.

Endereçamento de dispositivos:

select_rom(rom: bytes | bytearray) None

Emite um reset seguido de um comando MATCH ROM para endereçar o dispositivo cujo código ROM de 64 bits está em rom (um buffer de 8 bytes).

scan() list[bytearray]

Pesquisa o barramento e retorna uma lista de códigos ROM de 8 bytes (um bytearray por dispositivo detectado). Retorna uma lista vazia se nenhum dispositivo estiver presente.

Verificação de redundância cíclica:

crc8(data: bytes | bytearray) int

Calcula o CRC de 8 bits da Maxim/Dallas sobre data. O resultado é 0 quando data já inclui um byte de CRC final válido, o que pode ser usado para validar o conteúdo de scratchpad recebido.

Exceções

exception onewire.OneWireError

Lançada quando uma operação 1-Wire falha. Atualmente lançada por OneWire.reset() quando required é True e nenhum escravo responde ao pulso de reset.