0
0

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.

Node-RED MCU Editionでrpi-neopixelノードがサポートされたので試してみた。(※2023年2月5日更新)

Last updated at Posted at 2022-12-06

はじめに

Node-RED MCU Editionでrpi-neopixelノードがサポートされたので試してみました。

※ 2023年2月5日更新

ラズパイ用のrpi-neopixelノードからNode-RED MCU用のneopixelノードへ変更されました。
Sensorノードを導入する手順でneopixelノードも追加されます。

Node-REDフローのマイコンデバイスへの書き込み

以下を参考にflows.jsonを変換、ビルド、マイコンデバイスへの書き込みを行います。
mcconfigコマンドを使用して手動で行う、または、node-red-mcu-pluginを使用してフローエディタから行うことができます。

環境準備

NeoPixelを使用するためにnode-red-node-pi-neopixelノードをインストールします。

1-1. Node-REDをインストールする

$ mkdir node-red-mcu && cd node-red-mcu
$ npm init -y
$ npm install node-red

1-2. node-red-node-pi-neopixelノードをインストールする

$ npm install node-red-node-pi-neopixel

1-3. node-red-mcu-pluginをインストールする

$ npm install https://github.com/ralphwetzel/node-red-mcu-plugin

Node-RED起動時のエラー(node-red-mcu-pluginがパッチを適用するutils.jsが存在しない)を回避するため、node_modules/node-redディレクトリで必要なモジュールをインストールします。

$ cd node_modules/node-red
$ npm install
$ cd ../..

1-4. Node-REDを起動する

$ node node_modules/node-red/red.js -u ./

サンプルフロー

サンプルフローは以下のとおりです。

flows.json
[
    {
        "id": "8471ec6d0c159c31",
        "type": "tab",
        "label": "neopixel demo",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "745e35dcb1b1886b",
        "type": "inject",
        "z": "8471ec6d0c159c31",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "red,green,blue,white,cyan,yellow,purple,orange",
        "payloadType": "str",
        "x": 150,
        "y": 180,
        "wires": [
            [
                "5d799e649b54a1a3"
            ]
        ]
    },
    {
        "id": "eb234d064a2a6930",
        "type": "rpi-neopixels",
        "z": "8471ec6d0c159c31",
        "name": "",
        "gpio": 18,
        "pixels": "12",
        "bgnd": "",
        "fgnd": "",
        "wipe": "40",
        "mode": "pcent",
        "rgb": "grb",
        "brightness": "100",
        "gamma": false,
        "x": 550,
        "y": 180,
        "wires": []
    },
    {
        "id": "2420e7cde0ed735b",
        "type": "debug",
        "z": "8471ec6d0c159c31",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 550,
        "y": 260,
        "wires": []
    },
    {
        "id": "0d1014c10414c0e3",
        "type": "complete",
        "z": "8471ec6d0c159c31",
        "name": "",
        "scope": [
            "eb234d064a2a6930"
        ],
        "uncaught": false,
        "x": 130,
        "y": 260,
        "wires": [
            [
                "5d799e649b54a1a3"
            ]
        ]
    },
    {
        "id": "5d799e649b54a1a3",
        "type": "function",
        "z": "8471ec6d0c159c31",
        "name": "random color",
        "func": "const colors = context.get(\"colors\")\n\ndo {\n    msg.payload = colors[Math.trunc(Math.random() * colors.length)];\n} while (context.get(\"previous\") === msg.payload);\n\ncontext.set(\"previous\", msg.payload);\n\nreturn msg;\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "const colors = [\"red\",\"green\",\"blue\",\"white\",\"cyan\",\"yellow\",\"purple\",\"orange\",\"black\",\"pink\"]\n\ncontext.set(\"colors\", colors);\n",
        "finalize": "",
        "libs": [],
        "x": 340,
        "y": 220,
        "wires": [
            [
                "eb234d064a2a6930",
                "2420e7cde0ed735b"
            ]
        ]
    }
]

M5Atom Matrixの場合

205492745-ef6eabb7-5e04-4799-a2ff-9039315d66ae.jpg

M5Stack Fireの場合

205532070-58463084-c65e-40d2-af05-ee5651f3be7e.jpg

サンプルフローの変更について

※ 2023年1月22日追記

M5Atom Lite/Matrix/U、M5Stack Fireなど、デバイスのmanifestファイルでNeoPixelが定義されている場合、flows.jsonのgpioとpixelsの値を変更しても設定が反映されません。(デバイスのmanifestファイルの定義が優先されます)

M5Stick CPlus、M5Stack Core2など、NeoPixelが定義されていない場合、flows.jsonのgpioとpixelsの値が反映されます。

例. GroveポートへNeoPixelを接続

"gpio": 18 -> 33
"pixels": "12" -> "8"

IMG_3499.jpg

IMG_3500.jpg

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?