Thư viện OpenMV MicroPython

Cảnh báo

Tóm tắt quan trọng của phần này

  • MicroPython cung cấp các module tích hợp phản ánh chức năng của thư viện chuẩn Python (ví dụ: os, time), cũng như các module dành riêng cho MicroPython (ví dụ: bluetooth, machine).

  • Hầu hết các module thư viện chuẩn Python triển khai một tập con chức năng của module Python tương đương, và trong một số trường hợp cung cấp một số tiện ích mở rộng dành riêng cho MicroPython (ví dụ: array, os)

  • Do giới hạn tài nguyên hoặc các hạn chế khác, một số cổng hoặc phiên bản firmware có thể không bao gồm tất cả các chức năng được mô tả ở đây.

  • Để cho phép khả năng mở rộng, một số module tích hợp có thể được mở rộng từ mã Python được tải lên hệ thống tệp của thiết bị.

Chương này mô tả các module (thư viện hàm và lớp) được tích hợp sẵn trong MicroPython. Tài liệu này nói chung hướng đến việc mô tả tất cả các module và hàm/lớp được triển khai trong dự án MicroPython. Tuy nhiên, MicroPython có thể cấu hình cao, và mỗi cổng đến một bo mạch/hệ thống nhúng cụ thể có thể chỉ bao gồm một tập con các thư viện MicroPython có sẵn.

Lưu ý điều đó, hãy cảnh báo rằng một số hàm/lớp trong một module (hoặc thậm chí toàn bộ module) được mô tả trong tài liệu này có thể không có sẵn trong một bản build MicroPython cụ thể trên một hệ thống cụ thể. Nơi tốt nhất để tìm thông tin chung về tính khả dụng/không khả dụng của một tính năng cụ thể là phần "Thông tin chung" chứa thông tin liên quan đến một MicroPython port cụ thể.

Trên một số cổng, bạn có thể khám phá các thư viện tích hợp có sẵn có thể được import bằng cách nhập vào REPL

help('modules')

Ngoài các thư viện tích hợp được mô tả trong tài liệu này, nhiều module hơn từ thư viện chuẩn Python, cũng như các tiện ích mở rộng MicroPython bổ sung, có thể tìm thấy trong micropython-lib.

Thư viện chuẩn Python và micro-thư viện

Các thư viện Python chuẩn sau đây đã được "thu nhỏ" để phù hợp với triết lý của MicroPython. Chúng cung cấp chức năng cốt lõi của module đó và được thiết kế để thay thế trực tiếp cho thư viện chuẩn Python.

Thư viện OpenMV Cam

Các phần sau mô tả các thư viện có sẵn trên mỗi bo mạch được OpenMV hỗ trợ, bao gồm cả các module tích hợp dành riêng cho MicroPython và các tiện ích mở rộng riêng của OpenMV.

Các module chung

Được tích hợp sẵn trong firmware trên mọi bo mạch camera OpenMV.

Các tiện ích Python đóng băng được đi kèm trên hầu hết các bo mạch camera OpenMV (drivers, mạng và tiện ích):

Các tiện ích mạng (yêu cầu giao diện mạng hoạt động):

Web framework

Các module web framework. Xem phần từng bo mạch bên dưới để biết bo mạch nào bao gồm từng module.

Các module dành riêng cho cổng

Các module gắn với một họ MCU cụ thể. Xem phần từng bo mạch bên dưới để biết bo mạch nào bao gồm từng module.

Driver phần cứng

Các driver cho cảm biến, màn hình và các ngoại vi khác được đi kèm trên một hoặc nhiều bo mạch được OpenMV hỗ trợ. Xem phần từng bo mạch bên dưới để biết bo mạch nào bao gồm từng module.

Tính khả dụng theo từng bo mạch

