当前位置: 首页 > news >正文

Node-RED实战:用node-red-contrib-modbus节点5分钟搞定温湿度传感器数据采集

Node-RED极简实战:5分钟构建Modbus-RTU温湿度监测系统

在工业物联网和智能楼宇领域,温湿度监测是最基础却至关重要的环节。传统的数据采集方案往往需要开发者深入理解串口通信、协议解析和校验算法,而Node-RED配合node-red-contrib-modbus节点彻底改变了这一局面——就像用乐高积木搭建专业级监测系统,无需焊接电路就能实现稳定可靠的数据采集。

1. 环境准备与硬件连接

1.1 硬件选型指南

市面常见的Modbus-RTU温湿度传感器主要分为两类:

  • 86型面板式:如海凌科HLK-TH20,安装便捷但探头固定
  • 分体探头式:如炜盛科技SHT20系列,探头可分离部署

关键参数对比表:

型号测量范围精度供电电压典型价格
HLK-TH20-40~80℃,0~100%RH±0.5℃/3%5-24V DC¥120
SHT20-MODBUS-40~125℃,0~100%RH±0.3℃/2%3.3-5.5V¥85

提示:工业场景建议选择24V供电型号,抗干扰能力更强

1.2 接线实战

以最普遍的RS485接线为例:

  1. 使用双绞线连接传感器A/B端子到转换器
  2. USB转485转换器接入工控机
  3. 给传感器单独供电(注意电压匹配)

常见故障排查:

  • 通信失败时首先检查终端电阻(120Ω)
  • 长距离传输需增加485中继器
  • 接地环路问题会导致数据异常
# Linux下查看串口设备 ls /dev/ttyUSB*

2. Node-RED环境配置

2.1 核心组件安装

通过npm一键获取所需模块:

npm install -g node-red npm install node-red-contrib-modbus npm install node-red-dashboard

2.2 串口参数配置

在Modbus客户端节点中需设置:

  • 波特率:9600/19200/38400(需与传感器一致)
  • 数据位/停止位:通常8N1
  • 响应超时:建议2000ms以上

典型配置代码片段:

{ "type": "modbus-client", "clienttype": "serial", "serialPort": "/dev/ttyUSB0", "serialBaudrate": "9600", "serialDatabits": "8", "serialStopbits": "1" }

3. Modbus节点深度配置

3.1 寄存器地址映射

以某型号温湿度传感器为例:

寄存器地址数据类型说明换算公式
0x0000INT16温度原始值实际值×0.1
0x0001UINT16湿度原始值实际值×0.1
0x1000UINT32设备序列号直接读取

3.2 功能码选择技巧

  • FC3:最常用的读取保持寄存器
  • FC4:读取输入寄存器(只读)
  • FC16:批量写入寄存器

配置示例:

// 读取温湿度的sequencer配置 { "name": "readTH", "unitid": 1, "fc": "FC3", "address": "0", "quantity": "2" }

4. 数据流构建与优化

4.1 完整流结构设计

典型数据处理流程:

  1. Modbus读取节点(定时触发)
  2. 数据转换函数节点
  3. Dashboard图表输出
  4. MQTT发布节点
# 数据转换函数示例 def convert_modbus(msg): if len(msg.payload) >= 2: msg.temperature = msg.payload[0] * 0.1 msg.humidity = msg.payload[1] * 0.1 msg.payload = { "ts": Date.now(), "temp": round(msg.temperature,1), "humi": round(msg.humidity,1) } return msg

4.2 性能优化技巧

  • 使用批处理模式减少请求次数
  • 设置合理的轮询间隔(通常5-10秒)
  • 启用Modbus节点的缓存功能
  • 重要数据添加异常检测逻辑

注意:避免同时发起过多请求,可能导致从设备响应超时

5. 高级应用场景拓展

5.1 多设备组网方案

通过修改Unit ID实现设备轮询:

// 动态设置设备地址 msg.unitid = flow.get("currentDevice") || 1; flow.set("currentDevice", msg.unitid % 32 + 1); return msg;

5.2 数据持久化方案

推荐组合:

  • InfluxDB + Grafana:专业时序数据分析
  • SQLite:轻量级本地存储
  • CSV文件:快速导出备份

配置示例:

{ "type": "influxdb out", "host": "127.0.0.1", "port": "8086", "dbname": "sensor_data", "measurement": "environment" }

在实际机房监控项目中,这套方案成功替代了原有的SCADA系统,将部署时间从3天缩短到2小时。特别是当需要临时增加监测点时,只需复制节点修改地址即可,这种灵活性在应急场景中表现出色。

http://www.zskr.cn/news/1438760.html

相关文章:

  • 从协议到代码:手把手拆解一个NR C-DRX Inactivity Timer的仿真模型(附Python示例)
  • Cadence SPB17.4导出的Gerber,为啥CAM350 V10.7CN死活读不了槽孔文件?一个版本兼容的‘中间人’解法
  • 一个 query 写五份草稿、互评后再选最好的那一条去更新——DRAFT-RL 把 RL 训练里的“独白“改成了“群聊“
  • 构建SOC 2合规云原生数据湖:金融级安全架构实战指南
  • 探秘寻宝录:《一念成仙》藏宝图与寻宝小队全景攻略
  • SI9000损耗仿真实操:从参数设置到S参数导出,一篇搞定联合仿真
  • Qt/C++ ORM选型实战:为什么我最终选择了QxOrm而不是Qt自带的SQL模块?
  • GPT-Image-2:AI图片生成进入实用时代
  • 2026年十大沐浴露品牌推荐:专业评测价格对比适用场景注意事项 - 品牌推荐
  • 从Matlab到Multisim:一个12V直流稳压电源的完整仿真与实战指南(附PCB文件)
  • 从《卡农》到流行歌:揭秘乐谱中‘连跳音’如何塑造音乐的呼吸与律动
  • 1516个新商家成交破百万背后:AI如何重塑京东618的“新质生产力”?
  • 海口装修公司排名如何形成?行业内部解读评选标准
  • 告别nRF Mesh App:用两块ESP32S3手把手搭建BLE Mesh网络(含完整代码分析)
  • 别再只做音视频了!用WebRTC数据通道(DataChannel)实现一个实时文件共享工具
  • STM32H7 ADC+DMA数据采集实战:用CubeMX配置Cache与MPU,告别数据错乱
  • 从3D电影到液晶屏:聊聊偏振光技术在我们身边的那些‘隐藏’应用
  • 如何高效实现树莓派HX711传感器数据采集:5个关键技术优化方案
  • 群面智伴8:从“能记住”到“会推进”:群面智能体的全局记忆、发言质量控制与评估闭环
  • rust学习 字符串
  • RV1126边缘计算盒子在智慧零售的落地:2T算力如何同时处理6路摄像头,实现客流分析与货架监控
  • NExT-GPT:实现任意模态转换的多模态大语言模型架构与实战
  • 构建统一API网关:从适配器模式到编排协同的架构实践
  • Inflection AI崛起之路:从隐秘项目到40亿美元AI独角兽的深度解析
  • 通过提交 PR 完成一次 openEuler 社区贡献
  • 深入TongLINKQ架构:从一条消息的旅程理解其核心进程与队列模型
  • AI智能体工程化管理:Define-Deliver-Drive框架实战指南
  • 如何将平板电脑变成Linux副屏:VirtScreen完整使用指南
  • 【元器件专题】MOS管开通过程波形分析
  • 2026年电话外呼机器人老牌企业亲测效果排行榜