v4.2.2

v4.2.2 ajoute la prise en charge des images PNG (décodage/encodage via lodepng), un chargeur de modèles intégrés piloté par table, la prise en charge de l’OV5640 sur le Portenta, une mise à jour de TensorFlow pour Edge Impulse et ulab 4.0. L’API de configuration du CAN par RPC a changé — consultez les changements incompatibles ci-dessous.

Points forts

  • Prise en charge du PNGImage.to_png(), image.PNG et la lecture/écriture de fichiers PNG.

  • tf.load_builtin_model() — des modèles intégrés pilotés par table qui peuvent être remplacés ou ajoutés au moment de la compilation.

  • Portenta H7 — prise en charge de la caméra OV5640 (avec autofocus).

  • MicroPython/ulab — ulab mis à jour vers la version 4.0.0.

  • Incompatible : l’API de configuration du CAN par RPC a changé — voir les changements incompatibles.

Nouvelles fonctionnalités

  • Format d’image PNG — une nouvelle méthode Image.to_png(), une constante image.PNG / PIXFORMAT_PNG, le chargement/enregistrement de fichiers PNG (lecture/écriture de .png) et la sortie PNG dans les conversions image.to(), via le codec lodepng intégré.

  • tf.load_builtin_model(path) — charge un modèle intégré au micrologiciel et renvoie un tuple (labels, net) ; les modèles intégrés sont désormais pilotés par table afin de pouvoir être remplacés ou ajoutés au moment de la compilation.

Autres changements et améliorations

  • TensorFlow / Edge Impulse — la bibliothèque d’inférence fournie a été mise à jour vers Edge Impulse ei-V2.5.0, le modèle person_detection a été déplacé dans la table des modèles intégrés, et les opérateurs TensorFlow manquants ont été ajoutés à toutes les versions Cortex-M0+/M4/M7/M55, ce qui permet d’exécuter davantage de modèles Edge Impulse.

  • ulab mis à jour vers la version 4.0.0.

  • L’ouverture du port série virtuel USB à 1200 bps déclenche désormais une réinitialisation de type Arduino (touch reset) vers le programme d’amorçage.

  • Le micrologiciel du module WiFi WINC1500 a été mis à jour vers la version 19.7.6 (avec le script de mise à jour), et il signale désormais la version réelle du pilote hôte.

  • Le port RP2 affiche « MPY: soft reboot » et a obtenu l’initialisation/désinitialisation de l’UART.

Corrections de bogues

  • Correction de la taille du tampon d’image brut de l’Arduino Nano RP2040 Connect et de l’identifiant produit USB de l’Arduino Nicla Vision (énumération USB correcte).

Prise en charge du matériel et des cartes

  • Arduino Portenta H7 — prise en charge de la caméra OV5640 (avec autofocus) ; le GC2145 est désactivé sur le Portenta.

  • Arduino Nano RP2040 Connect — configuration mémoire et modèles de système de fichiers vierge.

  • WiFi Shield (WINC1500) — micrologiciel mis à jour vers la version 19.7.6.

Changements d’API incompatibles

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

Chaque changement est étiqueté selon son impact :

  • 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. Chaque empreinte de commit renvoie à son diff sur GitHub.

API de configuration du CAN par RPC (mineur)

Dans la bibliothèque rpc, l’argument nommé CAN sampling_point de rpc_can_master / rpc_can_slave a été renommé en sample_point (pour correspondre à MicroPython en amont), et l’assistant manuel de chronométrage des bits CAN a été supprimé — le bus CAN est désormais configuré via CAN(..., baudrate=, sample_point=). Les scripts qui passaient sampling_point ou s’appuyaient sur l’ancien calcul du chronométrage des bits doivent être mis à jour.

Commits : b565eca58, 06d716986

image.format() et images compressées (comportement)

Avec le chemin unifié des images compressées ajouté pour le PNG, image.format() renvoie désormais PIXFORMAT_INVALID pour un format inconnu, et l’indexation / l’itération / l’affichage des images compressées couvrent désormais le PNG aussi bien que le JPEG. Le code qui inspectait la valeur de retour précédente pour les formats inconnus devrait être revérifié.

Commit : f12a4659c

Liste de contrôle de migration

Pour un portage propre vers v4.2.2 : renommez sampling_pointsample_point pour le CAN par RPC et abandonnez toute configuration manuelle du chronométrage des bits CAN (le changement du CAN par RPC), et revérifiez tout code qui inspectait image.format() pour des formats inconnus (le changement de format()).