ししかわのマウス研修マウス自作研修

Moddableで組み込みJavaScript環境構築②:ESP32に書き込む – 元Web屋のマイクロマウス製作記 Part.22

ししかわのマウス研修

ししかわです。

社員研修の一環で、自作マウスを作って大会に出場します。

記事一覧 – 元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通信を行う処理を書いていきます。

タイトルとURLをコピーしました