- 先决条件
- 所需组件
- 在Raspberry Pi上安装Node-RED
- 在Raspberry Pi中启动Node-RED
- 了解Node-RED接口
- 原理图
- 在Node-RED中创建流
- 在Raspberry Pi的Node-RED界面中添加按钮/开关
有没有想过是否有一种方法可以制作物联网解决方案的简单原型,而不必花费几天的时间编写代码或构建无需编码的实用高级项目。是的,这可以通过Node-Red平台实现。Node-RED由IBM开发,是一种开源编程工具,用于以新颖有趣的方式将硬件设备,API和在线服务连接在一起。它提供了一个基于浏览器的编辑器,使您可以轻松地使用调色板中的各种节点将“ 流” 连接在一起,只需单击一下即可将其部署到其运行时。
Node-RED是用于构建物联网(IoT)应用程序的强大工具,其目的是简化编程组件。
它使用可视化编程,使您可以将称为节点的代码块连接在一起以执行任务。对于今天的教程,我们将研究如何使用Node-RED在树莓派上部署简单项目。的覆盆子PI节点红色教程将覆盖;
- 在Raspberry Pi上安装Node-RED。
- Node-RED用户界面简介
- 如何设置Node-RED流
- 如何使用Node-RED控制Raspberry Pi GPIO引脚
- 如何使用Node-RED输入,输出和if-else(如使用开关进行决策)
先决条件
本教程将基于Raspbian Stretch OS,我假定您熟悉使用Raspberry Pi设置Raspberry Pi的知识,并且知道如何使用腻子等终端软件通过SSH进入Pi。如果您对此有任何疑问,此网站上有大量的Raspberry Pi教程可以提供帮助。
为了轻松完成本教程,我建议您使用连接到树莓派的显示器或使用VNC Viewer软件。如果您没有Monitor并重新开始使用Pi,则可以阅读此Headless Raspberry Pi设置,以继续进行本教程。尽管Node-Red是通过Web浏览器运行的,并且可以通过Pi的IP地址在与Pi相连的PC上进行访问,但我相信VNC /显示器的经验将使您拥有更多的便利。
作为演示Node-Red如何工作的演示,我们将使用Node-RED对Raspberry Pi进行编程,以控制连接到其GPIO的LED,然后修改程序,以允许通过连接到Pi的触摸按钮来控制LED。 GPIO。
所需组件
构建此项目需要以下组件;
- 带有SD卡的Raspberry Pi 3已预加载Raspbian Stretch预加载
- 100欧姆电阻器(1)
- LED灯(1)
- 面包板(1)
- 公对母跳线
- 触觉按钮(1)
在Raspberry Pi上安装Node-RED
尽管Node-Red已预装在Raspbian Stretch OS上,但我们需要先对其进行升级,然后才能享受其某些最新功能。升级Node-Red将
- 将现有用户升级到LTS 8.x或10.x Node.js和最新的Node-RED
- 将所有现有的全局安装的节点迁移到用户〜/.node-red空间中,以便可以通过调色板管理器对其进行管理,而不会更新任何用户安装的现有节点。这必须由用户手动完成(请参见下文)。
- (可选)(重新)安装完整Raspbian Pi映像上预先安装的额外节点。
但是,升级Node-Red的过程与安装新的Red-Red相似,因此在本教程中,我们将其视为新的安装,以便使用其他OS版本的人们可以跟随。
请按照以下步骤在Raspberry Pi上安装/升级Node-RED。
我们首先从pi升级和更新开始,以确保pi上的所有内容都是最新的,并避免兼容性问题。通过打开终端或通过ssh并运行来执行此操作;
Sudo apt-get更新
其次是
sudo apt-get升级
完成此操作后,在终端上运行下面的bash脚本;
bash <(curl -sL
在bash脚本将做下面的事情
- 询问您是否要(重新)安装额外的Pi节点
- 保存在/ usr / lib / node_modules中找到的所有全局安装的 节点红色 节点的列表
- apt-get删除现有的Node-Red
- 从/ usr / bin和/ usr / local / bin删除任何节点红色的二进制文件
- 从/ usr / lib / node_modules和/ usr / local / lib / node_modules中删除所有节点红色模块
- 检测是否从Node.js软件包或Debian安装了Node.js
- 如果不是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上已经存在的任何项目。
安装完成后,您现在应该在菜单的“编程应用程序”列表下看到“红色节点”图标。
在Raspberry Pi中启动Node-RED
可以通过树莓派桌面上的菜单部分,通过终端或通过ssh启动Node-Red。
要在树莓派的桌面上启动,请单击“树莓派”图标,将鼠标悬停在“编程”上,然后单击“ Node-RED”(菜单>“编程”>“ NodeRed”)以启动它。
也可以通过运行从ssh或终端启动它;
节点红色启动
您应该看到一个类似于下面的窗口,该窗口显示桌面上的节点红色启动。
看到此内容后,进入 菜单->互联网 并启动Chrome Web浏览器。尽管您的Raspberry pi不需要互联网即可运行Node-Red,但它使用浏览器作为其界面。
启动 Chrome后 ,在地址栏中输入 localhost:1880 ,然后按Enter键。1880是树莓派上的端口,已在该端口上预设了Node-Red进行通信。这将显示节点红色界面,如下图所示。
了解Node-RED接口
所述节点红接口的的包括流动板,所述节点的调色板,调试控制台和信息控制台如上在图像中高亮显示。
所述流面板是其中节点被连接在一起以产生其中在节点红色被称为流程序,而节点调色板包括具有代表性的硬件,协议和软件功能与设备相关联的对象。它包括用于物联网的MQTT等协议,以及用于树莓派等板的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。
首先,滚动到“节点”选项板的底部,您将看到“树莓派pi节点”部分接近结尾,其中有两个标记为rpigpio的节点。这些节点用于与树莓派的GPIO进行通信。节点之一用于输入,而另一个节点用于通过树莓派徽标的位置来区分输出。对于输入节点,徽标位于文本之前,而对于输出节点,徽标位于文本之后,如下图所示。
在本教程中,我们将利用输出节点,将其拖动到界面的流部分。此步骤类似于使用 pinMode() 命令将Arduino的特定引脚声明为Output 。双击Output节点,将打开一个弹出窗口,如下所示,您可以编辑该节点的属性。
在引脚属性部分下,选择GPIO17(引脚11)。然后将type属性设置为“ digital Output ”并勾选“ Initialize pin state?”。复选框,将“ pin的初始级别”选项保留为低(0)。为节点提供任意名称,然后单击完成按钮。
节点的名称应自动更改为您在属性设置下输入的名称。例如,我将其命名为LED,因此节点名称也更改为LED,如下所示。
要打开/关闭LED,我们需要使用一个输入来驱动动作。虽然我们可以使用按钮,但我想用它来引入Node-RED中的功能,该功能允许将消息注入流中。这些功能称为注入节点。我们将使用两个注入节点。一种是打开LED,而另一种是关闭LED。
转到节点选项板,然后将注入节点拖到流程中。它是调色板中带有箭头的第一个节点,注入节点在下图中突出显示。
双击它以编辑其属性。通过单击有效负载前面的下拉列表,将数据类型更改为字符串,然后在有效负载框中输入1。有效负载框中的值是当按下节点时将注入流中的值。将节点名称设置为“ ON”。按“ Done”按钮保存。
对第二个节点重复以上操作,将有效负载值设置为“ 0”,并将其名称设置为“ off”,如下所示。
下的属性功能,所述 重复 下拉可以用于自动注射所以按钮被以一定间隔压。这可用于创建眨眼效果。如下所示将节点连接在一起,方法是将一个节点上的灰色点拖到另一个节点上以创建流。
完成此操作后,我们现在已经完成了第一个“红色节点流程”。
下一步是我们将流程部署在树莓派上。单击红色的部署按钮。您应该在屏幕顶部看到“成功部署”的闪存,如下所示。
单击注入节点后面的灰色按钮以激活每个节点。
通过单击“ on”注入节点,您应该看到已成功显示“ on”注入并且LED亮起。单击“关闭”注入节点时,LED应当熄灭。
而已。在此页面底部的视频链接中可以找到该设置的完整工作。
在Raspberry Pi的Node-RED界面中添加按钮/开关
为了说明如何在输入流中连接/添加输入元素,我们将通过添加一个按钮来替换注入节点来进一步处理上述流。
将按钮连接到树莓派上,这样,按钮的一条腿接地,另一条腿连接到树莓派的GPIO引脚4(引脚11),如下图所示。
完成此操作后,返回到Node-Red并删除我们先前使用的两个注入节点,方法是单击节点并按键盘上的Delete键,或者双击节点并在弹出窗口中按Delete键。完成此操作后,将节点选项板向下滚动到raspberry pi部分,然后选择输入节点。它是在节点名称之前左侧带有raspberry pi图标的节点。
将节点拖动到流中,然后双击它以编辑属性。将引脚设置为GPIO 4(引脚11),并将电阻器前面的下拉菜单设置为上拉。这会将GPIO 4“拉”为高电平。设置属性后,单击完成按钮。
为了使我们能够在按下开关时做出合理的决定,而不仅仅是将GPIO4接地,我们将使用开关节点。在功能部分下的节点面板中搜索它,然后将其拖到流程中。
切换节点允许您以类似于“ if”语句的方式进行决策。可以将其设置为具有不同的输出,具体取决于输入值。在本教程中,我们将为它配置两个输出路径,这样,当msg.payload属性等于1(未按下开关)时,它应该遵循第一个路径,如果还有其他输入,则应遵循第二个路径在输入处观察到非1(按下开关)。使用“ +添加”按钮添加路径。双击节点并按上述说明进行配置。完成后单击完成。
按下完成按钮后,您应该立即看到两条路径反映在切换节点的外观中,因为它现在在输出端将有两个结点。
接下来,我们需要引入一个“ change”节点。change节点将用于根据参数节点的结果来设置LED的状态。
我们将使用两个变更节点。如下图所示,第一个的有效负载将设置为0,第二个的有效负载将设置为1。编辑两个属性后,单击完成。
为了更好地说明,还记得我们使用了上拉电阻吗?因此,当尚未按下按钮时,该引脚上的输出将为HIGH(1),这意味着如果我们将其通过开关节点,则LED将会“点亮”,因为事实并非如此,我们将使用“更改”节点将其设置为LOW(0)。第二个“更改”节点用于将值设置为一个,以便当检测到GPIO引脚4的高电平状态以外的任何其他值时,它应将LED点亮“开”,因为这意味着按钮已被按下。如下图所示,将变更节点和其余节点连接在一起。
完成此操作后,我们现在就可以部署项目了。遍历连接以确保一切正常,然后单击部署按钮。像往常一样,如果成功,您应该会看到部署成功弹出窗口,现在可以使用开关来控制LED了。
尽管Node-Red可以轻松快速地构建构建原型而不用担心代码,但它实际上并不是最合适的选择,特别是对于需要灵活性和控制程序的经验丰富的开发人员而言。尽管如此,它还是一个很棒的工具,可让您在几分钟内完成原型构建。
直到下一次!