我试过 Node-RED MCU 版。

介绍

今年(2022 年),Node-RED Con 2022 于 10 月 7 日举行。

在英语轨道先生以“Bringing Node-RED to Microcontrollers”为题介绍了Node-RED MCU版,所以我试了一下。

我对“让所有设备可编程”的使命感同身受。

(摘自演示幻灯片)

这一次,我将使用 M5Stack Core2 (ESP32) 运行一个简单的 Node-RED 流程(注入节点和调试节点)。

程序

Github 上的 README 是信息的来源。

PC 上的 Node-RED 运行在 Node.js(V8 JavaScript 引擎)上,而 MCU(微控制器)运行在 Moddable SDK 的 XS JavaScript 引擎上。

(摘自演示幻灯片)

环境

先决条件

英特尔 MacBook Pro (2017) macOS Big Sur(11.7 版)

* 实机(M5Stack Core2)需要使用ESP-IDF进行操作,但不支持M1 Mac。

1. 安装 Moddable SDK

一个很好的信息来源是 Github 上的“Moddable SDK – Getting Started”。

1-1.安装Xcode

从 App Store 安装 Xcode。

Xcode(13.1 版)

* 如果 CommandLineTools 设置不正确,在构建 Moddable SDK 时会出错,因此请从菜单中的“Preferences”→“Locations”中的 Command Line Tools 下拉菜单中进行设置。

1-2. 下载 Moddable 仓库

该解释假设您下载并安装在您的主目录中。

$ git clone https://github.com/Moddable-OpenSource/moddable
1-3.设置环境变量

用于设置环境变量的文件因您使用的 shell 环境而异。

(对于 bash)~/.profile

(对于 zsh)~/.zshrc

添加以下设置。

export MODDABLE="/Users/ユーザー名/moddable"
export PATH="${MODDABLE}/build/bin/mac/release:$PATH"

* 关闭终端,重新打开终端,环境变量生效。

1-4. 构建 Moddable SDK
$ cd ${MODDABLE}/build/makefiles/mac
$ make
1-5.打开xsbug调试工具
$ open ${MODDABLE}/build/bin/mac/release/xsbug.app

* 确认调试器正常启动后,关闭。

1-6. 运行示例程序

执行示例程序 (helloworld) 将启动模拟器 (Moddable One) 和调试器。

$ cd ${MODDABLE}/examples/helloworld
$ mcconfig -d -m -p mac

mcconfig 命令的参数(选项)的含义如下。

-d 在调试模式下构建 -m 同时构建和写入设备 -p 指定构建平台的选项(mac 是 macOS moddable 模拟器)

您可以从左上角菜单更改模拟器类型。

当您按下播放按钮时,会显示 helloworld。

我也会尝试另一个样本。

$ cd ${MODDABLE}/examples/piu/balls
$ mcconfig -d -m -p mac

在真机上运行(M5Stack Core2)

为 ESP32 构建构建环境以在 M5Stack Core2 (ESP32) 上运行。

2. 安装 ESP-IDF

Github 上的“使用带有 ESP32 的 Moddable SDK”是一个很好的信息来源。

2-1. 下载 ESP-IDF 仓库

解释假设您下载并安装在您的主目录中。

$ mkdir esp32 && cd esp32
$ git clone --recursive https://github.com/espressif/esp-idf.git
$ cd esp-idf
$ git checkout v4.4.2
$ git submodule update --init --recursive
2-2. 安装使用 Homebrew 运行 ESP-IDF 所需的工具
$ brew update
$ brew install python cmake ninja

如果已安装,请更新。

$ brew upgrade python cmake ninja
2-3.设置环境变量

用于设置环境变量的文件因您使用的 shell 环境而异。

(对于 bash)~/.profile

(对于 zsh)~/.zshrc

添加以下设置。

export IDF_PATH=$HOME/esp32/esp-idf

* 关闭终端,重新打开终端,环境变量生效。

2-4. 构建和安装 ESP-IDF
$ cd $IDF_PATH
$ ./install.sh
2-5. 设置 ESP-IDF 的构建环境
$ source $IDF_PATH/export.sh

如果您不想在每次打开终端时都运行它,请将其添加到 shell 的初始化文件(~/.profile 或 ~/.zshrc)中。在步骤 2-3 中设置的环境变量 (IDF_PATH) 之后添加它。

export IDF_PATH=$HOME/esp32/esp-idf
source $IDF_PATH/export.sh
2-6.连接M5Stack Core2,查看串口号

连接M5Stack Core2前后分别执行以下命令,查看识别M5Stack Core2的串口号。

$ ls /dev/cu.*

在我的情况下 /dev/cu.usbserial-01F05577被公认为

将识别的串行端口号设置为环境变量(UPLOAD_PORT)。

$ export UPLOAD_PORT=/dev/cu.usbserial-01F05577

也可以在执行 mcconfig 命令时指定。

(执行示例)

