Windowsの「MSYS2」にESP開発環境を構築

※あなたのOSが64bit版のWindows10で、かつPololu社のUSBドライバを有効化できているなら、WSLの環境構築をおすすめします。

MSYS2は、Windows上にUnixコマンドライン環境をエミュレートするための統合パッケージです。Espressif社はMSYS2に各種の必要ツールをセットアップしたオール・イン・ワンのZIPアーカイブを提供しているので、それをそのまま使用するのが最も簡単な開発環境構築です。

もしも「素のMSYS2」に依存ツールを1つずつインストールしてみたい場合は、下記ページにそのための情報があります。ただし筆者は未検証です。

https://docs.espressif.com/projects/esp-idf/en/latest/get-started/windows-setup-scratch.html

USBドライバをインストール

今回のワークショップで使用するESP32開発キットには、「CP2102N」というシリアル-USB変換チップが使用されており、このドライバをWindowsにインストールする必要があります。

以下のうちどちらか一方のページからお使いのOSに該当するドライバをダウンロードし、インストールしてください。もしもWSLを併用する可能性がある場合は、後者(Pololu社)のドライバをお使いください。理由はWSLの環境構築マニュアルを参照してください。

https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

https://www.pololu.com/docs/0J7/all#2

環境構築

MSYS2(およびツール群)のダウンロードと配置

下記リンクからオール・イン・ワンのZIPアーカイブをダウンロードして、解凍してください。

https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip

任意の場所に解凍して構いませんが、一般的にはWindowsがインストールされているCドライブ内のどこかがよいと思われます。 解凍にはかなり時間がかかります。解凍してからフォルダを移動するのにも時間がかかるので、最初から配置したい場所に解凍しましょう。

解凍・配置時に注意すべきことがあります。その過程でなんらかのアンチウィルスの仕組みが一部のファイルを自動削除してしまうかもしれません。これが発生すると、正しく使用できなくなります。

解凍すると現れる msys32 ディレクトリ内が下の画像のようになっていれば、概ね問題ないと思われます。

msys2

筆者の環境では当初、etcディレクトリなどが削除されてしまったので、仮想のLinux上で解凍して対処しました。

しかしその後、本稿執筆のために再現させようとしても再現しなかったため、本当はなにが原因だったのかわからないし回避方法も不明です。

MSYS2の起動と設定

msys32 ディレクトリ内の mingw32.exe を起動してください。 mingw64.exe ではダメです。 これはあなたのWindowsが64bit版であるか32bit版であるかにかかわりません。ESP-IDFがmingw64に対応していません。

以降、MSYS2を起動するときは毎回 mingw32.exe を使用してください。

.bash_profileファイルに環境変数を設定し、有効化します。

echo 'export IDF_PATH="$HOME/esp/esp-idf"' >> $HOME/.bash_profile
source $HOME/.bash_profile

ESP-IDFを配置します。macOSやWSLでインストールが必要だった関連ツール群はすでにインストールされているため、簡単です。

mkdir $HOME/esp && cd $HOME/esp
git clone --recursive https://github.com/espressif/esp-idf.git

Rubyについて

mrubyのビルドにはCRuby(最も一般的なRuby実装)が必要です。

Rubyインストール(Rubyinstaller2を使用)

※MSYS2にrbenvをインストールするのも可能なようですが、簡単ではなさそうです。挑戦してみたい方はネットで調べてみてください。

最初にCRubyをインストールします。mrubyのビルドにはCRubyが必要なためです。

MSYS2上ではなく、WindowsのGUI上で行ってください。WindowsでRubyを使用するための専用インストーラをダウンロードします。

https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.6.2-1/rubyinstaller-2.6.2-1-x86.exe

32bit版のRubyインストーラをダウンロードします。MSYS2でESP-IDFを使用するために mingw32.exe をPOSIXエミュレータとして使用するので、これにあわせています。

ホストOSが64bit版のWindows8などである場合は、64bit用のRubyインストーラ(rubyinstaller-2.6.2-1-x64.exe)でもよいかもしれませんが、未検証です。一般的に、64bit版のWindowsでは32bit版の実行ファイルが動作します。逆は動作しません。

ダウンロードしたをダブルクリックし、「I accept the license」を選択してから「NEXT」を押します。 rubyinstaller2-01

「Use UTF-8 as default external encoding.」のチェックが外れているでしょうから、チェックして、「Install」を押します(エンコーディングは今回のワークショップには関係ありませんが、他の用途に使用するときにこのほうがよさそうです)。 rubyinstaller2-02

「Run ’ridk…」にチェックが入っていることを確認して、「Finish」を押します。 rubyinstaller2-03

CRubyのインストールが完了すると、関連ツールをインストールするためのこの画面になるので「3」を入力してエンター(リターン)キーを押します。 rubyinstaller2-04

この画面では何も入力せず、エンターキーだけを押してRubyのインストールを終了します。 rubyinstaller2-05

MSYS2のコマンドラインにパスを通します。

cd $HOME
echo 'export PATH="/c/Ruby26/bin:$PATH"' >> $HOME/.bash_profile
source $HOME/.bash_profile

確認します。

ruby --version

上のコマンドで ruby 2.6.2pXX (2019-XX-XX revision XXXXX) [i386-mingw32] のように出力されればOKです。

つぎにmrubyをインストールします。mruby2.xはまだmruby/cと統合されていないので、1.4.1を使用します。

cd $HOME
wget https://github.com/mruby/mruby/archive/1.4.1.zip
unzip 1.4.1.zip
cd mruby-1.4.1
ruby minirake

パスを通します。

echo 'export PATH="$HOME/mruby-1.4.1/build/host/bin:$PATH"' >> $HOME/.bash_profile
source $HOME/.bash_profile

確認します。

mrbc --version

上のコマンドで mruby 1.4.1 (2018-4-27) と出力されればOKです。