onewire --- Giao thức bus 1-Wire

Module onewire triển khai giao thức bus master 1-Wire được sử dụng bởi các thiết bị như cảm biến nhiệt độ DS18x20. Module sử dụng một machine.Pin được cấu hình là open-drain để giao tiếp với một hoặc nhiều thiết bị slave trên bus dùng chung.

Ví dụ:

from machine import Pin
from onewire import OneWire

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

Các lớp

class onewire.OneWire(pin: machine.Pin)

Khởi tạo bus master 1-Wire trên machine.Pin đã cho. Chân (pin) được tự động cấu hình là open-drain với pull-up.

Các hằng số lệnh ROM:

SEARCH_ROM: int

Lệnh Search ROM (0xF0). Được sử dụng nội bộ bởi scan() để phát hiện các thiết bị trên bus.

MATCH_ROM: int

Lệnh Match ROM (0x55). Được sử dụng nội bộ bởi select_rom() để địa chỉ hóa một thiết bị cụ thể theo mã ROM 64-bit của nó.

SKIP_ROM: int

Lệnh Skip ROM (0xCC). Địa chỉ hóa đồng thời tất cả các thiết bị trên bus, bỏ qua việc so khớp ROM.

Reset bus:

reset(required: bool = False) bool

Phát xung reset trên bus. Trả về True nếu ít nhất một thiết bị slave phản hồi bằng xung presence, ngược lại trả về False. Nếu requiredTrue và không có thiết bị nào phản hồi, sẽ phát sinh OneWireError.

I/O bit/byte:

readbit() int

Đọc một bit từ bus và trả về dưới dạng 0 hoặc 1.

readbyte() int

Đọc một byte từ bus và trả về dưới dạng số nguyên (0--255).

readinto(buf: bytearray) None

Đọc len(buf) byte từ bus vào bộ đệm được cấp phát sẵn.

writebit(value: int) None

Ghi một bit (0 hoặc 1) lên bus.

writebyte(value: int) None

Ghi một byte (0--255) lên bus.

write(buf: bytes | bytearray) None

Ghi các byte trong buf lên bus.

Địa chỉ hóa thiết bị:

select_rom(rom: bytes | bytearray) None

Phát reset rồi gửi lệnh MATCH ROM để địa chỉ hóa thiết bị có mã ROM 64-bit nằm trong rom (bộ đệm 8 byte).

scan() list[bytearray]

Quét bus và trả về danh sách các mã ROM 8 byte (mỗi bytearray tương ứng một thiết bị được phát hiện). Trả về danh sách rỗng nếu không có thiết bị nào.

Kiểm tra dự phòng vòng (CRC):

crc8(data: bytes | bytearray) int

Tính CRC 8-bit Maxim/Dallas trên data. Kết quả là 0 khi data đã bao gồm byte CRC hợp lệ ở cuối, có thể dùng để xác thực nội dung scratchpad nhận được.

Các ngoại lệ

exception onewire.OneWireError

Được phát sinh khi thao tác 1-Wire thất bại. Hiện tại được phát sinh bởi OneWire.reset() khi requiredTrue và không có slave nào phản hồi xung reset.