找回密码
 立即注册
搜索
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋

在Raspberry Pi中利用Node-RED控制LED

秋天的小熊诒 2022-9-7 15:01:33
有没有想过是否有一种方法可以制作简单的物联网解决方案原型,而无需花费数天时间编写代码或无需编码即可构建实用的高级项目。是的,这可以通过 Node-Red 平台实现。Node-RED由 IBM 开发,是一种开源编程工具,用于以新颖有趣的方式将硬件设备、API 和在线服务连接在一起。它提供了一个基于浏览器的编辑器,可以使用调色板中的各种节点轻松地将“流”连接在一起,只需单击一下即可将其部署到其运行时。
        它使用可视化编程,允许您将代码块(称为节点)连接在一起以执行任务。在今天的教程中,我们将研究如何使用 Node-RED 在树莓派上部署简单的项目。树莓派node-red 教程将涵盖;
        在 Raspberry Pi 上安装 Node-RED。
        Node-RED 用户界面简介
        如何设置 Node-RED 流
        如何使用 Node-RED 控制 Raspberry Pi GPIO 引脚
        如何使用 Node-RED 输入、输出和 if-else,例如使用开关进行决策
        先决条件
        本教程将基于 Raspbian 伸展操作系统,我假设您熟悉使用它设置 Raspberry Pi,并且您知道如何使用终端软件(如 putty)通过 SSH 连接到 Pi。
        为了轻松完成本教程,我建议您使用连接到树莓派的显示器或使用 VNC 查看器软件。
        虽然 Node-Red 从 Web 浏览器运行,并且可以在通过 Pi 的 IP 地址连接到 Pi 的 PC 上访问,但我相信 VNC/监视器体验会给您带来更好的体验。
        作为演示 Node-Red 工作原理的演示,我们将使用 Node-RED 对 Raspberry Pi 进行编程以控制连接到其 GPIO 的 LED,然后修改程序以允许通过连接到 Pi 的触觉按钮控制 LED通用输入输出接口
        所需组件
        构建此项目需要以下组件;
        带有预加载 Raspbian Stretch 的 SD 卡的 Raspberry Pi 3
        100 欧姆电阻 (1)
        发光二极管 (1)
        面包板 (1)
        公对母跳线
        触觉按钮 (1)
        在树莓派上安装 Node-RED
        虽然 Node-Red 预装在 Raspbian Stretch OS 上,但我们需要升级它才能享受它的一些最新功能。升级 Node-Red将
        将现有用户升级到 LTS 8.x 或 10.x Node.js 和最新的 Node-RED
        将任何现有的全局安装节点迁移到用户 ~/.node-red 空间,以便可以通过调色板管理器对其进行管理,它不会更新任何用户安装的现有节点。这必须由用户手动完成(见下文)。
        可以选择(重新)安装在完整 Raspbian Pi 映像上预安装的额外节点。
        但是,升级 Node-Red 的过程类似于安装一个新的,所以为了本教程的目的,我们将把它视为一个新的安装,以便使用其他操作系统版本的人可以跟随。
        按照以下步骤在您的 Raspberry Pi 上安装/升级 Node-RED。
        我们首先升级和更新 pi,以确保其上的所有内容都是最新的并避免兼容性问题。通过打开终端或通过 ssh 执行此操作,然后运行;
        sudo apt-get 更新
        其次是
        sudo apt-get 升级
        完成后,在终端上运行下面的 bash 脚本;
        bash 《(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-NodeRed)
        bash 脚本将执行以下操作
        询问您是否要(重新)安装额外的 Pi 节点
        保存在 /usr/lib/node_modules 中找到的任何全局安装的 node- red-nodes 的列表
        apt-get 删除现有的 Node-Red
        从 /usr/bin 和 /usr/local/bin 中删除任何 node-red 二进制文件
        从 /usr/lib/node_modules 和 /usr/local/lib/node_modules 中删除任何 node-red 模块
        检测 Node.js 是从 Node.js 包还是 Debian 安装的
        如果不是 v8 或更新版本 - 酌情删除并安装最新的 v8 或 v10 LTS(不使用 apt)。
        清理 npm 缓存和 .node-gyp 缓存以删除任何以前版本的代码
        安装 Node-RED 最新版
        在用户帐户下重新安装以前全局安装的任何节点
        如果需要,重新安装额外的 Pi 节点
        重建所有节点 - 重新编译任何二进制文件以匹配最新的 Node.js 版本
        将 node-red-start、node-red-stop 和 node-red-log 命令添加到 /usr/bin
        添加菜单快捷方式和图标
        添加系统脚本并设置用户
        如果在 Pi 上添加 CPU 温度 -》 IoT 示例
        上面的 bash 脚本以sudo运行许多命令,并确实删除了现有的 Node.js 和核心 Node-RED 目录。您可以在运行之前检查此GitHub 页面上的脚本内容,以确保它不会影响您在 Pi 上已有的任何项目。
        安装完成后,您现在应该在菜单的编程应用程序列表下看到 Node-Red 图标。
        在 Raspberry Pi 中启动 Node-RED
        Node-Red 可以通过树莓派桌面的菜单部分、终端或 ssh 启动。
        要在 raspberry pi 的桌面上启动,请单击 Raspberry 图标,将鼠标悬停在 Programming 单击 Node-RED ( Menu》Programming》NodeRed ) 以启动它。
       

        也可以通过ssh或终端运行启动;
        节点红开始
       

        您应该会看到一个类似下图的窗口,在桌面上显示节点红色启动。
        一旦你看到这个,去menu-》internet并启动 chromium web browser。虽然您的 Raspberry pi 不需要互联网来运行 Node-Red,但它使用浏览器作为其界面。
        启动 chromium 后,在地址栏中输入localhost:1880,然后按 Enter 键。1880 是树莓派上的端口,Node-Red 预设在其上进行通信。这应该会显示Node-Red 界面,如下图所示。
       

        了解 Node-RED 接口
        Node-Red 界面包括流程面板、节点面板、调试控制台和信息控制台,如上图所示。
        流程面板是将节点连接在一起以创建程序的地方,在 Node-Red 中称为流程,而节点面板由代表与设备相关的硬件、协议和软件功能的对象组成。它包括用于 IoT 的 MQTT 等协议,以及用于 raspberry pi 等板的 GPIO 输出和输入模式。信息控制台提供有关突出显示/选定对象的信息,而调试控制台就像 Arduino 串行监视器一样工作,可以在流程运行时提供反馈。部署按钮用于将流上传到目标硬件。菜单按钮包含不同的上传类型,以帮助您充分利用您的项目。随着 Node-Red 启动并运行,我们现在可以继续构建演示项目。
        原理图
        正如在介绍中提到的,我们今天的演示项目将使用 Node-RED 流控制 Raspberry Pi 的 GPIO。为了显示 GPIO 状态的变化,我们将一个 LED 连接到 GPIO,这样当特定的 GPIO 引脚打开时,LED 就会亮起,反之亦然。
        如下图所示,将 LED 连接到 Raspberry PI 。
       

        我还使用面包板、LED、电阻器和一些连接线在我的硬件上构建了相同的东西。建立连接后,我的硬件设置看起来像这样。
       

        这个项目可以很容易地转换成一个家庭自动化项目,只需用继电器和任何交流电器替换 LED,通过各种家庭自动化项目了解如何做到这一点。
        在 Node-RED 中创建流
        连接 LED 后,我们可以继续开发流程。NodeRed 中的程序称为流,就像 Arduino IDE 将它们称为草图一样。流是使用节点组合创建的。您可以创建多个可以同时运行的流程,但在本教程中,我们将创建一个流程来打开/关闭 LED。
       

        首先,滚动到 Nodes 面板的底部,您将看到 raspberry pi 节点部分接近末尾,其中两个节点标记为rpigpio。这些节点用于与树莓派的 GPIO 通信。其中一个节点用于输入,而另一个用于输出,由树莓派徽标的位置区分。对于输入节点,徽标位于文本之前,而对于输出节点,徽标位于文本之后,如下图所示。
        在本教程中,我们将使用输出节点,将其拖到界面的流程部分。此步骤类似于使用pinMode()命令将 Arduino 的特定引脚声明为输出。双击输出节点,将打开一个弹出窗口,如下所示,允许您编辑节点的属性。
       

        在 pin property 部分下,选择 GPIO17(pin 11)。然后将类型属性设置为“数字输出”并勾选“初始化引脚状态?” 复选框将“引脚的初始级别”选项保留为低 (0)。给节点起任何您喜欢的名称,然后单击完成按钮。
        节点的名称应自动更改为您在属性设置下输入的名称。例如,我将其命名为 LED,因此节点名称也更改为 LED,如下所示。
       

        要打开/关闭 LED,我们需要使用输入来驱动动作。虽然我们可以使用按钮,但我想用它来介绍 Node-RED 中允许将消息注入流的功能。这些功能称为注入节点。我们将使用两个注入节点。一个是打开 LED,另一个是关闭它。
        转到节点面板并将注入节点拖到流中。它是调色板中带箭头的第一个节点,下图中突出显示了注入节点。
       

        双击它以编辑其属性。通过单击有效负载前面的下拉菜单将数据类型更改为字符串,然后在有效负载框中输入 1。有效载荷框中的值是按下节点时将注入到流中的值。将节点名称设置为“ON” 按“Done”按钮保存。
       

        对第二个节点重复上述操作,将有效负载值设置为“0”,并将其名称设置为“off”,如下所示。
       

        在属性功能下,重复下拉菜单可用于自动注射,以便每隔一段时间按下按钮。这可以用来创建眨眼效果。如下所示将节点连接在一起,方法是将其中一个节点上的灰点拖动到另一个节点以创建流。
       

        完成后,我们现在已经完成了我们的第一个 Node-Red Flow。
        下一步是让我们在 raspberry pi 上部署流程。单击红色的部署按钮。您应该会在屏幕顶部看到“成功部署”闪烁,如下所示。
       

        单击注入节点后面的灰色按钮以激活每个节点。
       

        通过单击“on”注入节点,您应该看到成功注入“on”,并且 LED 亮起。单击“关闭”注入节点时,LED 应熄灭。
       

        而已。此设置的完整工作可以在此页面底部链接的视频中找到。
        使用 Raspberry Pi 在 Node-RED 接口中添加按钮/开关
        为了解释如何将输入元素连接/添加到您的流程中,我们将通过添加按钮来替换注入节点来进一步处理上述流程。
        将按钮连接到树莓派,这样,按钮的一个脚接地,另一脚连接到树莓派的 GPIO 引脚 4(引脚 11),如下图所示。
       

        完成此操作后,返回 Node-Red 并删除我们之前使用的两个注入节点,方法是单击节点并按键盘上的删除或双击节点并在弹出窗口中按删除。完成后,向下滚动节点选项板到 raspberry pi 部分并选择输入节点。它是左边有树莓派图标的那个,在节点名称之前。
       

        将节点拖到流中并双击它以编辑属性。将引脚设置为 GPIO 4(引脚 11)并将电阻前面的下拉设置为上拉。这会将 GPIO 4“上拉”到高电平。设置好属性后点击完成按钮。
       

        为了让我们在按下开关时做出合乎逻辑的决定,而不仅仅是将 GPIO4 短接到地,我们将使用开关节点。在节点面板中的功能部分下搜索它并拖动到流中。
       

        切换节点允许您以类似于“if”语句的方式做出决策。它可以根据输入值设置为具有不同的输出。对于本教程,我们将为它配置两个输出路径,这样,当 msg.payload 属性等于 1(未按下开关)时,它应该遵循第一个路径,如果有任何其他输入,则将遵循第二个路径在输入处观察到除 1 以外的值(按下开关)。使用“+add”按钮添加路径。双击节点并按上述方式进行配置。完成后点击完成。
       

        一旦你点击完成按钮,你应该会看到两条路径反映在switch node的外观中,因为它现在在输出端有两个连接点。
       

        接下来,我们需要引入一个“更改”节点。更改节点将用于根据参数节点的结果设置 LED 的状态。
       

        我们将使用两个变更节点。第一个的有效负载将设置为 0,如下图所示,第二个的有效负载将设置为 1。编辑两者的属性后单击完成。
       

        为了更好地解释,还记得我们使用了上拉电阻吗?因此,当按钮没有被按下时,该引脚的输出将为 HIGH(1),这意味着如果我们将其通过开关节点,LED 将“打开”,因为这不应该是这样,我们将使用“更改”节点将其设置为 LOW(0)。第二个“更改”节点用于将值设置为 1,这样当检测到 GPIO 引脚 4 的高电平状态以外的任何其他状态时,它应该将 LED “打开”,因为这意味着按钮已被按下。将更改节点和其余节点连接在一起,如下图所示。
       

        完成后,我们现在可以部署项目了。检查连接以确保一切正常,然后单击部署按钮。像往常一样,如果成功,您应该看到部署成功弹出窗口,现在可以使用开关控制 LED。
        虽然 Node-Red 可以让您轻松快速地构建原型,而无需担心代码,但它实际上可能不是最合适的,尤其是对于需要灵活性和控制程序的经验丰富的开发人员而言。尽管如此,它还是一个很棒的工具,可以让您在几分钟内构建原型。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

使用道具 举报

您需要登录后才可以回帖 立即登录
返回顶部