onewire — protokol sabirnice 1-Wire

Modul onewire implementira master protokol sabirnice 1-Wire koji koriste uređaji poput senzora temperature DS18x20. Koristi jedan machine.Pin konfiguriran kao open-drain za komunikaciju s jednim ili više podređenih uređaja na zajedničkoj sabirnici.

Primjer:

from machine import Pin
from onewire import OneWire

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

Klase

class onewire.OneWire(pin: machine.Pin)

Stvara master sabirnice 1-Wire na zadanom machine.Pin. Pin se automatski konfigurira kao open-drain s pull-up otpornikom.

Konstante ROM naredbi:

SEARCH_ROM: int

Naredba Search ROM (0xF0). Interno je koristi scan() za otkrivanje uređaja na sabirnici.

MATCH_ROM: int

Naredba Match ROM (0x55). Interno je koristi select_rom() za adresiranje određenog uređaja prema njegovom 64-bitnom ROM kodu.

SKIP_ROM: int

Naredba Skip ROM (0xCC). Istovremeno adresira sve uređaje na sabirnici, preskačući podudaranje ROM koda.

Resetiranje sabirnice:

reset(required: bool = False) bool

Šalje reset impuls na sabirnicu. Vraća True ako je barem jedan podređeni uređaj odgovorio impulsom prisutnosti, inače False. Ako je required postavljen na True i nijedan uređaj ne odgovori, podiže OneWireError.

Bitni/bajtni U/I:

readbit() int

Čita jedan bit sa sabirnice i vraća ga kao 0 ili 1.

readbyte() int

Čita jedan bajt sa sabirnice i vraća ga kao cijeli broj (0–255).

readinto(buf: bytearray) None

Čita len(buf) bajtova sa sabirnice u zadani unaprijed alocirani međuspremnik.

writebit(value: int) None

Zapisuje jedan bit (0 ili 1) na sabirnicu.

writebyte(value: int) None

Zapisuje jedan bajt (0–255) na sabirnicu.

write(buf: bytes | bytearray) None

Zapisuje bajtove iz buf na sabirnicu.

Adresiranje uređaja:

select_rom(rom: bytes | bytearray) None

Šalje reset nakon kojeg slijedi naredba MATCH ROM za adresiranje uređaja čiji se 64-bitni ROM kod nalazi u rom (8-bajtni međuspremnik).

scan() list[bytearray]

Pretražuje sabirnicu i vraća popis 8-bajtnih ROM kodova (po jedan bytearray za svaki otkriveni uređaj). Vraća prazan popis ako nema prisutnih uređaja.

Ciklička provjera redundancije:

crc8(data: bytes | bytearray) int

Izračunava Maxim/Dallas 8-bitni CRC nad data. Rezultat je 0 kada data već sadrži valjani završni CRC bajt, što se može koristiti za provjeru valjanosti primljenog sadržaja scratchpada.

Iznimke

exception onewire.OneWireError

Podiže se kada operacija 1-Wire ne uspije. Trenutno je podiže OneWire.reset() kada je required postavljen na True i nijedan podređeni uređaj ne odgovori na reset impuls.