v3.9.4

v3.9.4 ajoute un module buzzer, des ioctls de détection de mouvement HM01B0 Himax (avec des exemples de réveil sur mouvement à faible consommation), le contrôle de la fenêtre de lecture MT9V034, des fonctions Ethernet à faible consommation, un pilote de caméra OV7670 et la caméra Arduino Nano 33 BLE Sense. Elle apporte également un large lot d’accélérations JPEG / LCD / TV. L’API de sortie VSYNC a été remplacée par une fonction de rappel et les calculs de gain/exposition du MT9V034 ont été corrigés — lisez les modifications incompatibles ci-dessous.

Points forts

  • Module buzzer — un nouveau module buzzer (freq(), duty(), RESONANT_FREQ) sur l’OpenMV Pure Thermal.

  • Détection de mouvement HM01B0 — nouveaux ioctls de détection de mouvement Himax ainsi qu’un exemple de réveil sur mouvement à faible consommation.

  • Fenêtre de lecture MT9V034 — contrôle de la fenêtre de lecture à obturateur global via sensor.ioctl().

  • Nouvelles caméras / cartes — pilote OV7670 de base, caméra Arduino Nano 33 BLE Sense et carte Bormio.

  • Pipeline plus rapide — encodeur JPEG SIMD réécrit, dématriçage plus rapide et importantes accélérations des transferts LCD/TV.

  • Incompatibilité : sensor.set_vsync_output() a été remplacé par sensor.set_vsync_callback() et les calculs de gain/exposition du MT9V034 ont été corrigés — voir les modifications incompatibles.

Nouvelles fonctionnalités

  • Buzzer — ajout d’un module buzzer avec buzzer.freq(), buzzer.duty() et une constante buzzer.RESONANT_FREQ (OpenMV Pure Thermal).

  • Détection de mouvement HM01B0 — ajout des ioctls IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEAR et IOCTL_HIMAX_OSC_ENABLE, avec un exemple de détection de mouvement Himax et un exemple de réveil à faible consommation himax_wakeup_on_motion_detection.py.

  • Fenêtre de lecture MT9V034 — ajout de IOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW pour le contrôle de la fenêtre de lecture du MT9V034 via sensor.ioctl().

  • Ethernet à faible consommation — ajout de fonctions de mise hors tension / faible consommation Ethernet.

  • Portenta — ajout de fonctions de rappel d’activation/désactivation de l’oscillateur externe.

Autres changements et améliorations

  • Réécriture de l’encodeur JPEG avec SIMD et accélération de l’encodage Bayer→YCbCr, maintien sous tension du cœur JPEG matériel pendant l’exécution du script, accélération du dématriçage (~19,5 ms pour VGA), déchargement de la compression JPEG vers MDMA, accélération des chemins de transfert TV/LCD avec SIMD/DMA efficace et réduction massive de l’utilisation du bus LCD SPI. Ajout d’un pilote PHY ULPI USB3320 pour l’USB haute vitesse.

Corrections de bogues

Caméra et capteurs :

  • Correction de l’initialisation/diffusion du pilote HM01B0 et ajustement de sa cible AE / de son gain maximal, correction de l’écrêtage du gain AGC/AEC du MT9V034 et correction du chargement du micrologiciel d’autofocus OV5640 (ordre des octets).

Affichage :

  • Correction des transferts DMA LCD SPI supérieurs à 64 Ko, de la polarité de sortie LCD et de la stabilité du bus LCD (AXI QOS).

Système et connectivité :

  • Correction de l’instance SDMMC utilisée par le pilote WiFi CYW43 (avec une instance SDMMC définie par la carte), amélioration de l’efficacité DMA du FLIR Lepton (VOSPI porté à 20 MHz sur H7), correction du comportement faible consommation / veille du Portenta (limite de courant PMIC SW1, faible consommation Ethernet et ULPI), tolérance par le serveur RTSP des en-têtes CSeq et PLAY Range dans le désordre (FFPLAY), correction de l’alignement EABI 8 octets de la pile de l’éditeur de liens et correction d’une importation cassée dans l’exemple Portenta mqtt_sub.py.

Matériel et prise en charge des cartes

  • Capteur de caméra OV7670 — pilote de base.

  • Arduino Nano 33 BLE Sense — pilote de capteur de caméra (port nrf) avec corrections de la broche de réinitialisation et du bus I2C.

  • HM01B0 — ajout d’une résolution 320x320.

  • Bormio — configuration de l’horloge PLL, agencement de la mémoire flash et GPIO PORT K (également activé sur Portenta).

  • PHY ULPI USB3320 — USB haute vitesse.

Modifications incompatibles de l’API

Ruptures d’API visibles par l’utilisateur entre v3.9.3 et v3.9.4. Portée : modules C Python dans modules/ et bibliothèques Python dans scripts/libraries/.

Chaque changement est étiqueté selon son impact :

  • majeur — affecte la plupart des scripts qui utilisaient la fonctionnalité ; vous devrez porter votre code.

  • comportement — même API, résultats différents ; revérifiez les scripts ajustés.

Les changements sont regroupés par impact dans cet ordre. Si vous voulez simplement porter votre code, passez à la liste de vérification de migration à la fin. Chaque empreinte de commit renvoie à son diff sur GitHub.

Sortie VSYNC remplacée par une fonction de rappel (majeur)

sensor.set_vsync_output(pin) a été supprimé et remplacé par sensor.set_vsync_callback(callback). La ligne VSYNC ne pilote plus directement une Pin ; à la place, un appelable Python est invoqué avec l’état VSYNC, et votre fonction de rappel bascule elle-même la Pin. Le code qui utilisait sensor.set_vsync_output() doit être porté (voir l’exemple mis à jour vsync_gpio_output.py).

Commits : 5bbe25c20

Calculs de gain/exposition du MT9V034 corrigés (comportement)

La vitesse d’horloge et les calculs de gain/exposition du MT9V034 ont été corrigés, de sorte que sensor.set_auto_gain() / sensor.set_auto_exposure() produisent désormais des valeurs précises (et donc différentes) par rapport à avant. Les scripts qui codaient en dur des valeurs de gain/exposition compensatoires pour contourner les anciens calculs incorrects sur les caméras à obturateur global MT9V034 devraient supprimer ces contournements et réajuster.

Commits : 4420536c4

Liste de vérification de migration

Pour un portage propre vers v3.9.4, le travail typique est :

  1. Remplacer sensor.set_vsync_output(pin) par sensor.set_vsync_callback(callback) et basculer la Pin depuis l’intérieur de la fonction de rappel (le changement VSYNC).

  2. Réajuster tout contournement de gain/exposition MT9V034 par rapport aux calculs corrigés (le changement MT9V034).

Tous les autres scripts fonctionnent sans changement.