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 พร้อมตัวอย่าง BLEMT9M114 — เพิ่มไดรเวอร์เซนเซอร์กล้อง 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 อีกครั้ง
อาร์กิวเมนต์ 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()กับการจัดการอาร์กิวเมนต์ที่ยืดหยุ่นยิ่งขึ้นที่ปรับปรุงแล้ว (การเปลี่ยนแปลง windowing)ตรวจสอบสคริปต์ที่พึ่งพาพฤติกรรมเฉพาะเวอร์ชันของ MicroPython กับ MicroPython 1.15 อีกครั้ง (การอัปเกรด MicroPython)
ลบอาร์กิวเมนต์
update_jpeg_bufferออกจากการเรียก ImageIO (การเปลี่ยนแปลง ImageIO)
สคริปต์อื่น ๆ ทั้งหมดทำงานได้โดยไม่ต้องแก้ไข