OpenMV MicroPython 라이브러리

경고

이 섹션의 중요 요약

  • MicroPython은 Python 표준 라이브러리(예: os, time)의 기능을 반영하는 내장 모듈은 물론, MicroPython 전용 모듈(예: bluetooth, machine)도 제공합니다.

  • 대부분의 Python 표준 라이브러리 모듈은 동등한 Python 모듈 기능의 일부를 구현하며, 일부 경우에는 MicroPython 전용 확장 기능을 제공합니다(예: array, os).

  • 자원 제약이나 기타 제한 사항으로 인해, 일부 포트나 펌웨어 버전에는 여기에 문서화된 모든 기능이 포함되지 않을 수 있습니다.

  • 확장성을 위해, 일부 내장 모듈은 장치 파일시스템에 로드된 Python 코드로 확장할 수 있습니다.

이 장에서는 MicroPython에 내장된 모듈(함수 및 클래스 라이브러리)을 설명합니다. 이 문서는 일반적으로 MicroPython 프로젝트에서 구현된 모든 모듈과 함수/클래스를 설명하는 것을 목표로 합니다. 그러나 MicroPython은 고도로 구성 가능하며, 특정 보드/임베디드 시스템으로의 각 포트에는 사용 가능한 MicroPython 라이브러리의 일부만 포함될 수 있습니다.

이 점을 염두에 두고, 이 문서에 설명된 모듈 내의 일부 함수/클래스(또는 모듈 전체)가 특정 시스템의 특정 MicroPython 빌드에서 사용 불가능할 수 있음에 유의하시기 바랍니다. 특정 기능의 사용 가능/불가능 여부에 대한 일반 정보를 찾기 가장 좋은 곳은 특정 MicroPython port에 관한 정보가 담긴 “General Information” 섹션입니다.

일부 포트에서는 REPL에서 다음을 입력하여 가져올 수 있는 사용 가능한 내장 라이브러리를 확인할 수 있습니다:

help('modules')

이 문서에 설명된 내장 라이브러리 외에도, Python 표준 라이브러리의 더 많은 모듈과 그에 대한 추가 MicroPython 확장은 micropython-lib에서 찾을 수 있습니다.

Python 표준 라이브러리 및 마이크로 라이브러리

다음 표준 Python 라이브러리는 MicroPython의 철학에 맞도록 “마이크로화”되었습니다. 이들은 해당 모듈의 핵심 기능을 제공하며 표준 Python 라이브러리의 드롭인 대체재가 되도록 의도되었습니다.

OpenMV Cam 라이브러리

다음 섹션에서는 MicroPython 전용 내장 기능과 OpenMV 자체 확장을 포함하여, OpenMV가 지원하는 각 보드에서 사용 가능한 라이브러리를 설명합니다.

공통 모듈

모든 OpenMV 카메라 보드의 펌웨어에 내장되어 있습니다.

대부분의 OpenMV 카메라 보드에 탑재되는 동결(frozen) Python 헬퍼(드라이버, 네트워킹, 유틸리티):

네트워킹 헬퍼(작동하는 네트워크 인터페이스 필요):

웹 프레임워크

웹서버 프레임워크 모듈입니다. 각 보드가 어느 것을 포함하는지는 아래의 보드별 섹션을 참조하십시오.

포트별 모듈

특정 MCU 제품군에 묶인 모듈입니다. 각 보드가 어느 것을 포함하는지는 아래의 보드별 섹션을 참조하십시오.

하드웨어 드라이버

하나 이상의 OpenMV 지원 보드에 탑재되는 센서, 디스플레이 및 기타 주변장치용 드라이버입니다. 각 보드가 어느 것을 포함하는지는 아래의 보드별 섹션을 참조하십시오.

보드별 사용 가능 여부

아래 목록은 각 보드에 어떤 포트별 모듈과 드라이버 모듈이 포함되어 있는지를 보여줍니다. (위의) Common, Frozen Python helpers, Networking helpers에 있는 모든 모듈은 별도로 명시되지 않는 한 모든 카메라 보드에서 사용할 수 있습니다.

OpenMV N6

