onewire — 1-Wire-väyläprotokolla

onewire-moduuli toteuttaa 1-Wire-väylän isäntäprotokollan, jota käyttävät esimerkiksi DS18x20-lämpötilasensori. Se käyttää yhtä avokollektoritilaan (open-drain) määriteltyä machine.Pin-nastaa kommunikoidakseen yhden tai useamman orjalaitteen kanssa jaetulla väylällä.

Esimerkki:

from machine import Pin
from onewire import OneWire

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

Luokat

class onewire.OneWire(pin: machine.Pin)

Luo 1-Wire-väylän isäntä annetulle machine.Pin-nastalle. Nasta määritellään automaattisesti avokollektoritilaan ylösvetovastuksella.

ROM-komentovakiot:

SEARCH_ROM: int

Search ROM -komento (0xF0). scan() käyttää sitä sisäisesti löytääkseen väylän laitteet.

MATCH_ROM: int

Match ROM -komento (0x55). select_rom() käyttää sitä sisäisesti osoittaakseen tietyn laitteen sen 64-bittisellä ROM-koodilla.

SKIP_ROM: int

Skip ROM -komento (0xCC). Osoittaa kaikki väylän laitteet samanaikaisesti ohittaen ROM-täsmäytyksen.

Väylän nollaus:

reset(required: bool = False) bool

Lähettää nollauspulssin väylälle. Palauttaa True, jos vähintään yksi orjalaite vastasi läsnäolopulssilla, muutoin False. Jos required on True eikä yksikään laite vastaa, nostaa OneWireError-poikkeuksen.

Bitti-/tavu-I/O:

readbit() int

Lukee väylältä yhden bitin ja palauttaa sen arvona 0 tai 1.

readbyte() int

Lukee väylältä yhden tavun ja palauttaa sen kokonaislukuna (0–255).

readinto(buf: bytearray) None

Lukee väylältä len(buf) tavua annettuun esivarattuun puskuriin.

writebit(value: int) None

Kirjoittaa väylälle yhden bitin (0 tai 1).

writebyte(value: int) None

Kirjoittaa väylälle yhden tavun (0–255).

write(buf: bytes | bytearray) None

Kirjoittaa buf-puskurin tavut väylälle.

Laitteen osoitus:

select_rom(rom: bytes | bytearray) None

Lähettää nollauksen ja sen jälkeen MATCH ROM -komennon osoittaakseen laitteen, jonka 64-bittinen ROM-koodi on rom-parametrissa (8-tavuinen puskuri).

scan() list[bytearray]

Etsii väylältä laitteet ja palauttaa listan 8-tavuisia ROM-koodeja (yksi bytearray kutakin havaittua laitetta kohti). Palauttaa tyhjän listan, jos laitteita ei ole.

Syklinen ylijäämätarkistus (CRC):

crc8(data: bytes | bytearray) int

Laskee Maxim/Dallas 8-bittisen CRC:n data-arvosta. Tulos on 0, kun data sisältää jo kelvollisen lopussa olevan CRC-tavun, mitä voidaan käyttää vastaanotetun scratchpad-sisällön kelpoisuuden tarkistamiseen.

Poikkeukset

exception onewire.OneWireError

Nostetaan, kun 1-Wire-operaatio epäonnistuu. Tällä hetkellä OneWire.reset() nostaa sen, kun required on True eikä yksikään orjalaite vastaa nollauspulssiin.