v4.1.0

v4.1.0 apporte la prise en charge complète de l”Arduino Nano RP2040 Connect / Raspberry Pi Pico (WiFi, Bluetooth, capture caméra, saut vers le programme d’amorçage), le décodage direct d’images JPEG, un client HTTP urequests figé, la prise en charge du capteur OV7670 et un signalement standardisé des erreurs de capteur. L’API WiFi et les exceptions de capteur ont changé — consultez les changements incompatibles ci-dessous.

Points forts

  • Cartes RP2 — l’Arduino Nano RP2040 Connect / Pico gagne le WiFi (NINA-W10), le Bluetooth (NimBLE), la capture caméra/DCMI et le saut vers le programme d’amorçage.

  • Décodage JPEG — les opérations sur les images acceptent désormais directement les images JPEG compressées.

  • Client HTTP urequests figé dans le micrologiciel.

  • Prise en charge du capteur caméra OV7670.

  • Incompatible : l’API WiFi NINA/RP2 a été remaniée et plusieurs erreurs de capteur déclenchent désormais RuntimeError — voir les changements incompatibles.

Nouvelles fonctionnalités

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi via le pilote network NINA-W10, Bluetooth/NimBLE, capture caméra (programme PIO DCMI) et une commande de saut vers le programme d’amorçage.

  • Décodage d’images JPEGfind_apriltags(), lcd.display(), tv.display() et les opérations sur les images associées acceptent désormais directement les images JPEG compressées (décodage en binaire/niveaux de gris/RGB565).

  • urequests — le client HTTP (GET/POST/PUT/…) est désormais figé sur les OpenMV 4 / 4 Plus / Portenta / Nicla, avec un exemple http_post.py.

  • Bibliothèque utilitaire ble_advertising, figée sur le Nano RP2040 Connect.

  • Hôte/débogagepyopenmv.reset_to_bl() et une nouvelle commande USBDBG_SYS_RESET_TO_BL (0x0E) pour redémarrer dans le programme d’amorçage ; saut vers le programme d’amorçage sur l’Arduino Nano 33 BLE Sense.

  • OV7670 — prise en charge du nouveau capteur caméra OV7670, sélectionnable sur OpenMV 4.

Autres changements et améliorations

  • Les sockets UDP RP2 se lient automatiquement à un port éphémère lorsqu’ils sont utilisés non liés ; le sous-module MicroPython fourni a été mis à jour.

Corrections de bogues

Réseau :

  • Correction de la gestion accept/close/send/recv/bind des sockets WiFi NINA et des délais d’expiration des opérations, ainsi que d’une condition de concurrence sur le tampon de texte de débogage RP2 qui pouvait corrompre la sortie de l’IDE.

Caméra et système :

  • Correction de la réinitialisation du HM01B0, du bus I2C de la caméra qui se bloquait après un balayage de capteur échoué sur l’OpenMV H7, de l’entrée basse consommation ULPI du H7 lors de la déconnexion USB, de la génération des broches ADC du H7 et du brochage caméra / SPI-CS du shield Portenta.

Matériel et prise en charge des cartes

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi, Bluetooth, caméra, système de fichiers en mémoire flash plus grand, programme d’amorçage MSC.

  • Capteur caméra OV7670 (OpenMV 4).

  • Arduino Portenta H7 — I2C4 sur le breakout, broches PWM/horloge supplémentaires, capteurs OV7725 / MT9V034.

Changements d’API incompatibles

Ruptures d’API visibles par l’utilisateur entre v4.0.2 et v4.1.0. 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 réglés.

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

API WiFi NINA / RP2 remaniée (mineur)

Le pilote WLAN NINA / RP2 a été remanié pour correspondre à l’interface network MicroPython / CYW43 amont : un constructeur WLAN(interface) (mode STA/AP), une nouvelle méthode active([bool]), les alias config / start_ap de connect, l’argument ssid de connect() renommé en essid, un nouveau mot-clé channel, et nina.fw_version() renvoie désormais un tuple (major, minor, patch) au lieu d’octets bruts. Une incompatibilité de version du micrologiciel NINA est désormais un avertissement non fatal au lieu d’une OSError.

Commits : eb2f98277, e14470f68, 0c40f4832

Les erreurs de capteur déclenchent désormais RuntimeError (comportement)

Le signalement des erreurs de capteur a été standardisé autour d’une table de codes d’erreur unifiée : les défaillances de caméra (délai de capture dépassé, framesize/pixformat/window/framerate invalide, erreur de tampon d’image, débordement JPEG, capteur non détecté, …) déclenchent désormais des messages cohérents et descriptifs, et plusieurs conditions qui déclenchaient auparavant ValueError déclenchent désormais RuntimeError (y compris sensor.reset()). Le code qui interceptait ValueError pour ces cas doit intercepter RuntimeError à la place.

Commits : 0491a6a88, c8bf0af6f, 2fb226562

Liste de vérification de migration

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

  1. Porter le code WiFi NINA/RP2 vers l’interface standard network.WLAN (WLAN(interface), active(), essid=) et s’attendre à un tuple en retour de nina.fw_version() (le changement de l’API WiFi).

  2. Remplacer except ValueError par except RuntimeError autour de la gestion des erreurs de caméra / sensor.reset() (le changement des erreurs de capteur).