onewire — protocollo del bus 1-Wire

Il modulo onewire implementa il protocollo master del bus 1-Wire utilizzato da dispositivi come il sensore di temperatura DS18x20. Usa un singolo machine.Pin configurato come open-drain per comunicare con uno o più dispositivi slave sul bus condiviso.

Esempio:

from machine import Pin
from onewire import OneWire

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

Classi

class onewire.OneWire(pin: machine.Pin)

Costruisce un master del bus 1-Wire sul machine.Pin specificato. Il pin viene configurato automaticamente come open-drain con un pull-up.

Costanti dei comandi ROM:

SEARCH_ROM: int

Comando Search ROM (0xF0). Usato internamente da scan() per rilevare i dispositivi sul bus.

MATCH_ROM: int

Comando Match ROM (0x55). Usato internamente da select_rom() per indirizzare uno specifico dispositivo tramite il suo codice ROM a 64 bit.

SKIP_ROM: int

Comando Skip ROM (0xCC). Indirizza simultaneamente tutti i dispositivi sul bus, saltando la corrispondenza ROM.

Reset del bus:

reset(required: bool = False) bool

Genera un impulso di reset sul bus. Restituisce True se almeno un dispositivo slave ha risposto con un impulso di presenza, altrimenti False. Se required è True e nessun dispositivo risponde, solleva OneWireError.

I/O di bit/byte:

readbit() int

Legge un singolo bit dal bus e lo restituisce come 0 o 1.

readbyte() int

Legge un singolo byte dal bus e lo restituisce come intero (0–255).

readinto(buf: bytearray) None

Legge len(buf) byte dal bus nel buffer pre-allocato specificato.

writebit(value: int) None

Scrive un singolo bit (0 o 1) sul bus.

writebyte(value: int) None

Scrive un singolo byte (0–255) sul bus.

write(buf: bytes | bytearray) None

Scrive i byte contenuti in buf sul bus.

Indirizzamento dei dispositivi:

select_rom(rom: bytes | bytearray) None

Genera un reset seguito da un comando MATCH ROM per indirizzare il dispositivo il cui codice ROM a 64 bit è contenuto in rom (un buffer di 8 byte).

scan() list[bytearray]

Esegue una ricerca sul bus e restituisce una lista di codici ROM da 8 byte (un bytearray per ogni dispositivo rilevato). Restituisce una lista vuota se non è presente alcun dispositivo.

Controllo di ridondanza ciclica:

crc8(data: bytes | bytearray) int

Calcola il CRC a 8 bit Maxim/Dallas su data. Il risultato è 0 quando data include già un byte CRC finale valido, il che può essere usato per validare il contenuto dello scratchpad ricevuto.

Eccezioni

exception onewire.OneWireError

Sollevata quando un’operazione 1-Wire fallisce. Attualmente sollevata da OneWire.reset() quando required è True e nessun dispositivo slave risponde all’impulso di reset.