onewire — protocolo de barramento 1-Wire

O módulo onewire implementa o protocolo mestre de barramento 1-Wire utilizado por dispositivos como o sensor de temperatura DS18x20. Utiliza um único machine.Pin configurado como open-drain para comunicar com um ou mais dispositivos escravos no barramento partilhado.

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 indicado. O pino é automaticamente configurado como open-drain com pull-up.

Constantes de comando ROM:

SEARCH_ROM: int

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

MATCH_ROM: int

Comando Match ROM (0x55). Utilizado 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 no barramento simultaneamente, ignorando a correspondência de ROM.

Reset do barramento:

reset(required: bool = False) bool

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

I/O de bit/byte:

readbit() int

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

readbyte() int

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

readinto(buf: bytearray) None

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

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 em 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]

Procura no barramento e devolve uma lista de códigos ROM de 8 bytes (um bytearray por dispositivo detetado). Devolve uma lista vazia se não houver dispositivos presentes.

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

crc8(data: bytes | bytearray) int

Calcula o CRC de 8 bits Maxim/Dallas sobre data. O resultado é 0 quando data já inclui um byte CRC final válido, o que pode ser utilizado para validar o conteúdo do 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.