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— remplacelcdpar des backends unifiésSPIDisplay/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é :
lcd→display,lcd_touch→ft5x06, broches LED renommées — voir les changements incompatibles.
Nouvelles fonctionnalités¶
Backends d’affichage —
DisplayData(lecture DDC/EDID), un sérialiseur DVI/HDMITFP410, la prise en charge des afficheurs MIPI-DSI sur STM32 H7, un pilotececHDMI/DVI, et une bibliothèque Pythondisplayavec un assistant d’initialisation pour le panneau RGBST7701.Tactile — nouveau pilote tactile capacitif 5 points
GT911(read_points()/read_id()/reset()).Extension
machine— une bibliothèquemachinefigeable avec une classe d’assistancemachine.LED, et une nouvelle méthodemachine.LED.value([v]).Contrôles du capteur —
sensor.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, etsensor.disable_delays()pour ignorer les délais de stabilisation de la caméra et accélérer la reconfiguration.i.MX RT —
sensor.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 SPIlcd/tv/firont é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/vcvtpinvalides sur Cortex-M4 (fast_floorf/fast_ceilf), d’un bug de mise à l’échelle sur place dans la conversionimage.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_speechlisten()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é.
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).
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 à :
Remplacer l’utilisation de
import lcdpar le nouveau moduledisplayet le backend approprié (le changement du module display).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).Remplacer
try/except RuntimeErrorautour des contrôles de capteur non pris en charge par des vérifications de capacité (le changement de contrôle du capteur).