0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:circuitdigest 作者:Emmanuel Odunlade 2022-09-01 16:00 次阅读

有没有想过是否有一种方法可以制作简单的物联网解决方案原型,而无需花费数天时间编写代码或无需编码即可构建实用的高级项目。是的,这可以通过 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 ) 以启动它。

poYBAGMQZkKAT40fAAICElNEQ8o548.png

也可以通过ssh或终端运行启动;

节点红开始

pYYBAGMQZj-ARG-LAAGQzSmjBGw623.png

您应该会看到一个类似下图的窗口,在桌面上显示节点红色启动。

一旦你看到这个,去menu-》internet并启动 chromium web browser。虽然您的 Raspberry pi 不需要互联网来运行 Node-Red,但它使用浏览器作为其界面。

启动 chromium 后,在地址栏中输入localhost:1880,然后按 Enter 键。1880 是树莓派上的端口,Node-Red 预设在其上进行通信。这应该会显示Node-Red 界面,如下图所示。

poYBAGMQZjqAMRtpAAEaAFs59qA489.png

了解 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 。

poYBAGMQZjWAbg-AAAHUZkTKCuo019.png

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

pYYBAGMQZjKAJ2RXAAR3mDoeB1A567.png

这个项目可以很容易地转换成一个家庭自动化项目,只需用继电器和任何交流电器替换 LED,通过各种家庭自动化项目了解如何做到这一点。

在 Node-RED 中创建流

连接 LED 后,我们可以继续开发流程。NodeRed 中的程序称为流,就像 Arduino IDE 将它们称为草图一样。流是使用节点组合创建的。您可以创建多个可以同时运行的流程,但在本教程中,我们将创建一个流程来打开/关闭 LED。

poYBAGMQZi6AffeMAABwx5mUXpM000.png

首先,滚动到 Nodes 面板的底部,您将看到 raspberry pi 节点部分接近末尾,其中两个节点标记为rpigpio。这些节点用于与树莓派的 GPIO 通信。其中一个节点用于输入,而另一个用于输出,由树莓派徽标的位置区分。对于输入节点,徽标位于文本之前,而对于输出节点,徽标位于文本之后,如下图所示。

在本教程中,我们将使用输出节点,将其拖到界面的流程部分。此步骤类似于使用pinMode()命令将 Arduino 的特定引脚声明为输出。双击输出节点,将打开一个弹出窗口,如下所示,允许您编辑节点的属性。

poYBAGMQZiqAIWmmAAD_TkIFbkc478.png

在 pin property 部分下,选择 GPIO17(pin 11)。然后将类型属性设置为“数字输出”并勾选“初始化引脚状态?” 复选框将“引脚的初始级别”选项保留为低 (0)。给节点起任何您喜欢的名称,然后单击完成按钮。

节点的名称应自动更改为您在属性设置下输入的名称。例如,我将其命名为 LED,因此节点名称也更改为 LED,如下所示。

pYYBAGMQZiaAHKBbAAAW0gieNds750.png

要打开/关闭 LED,我们需要使用输入来驱动动作。虽然我们可以使用按钮,但我想用它来介绍 Node-RED 中允许将消息注入流的功能。这些功能称为注入节点。我们将使用两个注入节点。一个是打开 LED,另一个是关闭它。

转到节点面板并将注入节点拖到流中。它是调色板中带箭头的第一个节点,下图中突出显示了注入节点。

poYBAGMQZiOANgB3AAA9348JzsE168.png

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

poYBAGMQZh-AUP25AADCy-nkEPI519.png

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

pYYBAGMQZhuAUx1CAACrhiJTTHY980.png

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

pYYBAGMQZheAYEdVAAB32mH0Hsc413.png

完成后,我们现在已经完成了我们的第一个 Node-Red Flow。

下一步是让我们在 raspberry pi 上部署流程。单击红色的部署按钮。您应该会在屏幕顶部看到“成功部署”闪烁,如下所示。

pYYBAGMQZhOAWs2WAAAczo3uHuM995.png

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

pYYBAGMQZg-AMpEAAABy1ZkusHw087.png

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

poYBAGMQZguAYEy2AAB0YUpLIIM614.png

而已。此设置的完整工作可以在此页面底部链接的视频中找到。

使用 Raspberry Pi 在 Node-RED 接口中添加按钮/开关

为了解释如何将输入元素连接/添加到您的流程中,我们将通过添加按钮来替换注入节点来进一步处理上述流程。

将按钮连接到树莓派,这样,按钮的一个脚接地,另一脚连接到树莓派的 GPIO 引脚 4(引脚 11),如下图所示。

pYYBAGMQZgeAfA2fAAGHfWTNfq0864.png

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

poYBAGMQZgKATtdKAABIaR6pqNY183.png

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

pYYBAGMQZf6AZo_vAAFGRjNsMcA733.png

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

poYBAGMQZfmASOPbAABQ4rpt7eE851.png

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

poYBAGMQZfSAD03sAABtc0f0-Mo858.png

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

pYYBAGMQZe6AfPbBAABgghbqvkg526.png

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

pYYBAGMQZeqAcdEJAAA_rERyf3U066.png

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

pYYBAGMQZeWABzKjAABj4OdxGu8822.png

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

poYBAGMQZeCAbneCAABqOUnS04Y671.png

完成后,我们现在可以部署项目了。检查连接以确保一切正常,然后单击部署按钮。像往常一样,如果成功,您应该看到部署成功弹出窗口,现在可以使用开关控制 LED。

