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.
إدخال/إخراج البتات/البايتات:
- readinto(buf: bytearray) None¶
قراءة
len(buf)بايتًا من الناقل إلى المخزن المؤقت المخصص مسبقًا المعطى.
مخاطبة الأجهزة:
- select_rom(rom: bytes | bytearray) None¶
إصدار إعادة ضبط متبوعة بأمر MATCH ROM لمخاطبة الجهاز الذي يوجد رمز ROM ذو 64 بت الخاص به في rom (مخزن مؤقت بحجم 8 بايت).
- scan() list[bytearray]¶
البحث في الناقل وإعادة قائمة من رموز ROM بحجم 8 بايت (عنصر
bytearrayواحد لكل جهاز مكتشَف). يُعيد قائمة فارغة إذا لم تكن هناك أجهزة.
فحص التكرار الدوري (CRC):
الاستثناءات¶
- exception onewire.OneWireError¶
يُطلَق عند فشل عملية 1-Wire. يُطلَق حاليًا من قِبل
OneWire.reset()عندما تكون required تساويTrueولا يستجيب أي جهاز تابع لنبضة إعادة الضبط.