| 開発者 | ダミアン・P・ジョージ |
|---|---|
| 初回リリース | 2014年5月3日 |
| 安定リリース | 1.24.0
/ 2024年10月26日 |
| リポジトリ |
|
| 書かれた | C |
| プラットフォーム | ARM Cortex-M、STM32、ESP8266、ESP32、16ビットPIC、Unix、Microsoft Windows、Zephyr、JavaScript、RP2040 |
| ライセンス | MITライセンス[1] |
| Webサイト | マイクロPython |
MicroPythonは、 Python 3とほぼ互換性のあるC言語で書かれたプログラミング言語のソフトウェア実装であり、マイクロコントローラ上で実行するように最適化されています。[2] [3]
MicroPythonは、バイトコードへのPythonコンパイラと、そのバイトコードのランタイムインタープリタで構成されています。ユーザーには、サポートされているコマンドをすぐに実行するための対話型プロンプト(REPL)が表示されます。これには、コアPythonライブラリの選択が含まれています。MicroPythonには、プログラマが低レベルのハードウェアにアクセスできるモジュールが含まれています。[4]
MicroPython には、コードをフルスピードで実行できる インライン アセンブラがありますが、異なるマイクロコントローラ間で移植することはできません。
このプロジェクトのソースコードはMITライセンスの下でGitHubで公開されている。[5]
歴史

