v4.4.0

v4.4.0 adds a tf.regression() API, FLIR Lepton support on the OpenMV Cam H7 Pro, Cortex-M4 coprocessor support on the Arduino Nicla Vision, and MicroPython 1.19. A few board-specific modules and WiFi/LCD behaviors changed — read the breaking changes below.

Highlights

  • tf.regression() — run 1D-input/1D-output TensorFlow Lite regression models.

  • FLIR Lepton thermal sensor support on the OpenMV Cam H7 Pro.

  • Arduino Nicla Vision — Cortex-M4 coprocessor support, working MicroSpeech, LPUART1.

  • MicroPython updated to 1.19; ulab updated to 5.1.1.

  • Breaking: the Nicla Vision lcd/tv modules were disabled and the RP2040 Connect WiFi driver changed — see the breaking changes.

New features

  • tf.regression(model, input_array) — a new function for 1D input/output TensorFlow Lite regression models, returning a list of float outputs.

  • GC2145 controlssensor.set_auto_exposure() and sensor.set_auto_whitebal() are now functional on the GC2145 (auto exposure / white balance can be disabled; explicit exposure/gain not yet supported).

  • Arduino Nicla Vision — Cortex-M4 (CM4) coprocessor support and the LPUART1 peripheral were enabled.

  • machine.Pin — the USB_VBUS pin is now exposed to user scripts.

Other changes and improvements

  • MicroPython updated to 1.19; ulab to 5.1.1; the bundled cyw43 WiFi driver was updated.

  • The RP2 (Arduino Nano RP2040 Connect) and nRF (Arduino Nano 33 BLE Sense) ports switched to the new TinyUSB-based debugger for the IDE/host connection.

  • The OV7670 XCLK was raised from 12 MHz to 24 MHz (updated register set).

Bug fixes

Camera and sensors:

  • OpenMV Pure Thermal blob temperature statistics now use the IR image instead of the color image, so per-blob mean temperature is correct.

  • Fixed draw_image() ROI handling and area scaling for more accurate scaled output.

  • The IMU is re-initialized after a soft-reset so it keeps working when the IMU SPI bus is enabled.

System:

  • Fixed signed/unsigned comparison issues across FAST/AGAST feature detection, blob detection, CLAHE, and the LCD/TV drivers; fixed STM32 camera-GPIO / SPI / DAC de-initialization, H7 LPUART pin mapping, and the STM32Cube.AI nn module registration.

Arduino Nicla Vision:

  • MicroSpeech now works (doubled PDM buffer, added example) and low-power standby mode was fixed.

Hardware and board support

  • OpenMV Cam H7 Pro — FLIR Lepton thermal sensor support.

  • Arduino Nicla Vision — CM4 coprocessor, LPUART1, MicroSpeech, low-power standby.

Breaking API changes

User-visible API breaks between v4.3.3 and v4.4.0. Scope: Python C-modules in modules/ and Python libraries in scripts/libraries/.

Each change is tagged with its impact:

  • minor — narrow API; only affects scripts on a specific board.

  • behavior — same API, different results; re-check tuned scripts.

Changes are grouped by impact in that order. If you just want to port your code, jump to the migration checklist at the end. Each commit hash links to its diff on GitHub.

Nicla Vision modules and RP2040 WiFi (minor)

On the Arduino Nicla Vision, the lcd and tv modules were disabled to free memory for CM4 coprocessor support — scripts using those modules on the Nicla Vision will no longer find them. The Arduino Nano RP2040 Connect switched from the OpenMV-custom WiFi/nina implementation to the upstream MicroPython NINA-W10 driver/module, whose API differs.

Commits: f78d191e3, ddf01cb09

WiFi socket timeout and LCD vertical flip (behavior)

A WINC1500 socket timeout now returns a non-blocking error (EWOULDBLOCK) instead of ETIMEDOUT, so timed-out sockets are no longer unexpectedly closed — code that caught ETIMEDOUT must be updated. The SPI LCD shield display now raises ValueError (“Vertical flip requires triple buffering!”) when a negative y_scale is requested without triple buffering enabled.

Commits: 1dc4bea88, 7e52cf751

Migration checklist

For a clean port to v4.4.0 the typical work is:

  1. On the Nicla Vision, stop using lcd/tv; on the Nano RP2040 Connect, port WiFi code to the upstream NINA-W10 driver (the board module changes).

  2. Update WINC1500 socket code to expect EWOULDBLOCK on timeout, and enable triple buffering for vertically-flipped LCD output (the behavior changes).