onewire — Protocolo de bus 1-Wire¶
El módulo onewire implementa el protocolo maestro del bus 1-Wire utilizado por dispositivos como el sensor de temperatura DS18x20. Emplea un único machine.Pin configurado como colector abierto (open-drain) para comunicarse con uno o varios dispositivos esclavos en el bus compartido.
Ejemplo:
from machine import Pin
from onewire import OneWire
ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
print(rom)
Clases¶
- class onewire.OneWire(pin: machine.Pin)¶
Construye un maestro de bus 1-Wire en el
machine.Pinindicado. El pin se configura automáticamente como colector abierto (open-drain) con resistencia de pull-up.Constantes de comandos ROM:
- SEARCH_ROM: int¶
Comando Search ROM (
0xF0). Lo utiliza internamentescan()para descubrir dispositivos en el bus.
- MATCH_ROM: int¶
Comando Match ROM (
0x55). Lo utiliza internamenteselect_rom()para direccionar un dispositivo específico mediante su código ROM de 64 bits.
- SKIP_ROM: int¶
Comando Skip ROM (
0xCC). Direcciona simultáneamente todos los dispositivos del bus, omitiendo la coincidencia de ROM.
Reinicio del bus:
- reset(required: bool = False) bool¶
Emite un pulso de reinicio en el bus. Devuelve
Truesi al menos un dispositivo esclavo respondió con un pulso de presencia; en caso contrario,False. Si required esTruey ningún dispositivo responde, lanzaOneWireError.
E/S de bits y bytes:
Direccionamiento de dispositivos:
- select_rom(rom: bytes | bytearray) None¶
Emite un reinicio seguido de un comando MATCH ROM para direccionar el dispositivo cuyo código ROM de 64 bits está en rom (un búfer de 8 bytes).
- scan() list[bytearray]¶
Busca en el bus y devuelve una lista de códigos ROM de 8 bytes (un
bytearraypor cada dispositivo detectado). Devuelve una lista vacía si no hay dispositivos presentes.
Comprobación de redundancia cíclica:
Excepciones¶
- exception onewire.OneWireError¶
Se lanza cuando falla una operación 1-Wire. Actualmente la lanza
OneWire.reset()cuando required esTruey ningún esclavo responde al pulso de reinicio.