v4.0.0

v4.0.0 เป็นรุ่นหลัก v3 → v4 นำเสนอ API การบัฟเฟอร์หลายเฟรม sensor สมัยใหม่ (double / triple buffering และ video FIFO) คอลแบ็กเมื่อเฟรมสมบูรณ์ โมดูล Bluetooth (NimBLE stack) พร้อมการรองรับ Portenta ไดรเวอร์กล้อง MT9M114 เบื้องต้น การจับภาพกล้องที่ถ่ายโอนด้วย MDMA การรองรับ Bayer/JPEG ใน image.draw_image() และการอัปเดตเป็น MicroPython 1.15 โหมดสตรีมมิ่งแบบเดิมถูกลบออกและ sensor.set_windowing() ได้รับการปรับปรุงใหม่ — โปรดอ่านการเปลี่ยนแปลงที่ทำให้สคริปต์เสียหายด้านล่าง

ไฮไลต์

  • การบัฟเฟอร์หลายเฟรมsensor รองรับ double buffering, triple buffering และโหมด video-FIFO สำหรับเฟรมเรตที่สูงและราบเรียบยิ่งขึ้น

  • คอลแบ็กเมื่อเฟรมสมบูรณ์ — ลงทะเบียนคอลแบ็กที่ทำงานเมื่อเฟรมใหม่พร้อมใช้งาน สำหรับไปป์ไลน์การจับภาพแบบไม่บล็อก

  • Bluetooth — โมดูล bluetooth ที่สร้างบน NimBLE stack เปิดใช้งานบน Arduino Portenta H7 (พร้อมตัวอย่าง BLE)

  • MT9M114 — ไดรเวอร์เซนเซอร์กล้องเบื้องต้น

  • การจับภาพเร็วขึ้น — ถ่ายโอนข้อมูลกล้องด้วย MDMA; draw_image() รองรับแหล่ง/ปลายทาง Bayer และ JPEG แล้ว

  • MicroPython 1.15 — MicroPython ที่รวมอยู่ด้วยได้รับการอัปเดตจาก 1.13 เป็น 1.15

  • การเปลี่ยนแปลงที่ทำให้สคริปต์เสียหาย: โหมดสตรีมมิ่งแบบเดิมถูกลบออกและ sensor.set_windowing() ได้รับการปรับปรุงใหม่ — ดูการเปลี่ยนแปลงที่ทำให้สคริปต์เสียหาย

ฟีเจอร์ใหม่

  • การบัฟเฟอร์หลายเฟรมของ Sensor — เพิ่ม sensor.set_framebuffers() / sensor.get_framebuffers() และโหมด SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO พร้อม sensor.get_frame_available() สำหรับการจับภาพแบบ double, triple และ video-FIFO

  • คอลแบ็กเมื่อเฟรมสมบูรณ์ — เพิ่ม sensor.set_frame_callback() เพื่อให้ Python callback ทำงานเมื่อแต่ละเฟรมใหม่เสร็จสมบูรณ์

  • Bluetooth — เพิ่มโมดูล bluetooth ที่ใช้ NimBLE stack (NimBLE submodule, CYW-BT driver) เปิดใช้งานบน Arduino Portenta H7 พร้อมตัวอย่าง BLE

  • MT9M114 — เพิ่มไดรเวอร์เซนเซอร์กล้อง MT9M114 เบื้องต้น

  • draw_image — เพิ่มการรองรับการดีเบเยอร์และการคัดลอก JPEG เพื่อให้ image.draw_image() รับภาพแหล่งหรือปลายทางที่เป็น Bayer และ JPEG ได้

  • การถ่ายโอนการจับภาพด้วย MDMA — การจับภาพข้อมูลกล้องถูกถ่ายโอนไปยัง MDMA เพื่อปริมาณงานที่ผ่านได้สูงขึ้น

  • ขณะนี้สามารถปิดใช้งานอาร์กิวเมนต์ color-palette ได้โดยส่ง -1 (เนื่องจาก None ถูกสงวนไว้เป็นอาร์กิวเมนต์ที่ถูกต้อง)

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

  • เปลี่ยนไปใช้การใช้งาน software I2C ใหม่ ปรับให้สอดคล้องกับ MicroPython upstream การกำหนดค่า ulab แบบต่อบอร์ด เปิดใช้งานโมดูลภายในพื้นฐานสำหรับ OpenMV 2 การล็อกการอ่านบัฟเฟอร์เฟรมที่ยุติธรรมยิ่งขึ้น และการรองรับ mutex ขยายไปยัง Cortex-M0/M0+ พร้อม lock timeout

