14.5. Conclusão¶
Percorreu o ciclo de vida de uma câmara desde um script de bancada funcional até um produto enviado:
Compilações de firmware personalizadas – o ambiente de desenvolvimento, compilar a imagem de firmware a partir da fonte, instalá-la numa câmara, e o caminho de depuração do VS Code Cortex-Debug para o
gdbrunnerde linha de comandos quando algo está errado no lado do firmware.Enviar a aplicação – incorporar o código da aplicação no firmware através de módulos congelados, incorporar recursos numa imagem ROMFS, e a ordem de pesquisa que determina qual cópia de um ficheiro o runtime carrega no arranque. A divisão que resulta:
boot.pypara configuração do ambiente pré-REPL,main.pycomo ponto de entrada da aplicação,main.pycongelado para a entrada e ROMFS para todo o resto.Reforçar para produção – a biblioteca
loggingescrita num caminho conhecido, ummachine.WDTalimentado uma vez por iteração do ciclo principal, umtry/exceptde nível superior que transforma falhas em eventos registados em vez de reinicializações, higiene do sistema de ficheiros que mantém as operações de ficheiros rápidas à medida que a aplicação acumula registos ao longo de meses no campo, e – quando o produto o exige – proteção contra leitura do flash.Material avançado – certificados TLS para câmaras que precisam de autenticar e encriptar tráfego com serviços de rede.
Uma câmara enviada tem tudo isto em vigor: o código da aplicação corre a partir da imagem de firmware, o watchdog é alimentado uma vez por iteração do ciclo principal, o registo aterra num diretório com data no cartão SD, e – quando o produto o exige – o flash foi bloqueado contra leitura.
14.5.1. Para onde ir a partir daqui¶
Produção é o último capítulo do tutorial. A partir daqui a documentação divide-se em material de referência:
O referência da biblioteca é a vista alfabética «qual é o nome exato desta chamada» de todos os módulos que a câmara expõe –
machine,logging,os,csi,image,ml, e o resto.As páginas de referência rápida por placa cobrem as especificações de cada câmara na linha de produtos OpenMV – pinouts, barramentos montáveis, IDs de placa, disponibilidade de periféricos, e as pequenas diferenças que importam quando a aplicação tem de funcionar numa peça específica.
As páginas de referência de sensores e páginas de referência de shields cobrem os sensores de imagem individuais e shields de expansão que uma câmara pode ter – as especificações por peça, pinouts e notas que a aplicação precisa ao escolher sensores e shields para uma compilação.
A referência da linguagem MicroPython cobre a própria linguagem – diferenças de sintaxe em relação ao CPython, as especificidades de implementação que importam quando um script abrange os dois, e a referência do montador inline para o caso raro em que o Python é demasiado lento.
O tutorial é o caminho de «tenho uma nova câmara em mãos» para «enviei um produto». A partir daqui a câmara é uma peça de um sistema maior do qual a aplicação é responsável, e o trabalho é o da própria aplicação.