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.