onewire — protocole de bus 1-Wire

Le module onewire implémente le protocole maître du bus 1-Wire utilisé par des périphériques tels que le capteur de température DS18x20. Il utilise une unique machine.Pin configurée en drain ouvert pour communiquer avec un ou plusieurs périphériques esclaves sur le bus partagé.

Exemple

from machine import Pin
from onewire import OneWire

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

Classes

class onewire.OneWire(pin: machine.Pin)

Construit un maître de bus 1-Wire sur la machine.Pin donnée. La broche est automatiquement configurée en drain ouvert avec une résistance de tirage.

Constantes de commande ROM :

SEARCH_ROM: int

Commande de recherche ROM (0xF0). Utilisée en interne par scan() pour découvrir les périphériques présents sur le bus.

MATCH_ROM: int

Commande de correspondance ROM (0x55). Utilisée en interne par select_rom() pour adresser un périphérique spécifique à l’aide de son code ROM 64 bits.

SKIP_ROM: int

Commande de saut ROM (0xCC). Adresse simultanément tous les périphériques du bus, en ignorant la correspondance ROM.

Réinitialisation du bus :

reset(required: bool = False) bool

Émet une impulsion de réinitialisation sur le bus. Renvoie True si au moins un périphérique esclave a répondu par une impulsion de présence, sinon False. Si required vaut True et qu’aucun périphérique ne répond, lève OneWireError.

E/S par bit/octet :

readbit() int

Lit un seul bit sur le bus et le renvoie sous la forme 0 ou 1.

readbyte() int

Lit un seul octet sur le bus et le renvoie sous la forme d’un entier (0–255).

readinto(buf: bytearray) None

Lit len(buf) octets du bus dans le tampon préalloué donné.

writebit(value: int) None

Écrit un seul bit (0 ou 1) sur le bus.

writebyte(value: int) None

Écrit un seul octet (0–255) sur le bus.

write(buf: bytes | bytearray) None

Écrit les octets de buf sur le bus.

Adressage des périphériques :

select_rom(rom: bytes | bytearray) None

Émet une réinitialisation suivie d’une commande MATCH ROM pour adresser le périphérique dont le code ROM 64 bits se trouve dans rom (un tampon de 8 octets).

scan() list[bytearray]

Parcourt le bus et renvoie une liste de codes ROM de 8 octets (un bytearray par périphérique détecté). Renvoie une liste vide si aucun périphérique n’est présent.

Contrôle de redondance cyclique :

crc8(data: bytes | bytearray) int

Calcule le CRC 8 bits Maxim/Dallas sur data. Le résultat est 0 lorsque data inclut déjà un octet de CRC final valide, ce qui peut servir à valider le contenu d’un scratchpad reçu.

Exceptions

exception onewire.OneWireError

Levée lorsqu’une opération 1-Wire échoue. Actuellement levée par OneWire.reset() lorsque required vaut True et qu’aucun esclave ne répond à l’impulsion de réinitialisation.