v3.4.2¶
A v3.4.2 é uma versão grande. Introduz a OpenMV Cam H7 Plus (SDRAM, buffer de fotograma enorme para captura de alta resolução), a câmara OV5640 5 MP, suporte a FDCAN, um controlador OV2640 reescrito, Image.jpeg_encode_for_ide(), e novas bibliotecas pid / modbus. A API ifconfig() do WINC1500 e os valores predefinidos de find_apriltags() foram alterados — leia as alterações incompatíveis abaixo.
Destaques¶
OpenMV Cam H7 Plus — nova placa com um controlador SDRAM e um buffer de fotograma de ~31 MB para captura de alta resolução.
Câmara OV5640 5 MP com detecção baseada em I2C.
Suporte ao periférico FDCAN, com um exemplo CAN.
Reescrita do OV2640 — imagens orientadas correctamente, funções automáticas funcionais, captura JPEG e um novo tamanho de fotograma
sensor.XGA.IDE JPEG —
Image.jpeg_encode_for_ide()e transmissão automática de JPEGs de grande dimensão para o IDE.Incompatível: a semântica de
WLAN.ifconfig()do WINC1500 foi alterada,MQTTClient.wait_msg()já não lança excepção em recv vazio, efind_apriltags()usa por omissão conectividade de 4 direcções — consulte as alterações incompatíveis.
Novas funcionalidades¶
WiFi — adicionado
WLAN.netinfo()(devolve(rssi, security, ssid, mac, ip)) e configuração de IP estático do WINC1500 viaWLAN.ifconfig(), com um exemplo de IP estático.FDCAN — adicionado suporte ao periférico FDCAN e um exemplo
can.py.IDE JPEG — adicionados
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); JPEGs de grande dimensão são transmitidos automaticamente para o IDE quando o buffer é demasiado pequeno.Bibliotecas — adicionada uma biblioteca controladora PID
pid, uma biblioteca de escravo RTUmodbus(com um exemplo 32-modbus) e uma classeSSD1306_I2Cpara ecrãs OLED I2C.Exemplos — adicionada subscrição MQTT (
mqtt_sub.py, commqtt.pyrenomeado paramqtt_pub.py).Sensor — adicionado o tamanho de fotograma
sensor.XGA(1024x768);print()/repr()numa imagem Bayer produz agora metadados JSON.
Outras alterações e melhorias¶
Reescrito o controlador OV2640 (imagens orientadas correctamente, funções automáticas funcionais, captura JPEG aceite); activadas as apriltags de alta resolução (remove o limite ROI de <64K pixels nas placas com capacidade para isso); reduzido o PCLK do OV2640 de 72 MHz para 36 MHz.
Correcções de erros¶
Imagem:
Corrigido um overflow de operações binárias além do fim da imagem, precisão de printf/float no output de
find_apriltags()/find_datamatrices()/find_lines(), JSON malformado em blobprint(),find_apriltags()em imagens com vflip / hmirror, o erro ROI defind_lbp(), o timeout de compressão JPEG para resoluções grandes, e o relatório de estatísticas de memória dofb_alloc.
Câmara e sensores:
Corrigida a manutenção de cache e o alinhamento de buffer no modo JPEG, o tamanho máximo de transferência DCMI, a configuração de registos e resoluções do OV2640, o restauro do estado de desligamento do sensor no reset, e a qualidade de imagem do OV7725 (adicionado um filtro de banda por câmara).
Rede e sistema:
Corrigido hardfault/erro em
socket.accept(), o tratamento de timeout de socket do WINC1500 (timeout 0 passa a ser bloqueante; os sockets não são fechados no timeout de recv), o modo de suspensão profunda do H7, o RTC (actualização upstream e problemas EXTI / temporizador de activação / reset por software do H7), e o IRQ do temporizadorpyb.Servo(o Servo não estava a funcionar).
Hardware e suporte de placas¶
OpenMV Cam H7 Plus (OPENMV4R) — nova placa com um controlador SDRAM que permite um buffer de fotograma de grande dimensão (~31 MB).
OV5640 — novo controlador de câmara 5 MP com detecção baseada em I2C.
FDCAN — suporte ao periférico.
Alterações de API incompatíveis¶
Alterações de API visíveis pelo utilizador entre a v3.4.1 e a v3.4.2. Âmbito: módulos C Python em modules/ e bibliotecas Python em scripts/libraries/.
Cada alteração está marcada com o seu impacto:
major — afecta a maioria dos scripts que utilizavam a funcionalidade; será necessário portar o código.
minor — API restrita; afecta apenas os scripts que a utilizavam.
behavior — mesma API, resultados diferentes; verifique novamente os scripts ajustados.
As alterações estão agrupadas por impacto nessa ordem. Se apenas pretende portar o seu código, avance para a lista de verificação de migração no final. Cada hash de commit contém uma ligação para o respectivo diff no GitHub.
Semântica de WLAN.ifconfig() do WINC1500 alterada (major)¶
No shield WiFi WINC1500, WLAN.ifconfig() já não devolve a antiga lista de 5 elementos [rssi, security, ssid, mac, ip]. Obtém/define agora um tuplo (ip, subnet, gateway, dns) (e suporta configuração de IP estático), em conformidade com a interface network padrão. O código que lia informação de ligação a partir de ifconfig() deve passar a usar o novo método WLAN.netinfo() ((rssi, security, ssid, mac, ip)).
Commits: e685b484a
MQTTClient.wait_msg() devolve None em recv vazio (minor)¶
O MQTTClient.wait_msg() da biblioteca mqtt devolve agora None num receive vazio em vez de lançar OSError(-1). O código que capturava OSError(-1) para detectar um socket fechado/vazio deve verificar um valor de retorno None.
Commits: 76239ea89
Lista de verificação de migração¶
Para uma portabilidade limpa para a v3.4.2, o trabalho típico é:
Substituir as leituras de informação de ligação
WLAN.ifconfig()do WINC1500 porWLAN.netinfo()(a alteração do ifconfig).Verificar um retorno
NoneemMQTTClient.wait_msg()em vez de capturarOSError(-1)(a alteração do wait_msg).Reajustar a detecção de AprilTag ou compilar com
IMLIB_ENABLE_FINE_APRILTAGSse precisar de conectividade de 8 direcções (a alteração do find_apriltags).
Todos os outros scripts funcionam sem modificações.