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 metodouscan()k objevení zařízení na sběrnici.
- MATCH_ROM: int¶
Příkaz Match ROM (
0x55). Interně používán metodouselect_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, jinakFalse. Pokud je requiredTruea žádné zařízení neodpoví, vyvoláOneWireError.
Bitový/bytový vstup/výstup:
- readinto(buf: bytearray) None¶
Přečte ze sběrnice
len(buf)bytů do zadaného předem alokovaného bufferu.
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
bytearrayna každé detekované zařízení). Vrací prázdný seznam, pokud nejsou přítomna žádná zařízení.
Cyklický redundantní součet:
Výjimky¶
- exception onewire.OneWireError¶
Vyvolána, když operace 1-Wire selže. Aktuálně ji vyvolává
OneWire.reset(), když je requiredTruea žádné podřízené zařízení neodpoví na resetovací impuls.