Các danh sách bên dưới cho thấy module nào dành riêng cho cổng và module driver nào được đi kèm trên mỗi bo mạch. Tất cả các module trong phần Chung, Tiện ích Python đóng băngTiện ích mạng (ở trên) đều có sẵn trên mọi bo mạch camera trừ khi có ghi chú khác.

OpenMV N6

STM32N657 (Cortex-M55 @ 800 MHz) với NPU trên chip 1 GHz được đánh giá ở 600 GOPS INT8. Kết hợp NPU với cảm biến global-shutter 1 MP PAG7936.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

  • jwt --- JSON Web Tokens

  • microdot --- HTTP framework tối giản

OpenMV AE3

Alif Ensemble E3 SoC lõi kép: Cortex-M55 @ 400 MHz (HP) cộng với Cortex-M55 @ 160 MHz (HE), với hai NPU trên chip (400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU).

  • alif --- các hàm Alif Ensemble SoC

  • romfs --- tiện ích ROMFS

  • pca9674a --- driver bộ mở rộng I2C PCA9674A

  • jwt --- JSON Web Tokens

  • microdot --- HTTP framework tối giản

OpenMV Cam RT1062

Bo mạch thị giác máy tiết kiệm năng lượng xây dựng xung quanh NXP i.MX RT1062 (Cortex-M7 @ 600 MHz). Kết hợp mạng USB-C tốc độ cao, Wi-Fi / Bluetooth và Ethernet 10/100.

  • mimxrt --- chức năng dành riêng cho NXP i.MX RT

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

  • pca9674a --- driver bộ mở rộng I2C PCA9674A

  • jwt --- JSON Web Tokens

  • microdot --- HTTP framework tối giản

OpenMV Pure Thermal

Bo mạch hình ảnh nhiệt đầy đủ hệ thống xây dựng xung quanh STM32H743 (Cortex-M7 @ 480 MHz) với 64 MB SDRAM ngoài, 32 MB QSPI flash, codec JPEG phần cứng và đầu ra DVI/HDMI.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • tfp410 --- bộ tuần tự hóa DVI/HDMI

  • ft5x06 --- driver màn hình cảm ứng điện dung

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 MHz) với 32 MB SDRAM ngoài, 32 MB QSPI flash, codec JPEG phần cứng và module camera OV5640 5MP.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 MHz) với 1 MB SRAM nội, 2 MB flash nội và codec JPEG phần cứng.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 MHz) với 512 KB SRAM nội và 2 MB flash nội. Đi kèm với cảm biến OV7725.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 MHz) với 256 KB SRAM nội và 1 MB flash nội. Đi kèm với cảm biến OV7725.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

Arduino Nicla Vision

Bo mạch thị giác máy 22,86 × 22,86 mm xây dựng xung quanh SoC lõi kép STM32H747AII6: Cortex-M7 @ 400 MHz cộng với Cortex-M4 @ 200 MHz.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • lsm6dsox --- IMU 6 trục LSM6DSOX

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • onewire --- giao thức bus 1-Wire

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

Arduino Portenta H7

Bo mạch phát triển công nghiệp 66 × 25 mm xây dựng xung quanh SoC lõi kép STM32H747XI: Cortex-M7 @ 400 MHz cộng với Cortex-M4 @ 200 MHz.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • onewire --- giao thức bus 1-Wire

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • lora --- driver modem LoRa

  • ssd1306 --- driver OLED

  • tb6612 --- driver motor TB6612

Arduino Giga R1 WiFi

Bo mạch dạng Mega 101 × 53 mm xây dựng xung quanh SoC lõi kép STM32H747XI: Cortex-M7 @ 480 MHz cộng với Cortex-M4 @ 240 MHz, với màn hình cảm ứng 800x480 trên bo mạch.

  • pyb --- các hàm liên quan đến bo mạch

  • stm --- chức năng dành riêng cho STM32 MCU

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

  • gt911 --- bộ điều khiển cảm ứng điện dung 5 điểm GT911

  • ft5x06 --- driver màn hình cảm ứng điện dung

