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 ولا يستجيب أي جهاز تابع لنبضة إعادة الضبط.