onewire — 1-Wire-Busprotokoll¶
Das Modul onewire implementiert das 1-Wire-Bus-Master-Protokoll, das von Geräten wie dem DS18x20-Temperatursensor verwendet wird. Es nutzt einen einzelnen machine.Pin, der als Open-Drain konfiguriert ist, um mit einem oder mehreren Slave-Geräten am gemeinsam genutzten Bus zu kommunizieren.
Beispiel:
from machine import Pin
from onewire import OneWire
ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
print(rom)
Klassen¶
- class onewire.OneWire(pin: machine.Pin)¶
Erzeugt einen 1-Wire-Bus-Master am angegebenen
machine.Pin. Der Pin wird automatisch als Open-Drain mit Pull-up konfiguriert.ROM-Befehlskonstanten:
- SEARCH_ROM: int¶
Search-ROM-Befehl (
0xF0). Wird intern vonscan()verwendet, um Geräte am Bus zu erkennen.
- MATCH_ROM: int¶
Match-ROM-Befehl (
0x55). Wird intern vonselect_rom()verwendet, um ein bestimmtes Gerät über seinen 64-Bit-ROM-Code zu adressieren.
- SKIP_ROM: int¶
Skip-ROM-Befehl (
0xCC). Adressiert alle Geräte am Bus gleichzeitig und überspringt dabei den ROM-Abgleich.
Bus-Reset:
- reset(required: bool = False) bool¶
Sendet einen Reset-Impuls auf dem Bus. Gibt
Truezurück, wenn mindestens ein Slave-Gerät mit einem Presence-Impuls geantwortet hat, andernfallsFalse. Wenn requiredTrueist und kein Gerät antwortet, wirdOneWireErrorausgelöst.
Bit-/Byte-Ein-/Ausgabe:
- readinto(buf: bytearray) None¶
Liest
len(buf)Bytes vom Bus in den angegebenen vorab zugewiesenen Puffer.
Geräteadressierung:
- select_rom(rom: bytes | bytearray) None¶
Sendet einen Reset gefolgt von einem MATCH-ROM-Befehl, um das Gerät zu adressieren, dessen 64-Bit-ROM-Code in rom (einem 8-Byte-Puffer) enthalten ist.
- scan() list[bytearray]¶
Durchsucht den Bus und gibt eine Liste von 8-Byte-ROM-Codes zurück (ein
bytearraypro erkanntem Gerät). Gibt eine leere Liste zurück, wenn keine Geräte vorhanden sind.
Zyklische Redundanzprüfung:
Ausnahmen¶
- exception onewire.OneWireError¶
Wird ausgelöst, wenn eine 1-Wire-Operation fehlschlägt. Wird derzeit von
OneWire.reset()ausgelöst, wenn requiredTrueist und kein Slave auf den Reset-Impuls antwortet.