v3.4.2

v3.4.2 היא גרסה גדולה. היא מציגה את OpenMV Cam H7 Plus (SDRAM, frame buffer ענק ללכידה ברזולוציה גבוהה), את מצלמת OV5640 5 MP, תמיכה ב-FDCAN, מנהל התקן OV2640 שנכתב מחדש, Image.jpeg_encode_for_ide(), וספריות pid / modbus חדשות. ממשק ה-ifconfig() של WINC1500 וברירות המחדל של find_apriltags() השתנו — קראו על השינויים שוברי התאימות שלהלן.

עיקרי הדברים

  • OpenMV Cam H7 Plus — לוח חדש עם מנהל התקן SDRAM ו-frame buffer בגודל ~31 MB ללכידה ברזולוציה גבוהה.

  • מנהל התקן למצלמת OV5640 5 MP עם זיהוי מבוסס I2C.

  • תמיכה בהתקן ההיקפי FDCAN, עם דוגמת CAN.

  • כתיבה מחדש של OV2640 — תמונות זקופות, פונקציות אוטומטיות פעילות, snapshot של JPEG, וגודל פריים sensor.XGA חדש.

  • IDE JPEGImage.jpeg_encode_for_ide() ושידור אוטומטי של JPEG-ים גדולים ל-IDE.

  • שובר תאימות: הסמנטיקה של WLAN.ifconfig() ב-WINC1500 השתנתה, MQTTClient.wait_msg() כבר אינו מעלה חריגה בקבלה ריקה, ו-find_apriltags() כברירת מחדל לקישוריות 4-כיוונית — ראו את השינויים שוברי התאימות.

תכונות חדשות

  • WiFi — נוספו WLAN.netinfo() (מחזיר (rssi, security, ssid, mac, ip)) ותצורת IP סטטי של WINC1500 באמצעות WLAN.ifconfig(), עם דוגמת IP סטטי.

  • FDCAN — נוספה תמיכה בהתקן ההיקפי FDCAN ודוגמת can.py.

  • IDE JPEG — נוספו Image.jpeg_encode_for_ide() / Image.jpeg_encoded_for_ide(); JPEG-ים גדולים משודרים אוטומטית ל-IDE כאשר ה-buffer קטן מדי.

  • ספריות — נוספו ספריית בקר PID pid, ספריית עבד RTU modbus (עם דוגמת 32-modbus), ומחלקת SSD1306_I2C לתצוגות OLED מסוג I2C.

  • דוגמאות — נוספה הרשמה ל-MQTT (mqtt_sub.py, עם שינוי שם של mqtt.py ל-mqtt_pub.py).

  • חיישן — נוסף גודל הפריים sensor.XGA (1024x768); print() / repr() על תמונת Bayer כעת מפיקים מטא-נתונים בפורמט JSON.

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

  • נכתב מחדש מנהל ההתקן של OV2640 (תמונות זקופות, פונקציות אוטומטיות פעילות, snapshot של JPEG מתקבל); הופעלו apriltags ברזולוציה גבוהה (מסיר את מגבלת ROI של פחות מ-64K פיקסלים בלוחות מתאימים); הורד ה-PCLK של OV2640 מ-72 MHz ל-36 MHz.

תיקוני באגים

עיבוד תמונה:

  • תוקנו גלישת past-end-of-image בפעולות בינאריות, דיוק printf/float בפלט של find_apriltags() / find_datamatrices() / find_lines(), JSON פגום ב-print() של blob, find_apriltags() על תמונות vflipped / hmirrored, באג ה-ROI של find_lbp(), ה-timeout של דחיסת JPEG ברזולוציות גדולות, ודיווח סטטיסטיקות הזיכרון של fb_alloc.

מצלמה וחיישנים:

  • תוקנו תחזוקת המטמון ויישור ה-buffer במצב JPEG, גודל העברת ה-DCMI המרבי, תצורת האוגרים והרזולוציות של OV2640, שחזור מצב הכיבוי של החיישן באיפוס, ואיכות התמונה של OV7725 (נוסף מסנן banding לכל מצלמה).

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

  • תוקנו hardfault/באג ב-socket.accept(), טיפול ב-timeout של socket ב-WINC1500 (timeout של 0 הוא כעת חוסם; sockets אינם נסגרים ב-timeout של recv), deep-sleep של H7, ה-RTC (עדכון upstream ובעיות EXTI / wakeup-timer / soft-reset של H7), וה-IRQ של הטיימר ב-pyb.Servo (ה-Servo היה לא פונקציונלי).

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

  • OpenMV Cam H7 Plus (OPENMV4R) — לוח חדש עם מנהל התקן SDRAM המאפשר frame buffer גדול (~31 MB).

  • OV5640 — מנהל התקן חדש למצלמת 5 MP עם זיהוי מבוסס I2C.

  • FDCAN — תמיכה בהתקן היקפי.

שינויי API שוברי תאימות

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

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

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

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

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

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

הסמנטיקה של WLAN.ifconfig() ב-WINC1500 השתנתה (major)

ב-WINC1500 WiFi shield, WLAN.ifconfig() כבר אינו מחזיר את הרשימה הישנה בת 5 האיברים [rssi, security, ssid, mac, ip]. הוא כעת קורא/מגדיר tuple מסוג (ip, subnet, gateway, dns) (ותומך בתצורת IP סטטי), בהתאמה לממשק ה-network הסטנדרטי. קוד שקרא מידע חיבור מ-ifconfig() חייב לעבור למתודה החדשה WLAN.netinfo() ((rssi, security, ssid, mac, ip)).

Commits: e685b484a

MQTTClient.wait_msg() מחזיר None בקבלה ריקה (minor)

MQTTClient.wait_msg() של ספריית ה-mqtt כעת מחזיר None בקבלה ריקה במקום להעלות OSError(-1). קוד שתפס OSError(-1) כדי לזהות socket סגור/ריק חייב במקום זאת לבדוק אם הוחזר None.

Commits: 76239ea89

find_apriltags() כברירת מחדל לקישוריות 4-כיוונית (behavior)

image.find_apriltags() כעת משתמש כברירת מחדל בקישוריות קצוות 4-כיוונית (במקום 8-כיוונית) — מהיר יותר, אך התגיות שזוהו עשויות להיות מעט שונות. כדי לשחזר את הדיוק הקודם, בנו את הקושחה עם IMLIB_ENABLE_FINE_APRILTAGS מוגדר.

Commits: c1d9bec2c

רשימת הסבה

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

  1. החליפו קריאות מידע חיבור של WLAN.ifconfig() ב-WINC1500 ב-WLAN.netinfo() (שינוי ifconfig).

  2. בדקו אם MQTTClient.wait_msg() החזיר None במקום לתפוס OSError(-1) (שינוי wait_msg).

  3. כווננו מחדש את זיהוי ה-AprilTag או בנו עם IMLIB_ENABLE_FINE_APRILTAGS אם אתם זקוקים לקישוריות 8-כיוונית (שינוי find_apriltags).

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