我试过 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 $ make1-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-IDFGithub 上的“使用带有 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 --recursive2-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.sh2-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.sh2-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_core22-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_core24.使用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-red4-2. 安装 node-red-mcu-plugin
$ npm install https://github.com/ralphwetzel/node-red-mcu-plugin4-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