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 JPEG —
Image.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, ספריית עבד RTUmodbus(עם דוגמת 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
רשימת הסבה¶
להסבה נקייה ל-v3.4.2 העבודה הטיפוסית היא:
החליפו קריאות מידע חיבור של
WLAN.ifconfig()ב-WINC1500 ב-WLAN.netinfo()(שינוי ifconfig).בדקו אם
MQTTClient.wait_msg()החזירNoneבמקום לתפוסOSError(-1)(שינוי wait_msg).כווננו מחדש את זיהוי ה-AprilTag או בנו עם
IMLIB_ENABLE_FINE_APRILTAGSאם אתם זקוקים לקישוריות 8-כיוונית (שינוי find_apriltags).
כל שאר הסקריפטים רצים ללא שינוי.