v3.4.2¶
v3.4.2 est une version majeure. Elle introduit l”OpenMV Cam H7 Plus (SDRAM, énorme tampon d’image pour la capture haute résolution), la caméra OV5640 5 MP, la prise en charge de FDCAN, un pilote OV2640 réécrit, Image.jpeg_encode_for_ide(), et de nouvelles bibliothèques pid / modbus. L’API ifconfig() du WINC1500 et les valeurs par défaut de find_apriltags() ont changé — lisez les changements incompatibles ci-dessous.
Points forts¶
OpenMV Cam H7 Plus — nouvelle carte avec un pilote SDRAM et un tampon d’image d’environ 31 Mo pour la capture haute résolution.
Pilote de caméra OV5640 5 MP avec détection basée sur I2C.
Prise en charge du périphérique FDCAN, avec un exemple CAN.
Réécriture de l’OV2640 — images à l’endroit, fonctions automatiques opérationnelles, capture JPEG, et une nouvelle taille d’image
sensor.XGA.JPEG IDE —
Image.jpeg_encode_for_ide()et transmission automatique des gros JPEG vers l’IDE.Incompatible : la sémantique de
WLAN.ifconfig()du WINC1500 a changé,MQTTClient.wait_msg()ne lève plus d’exception sur une réception vide, etfind_apriltags()utilise par défaut une connectivité à 4 voies — voir les changements incompatibles.
Nouvelles fonctionnalités¶
WiFi — ajout de
WLAN.netinfo()(renvoie(rssi, security, ssid, mac, ip)) et de la configuration IP statique du WINC1500 viaWLAN.ifconfig(), avec un exemple d’IP statique.FDCAN — ajout de la prise en charge du périphérique FDCAN et d’un exemple
can.py.JPEG IDE — ajout de
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); les gros JPEG sont automatiquement transmis à l’IDE lorsque le tampon est trop petit.Bibliothèques — ajout d’une bibliothèque de régulateur PID
pid, d’une bibliothèque esclave RTUmodbus(avec un exemple 32-modbus), et d’une classeSSD1306_I2Cpour les afficheurs OLED I2C.Exemples — ajout de l’abonnement MQTT (
mqtt_sub.py, avecmqtt.pyrenommé enmqtt_pub.py).Capteur — ajout de la taille d’image
sensor.XGA(1024x768) ;print()/repr()sur une image Bayer produit désormais des métadonnées JSON.
Autres changements et améliorations¶
Réécriture du pilote OV2640 (images à l’endroit, fonctions automatiques opérationnelles, capture JPEG acceptée) ; activation des apriltags haute résolution (suppression de la limite de ROI <64K pixels sur les cartes capables) ; abaissement du PCLK de l’OV2640 de 72 MHz à 36 MHz.
Corrections de bogues¶
Imagerie :
Correction d’un dépassement au-delà de la fin de l’image dans les opérations binaires, de la précision printf/flottante dans la sortie de
find_apriltags()/find_datamatrices()/find_lines(), du JSON mal formé dansprint()de blob, defind_apriltags()sur les images vflippées / hmirrorées, du bogue de ROI defind_lbp(), du délai d’attente de compression JPEG pour les grandes résolutions, et du rapport des statistiques mémoire defb_alloc.
Caméra et capteurs :
Correction de la maintenance du cache en mode JPEG et de l’alignement des tampons, de la taille maximale de transfert DCMI, de la configuration des registres et des résolutions de l’OV2640, de la restauration de l’état d’arrêt du capteur lors de la réinitialisation, et de la qualité d’image de l’OV7725 (ajout d’un filtre anti-bande par caméra).
Réseau et système :
Correction du hardfault/bogue de
socket.accept(), de la gestion des délais d’attente des sockets WINC1500 (le délai 0 est désormais bloquant ; les sockets ne sont pas fermés en cas de délai de réception), du sommeil profond du H7, du RTC (mise à jour amont et problèmes d’EXTI / minuteur de réveil / réinitialisation logicielle du H7), et de l’IRQ du minuteur depyb.Servo(Servo était non fonctionnel).
Matériel et prise en charge des cartes¶
OpenMV Cam H7 Plus (OPENMV4R) — nouvelle carte avec un pilote SDRAM permettant un grand tampon d’image (~31 Mo).
OV5640 — nouveau pilote de caméra 5 MP avec détection basée sur I2C.
FDCAN — prise en charge du périphérique.
Changements d’API incompatibles¶
Ruptures d’API visibles par l’utilisateur entre v3.4.1 et v3.4.2. 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 utilisant la fonctionnalité ; vous devrez porter votre code.
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 migration à la fin. Chaque hash de commit renvoie à son diff sur GitHub.
Sémantique de WLAN.ifconfig() du WINC1500 modifiée (majeur)¶
Sur le shield WiFi WINC1500, WLAN.ifconfig() ne renvoie plus l’ancienne liste à 5 éléments [rssi, security, ssid, mac, ip]. Il obtient/définit désormais un tuple (ip, subnet, gateway, dns) (et prend en charge la configuration IP statique), conformément à l’interface network standard. Le code qui lisait les informations de connexion depuis ifconfig() doit basculer vers la nouvelle méthode WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Commits : e685b484a
MQTTClient.wait_msg() renvoie None sur une réception vide (mineur)¶
MQTTClient.wait_msg() de la bibliothèque mqtt renvoie désormais None sur une réception vide au lieu de lever OSError(-1). Le code qui interceptait OSError(-1) pour détecter un socket fermé/vide doit désormais vérifier une valeur de retour None.
Commits : 76239ea89
Liste de migration¶
Pour un portage propre vers v3.4.2, le travail habituel est le suivant :
Remplacer les lectures d’informations de connexion de
WLAN.ifconfig()du WINC1500 parWLAN.netinfo()(le changement de ifconfig).Vérifier un retour
NonedeMQTTClient.wait_msg()au lieu d’intercepterOSError(-1)(le changement de wait_msg).Réajuster la détection d’AprilTag ou compiler avec
IMLIB_ENABLE_FINE_APRILTAGSsi vous avez besoin d’une connectivité à 8 voies (le changement de find_apriltags).
Tous les autres scripts fonctionnent sans modification.