当前位置: 首页 > 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.jsqmd.com/news/927428/

相关文章:

  • 从协议到代码:手把手拆解一个NR C-DRX Inactivity Timer的仿真模型(附Python示例)
  • esp开发与应用(ps2摇杆的开发)
  • AI驱动按需制造:从预测生产到实时响应的范式革命
  • 2025-2026年沐浴露品牌推荐:十大口碑评测适用场景留香持久案例专业成分价格 - 品牌推荐
  • Cadence SPB17.4导出的Gerber,为啥CAM350 V10.7CN死活读不了槽孔文件?一个版本兼容的‘中间人’解法
  • 一个 query 写五份草稿、互评后再选最好的那一条去更新——DRAFT-RL 把 RL 训练里的“独白“改成了“群聊“
  • 备考提效新方案:百考通AI,解锁智能学习全新模式
  • 构建SOC 2合规云原生数据湖:金融级安全架构实战指南
  • AI内容创作:区分生成与编辑,掌握人机协作的伦理与技巧
  • 探秘寻宝录:《一念成仙》藏宝图与寻宝小队全景攻略
  • SI9000损耗仿真实操:从参数设置到S参数导出,一篇搞定联合仿真
  • 2026年25-30万新能源SUV车型推荐:TOP5评测专业选择指南场景价格 - 品牌推荐
  • ES6 新特性完全指南:JavaScript 的现代进化
  • 用CH341A编程器和NeoProgrammer给BK7231U烧录固件,手把手教你搞定(附Python脚本)
  • Character.AI用户流失复盘:AI产品如何平衡技术、成本与用户体验
  • H5调用摄像头踩坑实录:从本地开发到HTTPS调试,我用Ngrok解决了所有问题
  • 避开这些坑!用51单片机做温控项目时,DS18B20时序、LCD1602驱动和按键消抖的实战解决方案
  • X-AnyLabeling安装踩坑实录:从源码编译到exe直装,哪种方式更适合你?
  • DeepSeek 大模型新手快速上手指南
  • 2026年25-30万新能源SUV车型推荐:TOP5排名城市通勤防续航焦虑评测专业价格 - 品牌推荐
  • 别再死记硬背UML箭头了!用Java/Spring Boot实战案例,5分钟搞懂类图四种关系
  • Qt/C++ ORM选型实战:为什么我最终选择了QxOrm而不是Qt自带的SQL模块?
  • LLM在Verilog验证中的应用与AutoVeriFix框架解析
  • 2025-2026年工控主板厂家推荐:五大评测工业机器人防震动干扰案例适用场景价格 - 品牌推荐
  • OpenAI技术落地实战:从内容创作到环保监测的AI应用案例解析
  • GPT-Image-2:AI图片生成进入实用时代
  • 树莓派4B+Python+OpenCV:用PCA9685驱动舵机云台,实现人脸追踪的保姆级避坑指南
  • 保姆级教程:用Python模拟CCC数字钥匙的NFC APDU通信(附TLV解析源码)
  • 2026年十大沐浴露品牌推荐:专业评测价格对比适用场景注意事项 - 品牌推荐
  • 生成式AI如何成为无障碍开发的智能副驾驶