これは MicroPython プロジェクトで、マイクロコントローラーや小規模な組み込みシステムに Python 3.x を実装することを目的としています。公式 Web サイトは micropython.org にあります。
警告: このプロジェクトはベータ段階にあり、プロジェクト全体の名前の変更や API の変更など、コードベースが変更される可能性があります。
MicroPython は、Python 3.4 構文全体を実装します ( with
、 yield from
などの例外を含み、さらに Python 3.5 のasync
/ await
キーワードと、それ以降のバージョンの一部の選択機能を含みます)。次のコア データ型が提供されます: str
(基本的な Unicode サポートを含む)、 bytes
、 bytearray
、 tuple
、 list
、 dict
、 set
、 frozenset
、 array.array
、 collections.namedtuple
、クラスおよびインスタンス。組み込みモジュールには、 os
、 sys
、 time
、 re
、 struct
などが含まれます。一部のポートは、 _thread
モジュール (マルチスレッド)、ネットワーク用のsocket
とssl
、およびasyncio
をサポートしています。データ型とモジュールには Python 3 機能のサブセットのみが実装されていることに注意してください。
MicroPython は、テキスト ソース形式 (.py ファイル) またはプリコンパイルされたバイトコード (.mpy ファイル) からスクリプトを実行できます。どちらの場合も、デバイス上のファイル システムから、または MicroPython 実行可能ファイルに「フリーズ」されたものから実行できます。
MicroPython は、GPIO、タイマー、ADC、DAC、PWM、SPI、I2C、CAN、Bluetooth、USB などのハードウェア固有の機能や周辺機器にアクセスするための、MicroPython 固有のモジュールのセットも提供します。
API リファレンスと、MicroPython の使用方法とその実装方法に関する情報については、オンライン ドキュメントを参照してください。
私たちはフォーラムとして GitHub Discussions を使用し、チャットには Discord を使用します。これらは、コミュニティに質問やアドバイスをしたり、MicroPython ベースのプロジェクトについて話し合ったりするのに最適な場所です。
バグや機能リクエストについては、問題を提起し、そこにあるテンプレートに従ってください。
オリジナルの Kickstarter キャンペーンで公式にサポートされているボードである MicroPython pyboard については、回路図、ピン配置、およびドキュメントを参照してください。
MicroPython はオープンソース プロジェクトであり、貢献を歓迎します。生産性を高めるために、必ずコントリビューターのガイドラインとコード規約に従ってください。 MicroPython は MIT ライセンスに基づいてライセンス供与されており、すべての貢献はこのライセンスに従う必要があることに注意してください。
このリポジトリには次のコンポーネントが含まれています。
py/ -- コンパイラ、ランタイム、コア ライブラリを含むコア Python 実装。
mpy-cross/ -- スクリプトをプリコンパイルされたバイトコードに変換するために使用される MicroPython クロスコンパイラー。
ports/ -- MicroPython が実行されるさまざまなポートおよびアーキテクチャ用のプラットフォーム固有のコード。
lib/ -- 外部依存関係のサブモジュール。
testing/ -- テスト フレームワークとテスト スクリプト。
docs/ -- Sphinx reStructuredText 形式のユーザー ドキュメント。これはオンライン ドキュメントを生成するために使用されます。
extmod/ -- C で実装された追加の (非コア) モジュール。
tools/ -- pyboard.py モジュールを含むさまざまなツール。
Examples/ -- いくつかの Python スクリプトの例。
「make」はコンポーネントをビルドするために使用され、BSD ベースのシステムでは「gmake」が使用されます。また、bash、gcc、およびpython3
コマンドとして使用できる Python 3.3 以降も必要です (システムに Python 2.7 しかない場合は、追加オプションPYTHON=python2
を指定して make を呼び出します)。一部のポート (rp2 および esp32) はさらに CMake を使用します。
MicroPython は、Unix 系 (Linux、BSD、macOS、WSL を含む) および Windows システムだけでなく、幅広いマイクロコントローラー上で実行されます。
マイクロコントローラーのターゲットは 256kiB フラッシュ + 16kiB RAM まで小さくできますが、少なくとも 512kiB フラッシュ + 128kiB RAM を備えたデバイスでは、よりフル機能のエクスペリエンスが可能になります。
Unix および Windows ポートにより、MicroPython 自体の開発とテストの両方が可能になるだけでなく、これらのプラットフォーム (特に組み込み Linux システム) 上で CPython に代わる軽量の代替手段が提供されます。
「最小」ポートは、非常に基本的な MicroPython ポートの例を提供し、スタンドアロン Linux バイナリとしても、ARM Cortex M4 用としてもコンパイルできます。 MicroPython を別のマイクロコントローラーに移植する場合は、これから始めてください。さらに、「ベアアーム」ポートは絶対最小構成の一例であり、コア ランタイムと VM のコード サイズを追跡するために使用されます。
さらに、このリポジトリでは次のポートが提供されます。
cc3200 -- Texas Instruments CC3200 (PyCom WiPy を含む)。
esp32 -- Espressif ESP32 SoC (ESP32S2、ESP32S3、ESP32C3、ESP32C6 を含む)。
esp8266 -- Espressif ESP8266 SoC。
mimxrt -- NXP m.iMX RT (Teensy 4.x を含む)。
nrf -- Nordic Semiconductor nRF51 および nRF52。
pic16bit -- マイクロチップ PIC 16 ビット。
powerpc -- IBM PowerPC (マイクロワットを含む)
qemu -- QEMU ベースのエミュレートされたターゲット (テスト用)
renesas-ra -- ルネサス RA ファミリ。
rp2 -- Raspberry Pi RP2040 (Pico および Pico W を含む)。
samd -- Microchip (旧 Atmel) SAMD21 および SAMD51。
stm32 -- STMicroelectronics STM32 ファミリ (F0、F4、F7、G0、G4、H7、L0、L4、WB を含む)
webassembly -- ブラウザと NodeJS を対象とした Emscripten ポート。
ゼファー -- ゼファー RTOS。
ほとんどのポートでは、最初に MicroPython クロスコンパイラーをビルドする必要があります。 mpy-cross と呼ばれるこのプログラムは、Python スクリプトを .mpy ファイルにプリコンパイルするために使用されます。このファイルは、ポートのファームウェア/実行可能ファイルに含める (凍結する) ことができます。 mpy-cross を構築するには、以下を使用します。
$ cd mpy-cross $ make
コアの MicroPython VM とランタイムには外部依存関係はありませんが、特定のポートはサードパーティのドライバーまたはベンダーの HAL に依存する可能性があります。このリポジトリには、これらの外部依存関係にリンクするいくつかのサブモジュールが含まれています。特定のポートをコンパイルする前に、次を使用します。
$ cd ports/name $ make submodules
必要なサブモジュールがすべて初期化されていることを確認します。