onewire --- โปรโตคอลบัส 1-Wire¶
โมดูล onewire ใช้งานโปรโตคอล 1-Wire bus master ที่ใช้กับอุปกรณ์ต่างๆ เช่น เซนเซอร์อุณหภูมิ DS18x20 โดยใช้ machine.Pin เดียวที่กำหนดค่าเป็น open-drain เพื่อสื่อสารกับอุปกรณ์ slave หนึ่งตัวหรือมากกว่าบน shared bus
ตัวอย่าง:
from machine import Pin
from onewire import OneWire
ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
print(rom)
คลาส¶
- class onewire.OneWire(pin: machine.Pin)¶
สร้าง 1-Wire bus master บน
machine.Pinที่กำหนด โดยพินจะถูกกำหนดค่าเป็น open-drain พร้อม pull-up โดยอัตโนมัติค่าคงที่คำสั่ง ROM:
- MATCH_ROM: int¶
คำสั่ง Match ROM (
0x55) ใช้ภายในโดยselect_rom()เพื่อระบุอุปกรณ์เฉพาะด้วยรหัส ROM 64 บิต
- SKIP_ROM: int¶
คำสั่ง Skip ROM (
0xCC) ส่งคำสั่งไปยังอุปกรณ์ทั้งหมดบนบัสพร้อมกัน โดยข้ามการจับคู่ ROM
การรีเซ็ตบัส:
- reset(required: bool = False) bool¶
ส่งพัลส์รีเซ็ตบนบัส คืนค่า
Trueหากอุปกรณ์ slave อย่างน้อยหนึ่งตัวตอบสนองด้วย presence pulse มิฉะนั้นคืนค่าFalseหาก required เป็นTrueและไม่มีอุปกรณ์ตอบสนอง จะเกิดOneWireError
การอ่าน/เขียนบิตและไบต์:
การระบุตำแหน่งอุปกรณ์:
- select_rom(rom: bytes | bytearray) None¶
ส่งพัลส์รีเซ็ตตามด้วยคำสั่ง MATCH ROM เพื่อระบุอุปกรณ์ที่มีรหัส ROM 64 บิตอยู่ใน rom (บัฟเฟอร์ขนาด 8 ไบต์)
- scan() list[bytearray]¶
ค้นหาบัสและคืนค่ารายการรหัส ROM ขนาด 8 ไบต์ (หนึ่ง
bytearrayต่ออุปกรณ์ที่ตรวจพบ) คืนค่ารายการว่างหากไม่มีอุปกรณ์
การตรวจสอบ cyclic redundancy:
ข้อยกเว้น¶
- exception onewire.OneWireError¶
เกิดขึ้นเมื่อการดำเนินการ 1-Wire ล้มเหลว ปัจจุบันเกิดจาก
OneWire.reset()เมื่อ required เป็นTrueและไม่มี slave ตอบสนองต่อพัลส์รีเซ็ต