Node-RED MCU EditionでSensorノード (V2)を試してみた。(※2023年2月5日更新)

# はじめに

Node-RED MCU EditionのSensorノードがバージョンアップして(V2になって)、センサーデバイスやI/O、Busをプルダウンメニューで選択できるようになり、使いやすくなりました。

# 手順

Sensorノードのインストール手順は以前と同じです。

https://qiita.com/kitazaki/items/da3a2e4a16b8a971b840

# 注意点

Node-RED MCU Editionで使用するnodered2mcuツールが更新されているため、Moddable SDKを再インストール、または、再ビルドする必要があります。

https://qiita.com/kitazaki/items/15cba2f4622bf3682083

```bash
$ rm -rf ${MODDABLE}/build/tmp
$ cd ${MODDABLE}/build/makefiles/mac
$ make
```

# 動作確認状況

センサーデバイスの対応状況は以前と同じ状況です。

### 参考

MPU6886(定義がなかった)とLM75B(Busの値が間違っていた)は以下のプルリクで修正されました。

https://github.com/phoddie/node-red-mcu/pull/70

BMP280(動作しなかった)は以下のコミットで修正されました。

https://github.com/Moddable-OpenSource/moddable/commit/8d8427b4bc88316980b970a8c82aa7305fce7c88

# Sensorノード

フローエディタの左側のパレットに「MCU」カテゴリと「Sensor」ノードが表示されます。
見た目が少し変わりました。

![sensor.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/7376c426-23cf-3963-2bd0-09e880cf8f07.jpeg)

※ 2023年2月5日更新
Sensorノード以外にもMCU用ノードが大量に追加されました。
neopixelノードもrpi-neopixelノードとは別になりました。

![スクリーンショット 2023-02-05 21.40.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/47a93f85-cca4-a15d-58a6-55db2e15c102.png)

# Node-REDフローを作成する

「inject」ノードと「Sensor」ノードと「debug」ノードを使用し、以下のように接続します。

![flow.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/686675d6-5216-0496-e749-b6901faf2c73.jpeg)

## Sensorノードを編集する

Sensorはプルダウンメニューから選択します。
I/OはBus NameとSpeedはフォームで値を入力し、Addressはプルダウンメニューから選択します。
Configureはフォームから値を入力します。

![sensor_config.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/dd8381ab-54c3-5978-dbce-416f13be1fa6.jpeg)

![sht30_config.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/c5a6ba09-c526-790e-67d7-b1280db32a93.jpeg)

### 参考

I/OのBus Nameは値をinternalやhatに変更しても「default」表示に戻ってしまう不具合があります。(2023年1月23日時点)
ただし、flows.jsonには値が正常に保存されますので、動作には問題ありません。

## Sensorノード (HC-SR04)

M5Atom liteとHC-SR04(超音波距離センサー)の組み合わせで動作確認しました。
HC-SR04はPulseWidth I/Oを使用しているため、M5Atom liteのデバイス定義ファイルにモジュールを追加設定する必要があります。
$MODDABLE/build/devices/esp32/targets/m5atom_lite/host/provider.js

![____________________________2023-02-05_15.59.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/122f5b5f-4760-4e8f-50f3-ee961cb2576f.png)

Node-REDフローを作成し、ビルド・インストールします。
injectノードを発火すると、Sensorノードで計測した距離がdebugノードに出力されます。

![____________________________2023-02-05_15.45.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d989d245-b12e-37c9-cb41-351e03e146cf.png)

![スクリーンショット 2023-02-05 21.46.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/ca09b4b7-990a-6139-6374-b019de83c206.png)

![hc_sr04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/20a73404-4248-eaf7-788e-28bd535ecf96.jpeg)


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/04ebb9d6-24de-0244-5f92-06d3c2f139dd.jpeg" width="75%">

## neopixelノード

以前はrpi-neopixelノードを使用していましたが、ラズパイ用で変更できるPIN番号が限られていること、Node-REDのコアノードの一部に含まれていることから変更のハードルが高いこと(想像)から、Node-RED MCU用のneopixelノードへ変更されました。

https://qiita.com/kitazaki/items/1a501b49b601ec2c0180

M5Atom Matrixで試してみました。
neopixelノードのプロパティを開き、Pinの「？」を削除する必要があります。
(削除すると、デバイス定義のneopixel設定が有効になる)

![216818322-4c556087-3b18-4baf-bba2-6ac85036ef3d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/bbb8f2da-5f2d-e7cc-1d4b-cf93b5d98b51.png)

![216818338-c0df3554-fdce-47ea-b4c3-1aea309279ae.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/d03758a2-31cd-79ab-8b3f-93ae2b1a2fae.png)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/7dff92af-d0ff-e9c9-719b-69e5df26c042.jpeg" width="75%">

表示するLEDの個数に不具合がありましたので、修正プルリクエストを上げています。

https://github.com/phoddie/node-red-mcu/pull/80