onewire — 1-Wire 버스 프로토콜

onewire 모듈은 DS18x20 온도 센서와 같은 장치에서 사용하는 1-Wire 버스 마스터 프로토콜을 구현합니다. 공유 버스에 연결된 하나 이상의 슬레이브 장치와 통신하기 위해 오픈 드레인으로 구성된 단일 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

ROM 검색 명령 (0xF0). 버스에서 장치를 찾기 위해 scan() 에서 내부적으로 사용됩니다.

MATCH_ROM: int

ROM 매칭 명령 (0x55). 64비트 ROM 코드로 특정 장치를 지정하기 위해 select_rom() 에서 내부적으로 사용됩니다.

SKIP_ROM: int

ROM 건너뛰기 명령 (0xCC). ROM 매칭을 건너뛰고 버스의 모든 장치를 동시에 지정합니다.

버스 리셋:

reset(required: bool = False) bool

버스에 리셋 펄스를 발행합니다. 적어도 하나의 슬레이브 장치가 존재 펄스로 응답하면 True 를, 그렇지 않으면 False 를 반환합니다. requiredTrue 이고 응답하는 장치가 없으면 OneWireError 를 발생시킵니다.

비트/바이트 I/O:

readbit() int

버스에서 단일 비트를 읽어 0 또는 1 로 반환합니다.

readbyte() int

버스에서 단일 바이트를 읽어 정수(0–255)로 반환합니다.

readinto(buf: bytearray) None

버스에서 len(buf) 바이트를 읽어 주어진 사전 할당된 버퍼에 저장합니다.

writebit(value: int) None

버스에 단일 비트(0 또는 1)를 씁니다.

writebyte(value: int) None

버스에 단일 바이트(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 코드 목록(검출된 장치당 하나의 bytearray)을 반환합니다. 장치가 없으면 빈 목록을 반환합니다.

순환 중복 검사:

crc8(data: bytes | bytearray) int

data 에 대해 Maxim/Dallas 8비트 CRC를 계산합니다. data 가 이미 유효한 후행 CRC 바이트를 포함하고 있으면 결과는 0 이 되며, 이를 수신한 스크래치패드 내용을 검증하는 데 사용할 수 있습니다.

예외

exception onewire.OneWireError

1-Wire 작업이 실패하면 발생합니다. 현재는 requiredTrue 이고 리셋 펄스에 응답하는 슬레이브가 없을 때 OneWire.reset() 에서 발생합니다.