$ UPLOAD_PORT=/dev/cu.usbserial-01F05577 mcconfig -d -m -p esp32/m5stack_core2
2-7. 执行示例程序

为 M5Stack Core2 构建 ball 示例程序并将其写入实际机器。

$ cd ${MODDABLE}/examples/piu/balls
$ UPLOAD_PORT=/dev/cu.usbserial-01F05577 mcconfig -d -m -p esp32/m5stack_core2

在 M5Stack Core2 上运行 Node-RED 流程

环境终于准备好了。这是使用 MCU(微控制器)运行 Node-RED 流程的易于理解的图像。

(报价来源)

Node-RED MCU 版将从 Node-RED 流编辑器以 JSON 格式导出的流转换为可与 Moddable SDK 的 XS JavaScript 引擎一起使用的格式。

一个可以在Node-RED流程编辑器上为MCU构建并写入实际机器的工具(node-red-mcu-plugin)已经发布,因此使用起来更容易。

首先,手动转换、构建和刻录以了解其工作原理。

3. 使用 Node-RED MCU 版 3-1. 下载 Node-RED MCU 版本库
$ git clone https://github.com/phoddie/node-red-mcu
3-2. 以 JSON 格式导出 Node-RED 流

连接注入节点和调试节点,并将注入节点设置为重复行为。

从右上角的菜单中选择导出。

选择 JSON 选项卡。

选择导出。

Node-RED 流将以 JSON 格式复制到您的剪贴板。

3-3. 将 Node-RED 流(JSON 格式)保存到 flow.json 文件

node-red-mcu 目录中有一个空的flows.json 文件,因此将您复制的Node-RED 流程写入剪贴板。 (使用 vi 命令编辑 flow.json 文件的示例)

$ cd node-red-mcu
$ vi flows.json

(之前改过)

流.json
[
]

(更改后)

流.json
[
    {
        "id": "8e0e0125ce64fc32",
        "type": "tab",
        "label": "フロー 1",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "b26f7a4723afecfe",
        "type": "inject",
        "z": "8e0e0125ce64fc32",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "1",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 230,
        "y": 140,
        "wires": [
            [
                "d6cb10fdeae23781"
            ]
        ]
    },
    {
        "id": "d6cb10fdeae23781",
        "type": "debug",
        "z": "8e0e0125ce64fc32",
        "name": "debug 1",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 480,
        "y": 180,
        "wires": []
    }
]
3-4. 在 MCU 上运行 Node-RED 流程

(在模拟器上运行时)

$ mcconfig -d -m -p mac

(在实机上运行时(M5Stack Core2))

$ UPLOAD_PORT=/dev/cu.usbserial-01F05577 mcconfig -d -m -p esp32/m5stack_core2

4.使用node-red-mcu-plugin

为了不破坏现有的Node-RED执行环境,我将在为Node-RED MCU版创建环境的前提下编写程序。

(先决条件)

Node.js (v16.14.0) 4-1. 安装 Node-RED
$ mkdir node-red-mcu && cd node-red-mcu
$ npm init -y
$ npm install node-red
4-2. 安装 node-red-mcu-plugin
$ npm install https://github.com/ralphwetzel/node-red-mcu-plugin
4-3. 启动 Node-RED
$ node node_modules/node-red/red.js -u ./

启动 Node-RED 时输出以下错误。

*** Error while loading node-red-mcu-plugin:
Failed to calculate correct patch path.
Please raise an issue @ our GitHub repository, stating the following information:
> require.main.path: /Users/kitazaki/node-red-mcu/node_modules/node-red
> utils.js: /Users/kitazaki/node-red-mcu/node_modules/node-red/node_modules/@node-red/registry/lib/util.js

似乎输出错误是因为 node-red-mcu-plugin 修补的 utils.js 不存在。在 node_modules/node-red 目录中安装所需的模块。

$ cd node_modules/node-red
$ npm install

再次启动 Node-RED。

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

侧面板中添加了“MCU”选项卡。

4-4. 设置“MCU”选项卡

像往常一样创建一个 Node-RED 流。

选中“MCU”选项卡上的“为 MCU 构建的流程”复选框。

在“MCU”选项卡上的“MCU Build Configurations”中按“Add config”。

按两次“添加配置”以添加模拟器和真机(M5Stack Core2)的设置。对于实机(M5Stack Core2)的设置,在下拉菜单中选择“ESP32|Espressif”和“esp32/m5stack_core2”,串口号输入步骤2-6中识别的值。

按“构建”将运行 Node-RED 流程。通过按“控制台监视器”选项卡,您可以在终端屏幕上检查构建执行的状态。以实机(M5Stack Core2)为例,构建完成后编写。

调试器 (xsbug) 将启动,您可以看到运行中的 Node-RED 流程。

最后

在今年的 Node-RED Con 2022 上,我做了题为“我尝试了各种 Node-RED 执行环境”的演讲,加上 MCU(微控制器)执行环境的加入,我很期待未来的发展。!

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308628933.html

41人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册