การแก้ไขข้อบกพร่อง

กล้องและการถ่ายภาพ:

  • แก้ไขความน่าเชื่อถือของการเริ่มต้น FLIR Lepton บนบอร์ด Pure Thermal การจัดการบัฟเฟอร์ JPEG / pause ของ ImageIO การตั้งค่า vflip/hmirror ของ HM01B0 การล้างบัฟเฟอร์ JPEG เมื่อภาพถูก invalidated และค่าสถานะ cropped ที่ถูกตั้งค่าเมื่อ framesize ไม่ถูกต้อง

ระบบและการเชื่อมต่อ:

  • แก้ไขการระบาย USB command และคำสั่ง reset-to-bootloader การเริ่มต้น mutex แหล่งสัญญาณนาฬิกา UART ค่า code-page ของ FatFS การจัดการ ACK แบบ out-of-band ของ WINC1500 การดีบัก WiFi และ USB PID ของ Nano33 แยกพาดแอนะล็อกเฉพาะ

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

  • เซนเซอร์กล้อง MT9M114 (ไดรเวอร์เบื้องต้น)

  • Arduino Portenta H7 — เปิดใช้งาน Bluetooth (NimBLE) พร้อมตัวอย่าง BLE

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — ปิดใช้งานค่าสถานะ WiFi-debug ที่ไม่รองรับ เพิ่มตัวอย่าง blinky และแก้ไข USB PID

การเปลี่ยนแปลง API ที่ทำให้สคริปต์เสียหาย

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

การเปลี่ยนแปลงแต่ละรายการถูกแท็กด้วยผลกระทบ:

  • major — ส่งผลกระทบต่อสคริปต์ส่วนใหญ่ คุณจะต้องพอร์ตโค้ดแทบทุกครั้ง

  • minor — API แคบ ส่งผลกระทบเฉพาะสคริปต์ที่ใช้งานฟีเจอร์นั้น

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

การเปลี่ยนแปลงถูกจัดกลุ่มตามผลกระทบตามลำดับนั้น หากคุณต้องการพอร์ตโค้ดเท่านั้น ไปที่ รายการตรวจสอบการย้าย ที่ท้ายเอกสาร แต่ละแฮช 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() ถูกทำให้ยืดหยุ่นยิ่งขึ้นมาก ขณะนี้รองรับรูปแบบอาร์กิวเมนต์หลายรูปแบบ (tuple ของ region หรือ width/height ที่จัดกึ่งกลาง หรือ x, y, w, h) และแก้ไขหน้าต่างที่สัมพันธ์กับความละเอียดปัจจุบัน สคริปต์ที่ส่งอาร์กิวเมนต์ windowing ในรูปแบบเดิมที่ตายตัวอาจเลือก region ที่ต่างออกไปและควรตรวจสอบอีกครั้ง

Commits: 3e9c43554

MicroPython 1.13 → 1.15 (behavior)

MicroPython core ที่รวมอยู่ด้วยได้รับการอัปเดตจาก 1.13 เป็น 1.15 (ผ่าน 1.14) พฤติกรรมของ standard library และภาษาเป็นไปตาม MicroPython 1.15 upstream โปรดตรวจสอบสคริปต์ที่พึ่งพาพฤติกรรมเฉพาะเวอร์ชันของ micropython / standard module อีกครั้ง

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() กับการจัดการอาร์กิวเมนต์ที่ยืดหยุ่นยิ่งขึ้นที่ปรับปรุงแล้ว (การเปลี่ยนแปลง windowing)

  3. ตรวจสอบสคริปต์ที่พึ่งพาพฤติกรรมเฉพาะเวอร์ชันของ MicroPython กับ MicroPython 1.15 อีกครั้ง (การอัปเกรด MicroPython)

  4. ลบอาร์กิวเมนต์ update_jpeg_buffer ออกจากการเรียก ImageIO (การเปลี่ยนแปลง ImageIO)

สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่ต้องแก้ไข