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 / מודולי תקן.
ארגומנט update_jpeg_buffer של ImageIO הוסר (minor)¶
עדכון חוצץ ה-JPEG של ImageIO עוצב מחדש כדי לגזור את החוצץ מארגומנט מקור התמונה, והארגומנט המפורש update_jpeg_buffer הוסר. סקריפטים שהעבירו update_jpeg_buffer ל-ImageIO חייבים להסיר את הארגומנט הזה.
Commits: 5c6937bd1
רשימת הסבה¶
להסבה נקייה ל-v4.0.0 העבודה הטיפוסית היא:
החליפו כל שימוש במצב ההזרמה שהוסר ב-API החדש של חציצה רב-פריימית
sensor.set_framebuffers()(מצב ההזרמה הוסר).בדקו מחדש קריאות
sensor.set_windowing()מול טיפול הארגומנטים המעוצב-מחדש והגמיש יותר (שינוי החלון).אמתו מחדש סקריפטים התלויים בהתנהגות ספציפית-לגרסה של MicroPython מול MicroPython 1.15 (קפיצת ה-MicroPython).
הסירו את הארגומנט
update_jpeg_bufferמקריאות ImageIO (שינוי ה-ImageIO).
כל שאר הסקריפטים רצים ללא שינוי.