①MicroPythonとFabGL
MicroPythonは、幅広い組込みマイコンで手軽にプログラミング可能な言語処理系です。今回ターゲットにしたESP32は、上海のEspressif Systems社から販売されている、米国のTensilica社の240MHz Xtensa LX6 dual CPUを搭載した普及価格のIoT用マイクロコントローラです。IoT用ですので、Bluetooth、WiFiなど機能も搭載されて、Micropythonから利用できます。
一方、ORANGE-ESPerは、ESP32-WROOM-32モジュールを搭載したESP32-DevKitC開発ボードを利用してVGAモニタ・キーボード・マウス・SDカードを接続でき、ESP32用Arudino上のFabGLライブラリを利用したライブラリ付属の懐かしいアプリケーションが楽しめます。
このFabGLライブラリは、イタリアのFabrizio Di Vittorioさんが開発し、SPI+DMAでVGAビデオ信号を生成させ、IoT用マイクロコントローラをパソコンのように使えるようにした点が光ります。
また、ORANGE-ESPer発売元のピコソフト社からORANGE-OSも公開されていますが、アプリケーションは、限られています。そこで、今回は、ORANGE-ESPerで、Micropythonパソコンにチャレンジすることにしました。PCのTeraTermとORANGE-ESPerのキーボード+VGAモニタ双方からMicroPythonを使えるようにしたいと考えています。
②Windows10上でMicroPythonのビルド
MicroPythonのビルドには、ESP-IDF開発環境が必要になります。まず ESP-IDF Tools Installer for Windows(V2.5)をインストール後、適当なディレクトリにMicroPythonをgithubからcloneします。ESP-IDFは、V4.2がインストールされ、MicroPythonは、V1.14でした。
早速、esp32用のビルドを行うと、Linuxのcatコマンドが無いため、ビルドエラーで先に進めることができませんでした。みなさん、Linuxでビルドしているみたいです。(涙)
Windows10で、VM上にLinuxをインストールしたことはありますが、今回のビルドのためにLinux全体の機能を管理するのも大変ですので、今回は、Linuxをお手軽なWindows Subsystem for LinuxのUbuntuを選択しました。利点は、Windows配下のファイルシステムを共用できるので、慣れたWindows用のツールが利用できる点が優れています。ただし、Windowsからファイルを書き込むと、Linuxのパーミッションがリセットされる点がありますので、注意が必要になります。
下記が、Windows Subsystem for LinuxのUbuntuインストール後の手順です。
sudo apt update && sudo apt upgrade
sudo apt update
sudo apt install \
gcc git wget make libncurses-dev flex bison gperf \
libffi-dev libssl-dev
cd
mkdir esp32
cd esp32
git clone --recursive https://github.com/micropython/micropython
git clone -b v4.2 --recursive https://github.com/espressif/esp-idf.git
git submodule update --init --recursive
cd /usr/bin
sudo ln -s /usr/bin/python3 python
cd
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
sudo apt install cmake
cd ~/esp32/esp-idf
./install.sh
. ~/esp32/esp-idf/export.sh
cd ~/esp32/micropython/mpy-cross
make mpy-cross
cd ~/esp32/micropython/port/esp32
idf.py build
無事、MicroPythonのビルドに成功しました。WSLでは、CPUコアの割り当てが少ないようで、Windows上のESP-IDFに比べると遅い点が気になりますが、仕方がありません。
ORANGE-ESPerで、無事にMicroPythonのプロンプトが表示できました。ちなみに、MicroPythonの空きヒープサイズは、99KB程度でした。
③ESP32用のAruduino上で、FabGLのAnsi-Terminalサンプルプログラムをビルド
Arduino V1.8.10にesp32 V1.0.6ボードマネージャと、FabGL V1.0.2ライブラリを追加し、FabGL付属のAnsiTerminalサンプルプログラムをビルド後、無事、VGA画面が立ち上がりました。
次に、ESP-IDF V4.2上で、Ansi-Terminalサンプルプログラムをビルドできる必要があります。esp32 V1.0.6ボードマネージャは、ESP-IDF V3.3.5ベースのようですので、V4.2に適合させることができれば、FabGLライブラリをMicroPythonのソースコードと統合できるはずです。
(再クロール更新:2022/12/22)