v4.5.0

v4.5.0 est une version majeure. L’ancien module lcd a été remplacé par un module display unifié comportant des backends SPI / parallèle / DSI / TV distincts, la prise en charge de la carte Arduino Giga a été ajoutée, et une vague de fonctionnalités d’affichage, de tactile et de contrôle du capteur est arrivée. Plusieurs changements incompatibles sont présents — lisez-les ci-dessous.

Points forts

  • Nouveau module display — remplace lcd par des backends unifiés SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Prise en charge de la carte Arduino Giga.

  • Nouveau matériel d’affichage/tactile — afficheurs DSI sur STM32 H7, TFP410 DVI/HDMI, CEC HDMI/DVI, panneaux RGB ST7701, et tactile capacitif GT911 / FT5X06.

  • Nouveaux contrôles du capteur — calibration du niveau de noir, mode nuit et sensor.disable_delays() ; transposition bien plus rapide (~5x) et morphologie (~2,5x).

  • Incompatibilité : lcddisplay, lcd_touchft5x06, broches LED renommées — voir les changements incompatibles.

Nouvelles fonctionnalités

  • Backends d’affichageDisplayData (lecture DDC/EDID), un sérialiseur DVI/HDMI TFP410, la prise en charge des afficheurs MIPI-DSI sur STM32 H7, un pilote cec HDMI/DVI, et une bibliothèque Python display avec un assistant d’initialisation pour le panneau RGB ST7701.

  • Tactile — nouveau pilote tactile capacitif 5 points GT911 (read_points() / read_id() / reset()).

  • Extension machine — une bibliothèque machine figeable avec une classe d’assistance machine.LED, et une nouvelle méthode machine.LED.value([v]).

  • Contrôles du capteursensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (calibration du niveau de noir), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip OV7670, et sensor.disable_delays() pour ignorer les délais de stabilisation de la caméra et accélérer la reconfiguration.

  • i.MX RTsensor.set_xclk_frequency() accepte désormais n’importe quelle fréquence (en se calant sur le diviseur CSI valide le plus proche) et les modules SPI lcd / tv / fir ont été activés sur le RT1060.

Autres changements et améliorations

  • Opérations d’image bien plus rapides — la transposition d’image est ~5x plus rapide et image.morph() est ~2,5x plus rapide.

  • La détection du bus caméra parcourt et valide désormais plusieurs adresses de périphériques, prenant en charge les cartes comportant plusieurs périphériques sur le bus.

Corrections de bugs

Caméra et capteurs :

  • Correction de la précision du calcul du gain sur de nombreux capteurs (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), de l’exposition / binning de colonnes du MT9V0xx, de l’exposition du OV5640, et du fenêtrage VGA du OV7670.

  • STM32 supprime désormais les trames de transposition corrompues au lieu de retourner des images incorrectes.

Traitement d’image :

  • Correction d’un dépassement d’entier affectant les opérations image / FIR / ToF / LCD / TV, d’instructions à virgule flottante vcvtm/vcvtp invalides sur Cortex-M4 (fast_floorf/fast_ceilf), d’un bug de mise à l’échelle sur place dans la conversion image.to_*(), et d’une corruption du cache de dessin DMA2D.

Affichage et système :

  • Correction du timing et du mode portrait des afficheurs DSI, de micro_speech listen() sur Nicla Vision / Portenta H7, du bouton utilisateur STM32 (pyb.Switch), et de la prise en charge du bus I2C4.

Matériel et prise en charge des cartes

  • Arduino Giga — nouvelle carte, avec des correspondances de broches Arduino nommées et un jeu complet d’exemples.

  • OpenMV RT1060 — modules SPI LCD, TV et thermiques FIR activés.

  • Arduino Nano 33 BLE Sense — broches LED.

Changements d’API incompatibles

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

Chaque changement est étiqueté selon son impact :

  • majeur — la plupart des scripts qui l’utilisaient nécessitent des modifications.

  • mineur — API restreinte ; n’affecte que les scripts qui l’utilisaient.

  • 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 directement à la liste de contrôle de migration à la fin. Chaque hash de commit renvoie vers son diff sur GitHub.

Module lcd remplacé par display (majeur)

L’ancien module lcd a été supprimé et remplacé par un module display unifié divisé en backends SPIDisplay (shield SPI LCD), RGBDisplay / parallèle, DSIDisplay (MIPI-DSI) et TVDisplay partageant une API commune. Les scripts doivent passer de import lcd au module display et construire l’objet backend approprié.

Commits : 227824aac, 6c6336829

Module tactile, broches LED et pilotes intégrés (mineur)

Le module générique lcd_touch a été remplacé par un module de pilote tactile capacitif dédié FT5X06. Les noms des broches LED ont été renommés pour assurer la cohérence sur toutes les cartes (les scripts référençant les anciens noms de broches LED doivent être mis à jour). Les pilotes IMU/capteurs intégrés hts221 / lps22h / lsm6dsox / lsm9ds1 ont été remplacés par les versions amont de micropython-lib, dont les API diffèrent légèrement (les exemples intégrés ont été mis à jour en conséquence).

Commits : 86ad6dcdb, 9344c3b74, 2b5b7963b

Les contrôles de capteur non pris en charge émettent désormais un avertissement (comportement)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() et set_auto_blc() affichent désormais un avertissement au lieu de lever une RuntimeError lorsque le capteur actif ne prend pas en charge le contrôle, afin qu’un même script puisse s’exécuter sur des capteurs aux capacités différentes. Le code qui s’appuyait sur la capture de l’exception doit être mis à jour.

Commit : dbf4996f2

Liste de contrôle de migration

Pour un portage propre vers v4.5.0, le travail typique consiste à :

  1. Remplacer l’utilisation de import lcd par le nouveau module display et le backend approprié (le changement du module display).

  2. Passer de lcd_touch à FT5X06, mettre à jour tout ancien nom de broche LED, et revérifier les API des pilotes IMU amont (les changements tactile/broche/pilote).

  3. Remplacer try/except RuntimeError autour des contrôles de capteur non pris en charge par des vérifications de capacité (le changement de contrôle du capteur).