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.
array--- arrays of numeric dataasyncio--- bộ lập lịch I/O bất đồng bộbinascii--- chuyển đổi nhị phân/ASCIIbuiltins--- các hàm và ngoại lệ dựng sẵncmath--- hàm toán học cho số phứccollections--- kiểu dữ liệu tập hợp và containererrno--- mã lỗi hệ thốnggc--- điều khiển bộ thu gom rácgzip--- nén & giải nén gziphashlib--- thuật toán bămheapq--- thuật toán hàng đợi heapio--- luồng đầu vào/đầu rajson--- mã hóa và giải mã JSONmarshal--- Tuần tự hóa đối tượng Pythonmath--- các hàm toán họcos--- các dịch vụ "hệ điều hành" cơ bảnplatform--- truy cập dữ liệu nhận dạng của nền tảng nềnrandom--- tạo số ngẫu nhiênre--- biểu thức chính quy đơn giảnselect--- chờ đợi sự kiện trên một tập hợp luồngsocket--- mô-đun socketssl--- Mô-đun SSL/TLSstring.templatelib--- Hỗ trợ Template Stringstruct--- đóng gói và giải nén các kiểu dữ liệu nguyên thủysys--- các hàm đặc thù của hệ thốngtime--- các hàm liên quan đến thời giantypes--- tên cho các kiểu dữ liệu tích hợpzlib--- nén & giải nén zlib
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.
bluetooth--- Bluetooth cấp thấpcryptolib--- mật mã đối xứngdeflate--- nén & giải nén deflateframebuf--- thao tác với bộ đệm khung hìnhmachine--- các hàm liên quan đến phần cứngmicropython--- truy cập và kiểm soát nội bộ MicroPythonnetwork--- cấu hình mạngopenamp--- hỗ trợ chuẩn Asymmetric Multiprocessing (AMP)uctypes--- truy cập dữ liệu nhị phân theo cấu trúcvfs--- điều khiển hệ thống tập tin ảocsi--- cảm biến camerasensor--- camera sensorimage--- thị giác máygif--- ghi ảnh gifmjpeg--- ghi hình mjpegaudio--- Mô-đun Âm thanhdisplay--- trình điều khiển màn hìnhfir--- trình điều khiển cảm biến nhiệt (fir == hồng ngoại xa)tof--- Trình điều khiển cảm biến đo khoảng cách bằng thời gian bayimu--- cảm biến IMUomv--- Thông tin OpenMV Camcrc--- Tính toán CRCml--- Machine Learningulab--- Thư viện mảng tương thích numpyprotocol--- Các kênh giao thức OpenMVlogging--- ghi nhật ký sự kiệnsenml--- Ngôn ngữ Đánh dấu Cảm biến
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):
aioble--- Async BLErpc--- thư viện rpcrtsp--- thư viện rtspmqtt--- MQTT client đơn giảnrequests--- HTTP clientmutex--- module mutexpid--- Bộ điều khiển Tỉ lệ-Tích phân-Vi phânbno055--- Driver IMU BNO055modbus--- Giao thức Modbus RTU slavevl53l1x--- Driver cảm biến đo khoảng cách ToF VL53L1X
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.
dht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- Giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- điều khiển đèn LED WS2812 / NeoPixellsm6dsox--- IMU 6 trục LSM6DSOXbmi270--- IMU 6 trục BMI270bmm150--- Từ kế 3 trục BMM150lsm9ds1--- IMU 9 trục LSM9DS1hts221--- Cảm biến độ ẩm/nhiệt độ HTS221lps22h--- cảm biến áp suất LPS22HB/HHhs3003--- cảm biến độ ẩm/nhiệt độ HS3003espflash--- Công cụ nạp firmware bootloader ROM ESP32imu--- Tiện ích IMU cho Arduino Nano 33 BLE Sensessd1306--- Trình điều khiển màn hình OLEDtb6612--- Trình điều khiển động cơ TB6612pca9674a--- Driver I2C Expandertfp410--- Bộ điều khiển DVI/HDMIft5x06--- Trình Điều Khiển Màn Hình Cảm Ứnggt911--- Bộ Điều Khiển Cảm Ứng Điện Dung 5 Điểm GT911lora--- Trình điều khiển modem LoRaapds9960--- Driver Cảm biến Khoảng cách, Cử chỉ và Màu sắcromfs--- Tiện ích trợ giúp ROMFS
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ăng và Tiệ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ạchstm--- chức năng dành riêng cho STM32 MCUssd1306--- driver OLEDtb6612--- driver motor TB6612jwt--- JSON Web Tokensmicrodot--- 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 SoCromfs--- tiện ích ROMFSpca9674a--- driver bộ mở rộng I2C PCA9674Ajwt--- JSON Web Tokensmicrodot--- 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 RTdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- điều khiển đèn LED WS2812 / NeoPixelssd1306--- driver OLEDtb6612--- driver motor TB6612pca9674a--- driver bộ mở rộng I2C PCA9674Ajwt--- JSON Web Tokensmicrodot--- 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ạchstm--- chức năng dành riêng cho STM32 MCUtfp410--- bộ tuần tự hóa DVI/HDMIft5x06--- driver màn hình cảm ứng điện dungdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- điều khiển đèn LED WS2812 / NeoPixelssd1306--- driver OLEDtb6612--- 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ạchstm--- chức năng dành riêng cho STM32 MCUdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- điều khiển đèn LED WS2812 / NeoPixelssd1306--- driver OLEDtb6612--- 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ạchstm--- chức năng dành riêng cho STM32 MCUdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- điều khiển đèn LED WS2812 / NeoPixelssd1306--- driver OLEDtb6612--- 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ạchstm--- chức năng dành riêng cho STM32 MCUdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- điều khiển đèn LED WS2812 / NeoPixelssd1306--- driver OLEDtb6612--- 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ạchstm--- chức năng dành riêng cho STM32 MCUdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- điều khiển đèn LED WS2812 / NeoPixelssd1306--- driver OLEDtb6612--- 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ạchstm--- chức năng dành riêng cho STM32 MCUlsm6dsox--- IMU 6 trục LSM6DSOXdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22ds18x20--- driver cảm biến nhiệt độ DS18x20onewire--- giao thức bus 1-Wireneopixel--- đ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ạchstm--- chức năng dành riêng cho STM32 MCUdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22ds18x20--- driver cảm biến nhiệt độ DS18x20onewire--- giao thức bus 1-Wireneopixel--- điều khiển đèn LED WS2812 / NeoPixellora--- driver modem LoRassd1306--- driver OLEDtb6612--- 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ạchstm--- chức năng dành riêng cho STM32 MCUdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireneopixel--- điều khiển đèn LED WS2812 / NeoPixelgt911--- bộ điều khiển cảm ứng điện dung 5 điểm GT911ft5x06--- 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 RP2040espflash--- công cụ flash firmware bootloader ROM ESP32lsm6dsox--- IMU 6 trục LSM6DSOXdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- đ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 SoftDevicebmi270--- IMU 6 trục BMI270bmm150--- từ kế 3 trục BMM150lsm9ds1--- IMU 9 trục LSM9DS1hts221--- cảm biến độ ẩm/nhiệt độ HTS221lps22h--- cảm biến áp suất LPS22HB/HHhs3003--- cảm biến độ ẩm/nhiệt độ HS3003apds9960--- driver cảm biến tiếp cận, cử chỉ và màu sắcdht--- cảm biến nhiệt độ/độ ẩm DHT11 và DHT22onewire--- giao thức bus 1-Wireds18x20--- driver cảm biến nhiệt độ DS18x20neopixel--- đ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.