v3.9.4

يضيف الإصدار v3.9.4 وحدة buzzer، وioctls لـ كشف الحركة في HM01B0 من Himax (مع أمثلة الاستيقاظ منخفض الطاقة عند الحركة)، والتحكم بنافذة قراءة MT9V034، ودوال الطاقة المنخفضة لـ Ethernet، ومشغّل كاميرا OV7670، وكاميرا Arduino Nano 33 BLE Sense. كما يقدّم دفعة كبيرة من تسريعات JPEG / LCD / TV. استُبدلت واجهة مخرج VSYNC بدالة رد نداء، وصُحّحت حسابات الكسب/التعريض في MT9V034 — اقرأ التغييرات الكاسرة أدناه.

أبرز النقاط

  • وحدة Buzzer — وحدة buzzer جديدة (freq() وduty() وRESONANT_FREQ) على OpenMV Pure Thermal.

  • كشف الحركة في HM01B0 — ioctls جديدة لكشف الحركة من Himax بالإضافة إلى مثال استيقاظ منخفض الطاقة عند الحركة.

  • نافذة قراءة MT9V034 — التحكم بنافذة قراءة المصراع الكلي عبر sensor.ioctl().

  • كاميرات / لوحات جديدة — مشغّل OV7670 الأساسي، وكاميرا Arduino Nano 33 BLE Sense، ولوحة Bormio.

  • خط معالجة أسرع — مرمّز JPEG معاد كتابته بتقنية SIMD، وإلغاء فسيفسائية (debayering) أسرع، وتسريعات كبيرة لنقل LCD/TV.

  • تغيير كاسر: استُبدلت sensor.set_vsync_output() بـ sensor.set_vsync_callback() وصُحّحت حسابات الكسب/التعريض في MT9V034 — راجع التغييرات الكاسرة.

ميزات جديدة

  • Buzzer — إضافة وحدة buzzer مع buzzer.freq() وbuzzer.duty() وثابت buzzer.RESONANT_FREQ (OpenMV Pure Thermal).

  • كشف الحركة في HM01B0 — إضافة ioctls IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEAR وIOCTL_HIMAX_OSC_ENABLE، مع مثال لكشف الحركة من Himax ومثال استيقاظ منخفض الطاقة himax_wakeup_on_motion_detection.py.

  • نافذة قراءة MT9V034 — إضافة IOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW للتحكم بنافذة قراءة MT9V034 عبر sensor.ioctl().

  • الطاقة المنخفضة لـ Ethernet — إضافة دوال إيقاف الطاقة / الطاقة المنخفضة لـ Ethernet.

  • Portenta — إضافة دوال رد نداء لتمكين/تعطيل المذبذب الخارجي.

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

  • إعادة كتابة مرمّز JPEG بتقنية SIMD وتسريع ترميز Bayer→YCbCr، وإبقاء نواة JPEG العتادية مشغّلة أثناء تنفيذ البرنامج النصي، وتسريع إلغاء الفسيفسائية (~19.5 ms لدقة VGA)، وتفريغ ضغط JPEG إلى MDMA، وتسريع مسارات نقل TV/LCD باستخدام SIMD/DMA الفعّال، وتقليل استخدام ناقل SPI LCD بشكل كبير. وإضافة مشغّل USB3320 ULPI PHY لـ USB عالي السرعة.

إصلاحات العلل

الكاميرا والمستشعرات:

  • إصلاح تهيئة/بث مشغّل HM01B0 وضبط هدف AE / أقصى كسب فيه، وتصحيح تثبيت كسب AGC/AEC في MT9V034، وإصلاح تحميل البرنامج الثابت للتركيز التلقائي في OV5640 (ترتيب البايتات).

العرض:

  • إصلاح عمليات نقل SPI LCD DMA الأكبر من 64 KB، وقطبية مخرج LCD، واستقرار ناقل LCD (AXI QOS).

النظام والاتصال:

  • إصلاح نسخة SDMMC المستخدمة من قِبل مشغّل CYW43 WiFi (مع نسخة SDMMC مُعرّفة باللوحة)، وتحسين كفاءة DMA لـ FLIR Lepton (رفع VOSPI إلى 20 MHz على H7)، وإصلاح سلوك Portenta منخفض الطاقة / الاستعداد (حد تيار PMIC SW1، والطاقة المنخفضة لـ Ethernet وULPI)، وجعل خادم RTSP يتحمّل ترويسات CSeq وPLAY Range غير المرتّبة (FFPLAY)، وإصلاح محاذاة EABI ذات الـ 8 بايت لمكدّس الرابط، وإصلاح استيراد معطوب في مثال Portenta mqtt_sub.py.

الأجهزة ودعم اللوحات

  • مستشعر كاميرا OV7670 — مشغّل أساسي.

  • Arduino Nano 33 BLE Sense — مشغّل مستشعر كاميرا (منفذ nrf) مع إصلاحات دبوس إعادة الضبط وناقل I2C.

  • HM01B0 — إضافة دقة 320x320.

  • Bormio — تهيئة ساعة PLL، وتخطيط الفلاش، وGPIO PORT K (مُمكّن أيضاً على Portenta).

  • USB3320 ULPI PHY — USB عالي السرعة.

تغييرات كاسرة في الـ API

تغييرات الـ API المرئية للمستخدم بين v3.9.3 وv3.9.4. النطاق: وحدات Python C في modules/ ومكتبات Python في scripts/libraries/.

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

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

  • behavior — نفس الـ API، نتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.

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

استُبدل مخرج VSYNC بدالة رد نداء (major)

أُزيلت sensor.set_vsync_output(pin) واستُبدلت بـ sensor.set_vsync_callback(callback). لم يعد خط VSYNC يقود Pin مباشرةً؛ بدلاً من ذلك يُستدعى كائن Python قابل للاستدعاء مع حالة VSYNC، وتقوم دالة رد النداء الخاصة بك بتبديل Pin بنفسها. يجب نقل الكود الذي استخدم sensor.set_vsync_output() (راجع مثال vsync_gpio_output.py المُحدّث).

Commits: 5bbe25c20

صُحّحت حسابات الكسب/التعريض في MT9V034 (behavior)

صُحّحت سرعة ساعة MT9V034 وحسابات الكسب/التعريض، لذا فإن sensor.set_auto_gain() / sensor.set_auto_exposure() تنتج الآن قيماً دقيقة (ومن ثَمّ مختلفة) عن السابق. ينبغي للبرامج النصية التي رمّزت قيم كسب/تعريض تعويضية بشكل ثابت للالتفاف حول الحسابات الخاطئة القديمة على كاميرات MT9V034 ذات المصراع الكلي أن تُسقط تلك الحلول البديلة وتُعيد الضبط.

Commits: 4420536c4

قائمة التحقق للترحيل

للنقل النظيف إلى v3.9.4 يكون العمل المعتاد:

  1. استبدل sensor.set_vsync_output(pin) بـ sensor.set_vsync_callback(callback) وبدّل Pin من داخل دالة رد النداء (تغيير VSYNC).

  2. أعد ضبط أي حلول بديلة لكسب/تعريض MT9V034 مقابل الحسابات المُصحّحة (تغيير MT9V034).

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