IoT 赋能的各种耗材与实验室全生命周期管理平台
本项目是一款为高校实验室量身定制的数字化管理平台。它不仅包含传统的预约与审批流程,更通过 物联网(IoT)技术 打通了物理世界与数字世界,实现了基于 RFID 与重力感应 的耗材库存实时自动同步,解决了传统实验室管理中“账实不符”、物资流转不透明及信息滞后等核心痛点。
- ⚡️ IoT 智能感知与同步:
- 无感入库/盘点: 集成重力传感器与 RFID 技术,物品放上货架即可自动识别身份并同步重量数据至数据库,实时更新库存。
- 公网穿透通信: 采用 Ngrok 隧道技术,实现本地开发环境与远程硬件设备的无缝 HTTP 通信。
- 🔄 全流程闭环业务: 实现了从“学生申请 -> 管理员审核 -> 自动扣减库存/占用时段”的完整业务流。
- 🛡 细粒度权限控制: 基于 Sa-Token 实现轻量级登录鉴权,支持管理员与学生角色权限分离,通过白名单机制保障硬件数据上报的安全与便捷。
- 📊 可视化体验优化: 前端采用 Vue3 + Element-Plus,支持首页数据看板,将抽象的传感器数据转化为可视化的实时库存动态。
- 核心框架: Spring Boot 3.x
- 数据库: MySQL 8.0
- 持久层: MyBatis-Plus (简化 CRUD 操作)
- 权限安全: Sa-Token (Token 鉴权、RBAC 角色校验、API 白名单)
- 工具库: Lombok, Maven, Fastjson/Jackson
- 框架: Vue 3 (Composition API)
- UI 组件库: Element-Plus
- 网络请求: Axios
- 图标库: @element-plus/icons-vue
- 感知层: Arduino / ESP32 开发板
- 传感器: HX711 重力传感器 (库存量化)、RC522 RFID 读写模块 (身份识别)
- 通信协议: HTTP POST (JSON Payload)
- 内网穿透: Ngrok (构建公网数据隧道)
本项目实现了物理层到应用层的端到端数据流转:
- 物理感知层:
- 硬件终端读取 RFID 标签(如
24fac1c7)获取物品唯一身份。 - 实时采集重力数值(如
120.54g)作为剩余库存量。
- 硬件终端读取 RFID 标签(如
- 数据传输层:
- 硬件将数据封装为标准 JSON:
{"gravity": 120.54, "RFID": "24fac1c7"}。 - 通过 Ngrok 隧道将数据发送至后端接口
/api/hardware/upload。
- 硬件将数据封装为标准 JSON:
- 业务逻辑层:
- 日志记录:所有原始数据存入
device_data_logs表,支持历史溯源。 - 策略更新:后端根据 RFID 自动匹配
sys_consumable表中的耗材,并实时更新其count(库存) 字段。
- 日志记录:所有原始数据存入
- JDK 17+
- Node.js 16+
- MySQL 8.0+
- Ngrok (用于联调硬件)
- 创建一个名为
lab_db的数据库。 - 运行项目根目录下
management/sql/lab_db.sql文件,完成表结构及初始数据导入。
- 使用 IDEA 打开
management目录。 - 修改
src/main/resources/application.yml中的数据库用户名和密码。 - 运行
ManagementApplication.java。 - (可选) 启动 Ngrok:
ngrok http 8080,获取公网地址用于硬件配置。
- 终端进入
lab-system目录。 - 安装依赖:
npm install - 启动开发服务器:
npm run dev - 访问浏览器
| 角色 | 用户名 | 密码 | 权限内容 |
|---|---|---|---|
| 管理员 | Anno | 20100908 | 全权限:审批申请、人员管理、IoT 设备绑定、库存自动同步监控 |
| 学生 | Tomori | 20101122 | 基础权限:实验室预约、耗材申领、查看个人进度 |
(更多用户请在 sys_user 表中查看)
- IoT 基础模块: 完成 RFID 与重力数据的上报与库存联动。
- 数据可视化大屏: 基于 ECharts 构建实验室环境与库存的 3D 可视化大屏。
- AI 智能助手: 接入 DeepSeek 大模型,通过自然语言查询“现在还有多少烧杯?”或“预约下周三实验室”。
- 异常告警: 当传感器数值骤降(如试剂泄漏或被盗)时,自动通过邮件/短信通知管理员。