12_Node-RED_树莓派实战_读取温湿度传感器

12_Node-RED_树莓派实战_读取温湿度传感器一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情。 经过前面几期的教程,我们已经认识了Node_RED的几种基础节点。接下来我们就进入实战阶段。本期我们使用使

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第8天,点击查看活动详情

经过前面几期的教程,我们已经认识了Node_RED的几种基础节点。接下来我们就进入实战阶段。本期我们使用使用Node_RED来读取树莓派下的温湿度传感器,并通过dashboard节点显示出来,效果如下:

Untitled.png

准备工作

这里主要Node_RED的操作,对树莓派的安装与配置步骤就不做详细讲解了,有疑问可以留言。

1、树莓派安装Node_RED

请参考前面的文章:树莓派安装node-red

2、树莓派连接温湿度传感器

我们将温湿度的数据连接到树莓派3B+的第12个物理针脚,对应的BCM编码为18,GPIO编码为1

Untitled 1.png

Untitled 2.png

Node_RED组态开发

配置后的流如下图,我们接下来一一进行讲解。

Untitled 3.png

  1. 周期触发节点

    这是一个inject节点,作用是周期触发数据流,配置如下

Untitled 4.png

  1. 温湿度读取节点

    读取温湿度传感器的数据,我们要安装一个读取DHT11或DHT12的专用节点。在“节点管理”中搜索”node-red-contrib-dht-sensor“并安装。

Untitled 5.png

安装成功后,在左侧Raspberry Pi分组中拖拽rpi-dht22到流中,我们配置引脚类型为BCM GPIO模式,对应引脚编号为18。

Untitled 6.png

节点读取到的数据格式如下:

```json
{
    "payload": "32.00",
    "topic": "rpi-dht22",
    "_msgid": "bbf50818f197189e",
    "humidity": "28.00",
    "isValid": true,
    "errors": 0,
    "location": "温湿度读取",
    "sensorid": "dht11"
}
```

3. 数据转换节点

数据转换节点是一个function节点,功能是将读取到的温湿度数据分别输出到下一节点。

Untitled 7.png

  1. 温度、湿度节点

    温湿度节点是两个dashboard仪表盘,用来显示实时的温度、湿度。dashboard节点与node-red-contrib-dht-sensor一样需要手动安装,在节点管理中,搜索”node-red-dashboard“安装。

Untitled 8.png

安装成功后,拖拽两个”gauge“节点,分别配置温度、湿度

Untitled 9.png

Untitled 10.png

配置完毕后,我们访问http://192.168.1.243:1880/ui/,来查看实际效果

Untitled 11.png

  1. 导出的流程数据如下:
    [
        {
            "id": "c96a2e4a3aed3e67",
            "type": "tab",
            "label": "流程 1",
            "disabled": false,
            "info": "",
            "env": []
        },
        {
            "id": "19ca8d2f55b633e1",
            "type": "rpi-dht22",
            "z": "c96a2e4a3aed3e67",
            "name": "温湿度读取",
            "topic": "rpi-dht22",
            "dht": "11",
            "pintype": "0",
            "pin": "18",
            "x": 290,
            "y": 280,
            "wires": [
                [
                    "02b1abc15e998bee"
                ]
            ]
        },
        {
            "id": "d0d597f1fc372e45",
            "type": "inject",
            "z": "c96a2e4a3aed3e67",
            "name": "周期触发",
            "props": [
                {
                    "p": "payload"
                },
                {
                    "p": "topic",
                    "vt": "str"
                }
            ],
            "repeat": "1",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payloadType": "date",
            "x": 110,
            "y": 280,
            "wires": [
                [
                    "19ca8d2f55b633e1"
                ]
            ]
        },
        {
            "id": "0ad987b4cb606a8b",
            "type": "ui_gauge",
            "z": "c96a2e4a3aed3e67",
            "name": "",
            "group": "84277f27ca55021f",
            "order": 0,
            "width": 0,
            "height": 0,
            "gtype": "gage",
            "title": "温度",
            "label": "℃",
            "format": "{{value}}",
            "min": "-10",
            "max": "50",
            "colors": [
                "#00b500",
                "#e6e600",
                "#ca3838"
            ],
            "seg1": "",
            "seg2": "",
            "className": "",
            "x": 710,
            "y": 240,
            "wires": []
        },
        {
            "id": "dba2b67a72039bec",
            "type": "ui_gauge",
            "z": "c96a2e4a3aed3e67",
            "name": "",
            "group": "84277f27ca55021f",
            "order": 0,
            "width": 0,
            "height": 0,
            "gtype": "gage",
            "title": "湿度",
            "label": "%rh",
            "format": "{{value}}",
            "min": "0",
            "max": "100",
            "colors": [
                "#00b500",
                "#e6e600",
                "#ca3838"
            ],
            "seg1": "",
            "seg2": "",
            "className": "",
            "x": 710,
            "y": 320,
            "wires": []
        },
        {
            "id": "02b1abc15e998bee",
            "type": "function",
            "z": "c96a2e4a3aed3e67",
            "name": "数据转换",
            "func": "// 设置两个返回值,分别返回温度湿度\nmsg1={\"payload\":msg.payload}\nmsg2={\"payload\":msg.humidity}\nreturn [msg1,msg2]",
            "outputs": 2,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [],
            "x": 460,
            "y": 280,
            "wires": [
                [
                    "0ad987b4cb606a8b"
                ],
                [
                    "dba2b67a72039bec"
                ]
            ]
        },
        {
            "id": "84277f27ca55021f",
            "type": "ui_group",
            "name": "仪表盘",
            "tab": "853119175c6746b7",
            "order": 1,
            "disp": true,
            "width": "6",
            "collapse": false,
            "className": ""
        },
        {
            "id": "853119175c6746b7",
            "type": "ui_tab",
            "name": "Home",
            "icon": "dashboard",
            "disabled": false,
            "hidden": false
        }
    ]

今天的文章12_Node-RED_树莓派实战_读取温湿度传感器分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/16240.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注