Bibliotecas MicroPython da OpenMV¶
Aviso
Resumo importante desta seção
O MicroPython fornece módulos integrados que espelham a funcionalidade da biblioteca padrão do Python (por exemplo,
os,time), bem como módulos específicos do MicroPython (por exemplo,bluetooth,machine).A maioria dos módulos da biblioteca padrão do Python implementa um subconjunto da funcionalidade do módulo Python equivalente e, em alguns casos, fornece algumas extensões específicas do MicroPython (por exemplo,
array,os)Devido a restrições de recursos ou outras limitações, algumas portas ou versões de firmware podem não incluir toda a funcionalidade documentada aqui.
Para permitir a extensibilidade, alguns módulos integrados podem ser estendidos a partir de código Python carregado no sistema de arquivos do dispositivo.
Este capítulo descreve os módulos (bibliotecas de funções e classes) que estão integrados ao MicroPython. Esta documentação, de modo geral, aspira descrever todos os módulos e funções/classes que estão implementados no projeto MicroPython. No entanto, o MicroPython é altamente configurável, e cada porta para uma placa/sistema embarcado específico pode incluir apenas um subconjunto das bibliotecas MicroPython disponíveis.
Tendo isso em mente, fique atento ao fato de que algumas funções/classes em um módulo (ou até mesmo o módulo inteiro) descritas nesta documentação podem não estar disponíveis em uma build específica do MicroPython em um sistema específico. O melhor lugar para encontrar informações gerais sobre a disponibilidade/indisponibilidade de um recurso específico é a seção “Informações Gerais”, que contém informações relativas a uma MicroPython port específica.
Em algumas portas, você pode descobrir as bibliotecas integradas disponíveis que podem ser importadas digitando o seguinte no REPL
help('modules')
Além das bibliotecas integradas descritas nesta documentação, muitos outros módulos da biblioteca padrão do Python, bem como extensões adicionais do MicroPython a ela, podem ser encontrados em micropython-lib.
Bibliotecas padrão do Python e microbibliotecas¶
As seguintes bibliotecas padrão do Python foram “micro-ificadas” para se adequar à filosofia do MicroPython. Elas fornecem a funcionalidade central daquele módulo e destinam-se a ser uma substituição direta da biblioteca padrão do Python.
array— arrays de dados numéricosasyncio— agendador de E/S assíncronabinascii— conversões binário/ASCIIbuiltins— funções e exceções embutidascmath— funções matemáticas para números complexoscollections— tipos de coleção e contêinererrno— códigos de erro do sistemagc— controle do coletor de lixogzip— compressão e descompressão gziphashlib— algoritmos de hashingheapq— algoritmo de fila de heapio— fluxos de entrada/saídajson— codificação e decodificação JSONmarshal— Serialização de objetos Pythonmath— funções matemáticasos— serviços básicos de “sistema operacional”platform— acesso aos dados de identificação da plataforma subjacenterandom— gera números aleatóriosre— expressões regulares simplesselect— aguarda por eventos em um conjunto de streamssocket— módulo socketssl— Módulo SSL/TLSstring.templatelib— Suporte a Template Stringsstruct— empacota e desempacota tipos de dados primitivossys— funções específicas do sistematime— funções relacionadas a tempotypes— nomes para tipos embutidoszlib— compressão e descompressão zlib
Bibliotecas da OpenMV Cam¶
As seções a seguir descrevem as bibliotecas disponíveis em cada placa suportada pela OpenMV, incluindo tanto os recursos integrados específicos do MicroPython quanto as próprias extensões da OpenMV.
Módulos comuns¶
Integrados ao firmware em todas as placas de câmera OpenMV.
bluetooth— Bluetooth de baixo nívelcryptolib— cifras criptográficasdeflate— compressão e descompressão deflateframebuf— manipulação de frame buffermachine— funções relacionadas ao hardwaremicropython— acesso e controle dos internos do MicroPythonnetwork— configuração de redeopenamp— fornece suporte padrão a Multiprocessamento Assimétrico (AMP)uctypes— acesso a dados binários de forma estruturadavfs— controle do sistema de arquivos virtualcsi— sensores de câmerasensor— sensor da câmeraimage— visão de máquinagif— gravação de gifmjpeg— Gravação mjpegaudio— Módulo de Áudiodisplay— driver de displayfir— driver de sensor térmico (fir == far infrared)tof— driver de sensor time-of-flightimu— sensor imuomv— Informações da OpenMV Camcrc— Cálculo de CRCml— Aprendizado de Máquinaulab— biblioteca de arrays compatível com numpyprotocol— Canais do Protocolo OpenMVlogging— registro de eventossenml— Sensor Markup Language
Auxiliares Python congelados (frozen) que vêm na maioria das placas de câmera 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 da IMU BNO055modbus— Protocolo escravo Modbus RTUvl53l1x— Driver do sensor de distância ToF VL53L1X
Auxiliares de rede (requerem uma interface de rede funcional):
Framework web¶
Módulos de framework de servidor web. Consulte as seções por placa abaixo para saber quais placas incluem cada um.
Módulos específicos da porta¶
Módulos vinculados a uma família específica de MCU. Consulte as seções por placa abaixo para saber quais placas incluem cada um.
Drivers de hardware¶
Drivers para sensores, displays e outros periféricos que vêm em uma ou mais placas suportadas pela OpenMV. Consulte as seções por placa abaixo para saber quais placas incluem cada um.
dht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver de sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixellsm6dsox— IMU de 6 eixos LSM6DSOXbmi270— IMU de 6 eixos BMI270bmm150— Magnetômetro de 3 eixos BMM150lsm9ds1— IMU de 9 eixos LSM9DS1hts221— sensor de umidade/temperatura HTS221lps22h— sensor de pressão LPS22HB/HHhs3003— sensor de umidade/temperatura HS3003espflash— gravador de firmware do bootloader ROM do ESP32imu— auxiliar de IMU para o Arduino Nano 33 BLE Sensessd1306— Driver OLEDtb6612— Driver de motor TB6612pca9674a— Driver do expansor I2Ctfp410— Controlador DVI/HDMIft5x06— Driver de Tela de Toquegt911— Controlador de Toque Capacitivo de 5 Pontos GT911lora— Driver de modem LoRaapds9960— Driver de sensor de proximidade, gestos e corromfs— Utilitários auxiliares de ROMFS
Disponibilidade por placa¶
As listas abaixo mostram quais módulos específicos da porta e de driver vêm em cada placa. Todos os módulos em Comuns, Auxiliares Python congelados e Auxiliares de rede (acima) estão disponíveis em todas as placas de câmera, salvo indicação em contrário.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) com uma NPU on-chip 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 à placastm— funcionalidade específica dos MCUs STM32ssd1306— driver de OLEDtb6612— driver de motor TB6612jwt— JSON Web Tokensmicrodot— framework HTTP mínimo
OpenMV AE3
SoC dual-core Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) mais Cortex-M55 @ 160 MHz (HE), com duas NPUs on-chip (NPU HP de 400 MHz / 400 GOPS + NPU HE de 160 MHz / 46 GOPS).
alif— funções do SoC Alif Ensembleromfs— utilitários auxiliares de ROMFSpca9674a— driver do expansor I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP mínimo
OpenMV Cam RT1062
Placa de visão de máquina de baixo consumo baseada no 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/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixelssd1306— driver de OLEDtb6612— driver de motor TB6612pca9674a— driver do expansor I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP mínimo
OpenMV Pure Thermal
Placa de imagem térmica de sistema completo baseada no 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 à placastm— funcionalidade específica dos MCUs STM32tfp410— serializador DVI/HDMIft5x06— driver de tela sensível ao toque capacitivadht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixelssd1306— driver de 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âmera OV5640 de 5MP.
pyb— funções relacionadas à placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixelssd1306— driver de 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 à placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixelssd1306— driver de 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. Acompanha o sensor OV7725.
pyb— funções relacionadas à placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixelssd1306— driver de 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. Acompanha o sensor OV7725.
pyb— funções relacionadas à placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixelssd1306— driver de OLEDtb6612— driver de motor TB6612
Arduino Nicla Vision
Placa de visão de máquina de 22,86 × 22,86 mm baseada no SoC dual-core STM32H747AII6: Cortex-M7 @ 400 MHz mais Cortex-M4 @ 200 MHz.
pyb— funções relacionadas à placastm— funcionalidade específica dos MCUs STM32lsm6dsox— IMU de 6 eixos LSM6DSOXdht— sensores de temperatura/umidade DHT11 e DHT22ds18x20— driver do sensor de temperatura DS18x20onewire— protocolo de barramento 1-Wireneopixel— controle de LEDs WS2812 / NeoPixel
Arduino Portenta H7
Placa de desenvolvimento industrial de 66 × 25 mm baseada no SoC dual-core STM32H747XI: Cortex-M7 @ 400 MHz mais Cortex-M4 @ 200 MHz.
pyb— funções relacionadas à placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/umidade DHT11 e DHT22ds18x20— driver do sensor de temperatura DS18x20onewire— protocolo de barramento 1-Wireneopixel— controle de LEDs WS2812 / NeoPixellora— driver de modem LoRassd1306— driver de OLEDtb6612— driver de motor TB6612
Arduino Giga R1 WiFi
Placa de 101 × 53 mm no formato Mega baseada no SoC dual-core STM32H747XI: Cortex-M7 @ 480 MHz mais Cortex-M4 @ 240 MHz, com uma tela sensível ao toque embarcada de 800x480.
pyb— funções relacionadas à placastm— funcionalidade específica dos MCUs STM32dht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireneopixel— controle de LEDs WS2812 / NeoPixelgt911— controlador de toque capacitivo de 5 pontos GT911ft5x06— driver de tela sensível ao toque capacitiva
Arduino Nano RP2040 Connect
Placa no formato Nano baseada no RP2040 com o módulo Wi-Fi/Bluetooth U-blox NINA-W102. Não é mais suportada ativamente; a última versão de firmware OpenMV para esta placa é mantida para uso de arquivo.
rp2— auxiliares de PIO / DMA / flash específicos do RP2040espflash— gravador de firmware do bootloader da ROM do ESP32lsm6dsox— IMU de 6 eixos LSM6DSOXdht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Placa no formato Nano com Nordic nRF52840 e o conjunto de sensores Arduino embarcado. Não é mais suportada ativamente; 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 umidade/temperatura HTS221lps22h— sensor de pressão LPS22HB/HHhs3003— sensor de umidade/temperatura HS3003apds9960— driver de sensor de proximidade, gesto e cordht— sensores de temperatura/umidade DHT11 e DHT22onewire— protocolo de barramento 1-Wireds18x20— driver do sensor de temperatura DS18x20neopixel— controle de LEDs WS2812 / NeoPixel
Estendendo bibliotecas integradas a partir do Python¶
Um subconjunto dos módulos integrados pode ser estendido por código Python fornecendo um módulo de mesmo nome no sistema de arquivos. Essa extensibilidade aplica-se aos seguintes módulos da biblioteca padrão do Python que estão integrados ao firmware: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, bem como ao módulo machine específico do MicroPython. Todos os demais módulos integrados não podem ser estendidos a partir do sistema de arquivos.
Isso permite que o usuário forneça uma implementação estendida de uma biblioteca integrada (talvez para fornecer compatibilidade adicional com o CPython ou funcionalidade ausente). Isso é usado extensivamente em micropython-lib, consulte Gerenciamento de pacotes para mais informações. O módulo do sistema de arquivos normalmente fará uma importação curinga do módulo integrado a fim de herdar todos os globais (classes, funções e variáveis) do módulo integrado.
No MicroPython v1.21.0 e superior, para impedir que o módulo do sistema de arquivos importe a si mesmo, ele 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 do Python, um arquivo chamado time.py no sistema de arquivos 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 integrado time, mas adiciona extra_method.
Em versões anteriores do MicroPython, você pode forçar uma importação de um módulo integrado anexando um u ao início do seu nome. Por exemplo, import utime em vez de import time. Por exemplo, time.py no sistema de arquivos poderia ter a seguinte aparência:
from utime import *
def extra_method():
pass
Essa forma ainda é suportada, mas o método sys.path descrito acima agora é preferido, pois o prefixo u será removido dos nomes dos módulos integrados em uma versão futura do MicroPython.
Exceto quando especificamente precisa forçar o uso do módulo integrado, o código deve sempre usar import module em vez de import umodule.