v4.4.0

v4.4.0 เพิ่ม API tf.regression() รองรับ FLIR Lepton บน OpenMV Cam H7 Pro รองรับโคโปรเซสเซอร์ Cortex-M4 บน Arduino Nicla Vision และอัปเดต MicroPython เป็นเวอร์ชัน 1.19 โมดูลเฉพาะบอร์ดและพฤติกรรม WiFi/LCD บางส่วนเปลี่ยนแปลง — อ่านรายละเอียดการเปลี่ยนแปลงที่ส่งผลกระทบด้านล่าง

จุดเด่น

  • tf.regression() — รันโมเดล regression ของ TensorFlow Lite แบบ 1D-input/1D-output

  • รองรับเซนเซอร์ความร้อน FLIR Lepton บน OpenMV Cam H7 Pro

  • Arduino Nicla Vision — รองรับโคโปรเซสเซอร์ Cortex-M4, MicroSpeech ทำงานได้, LPUART1

  • อัปเดต MicroPython เป็น 1.19; อัปเดต ulab เป็น 5.1.1

  • การเปลี่ยนแปลงที่ส่งผลกระทบ: โมดูล lcd/tv บน Nicla Vision ถูกปิดใช้งาน และไดรเวอร์ WiFi ของ RP2040 Connect เปลี่ยนแปลง — ดูรายละเอียดการเปลี่ยนแปลงที่ส่งผลกระทบ

ฟีเจอร์ใหม่

  • tf.regression(model, input_array) — ฟังก์ชันใหม่สำหรับโมเดล regression ของ TensorFlow Lite แบบ 1D input/output คืนค่าเป็นรายการของ float

  • การควบคุม GC2145sensor.set_auto_exposure() และ sensor.set_auto_whitebal() ตอนนี้ทำงานได้บน GC2145 (สามารถปิดการปรับแสงอัตโนมัติ/การปรับสมดุลสีขาวได้ แต่ยังไม่รองรับการตั้งค่า exposure/gain โดยตรง)

  • Arduino Nicla Vision — เปิดใช้งานโคโปรเซสเซอร์ Cortex-M4 (CM4) และอุปกรณ์ต่อพ่วง LPUART1 แล้ว

  • machine.Pin — พิน USB_VBUS เปิดเผยให้ใช้งานในสคริปต์ผู้ใช้แล้ว

การเปลี่ยนแปลงและการปรับปรุงอื่น ๆ

  • อัปเดต MicroPython เป็น 1.19; ulab เป็น 5.1.1; อัปเดตไดรเวอร์ WiFi cyw43 ที่รวมมาด้วย

  • พอร์ต RP2 (Arduino Nano RP2040 Connect) และ nRF (Arduino Nano 33 BLE Sense) เปลี่ยนมาใช้ดีบักเกอร์แบบ TinyUSB ใหม่สำหรับการเชื่อมต่อ IDE/host

  • XCLK ของ OV7670 ถูกเพิ่มจาก 12 MHz เป็น 24 MHz (อัปเดตชุดรีจิสเตอร์)

การแก้ไขบัก

กล้องและเซนเซอร์:

  • ค่าสถิติอุณหภูมิของ blob ใน OpenMV Pure Thermal ตอนนี้ใช้ภาพ IR แทนภาพสี ดังนั้นอุณหภูมิเฉลี่ยต่อ blob จึงถูกต้อง

  • แก้ไขการจัดการ ROI ของ draw_image() และการปรับขนาดพื้นที่ให้ได้ผลลัพธ์ที่ปรับขนาดแม่นยำยิ่งขึ้น

  • IMU จะถูก re-initialized หลังจาก soft-reset เพื่อให้ทำงานต่อไปได้เมื่อเปิดใช้งาน SPI bus ของ IMU

ระบบ:

  • แก้ไขปัญหาการเปรียบเทียบ signed/unsigned ใน FAST/AGAST feature detection, blob detection, CLAHE และไดรเวอร์ LCD/TV; แก้ไขการ de-initialize camera-GPIO / SPI / DAC ของ STM32, การแมปพิน LPUART ของ H7 และการลงทะเบียนโมดูล nn ของ STM32Cube.AI

