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--- 暗号化用の暗号アルゴリズムdeflate--- deflate 圧縮および展開framebuf--- フレームバッファ操作machine--- ハードウェアに関連する関数micropython--- MicroPython の内部へのアクセスと制御network--- ネットワーク構成openamp--- 標準の非対称マルチプロセッシング(AMP)サポートを提供しますuctypes--- バイナリデータへの構造化されたアクセスvfs--- 仮想ファイルシステム制御csi--- カメラセンサーsensor--- カメラセンサーimage--- マシンビジョンgif--- gif 録画mjpeg--- mjpeg 録画audio--- オーディオモジュールdisplay--- ディスプレイドライバfir--- 熱センサードライバー(fir == 遠赤外線)tof--- 飛行時間(ToF)センサードライバimu--- imu センサーomv--- OpenMV Cam 情報crc--- CRC 計算ml--- 機械学習ulab--- numpy 互換の配列ライブラリprotocol--- OpenMVプロトコルチャネルlogging--- イベントロギングsenml--- センサーマークアップ言語
ほとんどの OpenMV カメラボードに同梱されているフリーズ済みの Python ヘルパー(ドライバ、ネットワーキング、ユーティリティ):
ネットワーキングヘルパー(動作するネットワークインターフェースが必要です):
Webフレームワーク¶
Webサーバーフレームワークモジュールです。各モジュールがどのボードに含まれるかについては、以下のボードごとのセクションを参照してください。
ポート固有モジュール¶
特定のMCUファミリーに紐付いたモジュールです。各モジュールがどのボードに含まれるかについては、以下のボードごとのセクションを参照してください。
ハードウェアドライバ¶
1つ以上の 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ヘルパーユーティリティ
ボードごとの利用可否¶
以下のリストは、ポート固有モジュールとドライバモジュールがどのボードに同梱されているかを示しています。共通、フリーズ済み Python ヘルパー、ネットワーキングヘルパー(上記)のすべてのモジュールは、特に記載がない限りすべてのカメラボードで利用できます。
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 Tokensmicrodot--- 最小限の HTTP フレームワーク
OpenMV AE3
Alif Ensemble E3 デュアルコア SoC: Cortex-M55 @ 400 MHz(HP)に加えて Cortex-M55 @ 160 MHz(HE)、2つのオンチップ 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 Tokensmicrodot--- 最小限の 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 Tokensmicrodot--- 最小限の 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 を中心とした 22.86 × 22.86 mm のマシンビジョンボード: Cortex-M7 @ 400 MHz に加えて Cortex-M4 @ 200 MHz。
pyb--- ボードに関連する関数stm--- STM32 MCU 固有の機能lsm6dsox--- LSM6DSOX 6軸 IMUdht--- DHT11 および DHT22 温湿度センサーds18x20--- DS18x20 温度センサードライバonewire--- 1-Wire バスプロトコルneopixel--- WS2812 / NeoPixel LED の制御
Arduino Portenta H7
STM32H747XI デュアルコア SoC を中心とした 66 × 25 mm の産業用開発ボード: Cortex-M7 @ 400 MHz に加えて Cortex-M4 @ 200 MHz。
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 を中心とした 101 × 53 mm の Mega フォームファクタボード: Cortex-M7 @ 480 MHz に加えて Cortex-M4 @ 240 MHz、オンボードの 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
この方法は今でもサポートされていますが、u プレフィックスは将来のバージョンの MicroPython で組み込みモジュールの名前から削除される予定であるため、上記で説明した sys.path の方法が現在では推奨されます。
組み込みモジュールの使用を特に強制する必要がある場合を除き、コードでは常に import umodule ではなく import module を使用すべきです。