ไลบรารี OpenMV MicroPython

Warning

สรุปสำคัญของส่วนนี้

  • MicroPython มีโมดูลในตัวที่สะท้อนฟังก์ชันการทำงานของ ไลบรารีมาตรฐาน Python (เช่น os, time) รวมถึง โมดูลเฉพาะของ MicroPython (เช่น bluetooth, machine)

  • โมดูลไลบรารีมาตรฐาน Python ส่วนใหญ่ใช้งานฟังก์ชันเพียงบางส่วนของโมดูล Python เทียบเท่า และในบางกรณีมีส่วนขยายเฉพาะของ MicroPython (เช่น array, os)

  • เนื่องจากข้อจำกัดด้านทรัพยากรหรือข้อจำกัดอื่นๆ พอร์ตหรือเวอร์ชันเฟิร์มแวร์บางรุ่นอาจไม่รวมฟังก์ชันทั้งหมดที่อธิบายไว้ที่นี่

  • เพื่อรองรับการขยายฟังก์ชัน โมดูลในตัวบางโมดูลสามารถ ขยายจากโค้ด Python ที่โหลดลงบนระบบไฟล์ของอุปกรณ์ได้

บทนี้อธิบายโมดูล (ไลบรารีของฟังก์ชันและคลาส) ที่ฝังอยู่ใน MicroPython เอกสารนี้โดยทั่วไปมุ่งหมายที่จะอธิบายโมดูลและฟังก์ชัน/คลาสทั้งหมดที่นำไปใช้งานในโครงการ MicroPython อย่างไรก็ตาม MicroPython มีความยืดหยุ่นสูง และแต่ละพอร์ตไปยังบอร์ด/ระบบฝังตัวอาจรวมเฉพาะส่วนหนึ่งของไลบรารี MicroPython ที่มี

ด้วยเหตุนี้ โปรดทราบว่าฟังก์ชัน/คลาสบางอย่างในโมดูล (หรือแม้แต่โมดูลทั้งหมด) ที่อธิบายในเอกสารนี้ อาจไม่พร้อมใช้งาน ในบิลด์ MicroPython บนระบบใดระบบหนึ่ง แหล่งข้อมูลที่ดีที่สุดสำหรับข้อมูลทั่วไปเกี่ยวกับความพร้อมใช้งาน/ไม่พร้อมใช้งานของฟีเจอร์ใดฟีเจอร์หนึ่งคือส่วน "General Information" ซึ่งมีข้อมูลเกี่ยวกับ MicroPython port เฉพาะ

ในบางพอร์ต คุณสามารถค้นหาไลบรารีในตัวที่พร้อมใช้งานซึ่งนำเข้าได้โดยพิมพ์คำสั่งต่อไปนี้ที่ REPL

help('modules')

นอกเหนือจากไลบรารีในตัวที่อธิบายในเอกสารนี้ โมดูลเพิ่มเติมอีกมากจากไลบรารีมาตรฐาน Python รวมถึงส่วนขยาย MicroPython เพิ่มเติม สามารถพบได้ใน micropython-lib

ไลบรารีมาตรฐาน Python และไมโคร-ไลบรารี

ไลบรารีมาตรฐาน Python ต่อไปนี้ได้รับการ "ย่อขนาด" ให้เหมาะกับปรัชญาของ MicroPython โดยมีฟังก์ชันหลักของโมดูลนั้นๆ และมุ่งหมายให้เป็นตัวแทนที่ใช้แทนกันได้กับไลบรารีมาตรฐาน Python

ไลบรารี OpenMV Cam

ส่วนต่อไปนี้อธิบายไลบรารีที่มีในแต่ละบอร์ดที่ OpenMV รองรับ รวมถึงทั้งโมดูลในตัวเฉพาะของ MicroPython และส่วนขยายของ OpenMV เอง

โมดูลทั่วไป

ฝังอยู่ในเฟิร์มแวร์ของบอร์ดกล้อง OpenMV ทุกรุ่น

ตัวช่วย Python แบบ Frozen ที่ส่งมากับบอร์ดกล้อง OpenMV ส่วนใหญ่ (ไดรเวอร์, เครือข่าย และยูทิลิตี):

ตัวช่วยเครือข่าย (ต้องการอินเทอร์เฟซเครือข่ายที่ใช้งานได้):

เว็บเฟรมเวิร์ก

โมดูลเว็บเซิร์ฟเวอร์เฟรมเวิร์ก ดูส่วนต่อบอร์ดด้านล่างเพื่อดูว่าบอร์ดใดรวมโมดูลใด

โมดูลเฉพาะพอร์ต

โมดูลที่ผูกกับตระกูล MCU เฉพาะ ดูส่วนต่อบอร์ดด้านล่างเพื่อดูว่าบอร์ดใดรวมโมดูลใด

ไดรเวอร์ฮาร์ดแวร์

ไดรเวอร์สำหรับเซนเซอร์, จอแสดงผล และอุปกรณ์ต่อพ่วงอื่นๆ ที่มาพร้อมกับบอร์ดที่ OpenMV รองรับหนึ่งรุ่นขึ้นไป ดูส่วนต่อบอร์ดด้านล่างเพื่อดูว่าบอร์ดใดรวมโมดูลใด

