onewire — 1-Wire-busprotocol

De module onewire implementeert het master-protocol van de 1-Wire-bus dat wordt gebruikt door apparaten zoals de DS18x20-temperatuursensor. Het gebruikt een enkele machine.Pin die als open-drain is geconfigureerd om met een of meer slave-apparaten op de gedeelde bus te communiceren.

Voorbeeld:

from machine import Pin
from onewire import OneWire

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

Klassen

class onewire.OneWire(pin: machine.Pin)

Construeer een 1-Wire-busmaster op de opgegeven machine.Pin. De pin wordt automatisch als open-drain met een pull-up geconfigureerd.

ROM-commandoconstanten:

SEARCH_ROM: int

Search ROM-commando (0xF0). Wordt intern gebruikt door scan() om apparaten op de bus te ontdekken.

MATCH_ROM: int

Match ROM-commando (0x55). Wordt intern gebruikt door select_rom() om een specifiek apparaat te adresseren via zijn 64-bits ROM-code.

SKIP_ROM: int

Skip ROM-commando (0xCC). Adresseert alle apparaten op de bus tegelijk en slaat de ROM-matching over.

Bus-reset:

reset(required: bool = False) bool

Geef een resetpuls op de bus af. Geeft True terug als ten minste één slave-apparaat met een aanwezigheidspuls heeft gereageerd, anders False. Als required gelijk is aan True en geen enkel apparaat reageert, wordt OneWireError opgeworpen.

Bit/byte-I/O:

readbit() int

Lees een enkele bit van de bus en geef die terug als 0 of 1.

readbyte() int

Lees een enkele byte van de bus en geef die terug als geheel getal (0–255).

readinto(buf: bytearray) None

Lees len(buf) bytes van de bus in de opgegeven vooraf gealloceerde buffer.

writebit(value: int) None

Schrijf een enkele bit (0 of 1) naar de bus.

writebyte(value: int) None

Schrijf een enkele byte (0–255) naar de bus.

write(buf: bytes | bytearray) None

Schrijf de bytes in buf naar de bus.

Apparaatadressering:

select_rom(rom: bytes | bytearray) None

Geef een reset af, gevolgd door een MATCH ROM-commando, om het apparaat te adresseren waarvan de 64-bits ROM-code zich in rom bevindt (een buffer van 8 bytes).

scan() list[bytearray]

Doorzoek de bus en geef een lijst van 8-byte ROM-codes terug (één bytearray per gedetecteerd apparaat). Geeft een lege lijst terug als er geen apparaten aanwezig zijn.

Cyclische redundantiecontrole:

crc8(data: bytes | bytearray) int

Bereken de 8-bits CRC van Maxim/Dallas over data. Het resultaat is 0 wanneer data al een geldige afsluitende CRC-byte bevat, wat kan worden gebruikt om ontvangen scratchpad-inhoud te valideren.

Uitzonderingen

exception onewire.OneWireError

Wordt opgeworpen wanneer een 1-Wire-operatie mislukt. Wordt momenteel opgeworpen door OneWire.reset() wanneer required gelijk is aan True en geen enkele slave op de resetpuls reageert.