13.3.1.1. A CLI openmv

A instalação do pacote adiciona um executável openmv que abre um visualizador pygame ligado a uma câmara via USB. Sem argumentos além da porta série, executa um pequeno script de teste integrado, transmite o buffer de fotograma resultante e apresenta-o redimensionado e anotado com a taxa de fotogramas atual:

openmv --port /dev/ttyACM0

O caminho da porta depende da plataforma anfitriã. No Linux, /dev/ttyACMx para USB CDC e /dev/ttyUSBx para uma ponte USB-para-UART. No macOS, /dev/tty.usbmodem... ou /dev/cu.usbmodem.... No Windows, COMx.

O visualizador é a forma mais rápida de confirmar que o pacote está instalado, a câmara é acessível e o protocolo está a funcionar. É também um suporte de demonstração útil durante o desenvolvimento de scripts – substitua o script de teste integrado por qualquer ficheiro MicroPython com --script e observe o resultado sem sair do terminal.

Esc, Ctrl+C no terminal, ou fechar a janela do visualizador, encerram o programa corretamente.

13.3.1.1.1. Executar um script personalizado

--script aponta a CLI para um ficheiro fonte MicroPython no disco. O ficheiro é carregado para a câmara, executado em substituição do script de teste integrado, e quaisquer fotogramas que produza são transmitidos de volta para o visualizador:

openmv --port /dev/ttyACM0 --script my_script.py

Tudo o que o script imprime em stdout é espelhado no terminal do anfitrião em tempo real. Passe --quiet para suprimir isso, ou --debug para registo de protocolo detalhado.

13.3.1.1.2. Pré-visualizar um canal personalizado

--channel NAME consulta um canal de dados personalizado registado pelo script em execução na câmara e imprime os primeiros dez bytes de cada atualização no terminal:

openmv --port /dev/ttyACM0 --channel ticks

O script de teste integrado que é executado quando não é fornecido nenhum --script regista um canal ticks que devolve o tempo de funcionamento em milissegundos da câmara, pelo que --channel ticks demonstra a superfície de canal bidirecional que Canais personalizados aborda em detalhe – sem escrever qualquer código no anfitrião ou na câmara.

13.3.1.1.3. Modo de referência

--bench substitui o script de teste padrão por um benchmark de débito de compressão JPEG:

openmv --port /dev/ttyACM0 --bench

A câmara captura um fotograma RGB565 QVGA, comprime-o para JPEG e depois envia repetidamente o mesmo buffer comprimido num ciclo fechado. O visualizador reporta a taxa de dados USB bruta em vez de um fotograma descodificado ao vivo, pelo que o número no ecrã é o limite máximo que a ligação consegue sustentar para esse anfitrião. Útil para comparar câmaras ou anfitriões sem a variabilidade do que está efetivamente a ser capturado.

13.3.1.1.4. Criação de perfis

A CLI pode sobrepor dados do profiler ao vivo nos fotogramas transmitidos. A sobreposição só é útil quando a câmara está a executar um firmware compilado com PROFILE_ENABLE=1 e o canal profile registado; no firmware padrão, os controlos de criação de perfis não têm efeito.

  • --firmware PATH – carrega o ELF do firmware que a câmara está a executar para que a sobreposição possa resolver endereços de funções nos registos de perfil para nomes legíveis por humanos. Sem ele, a sobreposição mostra endereços brutos.

Três atalhos de teclado no visualizador controlam o profiler:

Tecla

Ação

P

Percorre a sobreposição do profiler: desligado, desempenho, eventos.

M

Alterna o modo do profiler entre inclusivo e exclusivo. O tempo inclusivo imputa o tempo do chamado ao chamador; o tempo exclusivo não.

R

Reinicia os contadores do profiler.

13.3.1.1.5. Opções de ajuste do protocolo

As opções abaixo espelham os parâmetros do construtor em openmv.Camera. Os valores predefinidos funcionam em todas as câmaras fornecidas; substitua-os apenas ao depurar um firmware personalizado ou ao simular condições de ligação adversas.

  • --baudrate N – predefinido para 921600 (o valor mágico que muda USB para o protocolo OpenMV). Substitua apenas em ligações UART.

  • --timeout SEC – tempo limite por operação em segundos (predefinição 1.0).

  • --max-retry N – tentativas antes de a ligação ser declarada interrompida (predefinição 3).

  • --max-payload N – tamanho máximo do payload em bytes (predefinição 4096). A câmara negoceia para baixo se não conseguir processar tanto.

  • --crc BOOL – ativa a validação CRC em cada pacote (predefinição true).

  • --seq BOOL – ativa a validação do número de sequência (predefinição true).

  • --ack BOOL – ativa o reconhecimento por pacote (predefinição true).

  • --events BOOL – ativa as notificações de eventos da câmara (predefinição true).

  • --drop-rate FLOAT – taxa de simulação de descarte de pacotes em [0.0, 1.0] (predefinição 0.0). Apenas para testes.

Um ajuste específico da CLI:

  • --poll MS – taxa de consulta do ciclo principal do visualizador, em milissegundos (predefinição 4).

13.3.1.1.6. Opções diversas

Duas opções ajustam a forma como o visualizador apresenta o fluxo sem alterar o comportamento da câmara:

  • --scale N – fator de zoom do ecrã (predefinição 4). Útil quando os fotogramas QVGA são demasiado pequenos para ler num ecrã 4K.

  • --raw – solicita à câmara que envie buffers de pixel sem compressão em vez de comprimidos em JPEG. Útil em câmaras sem suporte de hardware JPEG; Transmissão de fotogramas em tempo real aborda as trocas.

13.3.1.1.7. O que o visualizador está a fazer

A CLI é em si mesma um programa openmv.Camera. Liga-se, chama stop() para limpar qualquer script em execução, carrega o script com exec(), ativa a transmissão com streaming(), depois entra em ciclo chamando read_frame() (para atualizar o ecrã), read_stdout() (para espelhar as impressões do script) e read_status() (para monitorizar todos os outros canais registados). O código-fonte está em cli.py e é uma referência funcional para uma aplicação que controla uma câmara do início ao fim.