OpenMV MicroPython ライブラリ

警告

このセクションの重要な概要

  • MicroPython は、Python標準ライブラリ の機能を反映した組み込みモジュール(例: ostime)に加えて、MicroPython固有のモジュール(例: bluetoothmachine)を提供します。

  • ほとんどのPython標準ライブラリモジュールは、対応するPythonモジュールの機能のサブセットを実装しており、いくつかの場合にはMicroPython固有の拡張も提供します(例: arrayos

  • リソースの制約やその他の制限により、ポートやファームウェアバージョンによってはここに記載されているすべての機能が含まれていない場合があります。

  • 拡張性を持たせるため、一部の組み込みモジュールは、デバイスのファイルシステムに読み込まれた 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 カメラボードに同梱されているフリーズ済みの Python ヘルパー(ドライバ、ネットワーキング、ユーティリティ):

ネットワーキングヘルパー(動作するネットワークインターフェースが必要です):

Webフレームワーク

Webサーバーフレームワークモジュールです。各モジュールがどのボードに含まれるかについては、以下のボードごとのセクションを参照してください。

ポート固有モジュール

特定のMCUファミリーに紐付いたモジュールです。各モジュールがどのボードに含まれるかについては、以下のボードごとのセクションを参照してください。

ハードウェアドライバ

1つ以上の OpenMV 対応ボードに同梱されている、センサー、ディスプレイ、その他のペリフェラル用のドライバです。各ドライバがどのボードに含まれるかについては、以下のボードごとのセクションを参照してください。

ボードごとの利用可否

以下のリストは、ポート固有モジュールとドライバモジュールがどのボードに同梱されているかを示しています。共通フリーズ済み 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 Tokens

  • microdot --- 最小限の 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 Tokens

  • 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 Tokens

  • 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 を中心とした 22.86 × 22.86 mm のマシンビジョンボード: Cortex-M7 @ 400 MHz に加えて Cortex-M4 @ 200 MHz。

  • 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 を中心とした 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軸 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 標準ライブラリモジュールに適用されます: arraybinasciicollectionserrnogziphashlibheapqiojsonosplatformrandomreselectsocketsslstructtimezlib、および 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 を使用すべきです。