3.3K Views
April 25, 23
スライド概要
Node-RED MCUのWindowsを書きました。
WSL2でのインストールも書いています。
z Node-RED MCU Edition @NW_Lab Windowsの部分を担当しました。
z きっかけ ▪ QiitaにUI-Flow(M5Stack)とNode-REDの組み合わせの記事を あげていた。 ▪ 北崎さんのQiitaを見て、これならPC側とデバイス側も一本化できる かも で チャレンジ ▪ 一本化できると、教育の場とかで強い。(似た感じなのでし辛い)
z 執筆中でも多数の更新が ▪ 苦労話 アイコンが変わったり、フォルダー構成が変わったり、動かなくなったり。。。 ▪ レシピのAmbientの部分で修正があります。 サポートページに修正があがっていると思いますが、 Http request nodeの出力形式が“JSONオブジェクト”から“UTF8文字列”になりまし た。 PCのNode-redはワーニングを吐きながら動くのですが、MCUはデバッガーで一時停止 になってしまいます。 しかし、執筆開始時よりかなり良くなったと思います。 ▪ Sensorノードですっきりした。(デバイスの追加にmanifestの書き換えが不要になった) ▪ RaspberryPIのGPIOノードやNeopixelsノードを使用して書いていたりしてわかりずら かった部分が改善された ▪ クレデンシャルの取り扱いが楽になった。
z Windowsは大変 (当初)Windowsは上手く動かない? なぜ? ▪ 多分、開発者があまりWindowsを使っていない(アップデートするとSyntax failが多い) ▪ リポジトリが3つに渡る。。どれかがアップデートすると、どれかがこける。 (Moddable, Node-RED MCU, Node-RED-MCU-Plugin) Windowsはサポートされないデバイスがある。(ESP32S3、RaspberryPI Picoな ど) ▪ WSL2を試みるも、USBがリセットで切り離される。 ※タイミングが合えばデバッグも可能
z インストール方法 ▪ 他は、xs-devを使うと便利になったみたいだけど、Windows はこれまで通りがお勧め です。 ▪ Node-RED MCU単体ではあまり使わないので、インストールは不用 (今回はMCUの初回本なので、詳しく説明するためにインストールしているけど。。。) ① Moddableのインストール ② Node-RED MCU Pluginのインストール ※一緒にNode-RED MCUもインストールされます。 ③ MCUパレットのインストール npm i @moddable-node-red/mcu
z 更新方法 Moddable ▪ 単純に更新して問題ない Node-RED MCU ▪ Pluginを使用している場合 ▪ Pluginを削除入れ直し(更新ではMCUが更新されない) 、もしくはnode-red-mcuのフォルダでgit pull MCUノードの更新 ▪ つい最近 npm install @moddable-node-red で出来るように なった。 NodeRED MCU Plugin Node-RED MCU Edition Moddable
z Windowsのはまりどころ1 (書き込み、デバッグの接続速度の設定が速すぎて失敗することがあ る。) Consoleに<xsbug>とか表示されている場合は、500kbps(500000)に設定してみる。 標準は最速の1.5Mbpsに設定されているデバイスがある。 C:¥pjt¥moddable¥build¥devices¥esp32¥targets¥m5atom_matrix¥manifest.js onを編集
z Windowsのはまりどころ2 (Node-RED MCUサイドバーで、xsbugに接続できないとの表 示) Launching app... Type Ctrl-C twice after debugging app. NMAKE : fatal error U1077: 'echo Launching app... & echo Type Ctrl-C twice after debugging app. & set "XSBUG_PORT=5004" && set "XSBUG_HOST=localhost" && c:¥pjt¥moddable¥build¥bin¥win¥release¥serial2xsbug COM14 500000 8N1' : ���^�[�� �R�[�h '0xc0000005' Stop. X86 Native Command Toolsで set "XSBUG_PORT=5004" && set "XSBUG_HOST=localhost" && c:¥pjt¥moddable¥build¥bin¥win¥release¥serial2xsbug COM14 500000 8N1’ を実行
z ① WSL2で動かすには① WSL2(Ubuntu 22.04LTS)のインストール Windows11ならPowerShell(管理者) > wsl --install ubuntu-22.04 (事前に > wsl --update が必要かも) 設定(ID,Password)が終わったら一旦閉じます。Current Directoryが違うので、反映させるため ② USBサポートのインストール ▪ Windows側 Powershell(管理者)で > winget install usbipd ▪ Ubuntu側 $ sudo apt update $ sudo apt upgrade $ sudo apt install linux-tools-generic hwdata $ sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linuxtools/*/usbip 20
z
①
WSL2で動かすには②
Node-REDのインストール(ubuntuで、オプションはy,n,nの順)
$ bash <(curl -sL https://raw.githubusercontent.com/node-red/linuxinstallers/master/deb/update-nodejs-and-nodered)
②
/dev/ttyACM0が使えるようにパーミッションの設定を変更
$ sudo vi /etc/udev/rules.d/40-dfuse.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="00??",
GROUP="plugdev", MODE="0666"
③
wsl2は起動時にudevが自動スタートしないので、自動で起動するように
/etc/wsl.confを書く。ファイルが無い場合は新規に作成
$ sudo vi /etc/wsl.conf
[boot]
command="service udev start“
④
WSL2(Ubuntsu)再起動(PowerShellで >wsl --shutdown を実行後、
Ubuntuを動かす。)サービスを動かすため
z WSL2で動かすには③ ▪ Moddable、node-red mcu plugin、nodesのインストール (インストールLinux編を見てください) ▪ もしくはxs-devを利用(次のような感じになると思います。) ① $ sudo apt install ssh-askpass ② $ sudo npm i -g xs-dev ③ $ xs-dev setup --target-branch public ④ $ xs-dev setup --device esp32 ⑤ $ cd ~/.node-red ⑥ $ npm i @ralphwetzel/node-red-mcu-plugin ⑦ $ npm i @moddable-node-red/mcu ▪ WSLをシャットダウン(PowerShell で > wsl --shutdown)環境変数を反映させるため ▪ 再度Ubuntuを起動して、Node-REDを動かす。 $ node-red
z WSL2で動かすには④ M5Stack Basicなど デバイス(M5Stackなど)をPCに接続 Windows側で > usbipd wsl list で接続リストを見て 次のコマンドを実行します。-b 以降は 接続リストのBUS ID –aを付けると自動再接続をします。 > usbipd wsl attach -a -b 1-1 WSL(ubuntu)側で確認 $ ls -al /dev/ttyUSB* ※Windowsのブラウザでlocalhost:1880でつなぐ (WSL2はあくまでWindowsのSubsystemなので同じIPアドレスになります。)
WSL2で動かすには⑤ z M5Atom S3など書き込みとdebugで異なる接続先になる場合 ※タイミングによっては失敗します。(約50%ぐらいの確率) デバイス(M5Atom S3など)をPCに接続 デバイスを書き込み状態にします(AtomS3の場合はResetをランプが付くまで長押し) Windows側で > usbipd wsl list で接続リストを見て 次のコマンドを実行します。-b 以降は 接続リストのBUS ID > usbipd wsl attach -b 1-1 WSL(ubuntu)側で確認 $ ls -al /dev/ttyACM* ※Windowsのブラウザでlocalhost:1880 Node-REDでBuildし、Resetの表示が出 たら Windows側で > usbipd wsl attach -a -b 1-1 Debug時は-aを付ける。(xsbugに接続された時に再度リセットがかかり切り離されるため) (上手くいけばこの手順で動作します)
z まとめ ▪ WSLでESP32S3とかPicoでの再起動時のデバイス接続問題ど うしていますか? ▪ WindowsでもRaspberryPI PICOの対応を待っています。 ▪ Windowsのxs-devのリリースも待ち遠しいですね。 (現在Beta)