onewire --- بروتوكول ناقل 1-Wire

تطبّق الوحدة onewire بروتوكول السيد (master) لناقل 1-Wire المستخدَم من قِبل أجهزة مثل مستشعر درجة الحرارة DS18x20. وهي تستخدم machine.Pin واحدًا مهيّأً بنمط المصرف المفتوح (open-drain) للتواصل مع جهاز تابع واحد أو أكثر على الناقل المشترك.

مثال:

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)

إنشاء سيد لناقل 1-Wire على machine.Pin المعطى. يُهيّأ الدبوس تلقائيًا بنمط المصرف المفتوح مع مقاومة سحب لأعلى (pull-up).

ثوابت أوامر ROM:

SEARCH_ROM: int

أمر البحث في ROM (0xF0). يُستخدم داخليًا من قِبل scan() لاكتشاف الأجهزة على الناقل.

MATCH_ROM: int

أمر مطابقة ROM (0x55). يُستخدم داخليًا من قِبل select_rom() لمخاطبة جهاز محدد عبر رمز ROM ذي 64 بت الخاص به.

SKIP_ROM: int

أمر تخطّي ROM (0xCC). يُخاطب جميع الأجهزة على الناقل في آنٍ واحد، متخطّيًا مطابقة ROM.

إعادة ضبط الناقل:

reset(required: bool = False) bool

إصدار نبضة إعادة ضبط على الناقل. يُعيد True إذا استجاب جهاز تابع واحد على الأقل بنبضة حضور، وإلا فيُعيد False. إذا كانت required تساوي True ولم يستجب أي جهاز، فيُطلق OneWireError.

إدخال/إخراج البتات/البايتات:

readbit() int

قراءة بت واحد من الناقل وإعادته بصيغة 0 أو 1.

readbyte() int

قراءة بايت واحد من الناقل وإعادته كعدد صحيح (0--255).

readinto(buf: bytearray) None

قراءة len(buf) بايتًا من الناقل إلى المخزن المؤقت المخصص مسبقًا المعطى.

writebit(value: int) None

كتابة بت واحد (0 أو 1) إلى الناقل.

writebyte(value: int) None

كتابة بايت واحد (0--255) إلى الناقل.

write(buf: bytes | bytearray) None

كتابة البايتات في buf إلى الناقل.

مخاطبة الأجهزة:

select_rom(rom: bytes | bytearray) None

إصدار إعادة ضبط متبوعة بأمر MATCH ROM لمخاطبة الجهاز الذي يوجد رمز ROM ذو 64 بت الخاص به في rom (مخزن مؤقت بحجم 8 بايت).

scan() list[bytearray]

البحث في الناقل وإعادة قائمة من رموز ROM بحجم 8 بايت (عنصر bytearray واحد لكل جهاز مكتشَف). يُعيد قائمة فارغة إذا لم تكن هناك أجهزة.

فحص التكرار الدوري (CRC):

crc8(data: bytes | bytearray) int

حساب فحص CRC ذي 8 بتات من نوع Maxim/Dallas على data. تكون النتيجة 0 عندما تتضمن data بالفعل بايت CRC صالحًا في النهاية، وهو ما يمكن استخدامه للتحقق من صحة محتويات المفكرة (scratchpad) المستلَمة.

الاستثناءات

exception onewire.OneWireError

يُطلَق عند فشل عملية 1-Wire. يُطلَق حاليًا من قِبل OneWire.reset() عندما تكون required تساوي True ولا يستجيب أي جهاز تابع لنبضة إعادة الضبط.