ความพร้อมใช้งานตามบอร์ด

รายการด้านล่างแสดงโมดูลเฉพาะพอร์ตและโมดูลไดรเวอร์ที่มาพร้อมกับแต่ละบอร์ด โมดูลทั้งหมดใน Common, Frozen Python helpers และ Networking helpers (ด้านบน) พร้อมใช้งานบนบอร์ดกล้องทุกรุ่นหากไม่ได้ระบุไว้เป็นอื่น

OpenMV N6

STM32N657 (Cortex-M55 @ 800 MHz) พร้อม NPU บนชิปความเร็ว 1 GHz ที่ได้รับการประเมินที่ 600 GOPS INT8 จับคู่กับเซนเซอร์ PAG7936 1 MP global-shutter

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

  • jwt --- JSON Web Tokens

  • microdot --- เฟรมเวิร์ก HTTP ขนาดเล็ก

OpenMV AE3

Alif Ensemble E3 dual-core SoC: Cortex-M55 @ 400 MHz (HP) บวก Cortex-M55 @ 160 MHz (HE) พร้อม NPU บนชิปสองตัว (HP NPU 400 MHz / 204 GOPS + HE NPU 160 MHz / 46 GOPS)

  • alif --- ฟังก์ชัน Alif Ensemble SoC

  • romfs --- ยูทิลิตีตัวช่วย ROMFS

  • pca9674a --- ไดรเวอร์ PCA9674A I2C expander

  • jwt --- JSON Web Tokens

  • microdot --- เฟรมเวิร์ก HTTP ขนาดเล็ก

OpenMV Cam RT1062

บอร์ด machine vision ประหยัดพลังงานรอบๆ NXP i.MX RT1062 (Cortex-M7 @ 600 MHz) รวม USB-C high-speed networking, Wi-Fi / Bluetooth และ Ethernet 10/100

  • mimxrt --- ฟังก์ชันเฉพาะสำหรับ NXP i.MX RT

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

  • pca9674a --- ไดรเวอร์ PCA9674A I2C expander

  • jwt --- JSON Web Tokens

  • microdot --- เฟรมเวิร์ก HTTP ขนาดเล็ก

OpenMV Pure Thermal

บอร์ด thermal imaging แบบครบระบบรอบๆ STM32H743 (Cortex-M7 @ 480 MHz) พร้อม SDRAM ภายนอก 64 MB, แฟลช QSPI 32 MB, codec JPEG ฮาร์ดแวร์ และเอาต์พุต DVI/HDMI

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • tfp410 --- DVI/HDMI serializer

  • ft5x06 --- ไดรเวอร์จอสัมผัสแบบ capacitive

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

OpenMV Cam H7 Plus

STM32H743 (Cortex-M7 @ 480 MHz) พร้อม SDRAM ภายนอก 32 MB, แฟลช QSPI 32 MB, codec JPEG ฮาร์ดแวร์ และโมดูลกล้อง OV5640 5MP

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

OpenMV Cam H7

STM32H743 (Cortex-M7 @ 480 MHz) พร้อม SRAM ภายใน 1 MB, แฟลชภายใน 2 MB และ codec JPEG ฮาร์ดแวร์

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

OpenMV Cam M7

STM32F765 (Cortex-M7 @ 216 MHz) พร้อม SRAM ภายใน 512 KB และแฟลชภายใน 2 MB มาพร้อมกับเซนเซอร์ OV7725

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

OpenMV Cam M4

STM32F427 (Cortex-M4 @ 180 MHz) พร้อม SRAM ภายใน 256 KB และแฟลชภายใน 1 MB มาพร้อมกับเซนเซอร์ OV7725

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

Arduino Nicla Vision

บอร์ด machine vision ขนาด 22.86 × 22.86 mm รอบๆ STM32H747AII6 dual-core SoC: Cortex-M7 @ 400 MHz บวก Cortex-M4 @ 200 MHz

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • lsm6dsox --- LSM6DSOX 6-axis IMU

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • onewire --- โปรโตคอลบัส 1-Wire

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

Arduino Portenta H7

บอร์ด industrial dev ขนาด 66 × 25 mm รอบๆ STM32H747XI dual-core SoC: Cortex-M7 @ 400 MHz บวก Cortex-M4 @ 200 MHz

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • onewire --- โปรโตคอลบัส 1-Wire

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • lora --- ไดรเวอร์ LoRa modem

  • ssd1306 --- ไดรเวอร์ OLED

  • tb6612 --- ไดรเวอร์มอเตอร์ TB6612

Arduino Giga R1 WiFi

บอร์ด Mega-form-factor ขนาด 101 × 53 mm รอบๆ STM32H747XI dual-core SoC: Cortex-M7 @ 480 MHz บวก Cortex-M4 @ 240 MHz พร้อมจอสัมผัส 800x480 บนบอร์ด

  • pyb --- ฟังก์ชันที่เกี่ยวข้องกับบอร์ด

  • stm --- ฟังก์ชันเฉพาะสำหรับ STM32 MCUs

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

  • gt911 --- ตัวควบคุมสัมผัส GT911 5-point capacitive

  • ft5x06 --- ไดรเวอร์จอสัมผัสแบบ capacitive

