Bibliotecas OpenMV MicroPython¶
Aviso
Resumo importante desta secção
O MicroPython disponibiliza módulos integrados que espelham a funcionalidade da biblioteca padrão Python (ex.:
os,time), bem como módulos específicos do MicroPython (ex.:bluetooth,machine).A maioria dos módulos da biblioteca padrão Python implementa um subconjunto da funcionalidade do módulo Python equivalente e, em alguns casos, disponibiliza algumas extensões específicas do MicroPython (ex.:
array,os)Devido a restrições de recursos ou outras limitações, alguns ports ou versões de firmware podem não incluir todas as funcionalidades aqui documentadas.
Para permitir a extensibilidade, alguns módulos integrados podem ser estendidos a partir de código Python carregado no sistema de ficheiros do dispositivo.
Este capítulo descreve os módulos (bibliotecas de funções e classes) que estão integrados no MicroPython. Esta documentação aspira, em geral, a descrever todos os módulos e funções/classes implementados no projeto MicroPython. No entanto, o MicroPython é altamente configurável, e cada port para uma placa/sistema embebido específico pode incluir apenas um subconjunto das bibliotecas MicroPython disponíveis.
Tendo isso em conta, tenha em atenção que algumas funções/classes num módulo (ou mesmo o módulo completo) descritas nesta documentação podem estar indisponíveis numa versão específica do MicroPython num sistema específico. O melhor local para encontrar informações gerais sobre a disponibilidade/indisponibilidade de uma funcionalidade específica é a secção «Informações Gerais», que contém informações relativas a um MicroPython port específico.
Em alguns ports, é possível descobrir as bibliotecas integradas disponíveis que podem ser importadas introduzindo o seguinte no REPL
help('modules')
Para além das bibliotecas integradas descritas nesta documentação, muitos mais módulos da biblioteca padrão Python, bem como extensões MicroPython adicionais, podem ser encontrados em micropython-lib.
Bibliotecas padrão Python e micro-bibliotecas¶
As seguintes bibliotecas padrão Python foram «micro-ficadas» para se ajustarem à filosofia do MicroPython. Fornecem a funcionalidade central desse módulo e destinam-se a ser um substituto direto da biblioteca padrão Python.
array— arrays de dados numéricosasyncio— escalonador de I/O assíncronobinascii— conversões binário/ASCIIbuiltins— funções e exceções incorporadascmath— funções matemáticas para números complexoscollections— tipos de coleção e contentoreserrno— códigos de erro do sistemagc— controlo do coletor de lixogzip— compressão e descompressão gziphashlib— algoritmos de hashheapq— algoritmo de fila de heapio— fluxos de entrada/saídajson— codificação e descodificação JSONmarshal— serialização de objetos Pythonmath— funções matemáticasos— serviços básicos do «sistema operativo»platform— acesso aos dados de identificação da plataforma subjacenterandom— gerar números aleatóriosre— expressões regulares simplesselect— aguardar eventos num conjunto de streamssocket— módulo socketssl— módulo SSL/TLSstring.templatelib— Suporte a Strings de Modelostruct— empacotar e desempacotar tipos de dados primitivossys— funções específicas do sistematime— funções relacionadas com o tempotypes— nomes para tipos incorporadoszlib— compressão e descompressão zlib
Bibliotecas OpenMV Cam¶
As secções seguintes descrevem as bibliotecas disponíveis em cada placa suportada pelo OpenMV, incluindo tanto os módulos integrados específicos do MicroPython como as extensões próprias do OpenMV.
Módulos comuns¶
Integrados no firmware em todas as placas de câmara OpenMV.
bluetooth— Bluetooth de baixo nívelcryptolib— cifras criptográficasdeflate— compressão e descompressão deflateframebuf— manipulação de buffer de fotogramamachine— funções relacionadas com o hardwaremicropython— aceder e controlar os internos do MicroPythonnetwork— configuração de redeopenamp— suporte padrão de Multiprocessamento Assimétrico (AMP)uctypes— acesso a dados binários de forma estruturadavfs— controlo do sistema de ficheiros virtualcsi— sensores de câmarasensor— sensor de câmaraimage— visão por computadorgif— gravação gifmjpeg— gravação mjpegaudio— Módulo de Áudiodisplay— controlador de ecrãfir— driver de sensor térmico (fir == infravermelho longínquo)tof— controlador de sensor time-of-flightimu— sensor imuomv— Informações da OpenMV Camcrc— Cálculo de CRCml— Machine Learningulab— biblioteca de arrays compatível com numpyprotocol— Canais do Protocolo OpenMVlogging— registo de eventossenml— Sensor Markup Language
Helpers Python congelados fornecidos na maioria das placas de câmara OpenMV (drivers, rede e utilitários):
aioble— BLE Assíncronorpc— biblioteca rpcrtsp— biblioteca rtspmqtt— Cliente MQTT simplesrequests— cliente HTTPmutex— módulo mutexpid— Controlador Proporcional-Integral-Derivativobno055— Driver IMU BNO055modbus— Protocolo Modbus RTU escravovl53l1x— driver do sensor de distância ToF VL53L1X
Helpers de rede (requerem uma interface de rede funcional):
Framework web¶
Módulos de framework para servidor web. Consulte as secções por placa abaixo para saber quais as placas que incluem cada um.
Módulos específicos de port¶
Módulos vinculados a uma família de MCU específica. Consulte as secções por placa abaixo para saber quais as placas que incluem cada um.
Drivers de hardware¶
Drivers para sensores, ecrãs e outros periféricos fornecidos numa ou mais placas suportadas pelo OpenMV. Consulte as secções por placa abaixo para saber quais as placas que incluem cada um.
dht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— controlador do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixellsm6dsox— IMU de 6 eixos LSM6DSOXbmi270— BMI270 IMU de 6 eixosbmm150— Magnetómetro BMM150 de 3 eixoslsm9ds1— IMU de 9 eixos LSM9DS1hts221— sensor de humidade/temperatura HTS221lps22h— sensor de pressão LPS22HB/HHhs3003— sensor de humidade/temperatura HS3003espflash— gravador de firmware do bootloader ROM ESP32imu— helper de IMU para o Arduino Nano 33 BLE Sensessd1306— Controlador OLEDtb6612— Controlador de motor TB6612pca9674a— Driver Expansor I2Ctfp410— Controlador DVI/HDMIft5x06— Driver de Ecrã Tátilgt911— Controlador Tátil Capacitivo GT911 de 5 Pontoslora— driver do modem LoRaapds9960— Driver para Sensor de Proximidade, Gestos e Corromfs— Utilitários auxiliares do ROMFS
Disponibilidade por placa¶
As listas abaixo mostram quais os módulos específicos de port e de driver que são fornecidos em cada placa. Todos os módulos em Comuns, Helpers Python congelados e Helpers de rede (acima) estão disponíveis em todas as placas de câmara, salvo indicação em contrário.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) com uma NPU integrada de 1 GHz classificada em 600 GOPS INT8. Combina a NPU com o sensor de obturador global PAG7936 de 1 MP.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32ssd1306— driver OLEDtb6612— driver de motor TB6612jwt— JSON Web Tokensmicrodot— framework HTTP mínima
OpenMV AE3
SoC dual-core Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) mais Cortex-M55 @ 160 MHz (HE), com duas NPUs integradas (NPU HP 400 MHz / 204 GOPS + NPU HE 160 MHz / 46 GOPS).
alif— funções do SoC Alif Ensembleromfs— utilitários helper para ROMFSpca9674a— driver do expansor I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP mínima
OpenMV Cam RT1062
Placa de visão por computador de baixo consumo em torno do NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Combina rede de alta velocidade USB-C, Wi-Fi / Bluetooth e Ethernet 10/100.
mimxrt— funcionalidade específica do NXP i.MX RTdht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver de motor TB6612pca9674a— driver do expansor I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP mínima
OpenMV Pure Thermal
Placa de imagem térmica de sistema completo em torno do STM32H743 (Cortex-M7 @ 480 MHz) com 64 MB de SDRAM externa, 32 MB de flash QSPI, um codec JPEG por hardware e saída DVI/HDMI.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32tfp410— serializador DVI/HDMIft5x06— driver de ecrã tátil capacitivodht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver de motor TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) com 32 MB de SDRAM externa, 32 MB de flash QSPI, um codec JPEG por hardware e o módulo de câmara OV5640 de 5 MP.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver de motor TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) com 1 MB de SRAM interna, 2 MB de flash interna e um codec JPEG por hardware.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver de motor TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) com 512 KB de SRAM interna e 2 MB de flash interna. Fornecido com o sensor OV7725.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver de motor TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) com 256 KB de SRAM interna e 1 MB de flash interna. Fornecido com o sensor OV7725.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixelssd1306— driver OLEDtb6612— driver de motor TB6612
Arduino Nicla Vision
Placa de visão por computador de 22,86 × 22,86 mm em torno do SoC dual-core STM32H747AII6: Cortex-M7 @ 400 MHz mais Cortex-M4 @ 200 MHz.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32lsm6dsox— IMU de 6 eixos LSM6DSOXdht— sensores de temperatura/humidade DHT11 e DHT22ds18x20— driver do sensor de temperatura DS18x20onewire— protocolo de barramento 1-Wireneopixel— controlo de LEDs WS2812 / NeoPixel
Arduino Portenta H7
Placa de desenvolvimento industrial de 66 × 25 mm em torno do SoC dual-core STM32H747XI: Cortex-M7 @ 400 MHz mais Cortex-M4 @ 200 MHz.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/humidade DHT11 e DHT22ds18x20— driver do sensor de temperatura DS18x20onewire— protocolo de barramento 1-Wireneopixel— controlo de LEDs WS2812 / NeoPixellora— driver de modem LoRassd1306— driver OLEDtb6612— driver de motor TB6612
Arduino Giga R1 WiFi
Placa no formato Mega de 101 × 53 mm em torno do SoC dual-core STM32H747XI: Cortex-M7 @ 480 MHz mais Cortex-M4 @ 240 MHz, com um ecrã tátil de 800x480 integrado.
pyb— funções relacionadas com a placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireneopixel— controlo de LEDs WS2812 / NeoPixelgt911— controlador tátil capacitivo de 5 pontos GT911ft5x06— driver de ecrã tátil capacitivo
Arduino Nano RP2040 Connect
Placa no formato Nano baseada em RP2040 com o módulo Wi-Fi/Bluetooth U-blox NINA-W102. Já não tem suporte ativo; a última versão de firmware OpenMV para esta placa é mantida para uso de arquivo.
rp2— helpers PIO / DMA / flash específicos do RP2040espflash— flasher de firmware do bootloader ROM do ESP32lsm6dsox— IMU de 6 eixos LSM6DSOXdht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Placa no formato Nano Nordic nRF52840 com o conjunto de sensores Arduino integrado. Já não tem suporte ativo; a última versão de firmware OpenMV para esta placa é mantida para uso de arquivo.
ubluepy— API de periférico e central Bluetooth LE no Nordic SoftDevicebmi270— IMU de 6 eixos BMI270bmm150— magnetómetro de 3 eixos BMM150lsm9ds1— IMU de 9 eixos LSM9DS1hts221— sensor de humidade/temperatura HTS221lps22h— sensor de pressão LPS22HB/HHhs3003— sensor de humidade/temperatura HS3003apds9960— driver de sensor de proximidade, gesto e cordht— sensores de temperatura/humidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controlo de LEDs WS2812 / NeoPixel
Extensão de bibliotecas integradas a partir de Python¶
Um subconjunto dos módulos integrados pode ser estendido por código Python fornecendo um módulo com o mesmo nome no sistema de ficheiros. Esta extensibilidade aplica-se aos seguintes módulos da biblioteca padrão Python integrados no firmware: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, bem como o módulo machine específico do MicroPython. Todos os outros módulos integrados não podem ser estendidos a partir do sistema de ficheiros.
Isto permite ao utilizador fornecer uma implementação estendida de uma biblioteca integrada (talvez para fornecer compatibilidade CPython adicional ou funcionalidades em falta). Isto é amplamente utilizado em micropython-lib; consulte Gestão de pacotes para mais informações. O módulo do sistema de ficheiros normalmente faz uma importação wildcard do módulo integrado para herdar todos os globais (classes, funções e variáveis) do módulo integrado.
No MicroPython v1.21.0 e superior, para evitar que o módulo do sistema de ficheiros se importe a si próprio, pode forçar uma importação do módulo integrado limpando temporariamente sys.path durante a importação. Por exemplo, para estender o módulo time a partir de Python, um ficheiro denominado time.py no sistema de ficheiros faria o seguinte:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
O resultado é que time.py contém todos os globais do módulo time integrado, mas adiciona extra_method.
Em versões anteriores do MicroPython, pode forçar uma importação de um módulo integrado acrescentando um u no início do seu nome. Por exemplo, import utime em vez de import time. Por exemplo, time.py no sistema de ficheiros poderia ter o seguinte aspeto:
from utime import *
def extra_method():
pass
Esta forma ainda é suportada, mas o método sys.path descrito acima é agora preferido, uma vez que o prefixo u será removido dos nomes dos módulos integrados numa versão futura do MicroPython.
Exceto quando especificamente necessita de forçar o uso do módulo integrado, o código deve usar sempre import module em vez de import umodule.