v3.4.2¶
v3.4.2 es una versión grande. Introduce la OpenMV Cam H7 Plus (SDRAM, framebuffer enorme para captura de alta resolución), la cámara OV5640 de 5 MP, compatibilidad con FDCAN, un controlador OV2640 reescrito, Image.jpeg_encode_for_ide() y nuevas bibliotecas pid / modbus. La API ifconfig() del WINC1500 y los valores predeterminados de find_apriltags() cambiaron — lee los cambios incompatibles más abajo.
Aspectos destacados¶
OpenMV Cam H7 Plus — nueva placa con un controlador SDRAM y un framebuffer de ~31 MB para captura de alta resolución.
Controlador de cámara OV5640 de 5 MP con detección basada en I2C.
Compatibilidad con el periférico FDCAN, con un ejemplo de CAN.
Reescritura del OV2640 — imágenes en posición vertical, funciones automáticas operativas, captura JPEG y un nuevo tamaño de fotograma
sensor.XGA.JPEG del IDE —
Image.jpeg_encode_for_ide()y transmisión automática de JPEG grandes al IDE.Incompatible: la semántica de
WLAN.ifconfig()del WINC1500 cambió,MQTTClient.wait_msg()ya no lanza una excepción ante una recepción vacía yfind_apriltags()usa por defecto conectividad de 4 direcciones — consulta los cambios incompatibles.
Nuevas características¶
WiFi — se añadieron
WLAN.netinfo()(devuelve(rssi, security, ssid, mac, ip)) y la configuración de IP estática del WINC1500 medianteWLAN.ifconfig(), con un ejemplo de IP estática.FDCAN — se añadió compatibilidad con el periférico FDCAN y un ejemplo
can.py.JPEG del IDE — se añadieron
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); los JPEG grandes se transmiten automáticamente al IDE cuando el búfer es demasiado pequeño.Bibliotecas — se añadieron una biblioteca de controlador PID
pid, una biblioteca de esclavo RTUmodbus(con un ejemplo 32-modbus) y una claseSSD1306_I2Cpara pantallas OLED por I2C.Ejemplos — se añadió la suscripción MQTT (
mqtt_sub.py, conmqtt.pyrenombrado amqtt_pub.py).Sensor — se añadió el tamaño de fotograma
sensor.XGA(1024x768);print()/repr()en una imagen Bayer ahora emite metadatos JSON.
Otros cambios y mejoras¶
Se reescribió el controlador OV2640 (imágenes en posición vertical, funciones automáticas operativas, captura JPEG aceptada); se habilitaron los apriltags de alta resolución (elimina el límite de ROI de <64K píxeles en las placas capaces); se redujo el PCLK del OV2640 de 72 MHz a 36 MHz.
Corrección de errores¶
Imagen:
Se corrigió un desbordamiento de operaciones binarias más allá del final de la imagen, la precisión de printf/float en la salida de
find_apriltags()/find_datamatrices()/find_lines(), JSON malformado enprint()de blob,find_apriltags()en imágenes con vflip / hmirror, el error de ROI defind_lbp(), el tiempo de espera de compresión JPEG para resoluciones grandes y el informe de estadísticas de memoria defb_alloc.
Cámara y sensores:
Se corrigió el mantenimiento de caché en modo JPEG y la alineación del búfer, el tamaño máximo de transferencia DCMI, la configuración de registros y las resoluciones del OV2640, la restauración del estado de apagado del sensor al reiniciar y la calidad de imagen del OV7725 (se añadió un filtro de bandeo por cámara).
Redes y sistema:
Se corrigió el hardfault/error de
socket.accept(), el manejo del tiempo de espera de sockets del WINC1500 (el tiempo de espera 0 ahora es bloqueante; los sockets no se cierran ante un tiempo de espera de recepción), el sueño profundo del H7, el RTC (actualización del upstream y problemas de EXTI / temporizador de despertado / reinicio por software del H7) y la IRQ del temporizador depyb.Servo(el Servo no funcionaba).
Hardware y compatibilidad de placas¶
OpenMV Cam H7 Plus (OPENMV4R) — nueva placa con un controlador SDRAM que habilita un framebuffer grande (~31 MB).
OV5640 — nuevo controlador de cámara de 5 MP con detección basada en I2C.
FDCAN — compatibilidad con el periférico.
Cambios incompatibles en la API¶
Rupturas de la API visibles para el usuario entre v3.4.1 y v3.4.2. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.
Cada cambio está etiquetado con su impacto:
mayor — afecta a la mayoría de los scripts que usaban la característica; tendrás que adaptar el código.
menor — API reducida; solo afecta a los scripts que la usaban.
comportamiento — misma API, resultados distintos; vuelve a revisar los scripts ajustados.
Los cambios se agrupan por impacto en ese orden. Si solo quieres adaptar tu código, salta a la lista de comprobación de migración al final. Cada hash de commit enlaza con su diff en GitHub.
La semántica de WLAN.ifconfig() del WINC1500 cambió (mayor)¶
En el WiFi shield WINC1500, WLAN.ifconfig() ya no devuelve la antigua lista de 5 elementos [rssi, security, ssid, mac, ip]. Ahora obtiene/establece una tupla (ip, subnet, gateway, dns) (y admite la configuración de IP estática), coincidiendo con la interfaz estándar de network. El código que leía información de conexión desde ifconfig() debe cambiar al nuevo método WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Commits: e685b484a
MQTTClient.wait_msg() devuelve None ante una recepción vacía (menor)¶
MQTTClient.wait_msg() de la biblioteca mqtt ahora devuelve None ante una recepción vacía en lugar de lanzar OSError(-1). El código que capturaba OSError(-1) para detectar un socket cerrado/vacío debe comprobar un valor de retorno None en su lugar.
Commits: 76239ea89
Lista de comprobación de migración¶
Para una adaptación limpia a v3.4.2, el trabajo habitual es:
Reemplaza las lecturas de información de conexión de
WLAN.ifconfig()del WINC1500 porWLAN.netinfo()(el cambio de ifconfig).Comprueba si
MQTTClient.wait_msg()devuelveNoneen lugar de capturarOSError(-1)(el cambio de wait_msg).Vuelve a ajustar la detección de AprilTag o compila con
IMLIB_ENABLE_FINE_APRILTAGSsi necesitas conectividad de 8 direcciones (el cambio de find_apriltags).
Todos los demás scripts se ejecutan sin cambios.