由测评者honestqiao提供
视频抢先看↓↓↓
这篇分享,内容较长,涉及知识点多,需耐心阅读,目录如下:
前言
一、安装node-red
二、系统命令控制led
三、led权限设置
四、node-red控制系统led
五、系统命令控制gpio
六、node-red控制gpio
七、开发板上的s3按键使用
八、在node-red中使用s3按键控制led
九、node-red使用i2c接口读取sht30温湿度传感器数据
十:node-red使用仪表盘显示温湿度传感器数据
十一:总结
前言:
如果有心查看米尔myc-j1028x核心板及开发板的官方界面:
你会发现,介绍中透露出浓厚的工业味儿。工业!工业!工业!
今天,我们就在myc-j1028x开发板上,搭建node-red环境,将开发板变身为工业物联网控制网关。
很多人了解或者知道node-red,是从智能家居或者小型物联网控制开始的,有的人认为只是一个类似的图形界面编程的工具。
其实,在工业互联网中,node-red可以用于数据收集、关联性触发控制、仪表呈现等,在低成本投入的情况下,也能获得较好的效果。
一、安装node-red
安装node-red,可以参考官方的文档:https://nodered.org/docs/getting-started/raspberrypi
虽然这篇文档,是针对树莓派的,但是对于debian系的系统,都是可以参考的。
bash /sys/class/gpio/export
echo out > /sys/class/gpio/gpio425/direction
for i in {1..100};do
echo $((i%2)) > /sys/class/gpio/gpio425/value
sleep 1
done
执行完命令后,连接到gpio3_9引脚上的led,将每秒闪烁一次。
测试控制成功后,我们就可以到node-red中进行控制了。
六、node-red控制gpio
要在node-red中控制gpio,可以安装opi-gpio插件,按照以下步骤安装即可:
安装完成后,在右边组件选择栏,就会出现orange pi,选择其中的output pin,然后将之前设置的injection 0和1连接到新添加的控件上,再按照下面的步骤,设置对应的gpio端口号。
因为gpio3_9对应425,所以pin填写425即可。但orange pi在填写后,再次打开的时候,界面会变成初始状态,所以务必仔细填写。
填写完成,点击右上角的部署,连接到gpio3_9上的led,就会开始闪烁了,和板子上的d22-led同步。
七、开发板上的s3按键使用:
在开发板上,有一个可供用户编程使用的按键s3:
具体位置如下:
s3按键,使用系统/dev/input/event0来监听接收,普通用户使用,需要做如下设置:
sudo usermod -a -g input $user
sudo vim /etc/udev/rules.d/99-event.rules
kernel==event[0-9]*, subsystem==input, tag+=uaccess
设置好以后,重启才能生效。
重启后,使用evtest指令测试:
s3按键后,就能够收到按键的消息了。
为了能够更好的接收到按键信息,我们需要使用python去进行检测,这需要使用到python3-evdev库,先安装:
pip3 install evdev
然后,使用下面的python脚本进行测试:
from evdev import inputdevice
from select import select
dev = inputdevice('/dev/input/event0')
while true:
r,w,x=select([dev],[],[])
for event in dev.read():
print(event)
按下s3按键然后释放,就会收到信息了:
需要注意的是,s3按键使用系统event接收,按下去和释放,都会触发一次。
按下去对应:
event at 1664670749.634839, code 02, type 01, val 01
event at 1664670749.634839, code 00, type 00, val 00
释放对应:
event at 1664670750.350823, code 02, type 01, val 00
event at 1664670750.350823, code 00, type 00, val 00
我们可以将程序完善一下,直接按键输出1,释放输出0:
from evdev import inputdevice
from select import select
dev = inputdevice('/dev/input/event0')
while true:
r,w,x=select([dev],[],[])
for event in dev.read():
if event.code == 2 and event.type == 1:
print(value: %d % event.value)
按下s3按键然后释放,就会收到下面的信息了:
这样,我们就准备好将按键值提供给node-red使用了。
八、在node-red中使用s3按键控制led:
要在node-red中,获取到python提供的按键值,然后控制led,需要使用下面的逻辑:
在node-red中的控制逻辑如下:
下面进行详细的说明。
首先,我们再次调整上面的监控脚本,使得监控按键的逻辑,符合实际需要,即:
根据按键次数,奇数次按键输出1(用于点亮led),偶数次按键输出0(用于熄灭led)
默认输出0
注意:这里是根据按键奇偶次数来输出1或者0,而不是根据按下和释放来输出1或者0
具体代码如下:
from evdev import inputdevice
from select import select
dev = inputdevice('/dev/input/event0')
keypress_times = 0
print(keypress_times % 2)
while true:
r,w,x=select([dev],[],[])
for event in dev.read():
if event.value == 1:
keypress_times = keypress_times + 1
print(keypress_times % 2)
将上述代码保存到 /home/honestqiao/projects/event/evdev_key.py (具体路径,请根据你的实际情况设定),然后运行测试:
测试无误后,就可以在node-red中真正调用了。
要在node-red中,启动运行上面的监听脚本,需要使用到node-red-node-daemon插件,安装即可:
然后,按照下面的方式,使用daemon控件并进行设置:
因为evdev_key.py输出的内容,为【0或者1 并附带回车】,所以node-red收到后,需要进行一次转换,才能使用。
按照下面的步骤,添加转换控件,并设置好转换逻辑即可:
然后,添加gpio3_10对应426引脚控制,并与转换为数字控件进行关联:
忘记说了,我在j18的gpio3_10对应的引脚,连接了第二个led:
然后,再添加一个debug控件,以便能够查看到中间过程的数据信息:
将s3的三个输出、转换数字控件的输出,都连接到debug控件。
点击部署后,在右边,就能看到调试输出信息了。
尝试一下按键,就能够看到脚本输出的字符串信息,已经转换为数字信息,并且gpio3_10连接的黄色led,也能够被正常控制了。
九、node-red使用i2c接口读取sht30温湿度传感器数据:
前面的部分,都是led控制、gpio控制、按键读取,相对比较简单。
下面,再来一个感觉稍微提高一点点的实例,就是使用i2c接口读取sht30温湿度传感器。
在之前看过的电路原理图中,j18接口上,就有i2c接口。
将i2c接口的sht30,连接到j18对应的接口上:
要在普通用户权限下,使用i2c接口,我们又需要在udev中做一些设置:
sudo vim /etc/udev/rules.d/99-i2c.rules
kernel==i2c-[0-9]*, group=i2c
将这行内容,写入到/etc/udev/rules.d/99-i2c.rules,然后重启生效。
重启完成后,在命令下下,测试是否能够找到sht30:
先使用 i2cdetect -l 命令查看一下可供使用的i2c接口:
从上面可以看到,i2c-0、i2c-1可供使用。
然后,再使用 i2cdetect -y 0 和 i2cdetect -y 1 查看i2c挂载的设备:
在i2c-1中,有一个44的设备,这个正是 sht30的默认i2c通讯地址。
可以尝试,把sht30连线断开,再使用 i2cdetect -y 1 查看,有什么不同。
在node-red中,要读取sht3x的数据,可以使用 node-red-contrib-sht 插件:
然后,按照如下步骤,先添加一个injection控件,用于周期性触发,再挂一个sht3x控件,用于读取sht3x的数据,最后再挂一个debug模块,输出调试信息:
逻辑设置完成,点击右上角的部署后,调试区域,就会打印出来,实际读取到的温湿度信息了。
对着温湿度传感器哈哈气,就会发现读取到的数值,发生了变化。
十:node-red使用仪表盘显示温湿度传感器数据:
node-red还有一个迷人又强大的地方,那就是它不仅能够方便你用图形界面设计物联网设备的控制交互流程,还能够很方便的使用仪表盘,提供数据查看界面。
下面,我就在上一步读取到温湿度传感器的基础上,再做一个,可以在手机界面上查看访问的仪表盘。
首先,安装一个dashboard仪表盘控件:
有好多可供选择的,我直接安装了第一个dashboard-evi。其他的,大家也可以尝试一下。
然后,在sht3x空间上,挂两个change,用于转换温湿度值:
上述两个change,一个用于将温度值转换为只有1位小数,一个将湿度值转换为无小数。
而温湿度值,各挂一个gauge,用于显示最终的数据,其内容,参考如下设置即可:
温度gauge:
湿度gauge:
注意,务必需要设置range,也就是数值范围,否则可能不会正常显示。
在第一次设置gauge的时候,如上面的温度gauge,要点 (4) 进入,设置group节点和tab节点,具体如下:
经过以上设置,就能够将温湿度值,输出到仪表盘上了。
为了效果更好,我再添加一个当前日期时间转换,并使用文本控件显示。
先按照下面的步骤,添加一个function控件,别编写转换代码:
function formatdate(value) {
var date = new date(value);
var y = date.getfullyear(),
m = date.getmonth() + 1,
d = date.getdate(),
h = date.gethours(),
i = date.getminutes(),
s = date.getseconds();
if (m < 10) { m = '0' + m; }
if (d < 10) { d = '0' + d; }
if (h < 10) { h = '0' + h; }
if (i < 10) { i = '0' + i; }
if (s < 10) { s = '0' + s; }
var t = y + '-' + m + '-' + d + ' ' + h + ':' + i + ':' + s;
return t;
}
return { payload: formatdate(msg.payload) };
其中的 formatdate() 函数,就是一个js中标准的把当前时间戳转换为yyyy-mm-dd hhss格式的函数。
这也是node-red的一个强大之处,除了编写好的控件,还可以使用脚本进行中间过程的处理。
设置好了日期时间转换,再在其后挂一个text控件,用作显示即可:
全部设计完成后,点击右上角的部署,就可以使用手机进行查看了。
在手机上,访问网址 http://开发板ip:1880/ui ,就能看到如下的界面了:
十一、总结:
这篇分享,基于米尔myc-j1028x开发板,结合node-red,将其变身为工业控制网关。
看到这里,看似分享了不少内容,但涉及到node-red的部分,只有node-red全部功能的万分之一都不到,而且都是非常基础的使用。
对于米尔myc-j1028x开发板的使用,也是用到了实际功能的百分之一都不到。
node-red还有很多很多很多强大的功能,可以方便我们快速的获取外部设备的数据,并编写合适的逻辑处理流程来规整数据,并进行数据的呈现,或者对外部设备进行控制。
而这一切,并不需要特别专业的编程技能,就能够完成。
基于米尔myc-j1028x开发板强劲的运算能力,以及丰富的外设接口,结合node-red所构建的工业控制网关,完全可以应用在实际场合中,发挥重大的作用。
将其部署在工业现场,用于收集、存储、处理和分析网络边缘的数据,能够减轻对云和数据中心的压力。
这套系统,可以通过灵活的i/o简化通信和控制,对数据进行主动采集、解析及过滤、汇聚,来可视化现场数据和控制逻辑,既能方便预测性维护,又能开展实时数据处理与决策。
谷歌Pixel 4a曝光该机将会采用挖孔全面屏设计
城市内涝监测系统解决方案
视频芯片市场被引爆,两大趋势不容错失
音圈模组搭载激光雷达的车型惊艳亮相
远程备份:企业最大资产的生命线
搭建Node-RED环境,将开发板变身为工业控制网关——米尔基于NXP LS1028A开发板
物联网蓬勃发展 2020年人工智能商机高达3000亿美元
安全光栅 如何校对光线
属于 SiC器件的时代也许真的要到来了
OPPOR11、OPPOR11 Plus发布会后续:OPPO R11一款没有短板的拍照旗舰,售价2999起,OPPOR11值得入手吗?
谷歌允许查看并请求从搜索中删除私人信息
连接器镀银技术电镀方面的改进
“智”在城中:未来都市的技术乌托邦
风河扩充其业界领先VxWorks 平台的多核功能
对现有微带结构的抗金属标签天线进行小型化改进设计详解
抢占智能家居大市场 三类企业各显神通
如何构建一个基于ATtiny85的LED矩阵显示器
两款触摸式步进调光灯电路图解析
vivo手机又破世界纪录!1080同时用vivoxplay玩王者荣耀开黑
LDO的应用特点 LDO的应用范围