MicroPythonは、2013年にKickstarterキャンペーンが成功した後、オーストラリアのプログラマーDamien Georgeによって作成されました。[6]最初のKickstarterキャンペーンでは、 STM32F4を搭載した開発ボード「pyboard」を搭載したMicroPythonがリリースされました。その間、MicroPythonはいくつかのARMベースのアーキテクチャをサポートするように開発されました。[7] メインラインでサポートされているポートは、ARM Cortex-M(多くのSTM32 [8] ボード、RP2040ボード、TI CC3200/WiPy、Teensyボード、Nordic nRFシリーズ、SAMD21およびSAMD51)、ESP8266、ESP32、[9] 16ビットPIC、Unix、Windows、Zephyr、およびJavaScriptです。 [10] また、メインラインでサポートされていないさまざまなシステムやハードウェアプラットフォーム用のフォークも多数あります。 [ 11 ]
2016年には、 Python Software FoundationのBBCとのMicro Bitパートナーシップへの貢献の一環として、BBC Micro Bit用のMicroPythonのバージョンが作成されました。 [12]
2017年7月、MicroPythonは分岐して、教育と使いやすさを重視したMicroPythonのバージョンであるCircuitPythonを作成しました。MicroPythonとCircuitPythonは、サポートするハードウェアセットが多少異なります(たとえば、CircuitPythonはAtmel SAM D21とD51ボードをサポートしていますが、ESP8266のサポートは廃止されています)。バージョン4.0の時点で、CircuitPythonはMicroPythonバージョン1.9.4に基づいています。[13]
2017年に、MicrosemiはRISC-V(RV32およびRV64)アーキテクチャ用のMicroPythonポートを作成しました。 [14]
2019年4月には、レゴマインドストームEV3用のMicroPythonのバージョンが作成されました。[15]
2021年1月には、RP2040(ARM Cortex-M0+、Raspberry Pi Picoなど)用のMicroPythonポートが作成されました。[16]
特徴
Pythonを実行する能力
MicroPythonはPythonを実行する機能を備えており、ユーザーはシンプルでわかりやすいプログラムを作成できます。[17] MicroPythonは多くの標準Pythonライブラリをサポートしており、Pythonで最もよく使用されるライブラリの80%以上の機能をサポートしています。[17] MicroPythonは、マイクロコントローラとPythonの間にある一般的なパフォーマンスギャップをサポートするように特別に設計されています。[18] Pythonコードはハードウェアに直接アクセスして対話することができ、オペレーティングシステム上で実行される通常のPythonアプリケーションでは利用できないハードウェアの可能性が広がります。[19]
コードの移植性
MicroPythonはハードウェア抽象化レイヤー(HAL)技術を利用しており、開発されたコードは、同じファミリーまたはプラットフォーム内の異なるマイクロコントローラ間、およびMicroPythonをサポートしダウンロードできるデバイス間で移植可能です。プログラムは、多くの場合、高性能マイクロコントローラで開発およびテストされ、最終アプリケーションが低性能マイクロコントローラで使用されるように配布されます。[20]
モジュール
MicroPython は、新しいコードが書かれた後、凍結されたモジュールを作成し、開発されたファームウェアの一部として使用できるライブラリとして使用する機能を提供します。この機能は、すでにエラーのないテスト済みの同じコードを MicroPython 環境に繰り返しダウンロードすることを回避するのに役立ちます。このタイプのモジュールは、マイクロコントローラのモジュールディレクトリに保存され、コンパイルされてマイクロコントローラにアップロードされ、Python のインポートコマンドを使用してライブラリが繰り返し使用できるようになります。[20]
読み取り-評価-印刷ループ
読み取り・評価・印刷ループ(REPL)を使用すると、開発者は個々のコード行を入力し、それらをターミナルですぐに実行することができます。[21] LinuxベースおよびmacOSシステムには、シリアルUSB接続を使用してMicroPythonデバイスのREPLに直接接続するために使用できるターミナルエミュレータがあります。REPLは、コードの各部分を実行して結果を視覚的に調べることができるため、アプリケーションの各部分をすぐにテストするのに役立ちます。コードのさまざまな部分をREPLにロードすると、追加のREPL機能を使用してそのコードの機能を試すことができます。[17]
役に立つREPLコマンド(シリアルコンソールに接続後): [21]
- CTRL+ C: キーボード割り込み
- CTRL+ D: リロード
help(): ヘルプメッセージhelp("modules"): 組み込みモジュールを一覧表示しますimport board↵ Enterdir(board): プログラムのコードで使用できるマイクロコントローラボード上のすべてのピンをリストします
制限事項
MicroPythonはPython言語バージョン3.4と3.5の大部分を完全に実装していますが、3.5以降に導入されたすべての言語機能を実装しているわけではありません。 [ 22]ただし、3.6からのいくつかの新しい構文と、3.8(代入式)や3.9などのそれ以降のバージョンからのより新しい機能は実装しています。標準ライブラリのサブセットが含まれています。[23]
MicroPythonは、他の一般的なプラットフォームと比較して、マイクロコントローラ市場でのハードウェアサポートが限られており、Arduinoでは、この言語をサポートするマイクロコントローラの選択肢が少ない。[18 ] MicroPythonには、他のプラットフォームとは異なり、統合開発環境(IDE)や特定のエディタは含まれていない。 [18]
構文と意味
MicroPythonの構文は、その明確で理解しやすいスタイルとパワーのためにPythonから採用されています。[24]他のほとんどのプログラミング言語とは異なり、読みやすさを優先するために句読点が少なく、構文上の工夫も少なくなっています。[17]
コードブロック
MicroPythonはPythonのコードブロックスタイルを採用しており、特定の関数、条件、ループに固有のコードはインデントされます。[17]これは、シンボルやキーワードを使用してブロックを区切る他のほとんどの言語とは異なります。[17] これにより、視覚的な構造が意味的な構造を反映するため、MicroPythonコードの可読性が向上します。この重要な機能はシンプルですが、インデントを誤って使用すると、コードが間違った条件で実行されたり、インタープリターから全体的なエラーが発生したりする可能性があるため、重要です。[17]
コロン(:)は条件文の終了を示すために使用される重要な記号です。[17]インデントのサイズはタブ1つまたはスペース4つに相当します。
オペレーション
MicroPythonは、プリミティブ演算と論理演算を使用してさまざまな数学演算を実行する機能を備えています。[19]
図書館
MicroPythonはPythonのライブラリに似た、無駄のない効率的な実装です。[25]一部の標準Pythonライブラリには、MicroPythonの同等のライブラリがあり、両者を区別するために名前が変更されています。MicroPythonライブラリは、メモリを節約するためにあまり人気のない機能が削除または変更されており、サイズが小さくなっています。[19]
MicroPythonの3種類のライブラリ: [19]
- 標準Pythonライブラリ(組み込みライブラリ)から派生
- 特定の MicroPython ライブラリ
- ハードウェア機能を支援する特定のライブラリ
MicroPythonは高度にカスタマイズおよび構成可能であり、言語は各ボード(マイクロコントローラ)ごとに異なり、ライブラリの可用性も異なる場合があります。モジュール内またはモジュール全体の一部の関数とクラスが利用できなかったり変更されたりする場合があります。[19]
カスタム MicroPython ライブラリ
開発者が新しいアプリケーションの作成を開始すると、標準のMicroPythonライブラリとドライバーでは操作や計算が不十分で要件を満たせない場合があります。Pythonと同様に、既存のライブラリとファームウェアの機能を拡張するカスタムライブラリを使用してMicroPythonの機能を拡張する可能性があります。[20]
MicroPythonでは、.pyで終わるファイルは他のライブラリエイリアスよりも優先されるため、ユーザーは既存のライブラリの使用と実装を拡張できます。[19]
サポートハードウェア
MicroPythonの実装と人気が拡大するにつれ、より多くのボードがMicroPythonを実行できるようになりました。多くの開発者が、さまざまなマイクロコントローラにダウンロードできるプロセッサ固有のバージョンを構築しています。[19] MicroPythonをマイクロコントローラにインストールする方法は、十分に文書化されており、ユーザーフレンドリーです。[20] MicroPythonを使用すると、マイクロコントローラのハードウェアとアプリケーション間のやり取りが簡単になり、リソースが制限された環境で作業しながら、強力な応答性でさまざまな機能にアクセスできます。[17]
MicroPythonを実行するために使用される2種類のボード:[19]
- 製造時に MicroPython がロードされているため、MicroPython のみが実行可能です。
- MicroPython をボードにインストールできるファームウェアを搭載したボード。
コードの実行
プログラムを MicroPython ボードに移動するには、ファイルを作成し、それをマイクロコントローラにコピーして実行します。ハードウェアをコンピュータなどのデバイスに接続すると、ボードのフラッシュドライブがデバイスに表示され、ファイルをフラッシュドライブに移動できるようになります。boot.py と main.py という 2 つの既存の Python ファイルがありますが、通常は変更されません。マイクロコントローラが起動するたびにプログラムを実行したい場合は main.py を変更できます。それ以外の場合は、REPL コンソールを使用してプログラムが実行されます。[19]
パイボード
pyboardはMicroPythonのソフトウェア機能を完全にサポートする公式のMicroPythonマイクロコントローラボードです。pyboardのハードウェア機能には以下が含まれます: [4]
起動プロセス
pyboard には、ボードのフラッシュ メモリ内に保存される /flash という内部ドライブ (ファイルシステム) が含まれています。また、スロットにmicroSDカードを挿入して /sd からアクセスすることもできます。起動時に、pyboard は /flash または /sd から起動するファイルシステムを選択し、現在のディレクトリを /flash または /sd に設定する必要があります。デフォルトでは、SD カードが挿入されている場合は /sd が使用され、挿入されていない場合は /flash が使用されます。必要に応じて、/flash/SKIPSD という空のファイルを作成することで、起動プロセスでの SD カードの使用を回避できます。このファイルはボード上に残り、pyboard の起動時に存在し、起動プロセスで SD カードをスキップします。[4]
ブートモード
pyboardが正常に電源投入されるか、リセットボタンが押されると、pyboardは標準モードで起動します。つまり、boot.pyファイルが実行され、USBが設定され、最後にpythonプログラムが実行されます。[4]
ボードの起動プロセス中にユーザースイッチを押したままにし、ユーザースイッチを押したままリセットを押すことで、標準の起動シーケンスをオーバーライドすることができます。pyboard の LED はモード間を点滅し、LED がユーザーの希望するモードに達したら、ユーザースイッチを放すと、ボードは特定のモードで起動します。[4]
ブートモードは以下のとおりです: [4]
- 標準ブート: 緑色の LED のみ (boot.py を実行してから Python プログラムを実行)
- セーフブート: オレンジ色の LED のみ (起動中にスクリプトは実行されません)
- ファイルシステムのリセット: 緑とオレンジの LED が同時に点灯 (フラッシュ ドライブを工場出荷時の状態にリセットし、セーフ モードで起動します)
- ファイルシステムが破損した場合の修正として使用される
エラー
- 赤と緑の LED が交互に点滅する場合は、Python スクリプトにエラーがあるため、REPL を使用してデバッグする必要があります。
- 4つのLEDすべてが点灯と消灯を繰り返す場合は、回復不可能なハード障害が発生しており、ハードリセットが必要です。[4]
プログラミング例[19]
Hello Worldプログラム:
# シリアルコンソールに出力
print ( 'Hello, World!' )
インポート + LED の点灯:
pybをインポートする
# LEDをオンにする
pyb . LED ( 1 ) .オン()
ファイルの読み取り + ループ:
インポート OS
# ファイルを開いて読み込む
open ( '/readme.txt' ) をfとして :
印刷( f .読み取り())
バイトコード
MicroPython には、MicroPythonバイトコード(ファイル拡張子.mpy ) を生成するクロス コンパイラが含まれています。Python コードは、マイクロコントローラ上で直接バイトコードにコンパイルすることも、他の場所で事前にコンパイルすることもできます。
MicroPython ファームウェアはコンパイラなしでビルドでき、プリコンパイルされたmpyプログラムを実行できる仮想マシンだけが残ります。
実装と使用
MicroPythonは、標準ソフトウェアによって特定のマイクロコントローラのフラッシュメモリにロードされるファームウェアを通じて利用され、シリアルインターフェースをエミュレートするコンピュータにロードされた端末アプリケーションを使用して通信します。[20]
MicroPythonの主な用途は3つのカテゴリに大別できます。[20]
- 教育目的: MicroPython の read-eval-print ループ (REPL) を使用してマイクロコントローラと対話することで、より複雑なプログラミング言語よりも簡単な方法で、データ処理やボードとの通信の概念を視覚的に説明できます。
- デバイスおよびセンサー設計の開発とテスト: MicroPython は、マイクロコントローラで使用されるインターフェイスの検証済みでバグのない、徹底的にテストされたリファレンス実装を提供し、周辺機器の通信設定と制御を実装するという一般的な開発者のタスクを解決します。MicroPython はデバイス レジスタへの直接かつインタラクティブなアクセスを提供するため、機能の検証、ハードウェア部品やデバイスの開発とテスト、およびデバイスからのデータの制御と取得のためのアルゴリズムの開発とテストが容易になります。
- 複雑なアプリケーションを設計するための監視および構成ツール: 特定のアプリケーションでは、高性能マイクロコントローラ上の特定のアプリケーションが必要です。MicroPython は、状態の監視とシステム パラメータの設定を支援できます。
MicroPythonの実装は、標準ライブラリとサポートライブラリの可用性、マイクロコントローラのフラッシュメモリとRAMのサイズによって異なる場合があります。[20]
参照
参考文献
- ^ George, Damien P. (2014 年 5 月 4 日). 「micropython/LICENSE at master · micropython/micropython」. GitHub . 2017 年2 月 11 日閲覧。
- ^ Venkataramanan、Madhumita (2013 年 12 月 6 日)。「Micro Python: Arduino よりも強力、Raspberry Pi よりもシンプル」。Wired。2016年12月 15 日閲覧。
- ^ Yegulalp, Serdar (2014 年 7 月 5 日)。「Micro Python の小さな回路: Python の亜種がマイクロコントローラをターゲットに」。InfoWorld。2016年12 月 15 日閲覧。
- ^ abcdefghi 「MicroPython - マイクロコントローラ向けPython」。micropython.org 。2017年8月12日閲覧。
- ^ 「MicroPython on GitHub」。GitHub 。 2022年2月7日。
- ^ 「Micro Python: マイクロコントローラ向け Python」。Kickstarter 。2016年12月15日閲覧。
- ^ Beningo, Jacob (2016 年 7 月 11 日). 「プロトタイプから製品版へ: MicroPython の裏側」 EDN ネットワーク. 2016 年12 月 15 日閲覧。
- ^ 「Nucleo STM32、STM32F411CE、およびSTM32F401CC上のMicroPython:ファームウェアのフラッシュと基本ツール」。Mischianti 。 2023年8月。
- ^ 「MicroPython with esp8266 and esp32: flashing firmware and programming with basic tools」. Mischianti . 2023年6月7日.
- ^ George, Damien P. 「micropython/ports at master · micropython/micropython」。GitHub 。 2019年10月22日閲覧。
- ^ Sokolovsky, Paul. 「Awesome MicroPython」. GitHub . 2019 年10 月 22 日閲覧。
- ^ Williams, Alun (2015 年 7 月 7 日). 「BBC Micro-Bit ユーザー インターフェイスを実際に使ってみる」. ElectronicsWeekly.com . 2015 年7 月 8 日閲覧。
- ^ Shawcroft, Scott (2019 年 5 月 22 日). 「CircuitPython 4.0.1 がリリースされました!」. Adafruit ブログ. Adafruit Industries . 2019 年6 月 11 日閲覧。
- ^ 「RISC-V ポスタープレビュー — 第 7 回 RISC-V ワークショップ」(PDF) 2017 年 11 月 28 日。2018年12 月 17 日閲覧。
- ^ 「LEGO、ev3devとPybricksをベースにしたEV3用MicroPythonをリリース」www.ev3dev.org . 2020年4月21日閲覧。
- ^ 「Raspberry Silicon のご紹介: Raspberry Pi Pico が 4 ドルで販売開始」www.raspberrypi.org 2021 年 1 月 21 日2021 年1 月 21 日閲覧。
- ^ abcdefghi Alsabbagh, Marwan (2019). MicroPython Cookbook . バーミンガム、イギリス: Packt Publishing .
- ^ abc Bruno, P. (2021年11月25日). 「MicroPython入門」. All3DP . 2022年5月9日閲覧。
- ^ abcdefghijk Bell, Charles (2017). MicroPython for the Internet of Things . バークレー、米国: Apress .
- ^ abcdefg Gaspar, G.; Kuba, P.; Flochova, J.; Dudak, J.; Florkova, Z. (2020).インダストリー4.0実装のためのMicroPythonプラットフォームに基づくIoTアプリケーションの開発。2020第19回国際メカトロニクス会議– Mechatronika (ME)。pp. 1–7。
- ^ ab Rembor, K. 「The REPL」。CircuitPythonへようこそ!。Adafruit Learning System 。2022年5月9日閲覧。
- ^ 「MicroPython と CPython の違い — MicroPython の最新ドキュメント」。docs.micropython.org。
- ^ 「MicroPython - マイクロコントローラ用 Python」。micropython.org。
- ^ Wang, L.; Li, Y.; Zhang, H.; Han, Q.; Chen, L. (2021). Micropython バイトコード用の効率的な制御フローベースの難読化ツール。2021 第 7 回システムおよびソフトウェア信頼性国際シンポジウム (ISSSR)。pp. 54–63。
- ^ Khamphroo, M.; Kwankeo, N.; Kaemarungsi, K.; Fukawa, K. (2017).コンピュータコーディング学習のための MicroPython ベースの教育用モバイルロボット。2017 第 8 回組み込みシステム向け情報通信技術国際会議 (IC-ICTES)。pp. 1–6。
外部リンク
- 公式サイト
- GitHubの micropython
- GOTO 2016 • MicroPython とモノのインターネット • YouTubeの Damien George
- YouTubeの MicroPython プレイリスト• Tony DiCola / Adafruitによるチュートリアル
