v3.4.2¶
v3.4.2 è una grande release. Introduce l”OpenMV Cam H7 Plus (SDRAM, frame buffer enorme per la cattura ad alta risoluzione), la camera OV5640 da 5 MP, il supporto FDCAN, un driver OV2640 riscritto, Image.jpeg_encode_for_ide() e nuove librerie pid / modbus. L’API ifconfig() del WINC1500 e i valori di default di find_apriltags() sono cambiati — leggi le modifiche incompatibili più sotto.
In evidenza¶
OpenMV Cam H7 Plus — nuova scheda con un driver SDRAM e un frame buffer da circa 31 MB per la cattura ad alta risoluzione.
Driver per la camera OV5640 da 5 MP con rilevamento via I2C.
Supporto alla periferica FDCAN, con un esempio CAN.
Riscrittura dell’OV2640 — immagini dritte, funzioni automatiche funzionanti, snapshot JPEG e una nuova framesize
sensor.XGA.JPEG per l’IDE —
Image.jpeg_encode_for_ide()e trasmissione automatica all’IDE dei JPEG di grandi dimensioni.Incompatibile: la semantica di
WLAN.ifconfig()del WINC1500 è cambiata,MQTTClient.wait_msg()non solleva più eccezioni su una ricezione vuota efind_apriltags()usa di default la connettività a 4 direzioni — vedi le modifiche incompatibili.
Nuove funzionalità¶
WiFi — aggiunti
WLAN.netinfo()(restituisce(rssi, security, ssid, mac, ip)) e la configurazione a IP statico del WINC1500 tramiteWLAN.ifconfig(), con un esempio a IP statico.FDCAN — aggiunto il supporto alla periferica FDCAN e un esempio
can.py.JPEG per l’IDE — aggiunti
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); i JPEG di grandi dimensioni vengono trasmessi automaticamente all’IDE quando il buffer è troppo piccolo.Librerie — aggiunti una libreria controller PID
pid, una libreria slave RTUmodbus(con un esempio 32-modbus) e una classeSSD1306_I2Cper display OLED I2C.Esempi — aggiunto MQTT subscribe (
mqtt_sub.py, conmqtt.pyrinominato inmqtt_pub.py).Sensore — aggiunta la framesize
sensor.XGA(1024x768);print()/repr()su un’immagine Bayer ora produce metadati JSON.
Altre modifiche e miglioramenti¶
Riscritto il driver OV2640 (immagini dritte, funzioni automatiche funzionanti, snapshot JPEG accettato); abilitati gli apriltag ad alta risoluzione (elimina il limite della ROI <64K pixel sulle schede capaci); abbassato il PCLK dell’OV2640 da 72 MHz a 36 MHz.
Correzioni di bug¶
Imaging:
Corretti un overflow oltre la fine dell’immagine nelle operazioni binarie, la precisione printf/float nell’output di
find_apriltags()/find_datamatrices()/find_lines(), il JSON malformato nelprint()dei blob,find_apriltags()su immagini vflipped / hmirrored, il bug della ROI infind_lbp(), il timeout di compressione JPEG per le risoluzioni elevate e il reporting delle statistiche di memoria difb_alloc.
Camera e sensori:
Corretti la manutenzione della cache e l’allineamento del buffer in modalità JPEG, la dimensione massima del trasferimento DCMI, la configurazione dei registri e le risoluzioni dell’OV2640, il ripristino dello stato di shutdown del sensore al reset e la qualità dell’immagine dell’OV7725 (aggiunto un filtro anti-banding per camera).
Networking e sistema:
Corretti l’hardfault/bug di
socket.accept(), la gestione del timeout dei socket del WINC1500 (il timeout 0 ora è bloccante; i socket non vengono chiusi sul timeout di recv), il deep-sleep dell’H7, la RTC (aggiornamento upstream e problemi di EXTI / wakeup-timer / soft-reset dell’H7) e l’IRQ del timer dipyb.Servo(Servo era non funzionante).
Hardware e supporto schede¶
OpenMV Cam H7 Plus (OPENMV4R) — nuova scheda con un driver SDRAM che abilita un frame buffer grande (~31 MB).
OV5640 — nuovo driver per camera da 5 MP con rilevamento via I2C.
FDCAN — supporto alla periferica.
Modifiche incompatibili dell’API¶
Modifiche incompatibili dell’API visibili all’utente tra v3.4.1 e v3.4.2. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata dal suo impatto:
major — riguarda la maggior parte degli script che usavano la funzionalità; sarà necessario adattare il codice.
minor — API ristretta; riguarda solo gli script che la usavano.
behavior — stessa API, risultati diversi; ricontrolla gli script ottimizzati.
Le modifiche sono raggruppate per impatto in quell’ordine. Se vuoi solo adattare il tuo codice, vai direttamente alla checklist di migrazione in fondo. Ogni hash di commit rimanda al relativo diff su GitHub.
La semantica di WLAN.ifconfig() del WINC1500 è cambiata (major)¶
Sul WiFi shield WINC1500, WLAN.ifconfig() non restituisce più la vecchia lista a 5 elementi [rssi, security, ssid, mac, ip]. Ora legge/imposta una tupla (ip, subnet, gateway, dns) (e supporta la configurazione a IP statico), in linea con l’interfaccia network standard. Il codice che leggeva le informazioni di connessione da ifconfig() deve passare al nuovo metodo WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Commit: e685b484a
MQTTClient.wait_msg() restituisce None su una ricezione vuota (minor)¶
MQTTClient.wait_msg() della libreria mqtt ora restituisce None su una ricezione vuota invece di sollevare OSError(-1). Il codice che catturava OSError(-1) per rilevare un socket chiuso/vuoto deve invece controllare un valore di ritorno None.
Commit: 76239ea89
Checklist di migrazione¶
Per un porting pulito a v3.4.2 il lavoro tipico è:
Sostituire le letture delle informazioni di connessione da
WLAN.ifconfig()del WINC1500 conWLAN.netinfo()(la modifica di ifconfig).Controllare
MQTTClient.wait_msg()per un ritornoNoneinvece di catturareOSError(-1)(la modifica di wait_msg).Ri-ottimizzare il rilevamento degli AprilTag o compilare con
IMLIB_ENABLE_FINE_APRILTAGSse ti serve la connettività a 8 direzioni (la modifica di find_apriltags).
Tutti gli altri script funzionano senza modifiche.