v4.0.0

v4.0.0 היא גרסת ה-v3 → v4 הגדולה. היא מציגה את ה-API המודרני של חציצה רב-פריימית ל-sensor (חציצה כפולה / משולשת ו-FIFO וידאו), פונקציית callback להשלמת פריים, מודול Bluetooth (מחסנית NimBLE) עם תמיכה ב-Portenta, מנהל ההתקן הראשוני למצלמת MT9M114, לכידת מצלמה בהעברה ל-MDMA, תמיכת Bayer/JPEG ב-image.draw_image(), וקפיצה ל-MicroPython 1.15. מצב ההזרמה הישן הוסר ו-sensor.set_windowing() עוצב מחדש — קראו את השינויים השוברים למטה.

עיקרים

  • חציצה רב-פריימיתsensor מקבל חציצה כפולה, חציצה משולשת, ומצב FIFO-וידאו לקצבי פריימים גבוהים וחלקים יותר.

  • פונקציית callback להשלמת פריים — רשמו callback שנקרא כשפריים חדש מוכן, לצינורות לכידה לא-חוסמים.

  • Bluetooth — מודול bluetooth הבנוי על מחסנית NimBLE, מופעל ב-Arduino Portenta H7 (עם דוגמת BLE).

  • MT9M114 — מנהל התקן ראשוני לחיישן מצלמה.

  • לכידה מהירה יותר — העברה ל-MDMA ללכידת נתוני מצלמה; draw_image() מקבל כעת מקורות/יעדים מסוג Bayer ו-JPEG.

  • MicroPython 1.15 — ה-MicroPython המצורף עודכן מ-1.13 ל-1.15.

  • שובר: מצב ההזרמה הישן הוסר ו-sensor.set_windowing() עוצב מחדש — ראו את השינויים השוברים.

תכונות חדשות

  • חציצה רב-פריימית של חיישן — נוספו sensor.set_framebuffers() / sensor.get_framebuffers() והמצבים SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO, בתוספת sensor.get_frame_available() ללכידה כפולה, משולשת, ו-FIFO-וידאו.

  • callback להשלמת פריים — נוסף sensor.set_frame_callback() כך ש-callback של Python רץ כשכל פריים חדש מסתיים.

  • Bluetooth — נוסף מודול bluetooth הנתמך על ידי מחסנית NimBLE (תת-מודול NimBLE, מנהל התקן CYW-BT), מופעל ב-Arduino Portenta H7 עם דוגמת BLE.

  • MT9M114 — נוסף מנהל ההתקן הראשוני לחיישן מצלמת MT9M114.

  • draw_image — נוספה תמיכת debayering ותמיכת העתקת JPEG כך ש-image.draw_image() מקבל תמונות מקור/יעד מסוג Bayer ו-JPEG.

  • העברת לכידה ל-MDMA — לכידת נתוני מצלמה מועברת ל-MDMA לתפוקה גבוהה יותר.

  • ניתן כעת להשבית ארגומנט לוח-צבעים על ידי העברת -1 (מאחר ש-None שמור כארגומנט תקף).

שינויים ושיפורים נוספים

  • מעבר למימוש I2C התוכנתי החדש; התיישרות עם upstream של MicroPython; תצורת ulab לכל לוח; מודולים מובנים בסיסיים הופעלו ל-OpenMV 2; נעילת קריאת חוצץ פריימים (frame buffer) הוגנת יותר; תמיכת mutex הורחבה ל-Cortex-M0/M0+ עם פסק-זמן לנעילה.

תיקוני באגים

מצלמה ועיבוד תמונה:

  • תוקנו אמינות אתחול FLIR Lepton בלוח Pure Thermal, טיפול בחוצץ JPEG / השהיה ב-ImageIO, הגדרות vflip/hmirror של HM01B0, ניקוי חוצץ ה-JPEG כשתמונה נפסלת, ודגל cropped שנקבע כאשר ה-framesize היה לא תקף.

