v1.1.0

الإصدار v1.1.0 هو إصدار البنية التأسيسية: فهو يتخلى عن الوحدات الطرفية المخصصة المبكرة لصالح الوحدات المدمجة القياسية في MicroPython، وينقل واجهة برمجة تطبيقات التصوير إلى وحدة image وساعة معدل الإطارات إلى time، ويضيف سلاسل Haar مدمجة، وget_pixel() / set_pixel()، ودعم لوحة OpenMV 2، وتصحيح الأخطاء عبر USB-CDC. وهو إصدار ذو تغييرات جذرية كثيرة ومحدِّد لواجهة برمجة التطبيقات — اقرأ التغييرات الجذرية أدناه.

أبرز الميزات

  • الوحدات المدمجة في MicroPython — أُزيلت الوحدات المخصصة gpio / led / spi / socket / wlan / uart / file / select لصالح pyb / machine في MicroPython.

  • وحدة image — أصبحت Image() / HaarCascade() / الواصفات الآن في وحدة image.

  • time.clock — انتقلت ساعة معدل الإطارات إلى وحدة time.

  • سلاسل Haar مدمجةHaarCascade("frontalface") / HaarCascade("eye") (لا حاجة إلى ملف).

  • دعم لوحة OpenMV 2 وتصحيح الأخطاء عبر USB-CDC.

  • تغيير جذري: أُعيد تعريف بنية الوحدات — انظر التغييرات الجذرية.

ميزات جديدة

  • الصورة — تمت إضافة Image.get_pixel(x, y) / set_pixel() والوصول إلى البكسل بالفهرسة img[i]؛ وسلاسل Haar مدمجة في ذاكرة الفلاش (HaarCascade("frontalface") / HaarCascade("eye")) وكلمة مفتاحية stages= لتحديد مراحل السلسلة؛ وتعمل draw_string() على الصور بتدرج الرمادي.

  • المستشعر — تمت إضافة sensor.set_colorbar() وsensor.set_saturation() وحجم الإطار QQVGA2.

  • mlxmlx.read(type) مع خرج mlx.RAINBOW / mlx.GRAYSCALE.

  • تصحيح الأخطاء — تم تنفيذ تصحيح الأخطاء عبر USB CDC، واستعلام fw_version() لإصدار البرنامج الثابت، وبرنامج ثابت خاص بكل لوحة (OpenMV 1 / OpenMV 2)، وبرامج نصية للاختبار الذاتي / شريط الألوان؛ وتُسجَّل الأخطاء الفادحة/أخطاء التحليل في ذاكرة الفلاش.

تغييرات وتحسينات أخرى

  • أصبح نفاد الذاكرة يطلق MemoryError بدلًا من OSError؛ وتعمل البرامج النصية مع إعادة إطلاق الاستثناءات بحيث تُطبع الأخطاء بدلًا من الانهيار؛ ومعدل الباود التسلسلي قابل للتهيئة (الافتراضي 921600)؛ ونظام ملفات فلاش أكبر؛ وخُفّض معدل ساعة بكسل المستشعر إلى 54 MHz لاستقرار الالتقاط؛ وتعتمد sensor.reset() على إعادة ضبط برمجية للمستشعر فقط.

إصلاحات الأخطاء

  • تم إصلاح مطابقة القوالب، وتكرار find_features() للكائن الأول، والوصول الذري لسجلات SCCB/I2C، وكشف شريحة بطاقة SD، وتعيين دبابيس I2C البرمجي، ودقة fast_cbrtf / ألوان LAB، واستخدام ذاكرة الصور التكاملية / مرشح الوسيط على OpenMV 1 / 2.

دعم العتاد واللوحات

  • دعم لوحة OpenMV 2 (STM32F427) (وتصميم عتاد OpenMV 3)؛ واستُخدم MCO كساعة للمستشعر على OpenMV 2.

تغييرات جذرية في واجهة برمجة التطبيقات

تغييرات جذرية في واجهة برمجة التطبيقات المرئية للمستخدم بين v1.0.3-beta وv1.1.0. النطاق: وحدات C الخاصة بـ Python في modules/ ومكتبات Python في scripts/libraries/.

كل تغيير موسوم بأثره:

  • رئيسي — يؤثر على معظم البرامج النصية التي استخدمت الميزة؛ ستحتاج إلى نقل الشيفرة.

  • سلوكي — الواجهة نفسها لكن بنتائج مختلفة؛ أعِد فحص البرامج النصية المضبوطة بدقة.

تُجمّع التغييرات حسب الأثر بهذا الترتيب. إذا كنت تريد فقط نقل شيفرتك، فانتقل إلى قائمة التحقق من النقل في النهاية. يرتبط كل تجزئة كومِت بفرقه على GitHub.

إزالة الوحدات الطرفية المخصصة (رئيسي)

أُزيلت الوحدات المخصصة المبكرة clock / file / gpio / led / select / socket / spi / wlan / uart لصالح الطرفيات المدمجة pyb / machine في MicroPython. انقل البرامج النصية إلى المكافئات القياسية في MicroPython (مثل pyb.Pin / pyb.LED / pyb.SPI / pyb.UART).

الكوميتات: 6d2fafa94

نُقلت واجهة برمجة تطبيقات التصوير إلى وحدة image (رئيسي)

لم تعد Image() وHaarCascade() ودوال حفظ/تحميل الواصفات وحداتٍ مدمجة مجردة — فهي تعيش الآن في وحدة image الجديدة. يجب أن تستورد البرامج النصية import image وتستخدم image.Image / image.HaarCascade().

الكوميتات: 54288c535

نُقلت ساعة معدل الإطارات إلى time (رئيسي)

أُزيلت وحدة clock المستقلة؛ وتعيش ساعة معدل الإطارات الآن في time. استخدم import time وclock = time.clock() — لا يزال الكائن المُعاد يوفر .tick() / .fps() / .avg() / .reset().

الكوميتات: a8928ca3b

لم تعد /flash و/sd تُضافان إلى sys.path (سلوكي)

تم تثبيت تسميات وحدات التخزين / الدليل الجذر، ولم تعد /flash و/sd تُلحقان تلقائيًا بـ sys.path. يجب على البرامج النصية التي استوردت وحدات مساعدة بالاسم المجرد من تلك المواقع أن تضيف المسار صراحةً (أو أن تضع الوحدات حيث يُعثر عليها).

الكوميتات: 09e77b5da

قائمة التحقق من النقل

من أجل نقل نظيف إلى v1.1.0، يكون العمل المعتاد كالتالي:

  1. استبدل الوحدات المخصصة gpio / led / spi / uart / socket / wlan / file / select بـ pyb / machine في MicroPython (إزالة الوحدات المخصصة).

  2. import image وأضف البادئة image. إلى Image() / HaarCascade() (نقل وحدة image).

  3. استخدم import time وclock = time.clock() (نقل ساعة clock).

  4. أضف /flash / /sd إلى sys.path صراحةً إذا كنت قد استوردت وحدات مساعدة بالاسم المجرد (تغيير sys.path).

تعمل جميع البرامج النصية الأخرى دون تغيير.