Skip to content

实验六:PC 端多点数据采集实验 ​

一句话理解

把前面学的东西连成一条完整链路:多个传感器节点 → 网关协调器 → 串口 → PC 管理软件。任务一完成"组网 + 数据上传",任务二用 PC 端软件对数据进行观察、分析与管理。

实验目的 ​

  1. 任务一:利用多个传感器模块与网关协调器组成网络;网关协调器收到无线网络中的数据,传递给 PC 端管理软件;
  2. 任务二:PC 端管理软件对数据进行观察、分析与管理;
  3. 综合掌握:多节点组网、协调器串口转发、PC 端数据处理全流程。

实验器材 ​

器材数量用途
GEC2530 开发板3 块1 网关协调器 + 2 传感器节点
传感器模块(温度/光照/烟雾等)2~3 套采集数据
USB 转串口线1 根协调器 ↔ PC
串口调试助手 / 上位机软件1 套PC 端管理软件
IAR EW for 80511 套编译工程

实验原理 ​

🌡️
传感器节点 ×N
采集温度/光照等
→ 无线发送(定时)
📡 无线
🏛️
网关协调器
接收无线数据
→ 串口(UART)转发给 PC
🔌 串口
💻
PC 管理软件
接收、解析、显示、存储、分析、管理

协调器串口转发流程 ​

协调器收到无线数据后,调用 HAL 串口接口输出:

c
// 在协调器的 AF_INCOMING_MSG_CMD 处理中
case AF_INCOMING_MSG_CMD:
{
  afIncomingMSGPacket_t *MSGpkt = (afIncomingMSGPacket_t *)MSGpkt;
  uint8 len = MSGpkt->cmd.DataLength + 4;  // 加上源地址信息
  uint8 buf[20];

  // 组帧:源短地址(2) + 数据长度(1) + 数据
  buf[0] = LO_UINT16(MSGpkt->srcAddr.addr.shortAddr);
  buf[1] = HI_UINT16(MSGpkt->srcAddr.addr.shortAddr);
  buf[2] = MSGpkt->cmd.DataLength;
  memcpy(&buf[3], MSGpkt->cmd.Data, MSGpkt->cmd.DataLength);

  HalUARTWrite(0, buf, len);   // 串口输出到 PC
}
break;

实验步骤(任务一:组网与数据上传) ​

步骤 1:组网 ​

  1. 编译网关协调器固件(角色:协调器);
  2. 编译 2 个传感器节点固件(角色:终端/路由器,含传感器采集);
  3. 依次下载,确认三个节点组网成功(协调器屏幕显示各节点短地址)。

步骤 2:配置串口 ​

  1. 协调器通过 USB 转串口连接 PC;
  2. 串口助手打开对应 COM 口,波特率与固件一致(如 115200);
  3. 确认协调器初始化时调用了 HalUARTCfg_t 配置串口(波特率、中断模式)。

步骤 3:观察数据上传 ​

  1. 传感器节点开始周期上报数据;
  2. 观察 PC 串口助手实时收到数据帧(源地址 + 数据长度 + 数据);
  3. 记录 2 个节点的数据流。

验证:PC 端能看到两个传感器节点的周期数据 → 组网 + 上传成功。

实验步骤(任务二:PC 端观察、分析与管理) ​

步骤 1:数据解析 ​

编写简单的 PC 端解析脚本(如 Python)或使用带协议解析的串口工具,将原始帧解析为可读信息:

python
# Python 示例:解析串口帧(源地址2 + 长度1 + 数据)
import serial

ser = serial.Serial('COM3', 115200, timeout=1)
while True:
    line = ser.read(20)
    if len(line) >= 3:
        src = line[0] | (line[1] << 8)   # 源节点短地址
        length = line[2]                 # 数据长度
        data = line[3:3 + length]        # 数据内容
        print(f"Node 0x{src:04X}: {data.hex()}")

步骤 2:数据展示与存储 ​

  1. 用表格/曲线展示各节点数据(可用 Excel、Python matplotlib 或上位机);
  2. 将数据保存为 CSV/数据库,形成历史记录;
  3. 演示:采集 5 分钟,展示两个节点的数据曲线。

步骤 3:数据管理 ​

  1. 设定阈值与告警:如温度超过 30℃ 时 PC 端提示告警;
  2. 实现反向管理:PC 端下发指令 → 协调器 → 指定传感器节点执行(如点亮 LED、控制蜂鸣器);
  3. 展示"PC 端对节点的管理能力"。

验证:

  • 数据曲线正常显示 → 分析成功;
  • 阈值告警触发 → 管理成功;
  • PC 下发指令节点响应 → 双向链路打通。

实验现象与检查点 ​

项目期望现象
串口数据实时收到两节点数据帧
PC 解析正确显示节点地址与数据值
数据曲线随时间变化的曲线清晰可见
阈值告警超阈值时告警提示
反向控制PC 下发指令,节点执行

常见问题

  • 串口无数据:检查协调器串口初始化、波特率、USB 驱动;
  • 数据错乱:注意帧格式两端一致,串口助手关闭"十六进制显示"或统一协议;
  • PC 下发失效:确认协调器实现了串口收包 → 无线转发(串口回调中调用 AF_DataRequest)。

思考题 ​

  1. 为什么需要把"传感器网络"和"PC 端"连接起来?网关协调器在其中的作用是什么?
  2. 如果传感器节点数量增加到 20 个,PC 端接收与显示会遇到什么问题?如何优化?
  3. 请设计一个简单的应用场景(如教室环境监测),说明数据如何从节点最终呈现到 PC 端大屏。

实验报告要求 ​

  1. 实验目的、器材、原理简述(含整体架构图);
  2. 任务一、任务二的核心代码(协调器串口转发 + PC 解析脚本)及注释;
  3. 数据曲线/表格截图与现象分析;
  4. 思考题回答;
  5. 遇到的问题及解决过程。

关联知识:硬件适配层应用——串口、基于ZigBee的环境信息采集系统

aioteer · 物联网专业课程群

💬AI 伴学配置