3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NodeRED MCUをWSL2で利用する

Posted at

Node-RED MCU を WSL2で簡単に使用するメモです。

はじめに

NodeRED MCUを使うとPCとMCU(マイコン)が、同じビジュアル言語で書けるので、簡単にIoTプログラミングできます。本書はWSL2環境で手っ取り早くNodeRED MCUを試したい人を対象に書きました。

試した環境(ハードウェア、ソフトウェア)

  • Windows11 WSL2(Ubuntu-22.04LTS)
  • NodeRED
  • NodeRED MCU Plugin(NodeRED MCUも同時にインストールされます。)
  • xs-dev(環境設定でModdableとESP-IDF等がインストールされます。)
  • M5StackCore2、M5AtomS3

Install方法

Ubuntu22.04 LTS(WSL2)のインストール

PowerShell(管理者)で、次のコマンドを入力します。インストールが終わったら、Login名とパスワードの設定が促されるので、入力します。

> wsl --update
> wsl --install ubuntu-22.04 

インストールが終わったら $ exit でログアウトします。

USBサポートのインストール

PowerShell(管理者)で次のコマンドを入力します。インストールが終わったらPCを再起動します。

> winget install usbipd

PCを再起動して、ターミナル(管理者)で次のコマンドを入力します。リストが表示されたら成功です。

> usbipd list

Ubuntuをスタートメニューから起動して、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/linux-tools/*/usbip 20

USBのパーミッションの変更

/dev/ttyACM0が使えるようにパーミッションの設定とudevの自動起動を設定します。
/etc/udev/rules.d/40-dfuse.rules に 下の内容を書き込みます。ファイルがないときは新規で作成します。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="303a", ATTRS{idProduct}=="00??", GROUP="plugdev", MODE="0666"

/etc/wsl.conf に 下の内容を書き込みます。[boot]セクションがすでに書かれている場合は、2行目だけ追加します。 ファイルが無い場合は新規に作成します。

[boot]
command="service udev start”

WSL2(Ubuntsu)を再起動します。
PowerShell(管理者)で > wsl --shutdownを実行後、再度スタートメニューからUbuntuを起動します。

Node-REDのインストール

Ubuntuで次のコマンドを入力してNodeRED、Node、npmをインストールします。オプションは以下の通り返答します。
Are you really sure you want to do this ? [y/N] ?は "y"
Would you like to install the Pi-specific nodes ? [y/N] ?は "n"
Would you like to customise the settings now (y/N) ?は “n”

$ bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Moddable、node-red mcu plugin、nodesのインストール
ここでは、xs-devを利用して簡単にインストールします。
入力するコマンドはすべて、Ubuntu(WSL)に入力します。
まず準備としてssh-askpassをインストールします。

$ sudo apt install ssh-askpass

ssh-askpassの設定をします。
~/.askpassファイルを作成します。"password”部分は自分のパスワードに置き換えてください。

#!/bin/bash
echo "password"

ファイルの属性と環境変数を設定します。

$ chmod +x ~/.askpass
$ export SUDO_ASKPASS=~/.askpass

次に開発環境をインストールしていきます。少し時間のかかる部分もあります。
※本来npmを利用してxs-devを入れるときにはsudoは不要なのですが、なぜかエラーが発生するので付加しています。
※Moddableは最新版をインストールするためにpublicブランチにしています。

$ sudo -A 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を再起動します。

NodeREDの起動

NodeREDはUbuntu(WSL)で次のコマンドを入力します。

$ node-red

Windowsのブラウザで”localhost:1880”を開きます。
※WSL2はあくまでもWindowsの環境上で動いています。
左のパレットにMCUノード、右のサイドバー(隠れていたら右端の▼で表示)にNode-RED MCUサイドバーが表示されています。

M5Stack Basicなどの利用方法

M5Stack BasicなどUSB-UART変換のデバイスが入っているデバイス

  1. デバイス(M5Stackなど)をPCに接続します。
  2. Windowsのターミナル(管理者)で次のコマンドを入力し、接続リストを表示し、BUSIDを調べます。
> usbipd wsl list 

3. デバイスの接続先をWSLに変更します。
次のコマンドを実行します。オプションの -b でBUSIDを –a で自動再接続を指定しています。自動接続をやめる場合は、同じターミナルで[ Ctrl + C ]を押します。

> usbipd wsl attach -a -b 1-2

以上でデバイスがWSL2で使えるようになりました。

なお、Ubuntu(WSL)側でデバイスの接続を確認したい場合は、次のいずれかのコマンドでできます。

$ lsusb
$ ls -al /dev/ttyUSB*

M5AtomS3などの利用方法

M5AtomS3などUSB-UART変換のデバイスが入っておらず、書き込みとdebugで異なる接続環境になる場合のデバイスです。ここではM5AtomS3を利用しています。
なお、書き込みはできますが、デバッグが失敗します。(まれに、成功することもあります。)

  1. デバイス(M5Atom S3など)をPCに接続します。
  2. デバイスを書き込み状態にします(AtomS3の場合は本体のResetボタンをランプが付くまで長押しします。)
  3. Windowsのターミナル(管理者)で次のコマンドを入力し、BUSIDを確認します。
> usbipd wsl list 

4. デバイスの接続先をWSLに変更します。
次のコマンドを実行します。オプションの -b でBUSID指定します。この時点では –a (自動再接続)を指定しないようにしましょう。

> usbipd wsl attach -b 1-1

※UbuntuはM5AtomS3を/dev/ttyACM* で接続されます。

5. NodeREDでフローのビルドを行います。
"### Press RESET to restart device"という表示まで進みます。

6. M5AtomS3のResetを押します。
 Resetするとデバイス(M5AtomS3)がUbuntuから切り離されます。

7. 再度デバイスの接続先をWSLに変更します。
次のコマンドを実行します。オプションの -b でBUSID指定します。今回は –a (自動再接続)をつけて実行します。
※xsbugに接続した時点で再度切り離されるためです。

> usbipd wsl attach -a -b 1-1

※7は、失敗することが多いです。失敗するとデバッグはできませんが、デバイスは正常に動作します。(デバッグしないのであれば、MCUサイドバーのInstrumentationは何も選択しないのも手です。)
※何か良い方法を知っている人は教えてください。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?