onewire — sběrnicový protokol 1-Wire

Modul onewire implementuje protokol řadiče sběrnice 1-Wire používaný zařízeními jako je teplotní senzor DS18x20. Pro komunikaci s jedním nebo více podřízenými zařízeními na sdílené sběrnici využívá jediný machine.Pin nakonfigurovaný jako open-drain.

Příklad:

from machine import Pin
from onewire import OneWire

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

Třídy

class onewire.OneWire(pin: machine.Pin)

Vytvoří řadič sběrnice 1-Wire na zadaném machine.Pin. Pin je automaticky nakonfigurován jako open-drain s pull-up rezistorem.

Konstanty ROM příkazů:

SEARCH_ROM: int

Příkaz Search ROM (0xF0). Interně používán metodou scan() k objevení zařízení na sběrnici.

MATCH_ROM: int

Příkaz Match ROM (0x55). Interně používán metodou select_rom() k adresování konkrétního zařízení podle jeho 64bitového ROM kódu.

SKIP_ROM: int

Příkaz Skip ROM (0xCC). Adresuje všechna zařízení na sběrnici současně a přeskakuje porovnávání ROM.

Reset sběrnice:

reset(required: bool = False) bool

Vyšle resetovací impuls na sběrnici. Vrací True, pokud alespoň jedno podřízené zařízení odpovědělo impulsem přítomnosti, jinak False. Pokud je required True a žádné zařízení neodpoví, vyvolá OneWireError.

Bitový/bytový vstup/výstup:

readbit() int

Přečte jeden bit ze sběrnice a vrátí jej jako 0 nebo 1.

readbyte() int

Přečte jeden byte ze sběrnice a vrátí jej jako celé číslo (0–255).

readinto(buf: bytearray) None

Přečte ze sběrnice len(buf) bytů do zadaného předem alokovaného bufferu.

writebit(value: int) None

Zapíše na sběrnici jeden bit (0 nebo 1).

writebyte(value: int) None

Zapíše na sběrnici jeden byte (0–255).

write(buf: bytes | bytearray) None

Zapíše na sběrnici byty z buf.

Adresování zařízení:

select_rom(rom: bytes | bytearray) None

Vyšle reset následovaný příkazem MATCH ROM k adresování zařízení, jehož 64bitový ROM kód je v rom (8bytový buffer).

scan() list[bytearray]

Prohledá sběrnici a vrátí seznam 8bytových ROM kódů (jeden bytearray na každé detekované zařízení). Vrací prázdný seznam, pokud nejsou přítomna žádná zařízení.

Cyklický redundantní součet:

crc8(data: bytes | bytearray) int

Vypočítá 8bitový CRC Maxim/Dallas nad data. Výsledek je 0, pokud data již obsahují platný koncový CRC byte, což lze použít k ověření přijatého obsahu scratchpadu.

Výjimky

exception onewire.OneWireError

Vyvolána, když operace 1-Wire selže. Aktuálně ji vyvolává OneWire.reset(), když je required True a žádné podřízené zařízení neodpoví na resetovací impuls.