MicroPython的午睡(118) ESP32版、PyPIからulp開発環境インストール

Joseph Halfmoon

前回はパッケージ管理ツール mip に勝手改変入れてESP32のMicroPythonで動作することを確認。今回はThonnyのパッケージ管理機能を使ってPyPIからパッケージをダウンロードしてインストールしてみます。PyPIにはいろいろあります。今回インストールしたのはESP32のulpの開発環境。なんじゃそりゃ?

※「MicroPython的午睡」投稿順 Indexはこちら

Thonny IDEのパッケージ管理機能

前回の mip はMicroPython上で走る「セルフ」ツールでした。MicroPython内で完結しているのは良いですが、Internetへの接続を自前で用意せんとあきません。その点、Thonny IDEのパッケージ管理機能を使って所望のパッケージをターゲット機のMicroPythonにインストールするのは「クロス」なので、ネットのことなど皆PC側の接続で済むのでお楽。以下はThonny IDEのパッケージマネージャ画面です(裏側ではpipkinというツールが走っているみたい。)SearchOnPyPI

また、前回の mip と異なるのはデフォルトの検索対象になるレポジトリは PyPI であることです。前回のmipがちんまりしたMicroPython用のレポジトリから探す(見つかったものは機種依存かどうかは別としてMicroPython用なのである意味安心)のに対して、PyPIの広大な大洋の中にはフルPython用のパッケージも多数。必ずしもMCU上で実行可能でないものもある筈なので、どこまで利用できるのかはパッケージ毎に調べる必要があります。多すぎて困るけれども。

ESP32用のパッケージを探す

MicroPythonと入力してパッケージを探せば、結構多数のパッケージがヒットしてきます。しかしそれでもいろいろありすぎるので、今回は ESP32 用に絞って検索してみました。検索結果の冒頭部分はこんな感じ。SearchESP32

 

この中から今回は2つ目の micropython-esp32-ulp というパッケージのインストールを試みました。なお似たお名前が3番目の micropython-py-esp32-ulp というところにもあるのですが、リンク先をたどっていくと結局同じファイルが見えてきたりするので、もしかすると同じものなのかも知れません。どうなんだろ。

Searchした結果をインストールするのは簡単、リンクをたどって開いたウインドウの下の方にある install ボタンを押すだけです。

micropython-esp32-ulpパッケージ

今回インストールするパッケージはそこそこ大きなパッケージでちょっと複雑なものなので、若干時間が掛かります。特に何もすることはありません。しばらくして、パッケージマネージャの画面に戻れば、以下のようにインストールされていることが分かります。黄色のマーカはこちらで引いたもの。ulpInstalled

このとき、ターゲットデバイス ESP32 DevKitC機のローカルストレージの様子をみると以下のようです。ライブラリパスである/lib配下にしっかりディレクトリ2つが出来てます。localStorage

今回のインストールでどのくらいストレージを使ったのか気になったので見てみると以下のようでした。多分 200kバイトくらい使っているのでないかい。LocalStorageUsed

さて、インストールしたこのパッケージが何なのかというと、

    • ESP32機のMicroPython上で走る、ESP32 ULP の開発ツール一式

であります。そのULPとは何か? 御存じなき方向けにざっくりしたことを書いてしまうと、ESP32でもXtensaコア搭載機のXtensaコアの横に搭載されている「小さい」CPUであります。Xtensaコア搭載機はXtensaコアを2個も搭載しているのにそれとはまた別にULPを搭載しておると。ゴージャス。

たしか「ウルトラ・ローパワー」なのでULPという名であったような。メインのXtensaコアを動かすほどのこともない、細々した仕事をお願いするのに良いものみたいです。

このパッケージの情報は以下に。

micropython / micropython-esp32-ulp

実際に、インストールしたパッケージがMicroPython上で動作することを確認するために、以下のサンプルプログラムをダウンロードして使わせていただきました。

examples/couter.py

上記サンプルからその核心部分をちょっと引用させていただきます。ULPassemblerExample

上記を見るとわかるように、MicroPythonの変数内に格納した「ULP用のアセンブリ言語ソース」をビルドしてくれるツールなのです。ビルドしているのはXtensa側のコアだからクロス?ツール的な。そしてメモリ上に配置したULPのプログラムを起動することも勿論できます。

上記のサンプルコードを実行した結果が以下に。すごい速さで画面が流れます。counterRuns

ULPによってちゃんとカウントアップされておるようです。

ESP32使うなら「いつかは使いて~」と思っていたULP、一撃で使えるようになってました。これはULP勉強しないと。

MicroPython的午睡(117) ESP32版、net接続すれば御勝手mip動作OK へ戻る

MicroPython的午睡(119) ESP32版、ULPとULP開発環境のおまとめ へ進む