STM32N657(Cortex-M55 @ 800 MHz)과 INT8 기준 600 GOPS의 1 GHz 온칩 NPU를 탑재했습니다. NPU와 PAG7936 1 MP 글로벌 셔터 센서를 결합합니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

  • jwt — JSON Web Token

  • microdot — 최소 HTTP 프레임워크

OpenMV AE3

Alif Ensemble E3 듀얼 코어 SoC: Cortex-M55 @ 400 MHz(HP)과 Cortex-M55 @ 160 MHz(HE), 그리고 두 개의 온칩 NPU(400 MHz / 204 GOPS HP NPU + 160 MHz / 46 GOPS HE NPU)를 탑재했습니다.

  • alif — Alif Ensemble SoC 함수

  • romfs — ROMFS 헬퍼 유틸리티

  • pca9674a — PCA9674A I2C 익스팬더 드라이버

  • jwt — JSON Web Token

  • microdot — 최소 HTTP 프레임워크

OpenMV Cam RT1062

NXP i.MX RT1062(Cortex-M7 @ 600 MHz)를 중심으로 한 저전력 머신 비전 보드입니다. USB-C 고속 네트워킹, Wi-Fi / Bluetooth, 10/100 이더넷을 결합합니다.

  • mimxrt — NXP i.MX RT 전용 기능

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

  • pca9674a — PCA9674A I2C 익스팬더 드라이버

  • jwt — JSON Web Token

  • microdot — 최소 HTTP 프레임워크

OpenMV Pure Thermal

STM32H743(Cortex-M7 @ 480 MHz)을 중심으로 한 풀 시스템 열화상 보드로, 64 MB 외부 SDRAM, 32 MB QSPI 플래시, 하드웨어 JPEG 코덱, DVI/HDMI 출력을 갖추고 있습니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • tfp410 — DVI/HDMI 시리얼라이저

  • ft5x06 — 정전식 터치스크린 드라이버

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

OpenMV Cam H7 Plus

STM32H743(Cortex-M7 @ 480 MHz)과 32 MB 외부 SDRAM, 32 MB QSPI 플래시, 하드웨어 JPEG 코덱, OV5640 5MP 카메라 모듈을 탑재했습니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

OpenMV Cam H7

STM32H743(Cortex-M7 @ 480 MHz)과 1 MB 내부 SRAM, 2 MB 내부 플래시, 하드웨어 JPEG 코덱을 탑재했습니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

OpenMV Cam M7

STM32F765(Cortex-M7 @ 216 MHz)과 512 KB 내부 SRAM, 2 MB 내부 플래시를 탑재했습니다. OV7725 센서가 함께 제공됩니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

OpenMV Cam M4

STM32F427(Cortex-M4 @ 180 MHz)과 256 KB 내부 SRAM, 1 MB 내부 플래시를 탑재했습니다. OV7725 센서가 함께 제공됩니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

Arduino Nicla Vision

STM32H747AII6 듀얼 코어 SoC(Cortex-M7 @ 400 MHz과 Cortex-M4 @ 200 MHz)를 중심으로 한 22.86 × 22.86 mm 머신 비전 보드입니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • lsm6dsox — LSM6DSOX 6축 IMU

  • dht — DHT11 및 DHT22 온도/습도 센서

  • ds18x20 — DS18x20 온도 센서 드라이버

  • onewire — 1-Wire 버스 프로토콜

  • neopixel — WS2812 / NeoPixel LED 제어

Arduino Portenta H7

STM32H747XI 듀얼 코어 SoC(Cortex-M7 @ 400 MHz과 Cortex-M4 @ 200 MHz)를 중심으로 한 66 × 25 mm 산업용 개발 보드입니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • dht — DHT11 및 DHT22 온도/습도 센서

  • ds18x20 — DS18x20 온도 센서 드라이버

  • onewire — 1-Wire 버스 프로토콜

  • neopixel — WS2812 / NeoPixel LED 제어

  • lora — LoRa 모뎀 드라이버

  • ssd1306 — OLED 드라이버

  • tb6612 — TB6612 모터 드라이버

Arduino Giga R1 WiFi

