Bibliotecas de OpenMV MicroPython¶
Advertencia
Resumen importante de esta sección
MicroPython proporciona módulos integrados que reflejan la funcionalidad de la biblioteca estándar de Python (p. ej.
os,time), así como módulos específicos de MicroPython (p. ej.bluetooth,machine).La mayoría de los módulos de la biblioteca estándar de Python implementan un subconjunto de la funcionalidad del módulo equivalente de Python y, en algunos casos, proporcionan algunas extensiones específicas de MicroPython (p. ej.
array,os)Debido a limitaciones de recursos u otras restricciones, es posible que algunos ports o versiones de firmware no incluyan toda la funcionalidad documentada aquí.
Para permitir la extensibilidad, algunos módulos integrados pueden extenderse desde código Python cargado en el sistema de archivos del dispositivo.
Este capítulo describe los módulos (bibliotecas de funciones y clases) que están integrados en MicroPython. Esta documentación, en general, aspira a describir todos los módulos y funciones/clases que están implementados en el proyecto MicroPython. Sin embargo, MicroPython es altamente configurable, y cada port a una placa/sistema embebido en particular puede incluir solo un subconjunto de las bibliotecas de MicroPython disponibles.
Teniendo esto en cuenta, tenga presente que algunas funciones/clases de un módulo (o incluso el módulo completo) descritas en esta documentación pueden no estar disponibles en una compilación concreta de MicroPython en un sistema concreto. El mejor lugar para encontrar información general sobre la disponibilidad o no disponibilidad de una característica concreta es la sección «General Information», que contiene información relativa a un MicroPython port específico.
En algunos ports puede descubrir las bibliotecas integradas disponibles que se pueden importar introduciendo lo siguiente en el REPL:
help('modules')
Más allá de las bibliotecas integradas descritas en esta documentación, se pueden encontrar muchos más módulos de la biblioteca estándar de Python, así como otras extensiones de MicroPython a la misma, en micropython-lib.
Bibliotecas estándar de Python y micro-bibliotecas¶
Las siguientes bibliotecas estándar de Python han sido «micro-ificadas» para adaptarse a la filosofía de MicroPython. Proporcionan la funcionalidad principal de ese módulo y están pensadas para ser un reemplazo directo de la biblioteca estándar de Python.
array— arreglos de datos numéricosasyncio— planificador de E/S asíncronabinascii— conversiones binario/ASCIIbuiltins— funciones y excepciones integradascmath— funciones matemáticas para números complejoscollections— tipos de colecciones y contenedoreserrno— códigos de error del sistemagc— control del recolector de basuragzip— compresión y descompresión gziphashlib— algoritmos de hashheapq— algoritmo de cola de montón (heap)io— flujos de entrada/salidajson— codificación y decodificación JSONmarshal— Serialización de objetos Pythonmath— funciones matemáticasos— servicios básicos del «sistema operativo»platform— acceso a los datos de identificación de la plataforma subyacenterandom— generación de números aleatoriosre— expresiones regulares simplesselect— esperar eventos en un conjunto de flujossocket— módulo socketssl— Módulo SSL/TLSstring.templatelib— Compatibilidad con cadenas de plantillastruct— empaquetar y desempaquetar tipos de datos primitivossys— funciones específicas del sistematime— funciones relacionadas con el tiempotypes— nombres para los tipos integradoszlib— compresión y descompresión zlib
Bibliotecas de OpenMV Cam¶
Las siguientes secciones describen las bibliotecas disponibles en cada placa compatible con OpenMV, incluyendo tanto los módulos integrados específicos de MicroPython como las propias extensiones de OpenMV.
Módulos comunes¶
Integrados en el firmware de cada placa de cámara OpenMV.
bluetooth— Bluetooth de bajo nivelcryptolib— cifrados criptográficosdeflate— compresión y descompresión deflateframebuf— manipulación del búfer de fotogramas (frame buffer)machine— funciones relacionadas con el hardwaremicropython— acceso y control de los componentes internos de MicroPythonnetwork— configuración de redopenamp— proporciona soporte estándar de Multiprocesamiento Asimétrico (AMP)uctypes— acceso a datos binarios de forma estructuradavfs— control del sistema de archivos virtualcsi— sensores de cámarasensor— sensor de cámaraimage— visión artificialgif— grabación de gifmjpeg— grabación mjpegaudio— Módulo de audiodisplay— controlador de pantallafir— controlador de sensor térmico (fir == infrarrojo lejano)tof— controlador de sensor de tiempo de vueloimu— sensor imuomv— Información de la OpenMV Camcrc— Cálculo de CRCml— Aprendizaje automáticoulab— biblioteca de matrices compatible con numpyprotocol— Canales del protocolo OpenMVlogging— registro de eventossenml— Sensor Markup Language
Asistentes de Python congelados (frozen) incluidos en la mayoría de las placas de cámara OpenMV (controladores, redes y utilidades):
aioble— BLE asíncronorpc— biblioteca rpcrtsp— biblioteca rtspmqtt— Cliente MQTT simplerequests— Cliente HTTPmutex— módulo mutexpid— Controlador proporcional-integral-derivativobno055— Controlador IMU BNO055modbus— Protocolo esclavo Modbus RTUvl53l1x— Controlador del sensor de distancia ToF VL53L1X
Asistentes de red (requieren una interfaz de red funcional):
Framework web¶
Módulos del framework de servidor web. Consulte las secciones por placa a continuación para saber qué placas incluyen cada uno.
Módulos específicos del port¶
Módulos vinculados a una familia de MCU específica. Consulte las secciones por placa a continuación para saber qué placas incluyen cada uno.
Controladores de hardware¶
Controladores para sensores, pantallas y otros periféricos incluidos en una o más placas compatibles con OpenMV. Consulte las secciones por placa a continuación para saber qué placas incluyen cada uno.
dht— sensores de temperatura/humedad DHT11 y DHT22onewire— Protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LEDs WS2812 / NeoPixellsm6dsox— IMU de 6 ejes LSM6DSOXbmi270— IMU de 6 ejes BMI270bmm150— Magnetómetro de 3 ejes BMM150lsm9ds1— IMU de 9 ejes LSM9DS1hts221— sensor de humedad/temperatura HTS221lps22h— sensor de presión LPS22HB/HHhs3003— sensor de humedad/temperatura HS3003espflash— Programador de firmware del bootloader ROM del ESP32imu— asistente de IMU para la Arduino Nano 33 BLE Sensessd1306— Controlador OLEDtb6612— Controlador de motor TB6612pca9674a— Controlador de expansor I2Ctfp410— Controlador DVI/HDMIft5x06— Controlador de pantalla táctilgt911— Controlador táctil capacitivo de 5 puntos GT911lora— Controlador de módem LoRaapds9960— controlador de sensor de proximidad, gestos y colorromfs— Utilidades auxiliares de ROMFS
Disponibilidad por placa¶
Las listas a continuación muestran qué módulos específicos del port y controladores se incluyen en cada placa. Todos los módulos de Common, Frozen Python helpers y Networking helpers (arriba) están disponibles en cada placa de cámara salvo que se indique lo contrario.
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) con una NPU integrada de 1 GHz valorada en 600 GOPS INT8. Combina la NPU con el sensor de obturador global PAG7936 de 1 MP.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32ssd1306— controlador OLEDtb6612— controlador de motor TB6612jwt— JSON Web Tokensmicrodot— framework HTTP mínimo
OpenMV AE3
SoC de doble núcleo Alif Ensemble E3: Cortex-M55 @ 400 MHz (HP) más Cortex-M55 @ 160 MHz (HE), con dos NPU integradas (NPU HP de 400 MHz / 204 GOPS + NPU HE de 160 MHz / 46 GOPS).
alif— funciones del SoC Alif Ensembleromfs— utilidades auxiliares de ROMFSpca9674a— controlador del expansor I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP mínimo
OpenMV Cam RT1062
Placa de visión artificial de bajo consumo basada en el NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Combina redes USB-C de alta velocidad, Wi-Fi / Bluetooth y Ethernet 10/100.
mimxrt— funcionalidad específica de NXP i.MX RTdht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixelssd1306— controlador OLEDtb6612— controlador de motor TB6612pca9674a— controlador del expansor I2C PCA9674Ajwt— JSON Web Tokensmicrodot— framework HTTP mínimo
OpenMV Pure Thermal
Placa de imagen térmica de sistema completo basada en el STM32H743 (Cortex-M7 @ 480 MHz) con 64 MB de SDRAM externa, 32 MB de memoria flash QSPI, un códec JPEG por hardware y salida DVI/HDMI.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32tfp410— serializador DVI/HDMIft5x06— controlador de pantalla táctil capacitivadht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixelssd1306— controlador OLEDtb6612— controlador de motor TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) con 32 MB de SDRAM externa, 32 MB de memoria flash QSPI, un códec JPEG por hardware y el módulo de cámara OV5640 de 5 MP.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32dht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixelssd1306— controlador OLEDtb6612— controlador de motor TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) con 1 MB de SRAM interna, 2 MB de memoria flash interna y un códec JPEG por hardware.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32dht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixelssd1306— controlador OLEDtb6612— controlador de motor TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) con 512 KB de SRAM interna y 2 MB de memoria flash interna. Incluye el sensor OV7725.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32dht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixelssd1306— controlador OLEDtb6612— controlador de motor TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) con 256 KB de SRAM interna y 1 MB de memoria flash interna. Incluye el sensor OV7725.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32dht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixelssd1306— controlador OLEDtb6612— controlador de motor TB6612
Arduino Nicla Vision
Placa de visión artificial de 22.86 × 22.86 mm basada en el SoC de doble núcleo STM32H747AII6: Cortex-M7 @ 400 MHz más Cortex-M4 @ 200 MHz.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32lsm6dsox— IMU de 6 ejes LSM6DSOXdht— sensores de temperatura/humedad DHT11 y DHT22ds18x20— controlador del sensor de temperatura DS18x20onewire— protocolo de bus 1-Wireneopixel— control de LED WS2812 / NeoPixel
Arduino Portenta H7
Placa de desarrollo industrial de 66 × 25 mm basada en el SoC de doble núcleo STM32H747XI: Cortex-M7 @ 400 MHz más Cortex-M4 @ 200 MHz.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32dht— sensores de temperatura/humedad DHT11 y DHT22ds18x20— controlador del sensor de temperatura DS18x20onewire— protocolo de bus 1-Wireneopixel— control de LED WS2812 / NeoPixellora— controlador de módem LoRassd1306— controlador OLEDtb6612— controlador de motor TB6612
Arduino Giga R1 WiFi
Placa de formato Mega de 101 × 53 mm basada en el SoC de doble núcleo STM32H747XI: Cortex-M7 @ 480 MHz más Cortex-M4 @ 240 MHz, con una pantalla táctil integrada de 800x480.
pyb— funciones relacionadas con la placastm— funcionalidad específica de las MCU STM32dht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireneopixel— control de LED WS2812 / NeoPixelgt911— controlador táctil capacitivo de 5 puntos GT911ft5x06— controlador de pantalla táctil capacitiva
Arduino Nano RP2040 Connect
Placa de formato Nano basada en RP2040 con el módulo Wi-Fi/Bluetooth U-blox NINA-W102. Ya no recibe soporte activo; la última versión del firmware de OpenMV para esta placa se conserva para uso de archivo.
rp2— asistentes de PIO / DMA / flash específicos del RP2040espflash— programador del firmware del bootloader ROM de ESP32lsm6dsox— IMU de 6 ejes LSM6DSOXdht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixel
Arduino Nano 33 BLE Sense
Placa de formato Nano Nordic nRF52840 con el conjunto de sensores integrados de Arduino. Ya no recibe soporte activo; la última versión del firmware de OpenMV para esta placa se conserva para uso de archivo.
ubluepy— API de periférico y central Bluetooth LE sobre el Nordic SoftDevicebmi270— IMU de 6 ejes BMI270bmm150— magnetómetro de 3 ejes BMM150lsm9ds1— IMU de 9 ejes LSM9DS1hts221— sensor de humedad/temperatura HTS221lps22h— sensor de presión LPS22HB/HHhs3003— sensor de humedad/temperatura HS3003apds9960— controlador de sensor de proximidad, gestos y colordht— sensores de temperatura/humedad DHT11 y DHT22onewire— protocolo de bus 1-Wireds18x20— controlador del sensor de temperatura DS18x20neopixel— control de LED WS2812 / NeoPixel
Extender bibliotecas integradas desde Python¶
Un subconjunto de los módulos integrados se puede extender mediante código Python proporcionando un módulo del mismo nombre en el sistema de archivos. Esta extensibilidad se aplica a los siguientes módulos de la biblioteca estándar de Python que están integrados en el firmware: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, así como el módulo específico de MicroPython machine. Ningún otro módulo integrado se puede extender desde el sistema de archivos.
Esto permite al usuario proporcionar una implementación extendida de una biblioteca integrada (quizás para ofrecer compatibilidad adicional con CPython o funcionalidad faltante). Esto se utiliza ampliamente en micropython-lib, consulte Gestión de paquetes para obtener más información. El módulo del sistema de archivos normalmente hará una importación con comodín del módulo integrado para heredar todos los globales (clases, funciones y variables) del integrado.
En MicroPython v1.21.0 y superiores, para evitar que el módulo del sistema de archivos se importe a sí mismo, puede forzar una importación del módulo integrado borrando temporalmente sys.path durante la importación. Por ejemplo, para extender el módulo time desde Python, un archivo llamado time.py en el sistema de archivos haría lo siguiente:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
El resultado es que time.py contiene todos los globales del módulo integrado time, pero añade extra_method.
En versiones anteriores de MicroPython, puede forzar una importación de un módulo integrado añadiendo una u al inicio de su nombre. Por ejemplo, import utime en lugar de import time. Por ejemplo, time.py en el sistema de archivos podría tener este aspecto:
from utime import *
def extra_method():
pass
Esta forma todavía es compatible, pero el método de sys.path descrito anteriormente es ahora el preferido, ya que el prefijo u se eliminará de los nombres de los módulos integrados en una versión futura de MicroPython.
Salvo cuando necesita específicamente forzar el uso del módulo integrado, el código siempre debería usar import module en lugar de import umodule.