מערכת וקישוריות:

  • תוקנו ניקוז פקודות USB ופקודת איפוס-למאתחל (bootloader), אתחול mutex, מקור שעון ה-UART, הגדרת code-page של FatFS, טיפול ACK חוץ-אפיקי של WINC1500, ניפוי WiFi, ו-USB PID של Nano33; בודדו ריפודים אנלוגיים ייעודיים.

חומרה ותמיכה בלוחות

  • חיישן מצלמת MT9M114 (מנהל התקן ראשוני).

  • Arduino Portenta H7 — Bluetooth מופעל (NimBLE) עם דוגמת BLE.

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — דגל ניפוי-WiFi הושבת היכן שאינו נתמך; נוספה דוגמת blinky; תיקון USB PID.

שינויי API שוברים

שבירות API גלויות-למשתמש בין v3.9.4 ל-v4.0.0. היקף: מודולי C של Python ב-modules/ וספריות Python ב-scripts/libraries/.

כל שינוי מתויג לפי השפעתו:

  • major — משפיע על רוב הסקריפטים; כמעט בוודאות תצטרכו להסב קוד.

  • minor — API צר; משפיע רק על סקריפטים שהשתמשו בו.

  • behavior — אותו API, תוצאות שונות; בדקו מחדש סקריפטים מכווננים.

השינויים מקובצים לפי השפעה בסדר זה. אם אתם רק רוצים להסב את הקוד שלכם, דלגו אל רשימת ההסבה בסוף. כל hash של commit מקושר ל-diff שלו ב-GitHub.

מצב ההזרמה הוסר (major)

מצב ההזרמה הישן של החיישן הוסר לטובת ה-API החדש של חציצה רב-פריימית. קוד שהפעיל מצב הזרמה חייב לעבור ל-sensor.set_framebuffers() עם DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO ולהניע לכידה עם sensor.snapshot() / sensor.get_frame_available() במקום.

Commits: a42f3a647

sensor.set_windowing() עוצב מחדש (behavior)

sensor.set_windowing() נעשה גמיש בהרבה: הוא מקבל כעת מספר צורות ארגומנטים (טאפל אזור, או רוחב/גובה ממורכזים, או x, y, w, h) ופותר את החלון יחסית לרזולוציה הנוכחית. סקריפטים שהעבירו ארגומנטי חלון בצורה הקבועה הישנה עשויים לבחור אזור שונה ויש לבדוק אותם מחדש.

Commits: 3e9c43554

MicroPython 1.13 → 1.15 (behavior)

ליבת ה-MicroPython המצורפת עודכנה מ-1.13 ל-1.15 (דרך 1.14). התנהגות ספריית התקן והשפה עוקבת אחר upstream MicroPython 1.15; בדקו מחדש סקריפטים התלויים בהתנהגות ספציפית-לגרסה של micropython / מודולי תקן.

Commits: 364eea6c7, 26c5376b0

ארגומנט update_jpeg_buffer של ImageIO הוסר (minor)

עדכון חוצץ ה-JPEG של ImageIO עוצב מחדש כדי לגזור את החוצץ מארגומנט מקור התמונה, והארגומנט המפורש update_jpeg_buffer הוסר. סקריפטים שהעבירו update_jpeg_buffer ל-ImageIO חייבים להסיר את הארגומנט הזה.

Commits: 5c6937bd1

רשימת הסבה

להסבה נקייה ל-v4.0.0 העבודה הטיפוסית היא:

  1. החליפו כל שימוש במצב ההזרמה שהוסר ב-API החדש של חציצה רב-פריימית sensor.set_framebuffers() (מצב ההזרמה הוסר).

  2. בדקו מחדש קריאות sensor.set_windowing() מול טיפול הארגומנטים המעוצב-מחדש והגמיש יותר (שינוי החלון).

  3. אמתו מחדש סקריפטים התלויים בהתנהגות ספציפית-לגרסה של MicroPython מול MicroPython 1.15 (קפיצת ה-MicroPython).

  4. הסירו את הארגומנט update_jpeg_buffer מקריאות ImageIO (שינוי ה-ImageIO).

כל שאר הסקריפטים רצים ללא שינוי.