Node-RED MCUの環境を構築する(Moddable SDK 5.4.1、ESP-IDF v5.3.1対応版、Windows 11)
はじめに
今回はNode-RED MCUの環境を構築してみました。
PCを買い替えたので、久々にインストールしました。カメラへの対応も進んでいるようなので、試したいなと思っています。
▼Windows 11の環境で実行しています。
なお、xs-devという環境構築を簡単にするためのパッケージがありますが、今回はxs-devを使わずにドキュメントを確認して環境を構築します。
▼xs-devのページはこちら
▼以前の記事はこちら
▼Node-REDとNode-RED MCUの簡単な紹介はこちら
Moddable SDKのインストール
まずはModdable SDKをインストールします。
▼以下のページを参考に進めます。
Visual Studio 2022はインストールしておいてください。
▼ダウンロードページはこちら
https://visualstudio.microsoft.com/ja/downloads
▼Visual Studio Community 2022の変更を選択しました。

▼C++によるデスクトップ開発の欄で、Windows 10 SDK(10.0.0.19041.0)が選択されていることを確認しました。

なお、私の場合Windows 11 SDK (10.0.26100.0)が有効になっていると、この後の手順でビルドに失敗しました。
▼以下のように無効にした状態だと、ビルドできました。ビルドに失敗したらbuild cleanを実行してから、再度buildしてみてください。

▼失敗したときは以下のようなエラーが起きました。mcconfigが無かったです。

以下のコマンドで、Cドライブにフォルダを作成し、GitHubのリポジトリをクローンします。
cd c:
mkdir pjt
cd pjt
git clone https://github.com/Moddable-OpenSource/moddable
▼クローンが完了しました。

▼フォルダが追加されています。

環境変数を追加します。
▼Windowsの検索欄で検索し、システム環境変数の編集を選択しました。

▼新規でユーザー環境変数を追加します。

MODDABLEという名前の環境変数を追加します。
▼ディレクトリの参照で、moddableフォルダのあるディレクトリを指定しました。

▼追加できました。

Pathも追加します。
▼Pathを編集します。

▼新規でmoddableフォルダのbuild/win/releaseフォルダのパスを追加しました。

環境変数を編集後、コマンドプロンプトを立ち上げ直しました。
▼x86 Native Tools Command Prompt for VS 2022でコマンドを実行していきます。

別のコマンドプロンプトを立ち上げると、ビルドできないのでご注意ください。
以下のコマンドでビルドします。
cd %MODDABLE%\build\makefiles\win
build
▼ちょっとだけ警告が流れていました。

▼ビルド後、xsbugを実行すると起動しました。

以下のコマンドでサンプルも実行してみました。
cd %MODDABLE%\examples\helloworld
mcconfig -d -m -p win
▼シミュレータが起動しました。xsbugでスタートすると、文字が出力されました。

サンプルまで実行できればOKです。
ESP-IDFのインストール
次に、ESP-IDFをインストールします。
▼以下のページを参考に進めます。
Silicon Labsのドライバはインストールしておきました。
▼以下のページのCP210x Universal Windows Driverをダウンロードしました。
https://www.silabs.com/developer-tools/usb-to-uart-bridge-vcp-drivers?tab=downloads
▼infファイルを右クリックすると、インストールという選択肢があります。

ESP-IDFはインストーラでインストールしました。
▼以下のページからダウンロードできます。
https://dl.espressif.com/dl/esp-idf/?idf=5.3.1
▼ESP-IDF v5.3.1に対応したものをインストールしました。

▼インストール先はC:¥Espressifのままにしました。

▼インストール後、CドライブのEspressifフォルダに追加されました。

▼frameworksフォルダにesp-idf-v5.3.1が入っています。

環境変数にパスを追加しました。
▼IDF_PATHがesp-idf-v5.3.1のパス、IDF_TOOLS_PATHがC:¥Espressifのパスになっていることを確認しました。

これでインストールはOKです。
Node-RED MCUのインストール
Node-REDのインストールについては、ユーザー会のドキュメントをご覧ください。
▼Windowsの場合は以下のページです。
https://nodered.jp/docs/getting-started/windows
Node-REDにNode-RED MCU Pluginを追加します。
▼node-red-mcu-pluginのリポジトリはこちら
https://github.com/ralphwetzel/node-red-mcu-plugin
Node-REDのパレットの管理から、プラグインを追加しました。
▼@ralphwetzel/node-red-mcu-pluginをインストールしました。

もしくはNode-REDのノードのpackage.jsonがあるディレクトリで、以下のコマンドでインストールします。
npm install @ralphwetzel/node-red-mcu-plugin
その後、Node-REDを再起動しました。
▼MCUのタブが追加されました!

このままではNode-RED MCU用のノードが無いので、追加します。
▼こちらのノードです。
https://flows.nodered.org/node/@moddable-node-red/mcu
▼パレットの管理から、@moddable-node-red/mcuをインストールしました。

▼ノードが追加されました!

動作を確認する
XIAO ESP32S3を用いて動作確認を行いました。D2ピンでLEDを点灯してみます。
▼ビルド対象はXIAO ESP32S3にしました。

▼新しくフローを作成して、ビルド対象のフローとして指定しました。

▼ピン配置はこちらにも書かれています。D2ピンはGPIO3です。
3番のピンに対して、injectノードでHIGHとLOWを指定します。
▼以下の簡単なフローを作成しました。

[{"id":"a5162399396fa449","type":"mcu_digital_out","z":"7d1caf7806cfab92","name":"","pin":"3","mode":"Output","initial":"undefined","invert":false,"moddable_manifest":{"include":"$(NODEREDMCU)/nodes/mcu/digital/manifest.json"},"_mcu":{"mcu":true},"x":630,"y":500,"wires":[]},{"id":"9aac08849fd9400b","type":"inject","z":"7d1caf7806cfab92","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1","payloadType":"num","_mcu":{"mcu":true},"x":450,"y":500,"wires":[["a5162399396fa449"]]},{"id":"dcc21d015e3f1754","type":"inject","z":"7d1caf7806cfab92","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","_mcu":{"mcu":true},"x":450,"y":540,"wires":[["a5162399396fa449"]]}]
▼digital outノードで3番を指定しました。

実際にビルドして確認しました。
▼LEDの点灯を制御できました!


最後に
Windows 11 SDKが選択されていたところで引っかかったのですが、無事環境を構築することができました。
早速新しく開発されたカメラのノードを使ってみようと思っています。
▼Windows 11 SDKを追加したのは、Unreal Engine でC++の開発をするためでした。今回の変更でもしかしたら開発できなくなっているかもしれません...
やはり環境構築はログを残しておくことが大事ですね。