v3.7.0

الإصدار v3.7.0 إصدار كبير. يضيف وحدة audio (ميكروفون PDM في Portenta H7) مع واجهة جديدة لدوال رد النداء غير الحاجبة، ووحدة التعرف على الكلام micro_speech المعتمدة على TensorFlow، ووحدة تحكم LCD جديدة كلياً بنظام RGB المتوازي (مع خرج HDMI ولمس FT5X06)، ودالة image.flush() مع ثوابت تنسيق البكسل، وخط أنابيب لتدريج image.draw_image() مُعاد كتابته. تمت إزالة عدة مكتبات مساعدة قديمة وطرق صور، وتغيّر حساب yuv_to_* — اقرأ التغييرات الكاسرة أدناه.

أبرز النقاط

  • وحدة audio — التقاط من ميكروفون PDM المدمج في Portenta H7 بواجهة start_streaming(callback) غير حاجبة.

  • micro_speech — وحدة للتعرف على الكلام micro-speech معتمدة على TensorFlow.

  • وحدة تحكم LCD جديدة — دعم شاشة RGB المتوازية وخرج HDMI (TFP410) ولمس FT5X06.

  • image.draw_image() — مُعاد كتابتها بخط أنابيب كامل للتدريج/الشفافية/لوحة الألوان (x_scale / y_scale / hint / color_palette …).

  • image.flush() إضافةً إلى ثوابت تنسيق البكسل (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • كاسر: تمت إزالة مكتبات الحساب المساعدة القديمة وعدة طرق صور، وأُعيدت صياغة واجهات draw_image() / LCD، ولم يعد yuv_to_* يطرح 128 — راجع التغييرات الكاسرة.

ميزات جديدة

  • audio — وحدة audio جديدة لـ Portenta H7 لالتقاط ميكروفون PDM: audio.init() وaudio.start_streaming(callback) غير الحاجبة وaudio.stop_streaming() (يُحدَّد التردد بالهرتز).

  • micro_speech — وحدة جديدة تحتوي على الصنف MicroSpeech وaudio_callback() وmicro_speech() للتعرف على الكلام بـ TensorFlow؛ تستخدم listen() متوسطاً بنافذة متحركة وتقبل كلمة مفتاحية filter لتقييد النتائج بقائمة تسميات.

  • LCD — وحدة تحكم LCD جديدة بدعم شاشة RGB المتوازية وأنواع LCD_NONE / LCD_SHIELD / LCD_DISPLAY والعديد من ثوابت أحجام الإطار وtriple_buffer / framesize / refresh / bgr / deinit وdisplay موسّعة وخرج HDMI عبر TFP410 ودعم شاشة لمس FT5X06.

  • image.flush() — إضافة طريقة image.flush() وثوابت تنسيق البكسل (image.BINARY / GRAYSCALE / RGB565 / YUV422 / BAYER / JPEG).

  • image.draw_image() — مُعاد كتابتها بخط أنابيب تدريج جديد: x_scale / y_scale / x_size / y_size وrgb_channel وalpha وcolor_palette وalpha_palette وhint، إضافةً إلى ثوابت image.AREA / BILINEAR / BICUBIC / CENTER / EXTRACT_RGB_CHANNEL_FIRST / APPLY_COLOR_PALETTE_FIRST وأمثلة جديدة لمزج الشفافية / جداول الألوان / التدريج.

  • اكتسبت ImageReader.next_frame() كلمة مفتاحية pause لتعطيل تأخير التشغيل في الوقت الفعلي.

  • إضافة أمثلة صوتية لـ Portenta (audio_fft.py وmicro_speech.py) ومثال للاستيقاظ من حالة الإيقاف عبر ExtInt.

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

  • أُعيد تنظيم الأمثلة المدمجة تحت scripts/examples/Arduino/؛ وأصبح مخزن الإطارات الآن يُحدَّث فوراً بعد تحميل/إنشاء الصور باستخدام copy_to_fb=True (دون حاجة إلى تفريغ يدوي)؛ وتم تقليص كومة Portenta قليلاً لاستيعاب المزيد من حالة المشغّلات الثابتة.

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

الكاميرا والتصوير:

  • إصلاح تبادل الأحمر/الأزرق (ترتيب بايتات RGB565) في الصور الملتقطة، وتقريب رسم DMA2D ليطابق بقية شيفرة الرسم، وفساد fb_alloc في التخصيصات التكرارية (find_blobs())، وتقييد top_hat() / black_hat() بتفعيل العمليات الثنائية والحسابية معاً.

الشاشة والصوت:

  • إصلاح خرج درع LCD ووضع الصوت الأحادي ذي القناة الواحدة في Portenta.

Portenta:

  • تجاوز مشكلة Ethernet/SDRAM (برفع rst_eth إلى الحالة العالية) وإصلاح إعداد توقيت SDRAM.

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

  • Arduino Portenta H7 — التقاط صوت من ميكروفون PDM المدمج (SAI / PDM2PCM).

  • LCD — وحدة تحكم شاشة RGB المتوازية الجديدة (تفعيل LTDC في بنية H7) وخرج HDMI عبر TFP410 ودعم شاشة LCD اللمسية FT5X06.

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

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

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

  • طفيف — API ضيّق؛ يؤثر فقط على البرامج النصية التي استخدمته.

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

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

إزالة مكتبات الحساب المساعدة القديمة (طفيف)

تمت إزالة المكتبات المساعدة mtx وrv وulinalg وumatrix وvec من scripts/libraries لصالح ulab. ستفشل البرامج النصية التي تستخدم import لأيٍّ منها ويجب نقلها إلى ulab.

الالتزامات: 1f7da9272

إزالة remove_shadows() / chrominvar() / illuminvar() (طفيف)

تم حذف image.remove_shadows() وimage.chrominvar() وimage.illuminvar() دون بديل. يجب على البرامج النصية التي تستدعي هذه الطرق إزالة الاستدعاءات.

الالتزامات: 3173c2bb3

إعادة صياغة توقيع image.draw_image() (طفيف)

أُعيدت كتابة image.draw_image() فوق خط أنابيب تدريج جديد. لم تعد وسائط alpha الموضعية القديمة / وسيط scale المفرد والترتيب الموضعي السابق منطبقة؛ استخدم الصيغة الجديدة بالكلمات المفتاحية (x_scale= / y_scale= أو x_size= / y_size= وalpha= وcolor_palette= وhint= …).

الالتزامات: 3439f8824

إعادة كتابة وحدة LCD (طفيف)

أُعيدت كتابة وحدة lcd لوحدة التحكم الجديدة بالشاشة. أصبحت lcd.init() الآن تأخذ type للشاشة (LCD_NONE / LCD_SHIELD / LCD_DISPLAY) ووسائط بكلمات مفتاحية جديدة، وأُعيد تنظيم سطح الثوابت / API بشكل كبير. لا تزال البرامج النصية القديمة المخصصة للدرع تعمل في معظمها، لكن القيم الافتراضية والسلوك تغيّرا — راجع برامج LCD النصية مقابل واجهة type / framesize الجديدة.

الالتزامات: 185538207

لم يعد yuv_to_* يطرح 128 (سلوك)

أصبحت image.yuv_to_binary() / yuv_to_grayscale() / yuv_to_rgb() / yuv_to_lab() الآن تعامل عنصر Y في الصف (tuple) كقيمة غير موقّعة بين 0 و255 بدلاً من طرح 128. يجب على المستدعين تمرير Y دون انحياز −128 السابق للحصول على نفس الألوان كما كان من قبل.

الالتزامات: dcf141192

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

من أجل نقل نظيف إلى v3.7.0، العمل المعتاد هو:

  1. نقل استخدام mtx / rv / ulinalg / umatrix / vec إلى ulab (إزالة مكتبة الحساب).

  2. إزالة استدعاءات image.remove_shadows() / chrominvar() / illuminvar() (طرق الصور المُزالة).

  3. تحديث استدعاءات image.draw_image() إلى توقيع الكلمات المفتاحية الجديد (إعادة صياغة draw_image).

  4. مراجعة برامج LCD النصية مقابل واجهة type / framesize الجديدة لـ lcd (إعادة كتابة LCD).

  5. إسقاط انحياز −128 عند تمرير Y إلى yuv_to_* (تغيير yuv_to_*).

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