v3.3.0¶
إصدار v3.3.0 إصدار ضخم. فهو يضيف دعمًا كاملًا لكاميرا التصوير الحراري FLIR Lepton عبر واجهة sensor.ioctl() جديدة ولوحات ألوان، ووحدة إخراج فيديو SPI تُسمى tv، ووضع التشغيل بالتحفيز للمصراع الشامل، ودفعة كبيرة من طرق الرسم/التحليل الجديدة في image (gamma_corr() و draw_ellipse() و draw_edges() والعديد من خصائص الكتل)، ومكتبات ToF / المحركات / linalg جديدة. أُعيدت هيكلة واجهة cpufreq كما أصبحت sensor.set_framesize() تطلق استثناءً الآن — اقرأ التغييرات الجذرية أدناه.
أبرز النقاط¶
FLIR Lepton — دعم كامل لكاميرا التصوير الحراري عبر واجهة
sensor.ioctl()الجديدة ولوحات الألوان وimage.to_rainbow().وحدة
tv— إخراج فيديو SPI TV / فيديو مركّب.وضع التحفيز للمصراع الشامل — التقاط بالتحفيز للمستشعر MT9V034 عبر
sensor.ioctl().التصوير —
gamma_corr()وdraw_ellipse()وdraw_edges()ومزج ألفا فيdraw_image()والعديد من خصائص الكتل الجديدة.مكتبات جديدة — قياس المسافة VL53L1X ToF، وبرنامج تشغيل المحرك TB6612، و micro-linalg.
تغيير جذري: أُعيدت هيكلة واجهة
cpufreq، وأصبحتsensor.set_framesize()تطلق استثناءً عند الفشل الآن، وأزالتsensor.alloc_extra_fb()دعم Bayer/JPEG، وانزاحت الوسائط الموضعية فيimage.replace()— انظر التغييرات الجذرية.
ميزات جديدة¶
FLIR Lepton — أُضيفت
sensor.ioctl()للتحكم الخاص بالمستشعر ومجموعة كاملة من أوامر ioctl الخاصة بـ Lepton (القياس الإشعاعي، التحديث/الدقة، تنفيذ الأوامر، تعيين/جلب السمات، درجة حرارة FPA/AUX بوحدة °C، وضع/مدى القياس، العرض/الارتفاع)، وsensor.set_color_palette()/sensor.get_color_palette()معsensor.PALETTE_RAINBOW/PALETTE_IRONBOW، وimage.to_rainbow()، وبرامج Lepton النصية النموذجية (27-Lepton).وضع التحفيز —
IOCTL_SET_TRIGGERED_MODE/IOCTL_GET_TRIGGERED_MODEلالتقاط المصراع الشامل بالتحفيز للمستشعر MT9V034، مع أمثلة عالية معدل الإطارات وأمثلة لوضع التحفيز.وحدة
tv— أُضيفت روابط إخراج فيديو SPI TV / فيديو مركّب.التصوير — أُضيفت
image.gamma_corr()وimage.draw_ellipse()وimage.draw_edges()ومزج ألفا فيdraw_image()، وكلمة مفتاحيةmask=فيclear()، وأُعيدت إضافةmask_rectangle()/mask_circle()/mask_ellipse()، وكلمات مفتاحية للتدوير / hmirror / vflip فيdraw_string()/draw_text()، وكلمة مفتاحيةtranspose(واسماء بديلةassign/set) فيreplace()، وx_scale/y_scaleفيcopy()إضافة إلىcrop()/scale()، ومُنشئImage()من الأبعاد، وتنسيق البكسلsensor.BINARY، وتصدير دوال تحويل فضاء الألوان، والعديد من خصائص الكتل الجديدة (cornersوperimeterوroundnessوelongationوextentوcompactnessوsolidityوconvexityوenclosing_circleوenclosed_ellipseوالتدوير).المكتبات — أُضيف برنامج تشغيل مستشعر قياس المسافة
vl53l1xToF، وبرنامج تشغيل المحركtb6612(مع أمثلة للمحرك DC والمحرك الخطوي Motor-Shield)، ومكتبة micro-linalg (ulinalg/umatrix).تمت ترقية FatFS إلى FF13C (يدعم exFAT).
تغييرات وتحسينات أخرى¶
تحسين جودة JPEG الافتراضية (المدى المتوسط بين المنخفض والمرتفع بدلًا من قيمة مثبتة في الكود)؛ لم تعد عمليات الصور في المكان تتطلب تكرار الصورة كوسيط أول؛ وأصبحت
draw_string()تقبل قيم مقياس غير صحيحة.
إصلاحات الأخطاء¶
الكاميرا والمستشعرات:
أُصلح تعليق بدء التشغيل في Lepton 3.5 (مهلة زمنية + استرداد) وموثوقية إعادة التعيين، و
set_framesize()قبلset_pixformat()في MT9V034 (لم يعد ترتيب الاستدعاء مهمًا)، و WVGA للمستشعر MT9V034 على STM32H7، ومدى التعريض التلقائي وتحديثات سجل الظل في MT9V034، وخطأ ADC في H7.
التصوير:
أُصلح وصول غير صالح للذاكرة في
find_apriltags()، وcopy()عند نسخ صورة مُقاسة إلى مخزن الإطارات الرئيسي، وتخصيص مخزن الإطارات فيto_grayscale()/to_rgb565()، وlen()لكائن النقطة المفتاحية، ومعالجة حدود MCU في JPEG، وتحليل قائمة العتبات فيbinary()، وقبولdraw_keypoints()لصفوف النقاط المفتاحية.
النظام:
أُصلحت تسريبات اختلال التوازن بين mark/free في
fb_allocعبر طرقimage/fir/lcd/tv/nn، وجُعلتpy_assertتحرر ذاكرة مخزن الإطارات عند التقاط الاستثناءات (#417)، ومُسحت راية تجاوز سعة UART (ORE) كي لا تعلّق التجاوزات قراءات UART بعد الآن، وأُصلح معالج مقاطعة RTC، وأُصلحت أداةcascade_convert.pyعلى نظام Windows.
العتاد ودعم اللوحات¶
كاميرا التصوير الحراري FLIR Lepton.
درع TV — إخراج فيديو SPI TV / فيديو مركّب.
المصراع الشامل (MT9V034) وضع التحفيز.
تغييرات API الجذرية¶
تغييرات API المرئية للمستخدم بين v3.2.0 و v3.3.0. النطاق: وحدات Python بلغة C في modules/ ومكتبات Python في scripts/libraries/.
يُوسم كل تغيير بمدى تأثيره:
رئيسي — يؤثر على معظم البرامج النصية التي استخدمت الميزة؛ ستحتاج إلى نقل الكود.
ثانوي — واجهة API ضيقة؛ يؤثر فقط على البرامج النصية التي استخدمتها.
سلوك — نفس الواجهة، نتائج مختلفة؛ أعد فحص البرامج النصية المضبوطة.
تُجمَّع التغييرات حسب التأثير بهذا الترتيب. إذا كنت تريد فقط نقل الكود، انتقل إلى قائمة التحقق للترحيل في النهاية. يربط كل تجزئة commit إلى الفرق الخاص به على GitHub.
أُعيدت هيكلة واجهة cpufreq (رئيسي)¶
أُعيدت هيكلة وحدة cpufreq لدعم H7. أُزيلت الثوابت cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ والدالة cpufreq.get_frequency(). أصبحت cpufreq.set_frequency() تأخذ عددًا صحيحًا بسيطًا بوحدة MHz (مثل cpufreq.set_frequency(120))، وأُضيفت cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies().
Commits: 6babf84a1
انزياح الوسائط الموضعية في image.replace() (ثانوي)¶
اكتسبت image.replace() وسيطًا transpose، مما أزاح الوسيط الموضعي mask من الموضع 4 إلى الموضع 5. يجب على الكود الذي مرّر mask موضعيًا (مثل img.replace(src, hmirror, vflip, mask)) التحول إلى الصيغة المفتاحية img.replace(src, mask=mask).
Commits: dbe7bf059
لم تعد sensor.alloc_extra_fb() تقبل Bayer/JPEG (ثانوي)¶
لم تعد sensor.alloc_extra_fb() تقبل sensor.BAYER أو sensor.JPEG (وهي تدعم الآن أيضًا sensor.BINARY). يجب على الكود الذي خصّص مخازن إطارات إضافية بتنسيق Bayer أو JPEG استخدام GRAYSCALE / RGB565 (أو تخصيص المخزن بطريقة أخرى).
Commits: f9e6b3fe0
تطلق sensor.set_framesize() استثناءً عند الفشل (سلوك)¶
أصبحت sensor.set_framesize() تطلق الآن استثناء ValueError عندما يكون حجم الإطار غير مدعوم بدلًا من إرجاع False. يجب على الكود الذي فحص قيمة الإرجاع False التقاط استثناء ValueError بدلًا من ذلك.
Commits: b0442633e
قائمة التحقق للترحيل¶
للنقل النظيف إلى v3.3.0 يكون العمل المعتاد:
انقل كود
cpufreqإلىset_frequency()بعدد صحيح من MHz وget_current_frequencies()/get_supported_frequencies()(إعادة هيكلة cpufreq).مرّر
maskإلىimage.replace()ككلمة مفتاحية (تغيير replace).خصّص مخازن الإطارات الإضافية كـ
GRAYSCALE/RGB565بدلًا من Bayer/JPEG (تغيير alloc_extra_fb).التقط
ValueErrorحولsensor.set_framesize()بدلًا من الفحص عنFalse(تغيير set_framesize).
تعمل جميع البرامج النصية الأخرى دون تغيير.