项目架构概述
项目架构概述
本节介绍资产追踪项目,该项目利用 RFID 技术与 ESP32 微控制器相结合,创建用于人员和资产管理的签到/签退系统。学习完本节后,您将能够:
- 理解基于 RFID 的追踪系统的整体架构
- 识别所涉及的关键硬件和软件组件
- 描述从 RFID 扫描到数据库记录的数据流
- 认识本项目在阿里巴巴国际站上应对的客户场景
开始本节前,请确保您熟悉:
- ESP32 基本功能(参见第 01 章)
- MQTT 协议基础(参见第 06 章)
- Node-RED 基本概念(参见第 09 章)
- Docker 容器基础(参见第 07 章)
阿里巴巴国际站客户场景
Section titled “阿里巴巴国际站客户场景”阿里巴巴国际站上需要以下功能的国际买家:
- 工厂考勤追踪:记录员工签到/签退时间
- 工具和资产管理:跟踪设备、工具或资产的借用/归还
- 库存进出记录:记录物品进出仓库
- 工单追踪:将工人时间与特定生产订单关联
| 痛点 | 本方案的解决方案 |
|---|---|
| 手动时间记录容易出错 | RFID 扫描提供自动化、准确的记录 |
| 纸质记录难以分析 | 数字记录实现报告和分析 |
| 追踪不力导致工具丢失 | 每次扫描记录谁拥有什么资产及何时 |
| 难以计算劳动力成本 | 时间记录自动关联到项目 |
┌─────────────────────────────────────────────────────────┐│ 资产追踪系统 │├─────────────────────────────────────────────────────────┤│ ││ [RFID 标签] ──→ [RC522 读取器] ──→ [ESP32] ││ ↑ │ ││ │ │ MQTT/HTTP ││ │ ↓ ││ │ [WiFi 网络] ││ │ │ ││ │ │ ││ ┌────┴──────────────────────────────────────┴──────┐ ││ │ 服务端技术栈(Docker) │ ││ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ ││ │ │ TimeTagger│ │ Node-RED │ │ 数据库 │ │ ││ │ │ (REST API)│←─│ (流程) │←─│ (JSON 文件) │ │ ││ │ └──────────┘ └──────────┘ └──────────────┘ │ ││ └──────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────┘| 组件 | 角色 | 技术说明 |
|---|---|---|
| RFID 标签 | 人员/资产的唯一标识 | 无源标签,13.56 MHz(高频),无需电池 |
| RC522 读取器 | 读取 RFID 标签 UID | SPI 接口,仅 3.3V,读取范围约 3-5cm |
| ESP32 | 主控制器 | WiFi + MQTT,读取标签,控制 LED |
| TimeTagger | 时间记录软件 | 开源,REST API,Docker 容器 |
| Node-RED | 流程自动化 | 协调 MQTT/HTTP 通信 |
| 文件存储 | 本地签到状态 | 服务器上的 JSON 平面文件 |
1. 用户在读取器上刷卡2. ESP32 通过 RC522(SPI)读取标签 UID3. ESP32 将 UID 发布到 MQTT 主题4. Node-RED 接收 MQTT 消息5. Node-RED 检查服务器上是否存在签到文件6. 如果文件不存在 → 这是签到操作7. Node-RED 创建包含开始时间戳的 JSON 文件8. ESP32 点亮绿色 LED 表示成功1. 同一用户再次刷卡2. ESP32 通过 RC522 读取相同 UID3. ESP32 将 UID 发布到 MQTT 主题4. Node-RED 接收 MQTT 消息5. Node-RED 检查签到文件是否存在6. 如果文件存在 → 这是签退操作7. Node-RED 读取文件,添加结束时间戳8. Node-RED 通过 HTTP POST 将完整记录发送到 TimeTagger API9. Node-RED 删除本地文件10. ESP32 点亮红色 LED 表示完成 ┌──────────┐ │ 空闲 │ │ (等待) │ └────┬─────┘ │ ┌──────▼──────┐ │ 检测到标签 │ └──────┬──────┘ │ ┌──────▼──────┐ 否 │ 文件存在? │ 是 ┌────────┤ 在服务器上 ├────────┐ │ └─────────────┘ │ ▼ ▼┌──────────┐ ┌──────────┐│ 签到 │ │ 签退 ││ 创建JSON │ │ 读取文件 ││ 文件 │ │ POST API │└────┬─────┘ │ 删除文件 │ │ └────┬─────┘ │ │ └──────────┬─────────────────┘ ▼ ┌──────────┐ │ 完成 │ │(LED反馈)│ └──────────┘关键技术决策
Section titled “关键技术决策”| 决策 | 选择 | 理由 |
|---|---|---|
| RFID 频率 | 13.56 MHz(HF) | 读取距离和标签成本的良好平衡;适用于近距离追踪 |
| 读取器模块 | RC522 | 广泛可用,低成本(约 $2),支持 Arduino 库 |
| 数据存储 | 服务器上的平面文件 | 简单,无需依赖数据库;TimeTagger 作为最终记录 |
| 服务器通信 | MQTT + HTTP | MQTT 用于实时事件;HTTP REST 用于 TimeTagger API |
| 状态持久化 | Node-RED JSON 文件 | 在服务器重启后仍然保持;易于检查和调试 |
本章包含以下部分:
| 章节 | 主题 | 重点 |
|---|---|---|
| 05-02 | RFID 读取器硬件设置 | 将 RC522 模块连接到 ESP32 |
| 05-03 | RC522 模块集成 | 库设置和 SPI 配置 |
| 05-04 | RFID 标签 UID 读取 | 读取和验证标签标识符 |
| 05-05 | TimeTagger 开源软件 | 安装和配置 TimeTagger |
| 05-06 | REST API 认证 | 获取和使用 API 令牌 |
| 05-07 | HTTP POST 请求实现 | 构建和发送 POST 请求 |
| 05-08 | 签到 API 集成 | 完整的签到/签退流程 |
| 05-09 | 状态管理逻辑 | 基于文件的状态追踪 |
| 05-10 | LED 状态指示灯 | 操作的视觉反馈 |
| 05-11 | 技术能力评估 | 评估解决方案边界 |
| 05-12 | 定制化可能性 | 适应不同的客户需求 |
完成本章后,您应该能够:
- 向客户解释完整的签到/签退流程
- 识别架构中每个组件的作用
- 描述基于 RFID 的追踪如何解决工厂考勤需求
- 理解签到和签退状态管理之间的区别
关键要点:
- 系统架构:RFID 标签 → RC522 → ESP32 → MQTT → Node-RED → TimeTagger
- 两阶段流程:签到(创建文件)和签退(发送到 API + 删除文件)
- 状态管理:服务器上文件的存在性决定签到还是签退行为
- 客户匹配:解决工厂考勤、工具追踪和资产管理需求