1. 项目背景与核心需求
在工业自动化、农业大棚监测、实验室环境监控等场景中,温湿度数据的实时采集与监控是基础需求。传统的人工记录方式效率低下且容易出错,而基于RS485总线的分布式采集方案则能完美解决这一问题。
RS485通信具有以下突出优势:
- 传输距离远(理论可达1200米)
- 抗干扰能力强(差分信号传输)
- 支持多点组网(最多32/128个节点)
- 布线成本低(双绞线即可)
上位机作为监控系统的"大脑",需要实现三大核心功能:
- 通过RS485接口与下位机(如STM32等MCU)稳定通信
- 解析Modbus RTU等标准协议格式的温湿度数据
- 提供直观的数据展示界面和异常报警功能
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件系统架构设计
2.1 典型组网方案
code复制[温湿度传感器] <-I2C-> [STM32下位机] <-RS485-> [USB转485转换器] <-USB-> [上位机PC]
关键硬件选型建议:
- 传感器:DHT22(精度±0.5℃)或SHT30(精度±0.2℃)
- 下位机:STM32F103C8T6(成本低,资源丰富)
- 转换器:CH340G芯片的USB转485模块(稳定性好)
2.2 RS485电路设计要点
在实际项目中,RS485接口电路常出现通信不稳定的问题,根源多在硬件设计:
csharp复制// 典型问题案例:未启用终端电阻
// 正确做法:在总线两端各接120Ω终端电阻
// 线路较长时(>50米)建议增加TVS二极管防护
特别提醒:
- A/B线必须使用双绞线,避免平行布线
- 接地采用单点接地原则
- 长距离传输时建议增加屏蔽层
3. 通信协议实现
3.1 Modbus RTU帧格式解析
标准查询帧示例(读取湿度值):
code复制01 03 00 00 00 01 84 0A
- 01:设备地址
- 03:功能码(读保持寄存器)
- 00 00:起始地址
- 00 01:寄存器数量
- 84 0A:CRC校验
3.2 C#串口通信实现
使用System.IO.Ports命名空间的关键步骤:
csharp复制SerialPort mySerialPort = new SerialPort("COM3", 9600,
