用树莓派Node.RED快速开发触控屏幕的图形控制接口
2023/08/01 |By G小编
随着自动化控制与物联网技术的蓬勃发展,人机接口系统(HMI)的设计也愈来愈偏向直观好用的触控式图形控制接口。相较于传统型态的按钮、旋钮、拉杆等控制组件,使用触控屏幕来操纵/监控机器生产过程更具备下列优点:
- 易于使用:图形接口直观易于理解,有助于新人快速上手
- 便于更新:以软件为基础的GUI 可以随时新增控件,有利于随时依据产线需求修正操控功能
- 安全性更强:传统型的人机界面利用钥匙来做操控动作的管制,而触控的图形控制接口可以利用软件做警语提醒、二次输入确认以及密码解锁动作等管制,对于机器操作的安全管制更强。
虽然触控人机接口设计是一项专业课题,但使用树莓派与自由软件Node.RED来设计触控图形接口却简单易学,不需要太多程序设计能力,一般人也可以在家快速创建一个小型的触控人机接口。现在就跟着我们一起来做智慧家庭的触控HMI吧!
1. 安装Node.RED
Node.RED是IBM基于Node.js所开发的可视化程序设计软件,利用拖拉图目标方式,就可以建立流程编码,大大减少开发者撰写程序的负担,由于软件免费而且上手快速,目前广泛应用于物联网的应用程序开发。
树莓派操作系统Raspberry Pi OS 32bits已经内建有Node.RED应用程序,打开树莓派选单,在Programming中,即可以找到Node-RED。
若是在树莓派使用其它版本的操作系统,则可以打开Terminal,输入下列指令,手动安装Node.RED(Node-RED 安装说明)
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
⏺ 开启Node-RED
① 直接点击Node-Red图标执行Node.RED
② 开启Chromium ⇨ 在网址列输入 本机IP:1880,本文的范例为 192.168.101.251:1880 (Node.RED的预设端口为1880)
🎁 备注:如何查询树莓派本机IP
打开Terminal ⇨ 输入 hostname -I
2. 增加Node.RED 节点
安装好的Node.RED只包含一些基本节点,若是希望开发控制连接树莓派GPIO脚位装置的流程,则需要加载更多的节点。
⏺ 安装仪表板显示所需的节点:点击右上角的选单,选择[manage palette] ⇨点选 [install] ⇨ 输入”dashboard"搜寻 ⇨ 选择安装 [node-red-dashboard]
⏺ 安装树莓派gpio脚位的相关节点:输入”gpio” 搜寻 ⇨选择安装 [node-red-node-pi-gpio](注:树莓派专用版Node-RED已内附此套节点)
⏺ 安装DHT传感器的节点:输入”dht” 搜寻 ⇨ 选择安装 [node-red-contrib-dht-sensor] ( 注:本范例使用DHT-11传感器)
⏺ 安装仪表板的LED节点:输入”ui-led” 搜寻 ⇨ 选择安装 [ node-rede-contrib-ui-led]
⏺ 安装timer节点:输入”timer” 搜寻 ⇨ 选择安装 [node-red-contrib-timer]
🎁 备注:在Node.Red网站可以找寻更多有用的节点与流程模板 https://flows.nodered.org/search?type=node
3. 控制GPIO装置 on/off
③ 拖拉一个rpi-gpio out 节点至页面,并指定其BCM GPIO脚位、勾选脚位的默认值为0。
④ 参考步骤①新增一个LED OFF的button,连接至PIN 10;另外由dashboard中拖拉LED节点至页面并联结至两个button节点。设定LED 节点:收到number=1 时显示红色、收到number=0时 显示灰色。
⑤ 设计仪表板的版面:开启右上角的选单,点选Dashboard 仪表板选单,在dashboard设定选单中,点选[layout ]按钮即可开启仪表格的图形设计页面。
在右上角Width 设定仪表板的宽度,同时拖拉/缩放各节点至所需要的位置。
(注:节点size若为预设的auto则无法拖拉缩放,须先设定一个尺寸)
⑥ 仪表格设计完成后,点选右上角的[Deploy]按钮采用。点选dashboard按钮前往仪表板的前台页面,即可看到控制LED开关的按钮。在触控屏幕上点击LED ON 、LED OFF来开启/关闭红色LED灯。
4. 读取并显示GPIO 传感器数
Node.RED能读取GPIO上的传感器,并将数据显示为仪表或图表。以树莓派常用的温湿度计 DHT-11为例,设计一个观测/记录房间温湿度的仪表板。
⏺ 硬件安装
將DHT-11的電源腳VCC接到樹莓派3.3V腳位
將DHT-11的接地腳GND接到樹莓派GND腳位
將DHT-11的訊號腳SIG接到樹莓派GPIO 04腳位
⏺ 软件设定
新增一个Flow 2页面,新增并连结下列节点
① 由common 新增一个[timestamp]节点,设定为每3秒间隔
② 由Raspberry Pi拖拉一个rpi-dht22 节点,设定讯号脚位为GPIO 04
③ 设定数据函数,温度留白、湿度须设定为msg.payload=msg.humidity
④ 设定仪表外观:仪表名称、显示数值范围与单位、显示颜色变化。
⑤ 设定显示图表:设定XY轴的显示格式。
⑥ 按[layout]调整仪表板版面。
⑦ 点选[Deploy]后,至仪表板查看DHT-11温湿度与趋势图。
5. 设定GPIO 的定时开关
利用timer节点可快速建立一个定时器,点选Node.RED仪表板的按钮启动定时器并开启GPIO装置,并在时间结束时自动关闭。
⏺ 硬件安装
将蓝色LED灯连接到树莓派GND脚位与GPIO18脚位
⏺ 软件设定
建立一个流程如下图:
① 新增一个点击产生true的按钮
② 设定60秒的定时器,送出1 或 0
③ 设定GPIO装置的连接脚位并设默认值为0。
④ 设定LED显示灯
⑤ 用gauge节点做定时器的倒数读秒
⑥ 点选[layout]设计仪表板版面后,点选[Deploy]采用
⑦ 在仪表板点击按钮,打开蓝色LED并计时、60秒后关闭
6. 用滑杆控制LED亮度
Dashboard的slider节点为滑杆控件,可以用来做为控制GPIO电流量的输入项;简单设计一个滑杆,来操控LED灯的亮暗。
⏺ 硬件安装
将绿色LED灯连接到树莓派GND脚位与GPIO12脚位
⏺ 软件设定
建立一个流程如右图:
① 新增一个timestamp节点,设定送出起启值为0
② 新增slider节点,设定名称与0~255的范围
③ 设定gpio out 节点为GPIO12,选择类型为PWM output。
④ 设定gauge 节点的显示方式如下
⑤ 将这些节点都设定为新group -slider,点击[layout]设定显示版面
⑥ 点击[Deploy]后,到dashboard 测试以滑杆调整绿色LED的亮度
7. 总结
Norde-RED流程开发完成后,记得在Terminal中输入下列命令,设定树莓派开机自动执行Node-RED。
sudo systemctl enable nodered.service
开机后只须开启浏览器,点击Node-RED dashboard 网站,便能立即查看感测数据、控制装置开关。
利用Node-RED开发触控图形控制接口简单又有趣,赶快试试让触控操作的专业仪表板为你的创客专题大大加分!