onewire — 1-Wire veri yolu protokolü

onewire modülü, DS18x20 sıcaklık sensörü gibi cihazlar tarafından kullanılan 1-Wire veri yolu yönetici (master) protokolünü uygular. Paylaşılan veri yolundaki bir veya daha fazla bağımlı (slave) cihazla iletişim kurmak için açık-drenaj olarak yapılandırılmış tek bir machine.Pin kullanır.

Örnek:

from machine import Pin
from onewire import OneWire

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

Sınıflar

class onewire.OneWire(pin: machine.Pin)

Verilen machine.Pin üzerinde bir 1-Wire veri yolu yöneticisi oluşturur. Pin, otomatik olarak yukarı çekme dirençli açık-drenaj olarak yapılandırılır.

ROM komut sabitleri:

SEARCH_ROM: int

Search ROM komutu (0xF0). Veri yolundaki cihazları keşfetmek için scan() tarafından dahili olarak kullanılır.

MATCH_ROM: int

Match ROM komutu (0x55). Belirli bir cihazı 64-bit ROM koduyla adreslemek için select_rom() tarafından dahili olarak kullanılır.

SKIP_ROM: int

Skip ROM komutu (0xCC). ROM eşleştirmesini atlayarak veri yolundaki tüm cihazları aynı anda adresler.

Veri yolu sıfırlama:

reset(required: bool = False) bool

Veri yolunda bir sıfırlama darbesi gönderir. En az bir bağımlı cihaz bir varlık darbesiyle yanıt verirse True, aksi takdirde False döndürür. required True ise ve hiçbir cihaz yanıt vermezse OneWireError yükseltir.

Bit/bayt G/Ç:

readbit() int

Veri yolundan tek bir bit okur ve 0 veya 1 olarak döndürür.

readbyte() int

Veri yolundan tek bir bayt okur ve bir tamsayı olarak döndürür (0–255).

readinto(buf: bytearray) None

Veri yolundan len(buf) bayt okur ve verilen önceden ayrılmış arabelleğe yazar.

writebit(value: int) None

Veri yoluna tek bir bit (0 veya 1) yazar.

writebyte(value: int) None

Veri yoluna tek bir bayt (0–255) yazar.

write(buf: bytes | bytearray) None

buf içindeki baytları veri yoluna yazar.

Cihaz adresleme:

select_rom(rom: bytes | bytearray) None

64-bit ROM kodu rom (8 baytlık bir arabellek) içinde bulunan cihazı adreslemek için bir sıfırlama ardından bir MATCH ROM komutu gönderir.

scan() list[bytearray]

Veri yolunu arar ve 8 baytlık ROM kodlarının bir listesini döndürür (tespit edilen her cihaz için bir bytearray). Hiçbir cihaz yoksa boş bir liste döndürür.

Döngüsel artıklık denetimi (CRC):

crc8(data: bytes | bytearray) int

data üzerinden Maxim/Dallas 8-bit CRC değerini hesaplar. data zaten geçerli bir sondaki CRC baytı içeriyorsa sonuç 0 olur; bu da alınan scratchpad içeriğini doğrulamak için kullanılabilir.

İstisnalar

exception onewire.OneWireError

Bir 1-Wire işlemi başarısız olduğunda yükseltilir. Şu anda, required True olduğunda ve hiçbir bağımlı cihaz sıfırlama darbesine yanıt vermediğinde OneWire.reset() tarafından yükseltilir.