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.

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.

Helpers Python congelados fornecidos na maioria das placas de câmara OpenMV (drivers, rede e utilitários):

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.

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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

  • jwt — JSON Web Tokens

  • microdot — 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 Ensemble

  • romfs — utilitários helper para ROMFS

  • pca9674a — driver do expansor I2C PCA9674A

  • jwt — JSON Web Tokens

  • microdot — 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 RT

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — driver de motor TB6612

  • pca9674a — driver do expansor I2C PCA9674A

  • jwt — JSON Web Tokens

  • microdot — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • tfp410 — serializador DVI/HDMI

  • ft5x06 — driver de ecrã tátil capacitivo

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • ssd1306 — driver OLED

  • tb6612 — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • lsm6dsox — IMU de 6 eixos LSM6DSOX

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • ds18x20 — driver do sensor de temperatura DS18x20

  • onewire — protocolo de barramento 1-Wire

  • neopixel — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • ds18x20 — driver do sensor de temperatura DS18x20

  • onewire — protocolo de barramento 1-Wire

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • lora — driver de modem LoRa

  • ssd1306 — driver OLED

  • tb6612 — 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 placa

  • stm — funcionalidade específica dos MCUs STM32

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • neopixel — controlo de LEDs WS2812 / NeoPixel

  • gt911 — controlador tátil capacitivo de 5 pontos GT911

  • ft5x06 — 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 RP2040

  • espflash — flasher de firmware do bootloader ROM do ESP32

  • lsm6dsox — IMU de 6 eixos LSM6DSOX

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — 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 SoftDevice

  • bmi270 — IMU de 6 eixos BMI270

  • bmm150 — magnetómetro de 3 eixos BMM150

  • lsm9ds1 — IMU de 9 eixos LSM9DS1

  • hts221 — sensor de humidade/temperatura HTS221

  • lps22h — sensor de pressão LPS22HB/HH

  • hs3003 — sensor de humidade/temperatura HS3003

  • apds9960 — driver de sensor de proximidade, gesto e cor

  • dht — sensores de temperatura/humidade DHT11 e DHT22

  • onewire — protocolo de barramento 1-Wire

  • ds18x20 — driver do sensor de temperatura DS18x20

  • neopixel — 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.