onewire — 1-Wire-bussprotokoll

Modulen onewire implementerar masterprotokollet för 1-Wire-bussen som används av enheter som temperatursensorn DS18x20. Den använder ett enda machine.Pin konfigurerat som open-drain för att kommunicera med en eller flera slavenheter på den delade bussen.

Exempel:

from machine import Pin
from onewire import OneWire

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

Klasser

class onewire.OneWire(pin: machine.Pin)

Skapar en 1-Wire-bussmaster på det angivna machine.Pin. Stiftet konfigureras automatiskt som open-drain med en pull-up.

ROM-kommandokonstanter:

SEARCH_ROM: int

Search ROM-kommandot (0xF0). Används internt av scan() för att upptäcka enheter på bussen.

MATCH_ROM: int

Match ROM-kommandot (0x55). Används internt av select_rom() för att adressera en specifik enhet via dess 64-bitars ROM-kod.

SKIP_ROM: int

Skip ROM-kommandot (0xCC). Adresserar alla enheter på bussen samtidigt och hoppar över ROM-matchning.

Bussåterställning:

reset(required: bool = False) bool

Skickar en återställningspuls på bussen. Returnerar True om minst en slavenhet svarade med en närvaropuls, annars False. Om required är True och ingen enhet svarar, kastas OneWireError.

Bit/byte-I/O:

readbit() int

Läser en enskild bit från bussen och returnerar den som 0 eller 1.

readbyte() int

Läser en enskild byte från bussen och returnerar den som ett heltal (0–255).

readinto(buf: bytearray) None

Läser len(buf) byte från bussen in i den angivna förallokerade bufferten.

writebit(value: int) None

Skriver en enskild bit (0 eller 1) till bussen.

writebyte(value: int) None

Skriver en enskild byte (0–255) till bussen.

write(buf: bytes | bytearray) None

Skriver byten i buf till bussen.

Enhetsadressering:

select_rom(rom: bytes | bytearray) None

Skickar en återställning följd av ett MATCH ROM-kommando för att adressera enheten vars 64-bitars ROM-kod finns i rom (en 8-byte-buffert).

scan() list[bytearray]

Söker igenom bussen och returnerar en lista med 8-byte ROM-koder (en bytearray per upptäckt enhet). Returnerar en tom lista om inga enheter finns.

Cyklisk redundanskontroll:

crc8(data: bytes | bytearray) int

Beräknar Maxim/Dallas 8-bitars CRC över data. Resultatet är 0 när data redan innehåller en giltig avslutande CRC-byte, vilket kan användas för att validera mottaget scratchpad-innehåll.

Undantag

exception onewire.OneWireError

Kastas när en 1-Wire-operation misslyckas. Kastas för närvarande av OneWire.reset() när required är True och ingen slav svarar på återställningspulsen.