v4.1.0

v4.1.0 รองรับ Arduino Nano RP2040 Connect / Raspberry Pi Pico อย่างเต็มรูปแบบ (WiFi, Bluetooth, การจับภาพจากกล้อง, การกระโดดไปยังบูตโหลดเดอร์), การถอดรหัส ภาพ JPEG โดยตรง, ไคลเอ็นต์ HTTP urequests ที่ฝังในเฟิร์มแวร์, รองรับเซนเซอร์ OV7670 และการรายงานข้อผิดพลาดของเซนเซอร์ที่เป็นมาตรฐาน WiFi API และข้อยกเว้นของเซนเซอร์มีการเปลี่ยนแปลง — อ่านการเปลี่ยนแปลงที่ทำให้เกิดความเข้ากันไม่ได้ด้านล่าง

จุดเด่น

  • บอร์ด RP2 — Arduino Nano RP2040 Connect / Pico รองรับ WiFi (NINA-W10), Bluetooth (NimBLE), การจับภาพจากกล้อง/DCMI และคำสั่งกระโดดไปยังบูตโหลดเดอร์

  • การถอดรหัส JPEG — การดำเนินการภาพรองรับการรับไฟล์ JPEG ที่บีบอัดแล้วโดยตรง

  • ไคลเอ็นต์ HTTP urequests ฝังอยู่ในเฟิร์มแวร์แล้ว

  • รองรับเซนเซอร์กล้อง OV7670

  • การเปลี่ยนแปลงสำคัญ: WiFi API ของ NINA/RP2 ได้รับการปรับปรุงใหม่ และข้อผิดพลาดของเซนเซอร์หลายรายการตอนนี้ยกข้อยกเว้น RuntimeError — ดูการเปลี่ยนแปลงที่ทำให้เกิดความเข้ากันไม่ได้

ฟีเจอร์ใหม่

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi ผ่านไดรเวอร์ NINA-W10 network, Bluetooth/NimBLE, การจับภาพจากกล้อง (โปรแกรม DCMI PIO) และคำสั่งกระโดดไปยังบูตโหลดเดอร์

  • การถอดรหัสภาพ JPEGfind_apriltags(), lcd.display(), tv.display() และการดำเนินการภาพที่เกี่ยวข้องตอนนี้รองรับภาพ JPEG ที่บีบอัดแล้วโดยตรง (ถอดรหัสเป็น binary/grayscale/RGB565)

  • urequests — ไคลเอ็นต์ HTTP (GET/POST/PUT/...) ตอนนี้ถูกฝังอยู่ใน OpenMV 4 / 4 Plus / Portenta / Nicla แล้ว พร้อมตัวอย่าง http_post.py

  • ไลบรารีช่วยเหลือ ble_advertising ฝังอยู่ใน Nano RP2040 Connect

  • Host/debugpyopenmv.reset_to_bl() และคำสั่ง USBDBG_SYS_RESET_TO_BL (0x0E) ใหม่สำหรับรีเซ็ตเข้าสู่บูตโหลดเดอร์; การกระโดดไปยังบูตโหลดเดอร์บน Arduino Nano 33 BLE Sense

  • OV7670 — รองรับเซนเซอร์กล้อง OV7670 ใหม่ เลือกได้บน OpenMV 4

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

  • RP2 UDP sockets ผูกพอร์ตชั่วคราวโดยอัตโนมัติเมื่อใช้งานโดยไม่ได้ผูกพอร์ต; อัปเดต submodule MicroPython ที่รวมอยู่

การแก้ไขบั๊ก

เครือข่าย:

  • แก้ไขการจัดการ socket accept/close/send/recv/bind ของ NINA WiFi และการหมดเวลาของการดำเนินการ รวมถึง race condition ของบัฟเฟอร์ข้อความดีบั๊กบน RP2 ที่อาจทำให้เอาต์พุต IDE เสียหาย

กล้องและระบบ:

  • แก้ไขการรีเซ็ต HM01B0, บัส I2C ของกล้องที่ค้างหลังจากการสแกนเซนเซอร์ล้มเหลวบน OpenMV H7, การเข้าสู่โหมดพลังงานต่ำ H7 ULPI เมื่อตัดการเชื่อมต่อ USB, การสร้างพิน ADC ของ H7 และการต่อสายกล้อง Portenta / shield SPI-CS

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

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi, Bluetooth, กล้อง, ระบบไฟล์แฟลชขนาดใหญ่ขึ้น, บูตโหลดเดอร์ MSC

  • เซนเซอร์กล้อง OV7670 (OpenMV 4)

  • Arduino Portenta H7 — breakout I2C4, พิน PWM/clock เพิ่มเติม, เซนเซอร์ OV7725 / MT9V034

การเปลี่ยนแปลง API ที่ทำให้เกิดความเข้ากันไม่ได้

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

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

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

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

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

NINA / RP2 WiFi API ได้รับการปรับปรุงใหม่ (minor)

ไดรเวอร์ NINA / RP2 WLAN ได้รับการปรับปรุงใหม่เพื่อให้ตรงกับอินเทอร์เฟซ network ของ MicroPython / CYW43 upstream: constructor WLAN(interface) (โหมด STA/AP), เมธอด active([bool]) ใหม่, นามแฝง config / start_ap ของ connect, อาร์กิวเมนต์ ssid ของ connect() เปลี่ยนชื่อเป็น essid, คีย์เวิร์ด channel ใหม่ และ nina.fw_version() ตอนนี้คืนค่า tuple (major, minor, patch) แทน bytes ดิบ การไม่ตรงกันของเวอร์ชันเฟิร์มแวร์ NINA ตอนนี้เป็นแค่คำเตือนที่ไม่ร้ายแรงแทนที่จะเป็น OSError

Commits: eb2f98277, e14470f68, 0c40f4832

ข้อผิดพลาดของเซนเซอร์ตอนนี้ยกข้อยกเว้น RuntimeError (behavior)

การรายงานข้อผิดพลาดของเซนเซอร์ถูกทำให้เป็นมาตรฐานรอบตารางรหัสข้อผิดพลาดแบบรวม: ความล้มเหลวของกล้อง (หมดเวลาการจับภาพ, framesize/pixformat/window/framerate ไม่ถูกต้อง, ข้อผิดพลาด framebuffer, JPEG overflow, เซนเซอร์ที่ตรวจไม่พบ, ...) ตอนนี้ยกข้อความที่สอดคล้องกันและอธิบายได้ และหลายเงื่อนไขที่เคยยกข้อยกเว้น ValueError ตอนนี้ยกข้อยกเว้น RuntimeError (รวมถึง sensor.reset()) โค้ดที่จับ ValueError สำหรับกรณีเหล่านี้ต้องเปลี่ยนไปจับ RuntimeError แทน

Commits: 0491a6a88, c8bf0af6f, 2fb226562

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

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

  1. พอร์ตโค้ด WiFi ของ NINA/RP2 ไปยังอินเทอร์เฟซมาตรฐาน network.WLAN (WLAN(interface), active(), essid=) และคาดหวัง tuple จาก nina.fw_version() (การเปลี่ยนแปลง WiFi API)

  2. เปลี่ยน except ValueError เป็น except RuntimeError รอบการจัดการข้อผิดพลาดของกล้อง / sensor.reset() (การเปลี่ยนแปลงข้อผิดพลาดของเซนเซอร์)