onewire --- 1-Wire バスプロトコル

onewire モジュールは、DS18x20 温度センサーなどのデバイスで使用される 1-Wire バスマスタープロトコルを実装します。共有バス上の 1 つ以上のスレーブデバイスと通信するために、オープンドレインとして構成された 1 本の machine.Pin を使用します。

例:

from machine import Pin
from onewire import OneWire

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

クラス

class onewire.OneWire(pin: machine.Pin)

指定した machine.Pin 上に 1-Wire バスマスターを構築します。このピンは、プルアップ付きのオープンドレインとして自動的に構成されます。

ROM コマンド定数:

SEARCH_ROM: int

Search ROM コマンド(0xF0)。バス上のデバイスを検出するために scan() によって内部的に使用されます。

MATCH_ROM: int

Match ROM コマンド(0x55)。64 ビット ROM コードによって特定のデバイスをアドレス指定するために select_rom() によって内部的に使用されます。

SKIP_ROM: int

Skip ROM コマンド(0xCC)。ROM 照合をスキップして、バス上のすべてのデバイスを同時にアドレス指定します。

バスリセット:

reset(required: bool = False) bool

バス上にリセットパルスを発行します。少なくとも 1 つのスレーブデバイスがプレゼンスパルスで応答した場合は True を、それ以外の場合は False を返します。requiredTrue でデバイスが応答しない場合は、OneWireError を送出します。

ビット/バイト I/O:

readbit() int

バスから 1 ビットを読み取り、0 または 1 として返します。

readbyte() int

バスから 1 バイトを読み取り、整数(0--255)として返します。

readinto(buf: bytearray) None

バスから len(buf) バイトを、指定された事前割り当て済みバッファに読み込みます。

writebit(value: int) None

バスに 1 ビット(0 または 1)を書き込みます。

writebyte(value: int) None

バスに 1 バイト(0--255)を書き込みます。

write(buf: bytes | bytearray) None

buf 内のバイトをバスに書き込みます。

デバイスアドレス指定:

select_rom(rom: bytes | bytearray) None

リセットに続いて MATCH ROM コマンドを発行し、64 ビット ROM コードが rom(8 バイトのバッファ)にあるデバイスをアドレス指定します。

scan() list[bytearray]

バスを検索し、8 バイトの ROM コードのリスト(検出されたデバイスごとに 1 つの bytearray)を返します。デバイスが存在しない場合は空のリストを返します。

巡回冗長検査:

crc8(data: bytes | bytearray) int

data に対して Maxim/Dallas の 8 ビット CRC を計算します。data がすでに有効な末尾 CRC バイトを含んでいる場合、結果は 0 になります。これは受信したスクラッチパッドの内容を検証するために使用できます。

例外

exception onewire.OneWireError

1-Wire 操作が失敗した場合に送出されます。現在は、requiredTrue でリセットパルスにスレーブが応答しない場合に OneWire.reset() によって送出されます。