Arduino Nicla Vision:

  • MicroSpeech ทำงานได้แล้ว (เพิ่มขนาดบัฟเฟอร์ PDM เป็นสองเท่า, เพิ่มตัวอย่าง) และแก้ไขโหมด low-power standby แล้ว

ฮาร์ดแวร์และการรองรับบอร์ด

  • OpenMV Cam H7 Pro — รองรับเซนเซอร์ความร้อน FLIR Lepton

  • Arduino Nicla Vision — โคโปรเซสเซอร์ CM4, LPUART1, MicroSpeech, low-power standby

การเปลี่ยนแปลง API ที่ส่งผลกระทบ

การเปลี่ยนแปลง API ที่ผู้ใช้มองเห็นได้ระหว่าง v4.3.3 และ v4.4.0 ขอบเขต: Python C-modules ใน modules/ และไลบรารี Python ใน scripts/libraries/

การเปลี่ยนแปลงแต่ละรายการมีป้ายกำกับผลกระทบ:

  • minor — API แคบ; ส่งผลกระทบเฉพาะสคริปต์บนบอร์ดเฉพาะเจาะจง

  • behavior — API เหมือนเดิม แต่ผลลัพธ์ต่างกัน; ตรวจสอบสคริปต์ที่ปรับแต่งไว้ใหม่

การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากต้องการ port โค้ดของคุณเพียงอย่างเดียว ให้ข้ามไปที่ รายการตรวจสอบการ migration ที่ท้ายเอกสาร แต่ละ commit hash เชื่อมโยงไปยัง diff บน GitHub

Nicla Vision modules และ RP2040 WiFi (minor)

บน Arduino Nicla Vision โมดูล lcd และ tv ถูกปิดใช้งานเพื่อเพิ่มหน่วยความจำสำหรับรองรับโคโปรเซสเซอร์ CM4 — สคริปต์ที่ใช้โมดูลเหล่านั้นบน Nicla Vision จะไม่พบโมดูลเหล่านั้นอีกต่อไป Arduino Nano RP2040 Connect เปลี่ยนจากการใช้ WiFi/nina แบบ OpenMV-custom ไปใช้ไดรเวอร์/โมดูล NINA-W10 ของ MicroPython upstream ซึ่งมี API ที่แตกต่างกัน

Commits: f78d191e3, ddf01cb09

การหมดเวลา WiFi socket และการพลิก LCD แนวตั้ง (behavior)

การหมดเวลาของ WINC1500 socket ตอนนี้คืนค่าข้อผิดพลาดแบบ non-blocking (EWOULDBLOCK) แทน ETIMEDOUT ดังนั้น socket ที่หมดเวลาจะไม่ถูกปิดโดยไม่คาดคิดอีกต่อไป — โค้ดที่ดักจับ ETIMEDOUT ต้องได้รับการอัปเดต SPI LCD shield display ตอนนี้ raise ValueError ("Vertical flip requires triple buffering!") เมื่อมีการร้องขอ y_scale ติดลบโดยไม่ได้เปิดใช้งาน triple buffering

Commits: 1dc4bea88, 7e52cf751

รายการตรวจสอบการ migration

สำหรับการ port ที่สะอาดไปยัง v4.4.0 งานทั่วไปคือ:

  1. บน Nicla Vision หยุดใช้ lcd/tv; บน Nano RP2040 Connect ให้ port โค้ด WiFi ไปใช้ไดรเวอร์ NINA-W10 upstream (การเปลี่ยนแปลงโมดูลบอร์ด)

  2. อัปเดตโค้ด WINC1500 socket ให้รับมือกับ EWOULDBLOCK เมื่อหมดเวลา และเปิดใช้งาน triple buffering สำหรับ LCD output ที่พลิกแนวตั้ง (การเปลี่ยนแปลงพฤติกรรม)