Arduino Nano RP2040 Connect

Bo mạch dạng Nano dựa trên RP2040 với module Wi-Fi/Bluetooth U-blox NINA-W102. Không còn được hỗ trợ tích cực; bản phát hành firmware OpenMV cuối cùng cho bo mạch này được giữ lại để lưu trữ.

  • rp2 --- tiện ích PIO / DMA / flash dành riêng cho RP2040

  • espflash --- công cụ flash firmware bootloader ROM ESP32

  • lsm6dsox --- IMU 6 trục LSM6DSOX

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

Arduino Nano 33 BLE Sense

Bo mạch dạng Nano Nordic nRF52840 với bộ cảm biến Arduino trên bo mạch. Không còn được hỗ trợ tích cực; bản phát hành firmware OpenMV cuối cùng cho bo mạch này được giữ lại để lưu trữ.

  • ubluepy --- API ngoại vi và trung tâm Bluetooth LE trên Nordic SoftDevice

  • bmi270 --- IMU 6 trục BMI270

  • bmm150 --- từ kế 3 trục BMM150

  • lsm9ds1 --- IMU 9 trục LSM9DS1

  • hts221 --- cảm biến độ ẩm/nhiệt độ HTS221

  • lps22h --- cảm biến áp suất LPS22HB/HH

  • hs3003 --- cảm biến độ ẩm/nhiệt độ HS3003

  • apds9960 --- driver cảm biến tiếp cận, cử chỉ và màu sắc

  • dht --- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22

  • onewire --- giao thức bus 1-Wire

  • ds18x20 --- driver cảm biến nhiệt độ DS18x20

  • neopixel --- điều khiển đèn LED WS2812 / NeoPixel

Mở rộng thư viện tích hợp từ Python

Một tập con các module tích hợp có thể được mở rộng bằng mã Python bằng cách cung cấp một module có cùng tên trong hệ thống tệp. Khả năng mở rộng này áp dụng cho các module thư viện chuẩn Python sau được tích hợp sẵn trong firmware: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, cũng như module machine dành riêng cho MicroPython. Tất cả các module tích hợp khác không thể được mở rộng từ hệ thống tệp.

Điều này cho phép người dùng cung cấp một triển khai mở rộng của thư viện tích hợp (có thể để cung cấp thêm khả năng tương thích CPython hoặc chức năng còn thiếu). Điều này được sử dụng rộng rãi trong micropython-lib, xem Quản lý gói để biết thêm thông tin. Module hệ thống tệp thường thực hiện import ký tự đại diện của module tích hợp để kế thừa tất cả các biến toàn cục (lớp, hàm và biến) từ module tích hợp.

Trong MicroPython v1.21.0 trở lên, để ngăn module hệ thống tệp tự import chính nó, module có thể buộc import module tích hợp bằng cách tạm thời xóa sys.path trong quá trình import. Ví dụ, để mở rộng module time từ Python, một tệp có tên time.py trên hệ thống tệp sẽ thực hiện như sau:

_path = sys.path
sys.path = ()
try:
  from time import *
finally:
  sys.path = _path
  del _path

def extra_method():
  pass

Kết quả là time.py chứa tất cả các biến toàn cục của module time tích hợp, nhưng thêm extra_method.

Trong các phiên bản MicroPython trước, bạn có thể buộc import một module tích hợp bằng cách thêm u vào đầu tên của nó. Ví dụ, import utime thay vì import time. Chẳng hạn, time.py trên hệ thống tệp có thể trông như sau:

from utime import *

def extra_method():
  pass

Cách này vẫn được hỗ trợ, nhưng phương pháp sys.path được mô tả ở trên hiện được ưu tiên hơn vì tiền tố u sẽ bị xóa khỏi tên của các module tích hợp trong một phiên bản MicroPython tương lai.

Ngoài khi nó đặc biệt cần buộc sử dụng module tích hợp, mã nên luôn sử dụng import module thay vì import umodule.