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 라이브러리의 드롭인 대체재가 되도록 의도되었습니다.
array— 숫자 데이터의 배열asyncio— 비동기 I/O 스케줄러binascii— 바이너리/ASCII 변환builtins— 내장 함수 및 예외cmath— 복소수를 위한 수학 함수collections— 컬렉션 및 컨테이너 타입errno— 시스템 오류 코드gc— 가비지 컬렉터 제어gzip— gzip 압축 및 압축 해제hashlib— 해싱 알고리즘heapq— 힙 큐 알고리즘io— 입력/출력 스트림json— JSON 인코딩 및 디코딩marshal— Python 객체 직렬화math— 수학 함수os— 기본 “운영 체제” 서비스platform— 기본 플랫폼의 식별 데이터에 대한 접근random— 난수 생성re— 간단한 정규 표현식select— 스트림 집합에서 이벤트 대기socket— socket 모듈ssl— SSL/TLS 모듈string.templatelib— 템플릿 문자열 지원struct— 기본 데이터 유형 패킹 및 언패킹sys— 시스템 관련 함수time— 시간 관련 함수types— 내장 타입에 대한 이름zlib— zlib 압축 및 압축 해제
OpenMV Cam 라이브러리¶
다음 섹션에서는 MicroPython 전용 내장 기능과 OpenMV 자체 확장을 포함하여, OpenMV가 지원하는 각 보드에서 사용 가능한 라이브러리를 설명합니다.
공통 모듈¶
모든 OpenMV 카메라 보드의 펌웨어에 내장되어 있습니다.
bluetooth— 저수준 Bluetoothcryptolib— 암호화 암호(cipher)deflate— deflate 압축 및 압축 해제framebuf— 프레임 버퍼 조작machine— 하드웨어 관련 함수micropython— MicroPython 내부 접근 및 제어network— 네트워크 구성openamp— 표준 비대칭 멀티프로세싱(AMP) 지원 제공uctypes— 바이너리 데이터에 구조화된 방식으로 접근vfs— 가상 파일시스템 제어csi— 카메라 센서sensor— 카메라 센서image— 머신 비전gif— gif 녹화mjpeg— mjpeg 녹화audio— 오디오 모듈display— 디스플레이 드라이버fir— 열 센서 드라이버 (fir == far infrared, 원적외선)tof— time-of-flight 센서 드라이버imu— imu 센서omv— OpenMV Cam 정보crc— CRC 계산ml— 머신 러닝ulab— numpy 호환 배열 라이브러리protocol— OpenMV 프로토콜 채널logging— 이벤트 로깅senml— Sensor Markup Language
대부분의 OpenMV 카메라 보드에 탑재되는 동결(frozen) Python 헬퍼(드라이버, 네트워킹, 유틸리티):
네트워킹 헬퍼(작동하는 네트워크 인터페이스 필요):
웹 프레임워크¶
웹서버 프레임워크 모듈입니다. 각 보드가 어느 것을 포함하는지는 아래의 보드별 섹션을 참조하십시오.
포트별 모듈¶
특정 MCU 제품군에 묶인 모듈입니다. 각 보드가 어느 것을 포함하는지는 아래의 보드별 섹션을 참조하십시오.
하드웨어 드라이버¶
하나 이상의 OpenMV 지원 보드에 탑재되는 센서, 디스플레이 및 기타 주변장치용 드라이버입니다. 각 보드가 어느 것을 포함하는지는 아래의 보드별 섹션을 참조하십시오.
dht— DHT11 및 DHT22 온도/습도 센서onewire— 1-Wire 버스 프로토콜ds18x20— DS18x20 온도 센서 드라이버neopixel— WS2812 / NeoPixel LED 제어lsm6dsox— LSM6DSOX 6축 IMUbmi270— BMI270 6축 IMUbmm150— BMM150 3축 자력계lsm9ds1— LSM9DS1 9축 IMUhts221— HTS221 습도/온도 센서lps22h— LPS22HB/HH 압력 센서hs3003— HS3003 습도/온도 센서espflash— ESP32 ROM 부트로더 펌웨어 플래셔imu— Arduino Nano 33 BLE Sense용 IMU 헬퍼ssd1306— OLED 드라이버tb6612— TB6612 모터 드라이버pca9674a— I2C 익스팬더 드라이버tfp410— DVI/HDMI 컨트롤러ft5x06— 터치 스크린 드라이버gt911— GT911 5점 정전식 터치 컨트롤러lora— LoRa 모뎀 드라이버apds9960— 근접, 제스처 및 색상 센서 드라이버romfs— ROMFS 헬퍼 유틸리티
보드별 사용 가능 여부¶
아래 목록은 각 보드에 어떤 포트별 모듈과 드라이버 모듈이 포함되어 있는지를 보여줍니다. (위의) 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 Tokenmicrodot— 최소 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 Tokenmicrodot— 최소 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 Tokenmicrodot— 최소 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축 IMUdht— 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축 IMUdht— 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 주변장치 및 중앙장치 APIbmi270— BMI270 6축 IMUbmm150— BMM150 3축 자력계lsm9ds1— LSM9DS1 9축 IMUhts221— 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 을 사용해야 합니다.