虽然 Node-Red 可以让您轻松快速地构建原型,而无需担心代码,但它实际上可能不是最合适的,尤其是对于需要灵活性和控制程序的经验丰富的开发人员而言。尽管如此,它还是一个很棒的工具,可以让您在几分钟内构建原型。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23235

    浏览量

    660475
  • 树莓派
    +关注

    关注

    116

    文章

    1705

    浏览量

    105599
收藏 人收藏

    评论

    相关推荐

    Node-RED实现电表数据采集并上云

    本案例将通过Docker容器安装DLT-645协议插件采集实现电表数据上云,前面已经讲过ModbusRTU协议通过Node-RED上云,如果采用支持ModbusRTU电表可以参考之前的“Docker
    的头像 发表于 06-07 08:21 2802次阅读
    <b class='flag-5'>Node-RED</b>实现电表数据采集并上云

    基于node-RedRaspberry Pi的物联网实验设计

    基于node-RedRaspberry Pi的物联网实验设计,都是小实验,有人会吗?
    发表于 03-06 12:11

    Node-Red是什么?如何去学习Node-Red

    Node-Red是什么?如何去学习Node-Red?有哪些方法可以去学习Node-Red
    发表于 07-02 06:11

    新手求助如何去学习Node-Red

    如何去学习Node-Red?怎样去安装dashboard这个UI控件库?
    发表于 09-01 06:53

    第2部分:使用Node-RED的程序

    Understand how to use the Node-RED* interface to add sensors and send data to the AWS* cloud.
    的头像 发表于 10-26 07:17 6676次阅读

    运用 Node-RED 开发 LoRa 应用

    之前的课程LoRa G-IoT模块基础应用,我们已经知道如何将从LoRa得到的数值上传服务器,本文我们将学习撰写Node-RED,将数据传送到自己设计的网页监测接口。
    的头像 发表于 12-25 17:54 796次阅读

    使用Node-REDRaspberry Pi实现按下按钮即可发布天气信息

    Node-RED是一种可视化编程工具,可以将Raspberry Pi的 GPIO引脚 上的组件与各种网站和在线服务进行接合。该软件由IBM开发,具有开源许可证,并且它的使用只需要编写很少的代码。
    的头像 发表于 03-01 10:50 1793次阅读
    使用<b class='flag-5'>Node-RED</b>和<b class='flag-5'>Raspberry</b> <b class='flag-5'>Pi</b>实现按下按钮即可发布天气信息

    Node-REDARM嵌入式工控机上的应用

    BL302 ARM嵌入式工控机Node-RED使用教程
    的头像 发表于 03-02 18:45 4968次阅读
    <b class='flag-5'>Node-RED</b><b class='flag-5'>在</b>ARM嵌入式工控机上的应用

    Node-red启动电脑摄像头案例

    通过Node-red实现打开电脑自带的摄像头或者USB摄像头
    的头像 发表于 06-01 06:50 5201次阅读
    <b class='flag-5'>Node-red</b>启动电脑摄像头案例

    搭建Node-RED环境,将开发板变身为工业控制网关——米尔基于NXP LS1028A开发板

    控制系统LED五、系统命令控制GPIO六、Node-RED控制GPIO七、开发板上的S3按键使用八、
    的头像 发表于 12-05 09:47 3628次阅读
    搭建<b class='flag-5'>Node-RED</b>环境,将开发板变身为工业<b class='flag-5'>控制</b>网关——米尔基于NXP LS1028A开发板

    物联网与ESP32、Node-RED和InfluxDB与WebSocket

    电子发烧友网站提供《物联网与ESP32、Node-RED和InfluxDB与WebSocket.zip》资料免费下载
    发表于 07-13 09:51 0次下载
    物联网与ESP32、<b class='flag-5'>Node-RED</b>和InfluxDB与WebSocket

    Node-RED安装本地教程

    Node-RED是一个基于流的开发工具,广泛应用于物联网(IoT)、家庭自动化和其他数据驱动的应用程序。它通过图形化的编程界面,使得非专业程序员也能轻松上手。本文将介绍如何在本地环境安装Node-RED,帮助你快速开始项目开发
    的头像 发表于 06-24 12:10 2039次阅读
    <b class='flag-5'>Node-RED</b>安装本地教程

    Node-RED如何制作漂亮的界面

    Node-RED深度融合(如成都的纵横智控和苏州稳联科技将Node-RED与物联网网关深度融合,打造可视化、硬件加持的物联网开发平台,使用者无需编码即可快速实现各类应用,开拓物联网无限可能)。未来或许将会有越来越多的企业步入此行业
    的头像 发表于 06-26 16:50 4399次阅读
    <b class='flag-5'>Node-RED</b>如何制作漂亮的界面

    Node-RED初学者教程-三分钟学习

    通过这短短三分钟的教程,你已经掌握了Node-RED的基本操作。你可以利用Node-RED的强大功能来创建更复杂的数据流和自动化任务,无论是物联网应用、API集成还是数据处理。Node-RED
    的头像 发表于 06-27 17:09 2687次阅读
    <b class='flag-5'>Node-RED</b>初学者教程-三分钟学习

    利用ARMxy边缘计算机BL340与Node-Red实现LED设备的开闭控制

    搭建了一个高效的原型开发与测试平台。本文将带您走进BL340系列与Node-Red的结合应用,探索如何通过这一组合控制设备执行Linux指令,进而控制设备上的LED状态。 一、
    的头像 发表于 08-15 14:12 256次阅读
    <b class='flag-5'>利用</b>ARMxy边缘计算机BL340与<b class='flag-5'>Node-Red</b>实现<b class='flag-5'>LED</b>设备的开闭<b class='flag-5'>控制</b>