Arduino Nano RP2040 Connect

บอร์ด Nano-form-factor ที่ใช้ RP2040 พร้อมโมดูล Wi-Fi/Bluetooth U-blox NINA-W102 ไม่ได้รับการสนับสนุนอย่างแข็งขันอีกต่อไป รีลีสเฟิร์มแวร์ OpenMV ล่าสุดสำหรับบอร์ดนี้ยังคงเก็บไว้เพื่อการเก็บถาวร

  • rp2 --- ตัวช่วย PIO / DMA / flash เฉพาะ RP2040

  • espflash --- โปรแกรมแฟลชเฟิร์มแวร์ ESP32 ROM bootloader

  • lsm6dsox --- LSM6DSOX 6-axis IMU

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

Arduino Nano 33 BLE Sense

บอร์ด Nordic nRF52840 Nano-form-factor พร้อมชุดเซนเซอร์ Arduino บนบอร์ด ไม่ได้รับการสนับสนุนอย่างแข็งขันอีกต่อไป รีลีสเฟิร์มแวร์ OpenMV ล่าสุดสำหรับบอร์ดนี้ยังคงเก็บไว้เพื่อการเก็บถาวร

  • ubluepy --- Bluetooth LE peripheral และ central API บน Nordic SoftDevice

  • bmi270 --- BMI270 6-axis IMU

  • bmm150 --- BMM150 3-axis magnetometer

  • lsm9ds1 --- LSM9DS1 9-axis IMU

  • hts221 --- เซนเซอร์ความชื้น/อุณหภูมิ HTS221

  • lps22h --- เซนเซอร์ความดัน LPS22HB/HH

  • hs3003 --- เซนเซอร์ความชื้น/อุณหภูมิ HS3003

  • apds9960 --- ไดรเวอร์เซนเซอร์ proximity, gesture และสี

  • dht --- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22

  • onewire --- โปรโตคอลบัส 1-Wire

  • ds18x20 --- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20

  • neopixel --- ควบคุม WS2812 / NeoPixel LEDs

การขยายไลบรารีในตัวจาก Python

โมดูลในตัวบางส่วนสามารถขยายได้โดยโค้ด Python โดยจัดหาโมดูลที่มีชื่อเดียวกันในระบบไฟล์ ความสามารถในการขยายนี้ใช้กับโมดูลไลบรารีมาตรฐาน Python ต่อไปนี้ที่ฝังอยู่ในเฟิร์มแวร์: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib รวมถึงโมดูล machine เฉพาะของ MicroPython โมดูลในตัวอื่นๆ ทั้งหมดไม่สามารถขยายได้จากระบบไฟล์

สิ่งนี้ช่วยให้ผู้ใช้จัดหาการใช้งานขยายของไลบรารีในตัว (เพื่อให้ความเข้ากันได้กับ CPython เพิ่มเติมหรือฟังก์ชันที่ขาดหายไป) ซึ่งใช้อย่างแพร่หลายใน micropython-lib ดู การจัดการแพ็กเกจ สำหรับข้อมูลเพิ่มเติม โดยทั่วไปโมดูลระบบไฟล์จะทำการ wildcard import โมดูลในตัวเพื่อสืบทอด globals ทั้งหมด (คลาส, ฟังก์ชัน และตัวแปร) จากโมดูลในตัว

ใน MicroPython v1.21.0 ขึ้นไป เพื่อป้องกันไม่ให้โมดูลระบบไฟล์นำเข้าตัวเอง สามารถบังคับการนำเข้าโมดูลในตัวได้โดยการล้าง sys.path ชั่วคราวระหว่างการนำเข้า ตัวอย่างเช่น ในการขยายโมดูล time จาก Python ไฟล์ชื่อ time.py บนระบบไฟล์จะทำดังนี้:

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

def extra_method():
  pass

ผลลัพธ์คือ time.py มี globals ทั้งหมดของโมดูล time ในตัว แต่เพิ่ม extra_method

ในเวอร์ชัน MicroPython เก่ากว่า คุณสามารถบังคับการนำเข้าโมดูลในตัวได้โดยการเพิ่ม u ที่ต้นชื่อ ตัวอย่างเช่น import utime แทนที่ import time สำหรับอินสแตนซ์ time.py บนระบบไฟล์อาจมีลักษณะดังนี้:

from utime import *

def extra_method():
  pass

วิธีนี้ยังคงรองรับ แต่วิธี sys.path ที่อธิบายข้างต้นเป็นที่นิยมมากกว่าในขณะนี้ เนื่องจากคำนำหน้า u จะถูกลบออกจากชื่อโมดูลในตัวในเวอร์ชัน MicroPython อนาคต

นอกจากเมื่อจำเป็นต้องบังคับการใช้งานโมดูลในตัวโดยเฉพาะ โค้ดควรใช้ import module เสมอ แทนที่จะใช้ import umodule