STM32H747XI 듀얼 코어 SoC(Cortex-M7 @ 480 MHz과 Cortex-M4 @ 240 MHz)를 중심으로 한 101 × 53 mm Mega 폼팩터 보드로, 온보드 800x480 터치스크린을 갖추고 있습니다.

  • pyb — 보드 관련 함수

  • stm — STM32 MCU 전용 기능

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • neopixel — WS2812 / NeoPixel LED 제어

  • gt911 — GT911 5포인트 정전식 터치 컨트롤러

  • ft5x06 — 정전식 터치스크린 드라이버

Arduino Nano RP2040 Connect

U-blox NINA-W102 Wi-Fi/Bluetooth 모듈을 탑재한 RP2040 기반 Nano 폼팩터 보드입니다. 더 이상 적극적으로 지원되지 않으며, 이 보드용 마지막 OpenMV 펌웨어 릴리스가 보관용으로 유지됩니다.

  • rp2 — RP2040 전용 PIO / DMA / 플래시 헬퍼

  • espflash — ESP32 ROM 부트로더 펌웨어 플래셔

  • lsm6dsox — LSM6DSOX 6축 IMU

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

Arduino Nano 33 BLE Sense

온보드 Arduino 센서 제품군을 탑재한 Nordic nRF52840 Nano 폼팩터 보드입니다. 더 이상 적극적으로 지원되지 않으며, 이 보드용 마지막 OpenMV 펌웨어 릴리스가 보관용으로 유지됩니다.

  • ubluepy — Nordic SoftDevice 상의 Bluetooth LE 주변장치 및 중앙장치 API

  • bmi270 — BMI270 6축 IMU

  • bmm150 — BMM150 3축 자력계

  • lsm9ds1 — LSM9DS1 9축 IMU

  • hts221 — HTS221 습도/온도 센서

  • lps22h — LPS22HB/HH 압력 센서

  • hs3003 — HS3003 습도/온도 센서

  • apds9960 — 근접, 제스처, 색상 센서 드라이버

  • dht — DHT11 및 DHT22 온도/습도 센서

  • onewire — 1-Wire 버스 프로토콜

  • ds18x20 — DS18x20 온도 센서 드라이버

  • neopixel — WS2812 / NeoPixel LED 제어

Python에서 내장 라이브러리 확장하기

내장 모듈의 일부는 파일시스템에 동일한 이름의 모듈을 제공함으로써 Python 코드로 확장할 수 있습니다. 이 확장성은 펌웨어에 내장된 다음 Python 표준 라이브러리 모듈에 적용됩니다: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib, 그리고 MicroPython 전용 machine 모듈. 그 외 모든 내장 모듈은 파일시스템에서 확장할 수 없습니다.

이를 통해 사용자는 내장 라이브러리의 확장된 구현을 제공할 수 있습니다(예: 추가적인 CPython 호환성이나 누락된 기능을 제공하기 위해). 이는 micropython-lib에서 광범위하게 사용되며, 자세한 내용은 패키지 관리를 참조하십시오. 파일시스템 모듈은 일반적으로 내장 모듈의 모든 전역 항목(클래스, 함수, 변수)을 상속하기 위해 내장 모듈의 와일드카드 가져오기를 수행합니다.

MicroPython v1.21.0 이상에서는 파일시스템 모듈이 자기 자신을 가져오는 것을 방지하기 위해, 가져오기 중에 sys.path를 일시적으로 비움으로써 내장 모듈의 가져오기를 강제할 수 있습니다. 예를 들어, Python에서 time 모듈을 확장하려면 파일시스템의 time.py라는 파일에서 다음과 같이 합니다:

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

def extra_method():
  pass

그 결과 time.py는 내장 time 모듈의 모든 전역 항목을 포함하면서 extra_method를 추가하게 됩니다.

이전 버전의 MicroPython에서는 모듈 이름 앞에 u를 붙여 내장 모듈의 가져오기를 강제할 수 있습니다. 예를 들어, import time 대신 import utime을 사용합니다. 예를 들어, 파일시스템의 time.py는 다음과 같을 수 있습니다:

from utime import *

def extra_method():
  pass

이 방식은 여전히 지원되지만, 향후 버전의 MicroPython에서는 내장 모듈의 이름에서 u 접두사가 제거될 예정이므로 위에서 설명한 sys.path 방식이 이제 권장됩니다.

내장 모듈의 사용을 특별히 강제해야 하는 경우를 제외하고, 코드는 항상 import umodule 이 아닌 import module 을 사용해야 합니다.