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é parsensor.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
buzzeravecbuzzer.freq(),buzzer.duty()et une constantebuzzer.RESONANT_FREQ(OpenMV Pure Thermal).Détection de mouvement HM01B0 — ajout des ioctls
IOCTL_HIMAX_MD_ENABLE/MD_WINDOW/MD_THRESHOLD/MD_CLEARetIOCTL_HIMAX_OSC_ENABLE, avec un exemple de détection de mouvement Himax et un exemple de réveil à faible consommationhimax_wakeup_on_motion_detection.py.Fenêtre de lecture MT9V034 — ajout de
IOCTL_SET_READOUT_WINDOW/IOCTL_GET_READOUT_WINDOWpour le contrôle de la fenêtre de lecture du MT9V034 viasensor.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
CSeqetPLAY Rangedans 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 Portentamqtt_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 :
Remplacer
sensor.set_vsync_output(pin)parsensor.set_vsync_callback(callback)et basculer laPindepuis l’intérieur de la fonction de rappel (le changement VSYNC).Réajuster tout contournement de gain/exposition MT9V034 par rapport aux calculs corrigés (le changement MT9V034).
Tous les autres scripts fonctionnent sans changement.