مكتبات OpenMV MicroPython¶
تحذير
ملخص مهم لهذا القسم
توفّر MicroPython وحدات مدمجة تحاكي وظيفة مكتبة Python القياسية (مثل
osوtime)، إضافة إلى الوحدات الخاصة بـ MicroPython (مثلbluetoothوmachine).تنفّذ معظم وحدات مكتبة Python القياسية مجموعة فرعية من وظائف وحدة Python المكافئة، وفي حالات قليلة توفّر بعض الامتدادات الخاصة بـ MicroPython (مثل
arrayوos)بسبب قيود الموارد أو محددات أخرى، قد لا تتضمن بعض المنافذ أو إصدارات البرنامج الثابت كل الوظائف الموثّقة هنا.
للسماح بقابلية التوسعة، يمكن توسيع بعض الوحدات المدمجة من شيفرة Python المحمّلة على نظام ملفات الجهاز.
يصف هذا الفصل الوحدات (مكتبات الدوال والأصناف) المدمجة في MicroPython. يطمح هذا التوثيق بشكل عام إلى وصف جميع الوحدات والدوال/الأصناف المنفّذة في مشروع MicroPython. غير أن MicroPython قابلة للتهيئة بدرجة عالية، وقد يتضمن كل منفذ إلى لوحة/نظام مضمّن معين مجموعة فرعية فقط من مكتبات MicroPython المتاحة.
ومع وضع ذلك في الاعتبار، يُرجى الانتباه إلى أن بعض الدوال/الأصناف في وحدة ما (أو حتى الوحدة بأكملها) الموصوفة في هذا التوثيق قد لا تكون متاحة في بناء معين لـ MicroPython على نظام معين. أفضل مكان للعثور على معلومات عامة حول توفر/عدم توفر ميزة معينة هو قسم "General Information" الذي يحتوي على معلومات تخص MicroPython port معيناً.
في بعض المنافذ يمكنك اكتشاف المكتبات المدمجة المتاحة التي يمكن استيرادها بإدخال ما يلي في REPL
help('modules')
إلى جانب المكتبات المدمجة الموصوفة في هذا التوثيق، يمكن العثور على المزيد من الوحدات من مكتبة Python القياسية، إضافة إلى امتدادات MicroPython الأخرى لها، في micropython-lib.
مكتبات Python القياسية والمكتبات المصغّرة¶
جرى "تصغير" مكتبات Python القياسية التالية لتتلاءم مع فلسفة MicroPython. وهي توفّر الوظيفة الأساسية لتلك الوحدة وتهدف إلى أن تكون بديلاً جاهزاً لمكتبة Python القياسية.
array--- مصفوفات من البيانات العدديةasyncio--- مجدول الإدخال/الإخراج غير المتزامنbinascii--- تحويلات ثنائية/ASCIIbuiltins--- الدوال والاستثناءات المدمجةcmath--- دوال رياضية للأعداد المركبةcollections--- أنواع المجموعات والحاوياتerrno--- أكواد أخطاء النظامgc--- التحكم في جامع المهملاتgzip--- ضغط وفك ضغط gziphashlib--- خوارزميات التجزئة (hashing)heapq--- خوارزمية طابور الكومة (heap queue)io--- تدفقات الإدخال/الإخراجjson--- ترميز JSON وفك ترميزهmarshal--- تسلسل كائنات Pythonmath--- الدوال الرياضيةos--- خدمات "نظام التشغيل" الأساسيةplatform--- الوصول إلى البيانات التعريفية للمنصة الأساسيةrandom--- توليد أعداد عشوائيةre--- التعبيرات النمطية البسيطةselect--- الانتظار للأحداث على مجموعة من التدفقاتsocket--- وحدة المقابس (socket)ssl--- وحدة SSL/TLSstring.templatelib--- دعم سلاسل القوالبstruct--- حزم وفك حزم أنواع البيانات البدائيةsys--- دوال خاصة بالنظامtime--- دوال متعلقة بالوقتtypes--- أسماء للأنواع المدمجةzlib--- ضغط وفك ضغط zlib
مكتبات OpenMV Cam¶
تصف الأقسام التالية المكتبات المتاحة على كل لوحة مدعومة من OpenMV، بما في ذلك الوحدات المدمجة الخاصة بـ MicroPython وامتدادات OpenMV الخاصة.
الوحدات المشتركة¶
مدمجة في البرنامج الثابت على كل لوحة كاميرا OpenMV.
bluetooth--- Bluetooth منخفض المستوىcryptolib--- شيفرات التعميةdeflate--- ضغط وفك ضغط deflateframebuf--- التعامل مع مخزن الإطاراتmachine--- الدوال المتعلقة بالعتادmicropython--- الوصول إلى مكوّنات MicroPython الداخلية والتحكم فيهاnetwork--- تهيئة الشبكةopenamp--- يوفّر دعمًا قياسيًا للمعالجة المتعددة غير المتماثلة (AMP)uctypes--- الوصول إلى البيانات الثنائية بطريقة منظمةvfs--- التحكم في نظام الملفات الافتراضيcsi--- مستشعرات الكاميراsensor--- مستشعر الكاميراimage--- الرؤية الآليةgif--- تسجيل gifmjpeg--- تسجيل mjpegaudio--- وحدة الصوتdisplay--- مشغّل العرضfir--- مشغّل المستشعر الحراري (fir == far infrared)tof--- مشغل مستشعر زمن الرحلةimu--- مستشعر imuomv--- معلومات OpenMV Camcrc--- حساب CRCml--- التعلم الآليulab--- مكتبة مصفوفات متوافقة مع numpyprotocol--- قنوات بروتوكول OpenMVlogging--- تسجيل الأحداثsenml--- لغة ترميز المستشعرات (Sensor Markup Language)
مساعدات Python المجمّدة المشحونة على معظم لوحات كاميرا OpenMV (المشغّلات والشبكات والأدوات المساعدة):
aioble--- BLE غير المتزامنrpc--- مكتبة rpcrtsp--- مكتبة rtspmqtt--- عميل MQTT بسيطrequests--- عميل HTTPmutex--- وحدة mutexpid--- متحكم تناسبي-تكاملي-تفاضليbno055--- مشغّل وحدة القياس بالقصور الذاتي BNO055modbus--- بروتوكول Modbus RTU للتابع (slave)vl53l1x--- مشغّل مستشعر المسافة VL53L1X بتقنية ToF
مساعدات الشبكات (تتطلب واجهة شبكة عاملة):
إطار عمل الويب¶
وحدات إطار عمل خادم الويب. راجع أقسام كل لوحة أدناه لمعرفة اللوحات التي تتضمن كلاً منها.
الوحدات الخاصة بالمنفذ¶
وحدات مرتبطة بعائلة MCU معينة. راجع أقسام كل لوحة أدناه لمعرفة اللوحات التي تتضمن كلاً منها.
مشغّلات العتاد¶
مشغّلات للمستشعرات والشاشات والطرفيات الأخرى المشحونة على لوحة واحدة أو أكثر من اللوحات المدعومة من OpenMV. راجع أقسام كل لوحة أدناه لمعرفة اللوحات التي تتضمن كلاً منها.
dht--- مستشعرات الحرارة/الرطوبة DHT11 و DHT22onewire--- بروتوكول ناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDslsm6dsox--- وحدة قياس بالقصور الذاتي LSM6DSOX سداسية المحاورbmi270--- وحدة قياس بالقصور الذاتي IMU سداسية المحاور BMI270bmm150--- مقياس مغناطيسي ثلاثي المحاور BMM150lsm9ds1--- وحدة قياس بالقصور الذاتي LSM9DS1 تساعية المحاورhts221--- مستشعر الرطوبة/الحرارة HTS221lps22h--- مستشعر الضغط LPS22HB/HHhs3003--- مستشعر الرطوبة/الحرارة HS3003espflash--- أداة كتابة البرنامج الثابت في محمّل إقلاع ROM لشريحة ESP32imu--- مساعد IMU لـ Arduino Nano 33 BLE Sensessd1306--- مشغل OLEDtb6612--- مشغل المحرك TB6612pca9674a--- مشغّل موسّع I2Ctfp410--- وحدة تحكم DVI/HDMIft5x06--- مشغّل شاشة اللمسgt911--- متحكم اللمس السعوي خماسي النقاط GT911lora--- مشغّل مودم LoRaapds9960--- مُشغّل مستشعر القرب والإيماءات واللونromfs--- أدوات ROMFS المساعدة
التوفر لكل لوحة¶
تُظهر القوائم أدناه الوحدات الخاصة بالمنفذ ووحدات المشغّلات المشحونة على كل لوحة. جميع الوحدات في Common وFrozen Python helpers وNetworking helpers (أعلاه) متاحة على كل لوحة كاميرا ما لم يُذكر خلاف ذلك.
OpenMV N6
STM32N657 (Cortex-M55 بتردد 800 MHz) مع وحدة NPU مدمجة بتردد 1 GHz مصنّفة عند 600 GOPS INT8. يقترن وحدة NPU بمستشعر PAG7936 ذي المصراع العام بدقة 1 ميغابكسل.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةssd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612jwt--- رموز JSON Web Tokensmicrodot--- إطار عمل HTTP مبسّط
OpenMV AE3
نظام على شريحة ثنائي النواة Alif Ensemble E3: Cortex-M55 بتردد 400 MHz (HP) إضافة إلى Cortex-M55 بتردد 160 MHz (HE)، مع وحدتي NPU مدمجتين (NPU من نوع HP بتردد 400 MHz / 204 GOPS + NPU من نوع HE بتردد 160 MHz / 46 GOPS).
alif--- دوال نظام Alif Ensemble على شريحةromfs--- أدوات ROMFS المساعدةpca9674a--- مشغّل موسِّع I2C من نوع PCA9674Ajwt--- رموز JSON Web Tokensmicrodot--- إطار عمل HTTP مبسّط
OpenMV Cam RT1062
لوحة رؤية آلية منخفضة الطاقة مبنية حول NXP i.MX RT1062 (Cortex-M7 بتردد 600 MHz). تجمع بين شبكات USB-C عالية السرعة وWi-Fi / Bluetooth وEthernet بسرعة 10/100.
mimxrt--- وظائف خاصة بـ NXP i.MX RTdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDssd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612pca9674a--- مشغّل موسِّع I2C من نوع PCA9674Ajwt--- رموز JSON Web Tokensmicrodot--- إطار عمل HTTP مبسّط
OpenMV Pure Thermal
لوحة تصوير حراري كاملة النظام مبنية حول STM32H743 (Cortex-M7 بتردد 480 MHz) مع ذاكرة SDRAM خارجية بسعة 64 ميغابايت، وذاكرة فلاش QSPI بسعة 32 ميغابايت، ومُرمِّز JPEG عتادي، وخرج DVI/HDMI.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةtfp410--- مُسلسِل DVI/HDMIft5x06--- مشغّل شاشة لمس سعويةdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDssd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 بتردد 480 MHz) مع ذاكرة SDRAM خارجية بسعة 32 ميغابايت، وذاكرة فلاش QSPI بسعة 32 ميغابايت، ومُرمِّز JPEG عتادي، ووحدة الكاميرا OV5640 بدقة 5 ميغابكسل.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDssd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 بتردد 480 MHz) مع ذاكرة SRAM داخلية بسعة 1 ميغابايت، وذاكرة فلاش داخلية بسعة 2 ميغابايت، ومُرمِّز JPEG عتادي.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDssd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 بتردد 216 MHz) مع ذاكرة SRAM داخلية بسعة 512 كيلوبايت، وذاكرة فلاش داخلية بسعة 2 ميغابايت. تأتي مع المستشعر OV7725.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDssd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 بتردد 180 MHz) مع ذاكرة SRAM داخلية بسعة 256 كيلوبايت، وذاكرة فلاش داخلية بسعة 1 ميغابايت. تأتي مع المستشعر OV7725.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDssd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612
Arduino Nicla Vision
لوحة رؤية آلية بأبعاد 22.86 × 22.86 مم مبنية حول النظام ثنائي النواة على شريحة STM32H747AII6: Cortex-M7 بتردد 400 MHz إضافة إلى Cortex-M4 بتردد 200 MHz.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةlsm6dsox--- IMU بستة محاور من نوع LSM6DSOXdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22ds18x20--- مشغّل مستشعر الحرارة DS18x20onewire--- بروتوكول الناقل 1-Wireneopixel--- التحكم في مصابيح WS2812 / NeoPixel LED
Arduino Portenta H7
لوحة تطوير صناعية بأبعاد 66 × 25 مم مبنية حول النظام ثنائي النواة على شريحة STM32H747XI: Cortex-M7 بتردد 400 MHz إضافة إلى Cortex-M4 بتردد 200 MHz.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22ds18x20--- مشغّل مستشعر الحرارة DS18x20onewire--- بروتوكول الناقل 1-Wireneopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDlora--- مشغّل مودم LoRassd1306--- مشغّل OLEDtb6612--- مشغّل المحركات TB6612
Arduino Giga R1 WiFi
لوحة بحجم Mega بأبعاد 101 × 53 مم مبنية حول النظام ثنائي النواة على شريحة STM32H747XI: Cortex-M7 بتردد 480 MHz إضافة إلى Cortex-M4 بتردد 240 MHz، مع شاشة لمس مدمجة بدقة 800x480.
pyb--- دوال متعلقة باللوحةstm--- وظائف خاصة بمتحكمات STM32 الدقيقةdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireneopixel--- التحكم في مصابيح WS2812 / NeoPixel LEDgt911--- متحكم لمس سعوي بخمس نقاط من نوع GT911ft5x06--- مشغّل شاشة لمس سعوية
Arduino Nano RP2040 Connect
لوحة بحجم Nano مبنية على RP2040 مع وحدة Wi-Fi/Bluetooth من نوع U-blox NINA-W102. لم تعد مدعومة بنشاط؛ يُحتفظ بآخر إصدار برنامج ثابت من OpenMV لهذه اللوحة للأغراض الأرشيفية.
rp2--- مساعدات PIO / DMA / الفلاش الخاصة بـ RP2040espflash--- أداة كتابة البرنامج الثابت لمحمّل إقلاع ROM الخاص بـ ESP32lsm6dsox--- IMU بستة محاور من نوع LSM6DSOXdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LED
Arduino Nano 33 BLE Sense
لوحة بحجم Nano من نوع Nordic nRF52840 مع مجموعة مستشعرات Arduino المدمجة. لم تعد مدعومة بنشاط؛ يُحتفظ بآخر إصدار برنامج ثابت من OpenMV لهذه اللوحة للأغراض الأرشيفية.
ubluepy--- واجهة برمجة طرفية ومركزية لـ Bluetooth LE على Nordic SoftDevicebmi270--- IMU بستة محاور من نوع BMI270bmm150--- مقياس مغناطيسية ثلاثي المحاور من نوع BMM150lsm9ds1--- IMU بتسعة محاور من نوع LSM9DS1hts221--- مستشعر الرطوبة/الحرارة HTS221lps22h--- مستشعر الضغط LPS22HB/HHhs3003--- مستشعر الرطوبة/الحرارة HS3003apds9960--- مشغّل مستشعر القرب والإيماءات واللونdht--- مستشعرات الحرارة/الرطوبة DHT11 وDHT22onewire--- بروتوكول الناقل 1-Wireds18x20--- مشغّل مستشعر الحرارة DS18x20neopixel--- التحكم في مصابيح WS2812 / NeoPixel LED
توسيع المكتبات المدمجة من Python¶
يمكن توسيع مجموعة فرعية من الوحدات المدمجة بشيفرة Python عبر توفير وحدة بالاسم نفسه في نظام الملفات. تنطبق قابلية التوسعة هذه على وحدات مكتبة Python القياسية التالية المدمجة في البرنامج الثابت: array وbinascii وcollections وerrno وgzip وhashlib وheapq وio وjson وos وplatform وrandom وre وselect وsocket وssl وstruct وtime وzlib، إضافة إلى وحدة machine الخاصة بـ MicroPython. أما جميع الوحدات المدمجة الأخرى فلا يمكن توسيعها من نظام الملفات.
يتيح هذا للمستخدم توفير تنفيذ موسَّع لمكتبة مدمجة (ربما لتوفير توافق إضافي مع CPython أو وظيفة مفقودة). يُستخدم هذا على نطاق واسع في micropython-lib، راجع إدارة الحزم لمزيد من المعلومات. عادةً ما تُجري وحدة نظام الملفات استيراداً بحرف بدل من الوحدة المدمجة لكي ترث جميع المتغيرات العامة (الأصناف والدوال والمتغيرات) من المدمجة.
في الإصدار v1.21.0 من MicroPython وما بعده، ولمنع وحدة نظام الملفات من استيراد نفسها، يمكنها فرض استيراد الوحدة المدمجة عبر إفراغ sys.path مؤقتاً أثناء الاستيراد. على سبيل المثال، لتوسيع وحدة time من Python، يقوم ملف باسم time.py على نظام الملفات بما يلي:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
والنتيجة أن time.py يحتوي على جميع المتغيرات العامة لوحدة time المدمجة، لكنه يضيف extra_method.
في الإصدارات الأقدم من MicroPython، يمكنك فرض استيراد وحدة مدمجة بإضافة الحرف u إلى بداية اسمها. على سبيل المثال، import utime بدلاً من import time. فمثلاً، قد يبدو time.py على نظام الملفات كما يلي:
from utime import *
def extra_method():
pass
لا تزال هذه الطريقة مدعومة، لكن طريقة sys.path الموصوفة أعلاه هي المفضّلة الآن لأن البادئة u ستُزال من أسماء الوحدات المدمجة في إصدار مستقبلي من MicroPython.
باستثناء الحالات التي تحتاج فيها تحديداً إلى فرض استخدام الوحدة المدمجة، ينبغي للشيفرة دائماً استخدام import module بدلاً من import umodule.