ししかわです。
社員研修の一環で、自作マウスを作って大会に出場します。
記事一覧 – 元Web屋のマイクロマウス製作記 | RT MicroMouse
M5StackをJavaScriptで開発できるよう準備していきます。
コア(M5Stack:ESP32)とマウスモジュール(STM32)間の通信処理を実装するのがゴールです。
前回と今回で、組み込み向けJavaScriptの開発プラットフォーム「Moddable」の環境構築方法を紹介します。
引き続き拙著「実践Moddable – JavaScriptではじめるIoTアプリケーション –」から引用します。
今回は「②ESP32にアプリを書き込む」手順です。
ESP32向けの環境セットアップ
Moddableはマルチプラットフォームに対応しています。
ESP32やESP8266で同じアプリケーションを動かすことが可能です。
また、PC(Windows、MacOS、Linux)上で動くシミュレータもあります。
M5Stackにアプリケーションを書き込むために、ESP32向けの環境セットアップを行います。
Moddable の ESP32 向けのコードはESP-IDFに依存しています。これをインストールしましょう。
まず esp32 ディレクトリをホームディレクトリ直下に作ります。ここに ESP-IDFの SDK や周辺ツールが入ります。
$ mkdir ~/esp32
ESP32 のバイナリをLinuxでビルドするためのGCC ツールチェインを公式ドキュメントのリンクからダウンロードし、 esp32 ディレクトリに解凍します。
64ビット版と32ビット版があるのでOSに合わせて選んでください。
$ cd ~/esp32 $ wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz $ tar -xvf xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
解凍後のパスが~/esp32/xtensa-esp32-elf/{bin, include, lib…} のようになっていればOK です。
続いて、ESP-IDF のリポジトリを esp32 ディレクトリにクローンします。
このリポジトリは内部で他のリポジトリをサブモジュールとして使っているため、–recursive オプションをつけてクローンすることで再帰的にソースコードを取得できます。
本記事執筆次点でModdableが依存するESP-IDFのバージョンは3.2.2です。-b オプションをつけて該当バージョンをクローンします。
$ cd ~/esp32 $ git clone -b v3.2.2 --recursive https://github.com/espressif/esp-idf.git
ESP-IDF のコンパイルに必要なパッケージをインストールします。
$ sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial
環境変数 IDF_PATH が esp-idf ディレクトリを指すように ~/.bashrc に追記します。
IDF_PATH=~/esp32/esp-idf export IDF_PATH
Python のパッケージマネージャ pip をインストールします。
$ cd ~/esp32 $ sudo easy_install pip
Python の必要パッケージをインストールします。
$ python -m pip install --user -r $IDF_PATH/requirements.txt
環境変数 PATH に、インストールしたツールへのパスを追加します。
export PATH=$PATH:$HOME/esp32/xtensa-esp32-elf/bin
USB ケーブルで M5Stack をマシンに接続します。
M5Stackのデバイスファイルのパスを確認します。 /dev/ttyUSB0 のようになっているはずです。
$ ls -l /dev
環境変数 UPLOAD_PORT が、いま確認したパスを指すように変更します。
UPLOAD_PORT=/dev/ttyUSB0 export UPLOAD_PORT
ここまでで M5Stack 実機へのプログラム書き込みができるようになっています。
確認のために前回と同様、ballsのサンプルをビルドしてみましょう。
$ cd $MODDABLE/examples/piu/balls $ mcconfig -d -m -p esp32/m5stack
はじめて ESP32 をターゲットにアプリをビルドするとき、ツールはビルド設定入力のためのプロンプトを表示する場合があります。
もし表示されたら全てデフォルトを選択してください( Enter を押していけばよいです)。
先の例と同じく、 M5Stackの画面上にボールの画像が表示されれば成功です。
ESP32 は Linux マシンと ttyUSB0 デバイスファイルを通じて通信します。
Ubuntu では通常、ttyUSB0 は dialout ユーザグループが所有しています。
もしプログラム書き込みのときに **permission denied error** が表示される場合は、
ユーザを dialout グループに追加します。
$ sudo adduser $USER dialout $ sudo reboot
これで M5Stack でアプリをビルドできました!
次回からM5StackとModdableを使って、STM32マイコンとI2C通信を行う処理を書いていきます。