锁控板

产品准备
+----------------------+
| 微信小程序 |
| - 扫码 |
| - 登录 |
| - 发起开门请求 |
+----------+----------+
|
v
+----------+----------+
| 后端服务(API) |
| - 权限校验 |
| - 控制逻辑 |
| - MQTT/HTTP 发命令 |
+----------+----------+
|
v
+------------+------------+
| 智能柜设备主控 |
| - 接收指令 |
| - 通过485控制锁控板 |
| - 上报状态反馈 |
+------------+------------+
设备端
✅ 设备端功能定位
设备端是整个系统中的“控制中枢”,主要负责以下任务:
- 接收来自后端/小程序的开门控制命令
- 通过 485 串口控制锁控板开关柜门
- 状态反馈(如门状态、设备离线、断电等)
- 控制显示屏显示二维码和提示信息
- 支持 OTA 升级、日志采集与错误处理
✅ 模块划分与技术概览
模块 |
功能描述 |
涉及技术 |
通信管理模块 |
与服务器进行 MQTT / HTTP / WebSocket 通信 |
Paho MQTT / OkHttp / libwebsockets |
命令解析模块 |
解析 JSON 指令,分发控制 |
cJSON / RapidJSON / Gson |
485锁控控制模块 |
控制 485 锁控板开门、读状态 |
UART 驱动、自定义串口协议 |
显示屏控制模块 |
显示二维码、提示信息 |
LCD/EPD 控制驱动 |
状态监测模块 |
检测门磁、电源状态 |
GPIO / ADC |
心跳与状态上报模块 |
周期性上报设备状态 |
定时器 + 网络 |
OTA 升级模块(可选) |
远程固件升级 |
HTTP 拉取 / Mender |
日志与异常处理模块 |
本地记录日志,异常上报 |
Flash / SQLite / 文件系统 |
✅ 模块依赖结构图
+-----------------+ +-------------------+
| 云端服务器 | <-----> | 通信管理模块 |
|(MQTT / HTTP) | |(MQTT/WebSocket) |
+-----------------+ +-------------------+
|
v
+------------------------+
| 命令解析与调度模块 |
+----------+-------------+
|
+-----------------------------+------------------------------+
| | |
v v v
+-------------+ +--------------------+ +-------------------+
| 锁控控制模块 | <-----> | 状态监测模块 | | 显示屏控制模块 |
|(控制485门锁)| |(电源、门状态) | |(二维码+文本) |
+-------------+ +--------------------+ +-------------------+
|
v
+------------------------+
| 状态上报与日志模块 |
+------------------------+
服务器端
✅ 后端主要功能
- 接收小程序请求(如开门、查询状态)
- 管理设备(二维码、状态、控制命令等)
- 与智能柜设备通信(HTTP、MQTT、WebSocket等)
- 用户权限和身份校验
- 状态存储、统计、日志分析
- 支持远程运维功能(OTA、报警、日志上传)
✅ 后端模块划分
模块名 |
功能描述 |
技术建议 |
用户身份与权限管理模块 |
小程序用户登录、身份校验、权限分配 |
微信登录、JWT、Session |
设备管理模块 |
设备信息、二维码配置、状态维护 |
REST API + 数据库管理 |
开门控制模块 |
接收小程序“开门请求”,转发设备 |
命令缓存 + MQTT / WebSocket |
状态同步模块 |
接收设备状态上报(门状态、电源状态等) |
MQTT订阅 + 数据库持久化 |
日志记录模块 |
操作日志、异常记录、设备日志 |
异步写库 / ElasticSearch |
OTA升级模块(可选) |
上传设备固件、远程升级 |
文件服务 + 固件调度 |
数据统计模块 |
器材使用记录、统计报表 |
SQL聚合 / BI工具对接 |
📦 服务端架构建议:
- 语言框架:Java(Spring Boot)、Python(FastAPI)、Node.js(NestJS)
- 数据库:MySQL / PostgreSQL
- 缓存:Redis(二维码 token、设备在线状态)
- 设备通信:MQTT Broker(推荐 EMQX)、HTTP / WebSocket(可选)
- 文件服务:MinIO 或本地存储
- 日志分析:ELK / Graylog(可选)
- 部署方式:Docker + Nginx + Supervisor
✅ 后端部署结构图
+-----------------------+
| 微信小程序 |
| 扫码开门、借还查询 |
+----------+------------+
|
v
+----------+-------------+ +-------------------------+
| 后端服务 | <-----> | MQTT Broker (EMQX) |
| API, 权限, 控制调度等 | | 设备通信、状态上报 |
+----------+-------------+ +-------------------------+
|
v
+----------------------------+
| MySQL / Redis / MinIO |
| 存储用户、设备、日志等数据 |
+----------------------------+
微信小程序端
✅ 小程序端主要功能
- 扫码进入柜子使用界面
- 用户身份登录和绑定(校园账号/微信账号)
- 展示柜子状态(门状态、设备在线)
- 发送开门请求
- 显示开门结果反馈
- 查看历史使用记录与个人信息
- 异常提示(设备离线、权限不足等)
✅ 主要模块划分
模块名称 |
功能描述 |
主要技术/工具 |
扫码与跳转模块 |
扫描柜体二维码,跳转对应页面 |
微信扫码 API,页面跳转 |
用户登录模块 |
微信登录、用户身份绑定(学号、手机号等) |
微信登录 API,云开发用户管理 |
开门控制模块 |
向后端发送开门请求,接收开门状态反馈 |
wx.request,WebSocket/MQTT* |
状态展示模块 |
显示柜门状态、电源、网络等实时信息 |
页面数据绑定,定时轮询/订阅 |
使用记录模块 |
查询并展示个人借用历史 |
后端接口调用,列表渲染 |
异常提示模块 |
展示设备异常、操作错误提示 |
页面弹窗,Toast 组件 |
*备注:微信小程序原生不支持 MQTT,需用后端做桥接或使用 WebSocket。
✅ 关键技术点
技术点 |
说明 |
微信扫码 API |
允许用户扫描柜体二维码,获取柜体ID等信息 |
用户认证 |
微信登录 + 结合校园认证(绑定学号/手机号等) |
网络请求 |
wx.request 调用后端 RESTful API |
实时通信 |
通过 WebSocket 实现状态推送(MQTT需后端转发) |
数据绑定与渲染 |
使用小程序的 MVVM 框架进行页面数据绑定 |
页面路由与导航 |
页面跳转、参数传递(柜体ID、用户信息) |
UI 组件 |
使用微信小程序官方组件或第三方 UI 库(如 Vant Weapp) |
本地缓存 |
wx.setStorage / wx.getStorage 缓存登录状态和配置信息 |
异常处理 |
网络超时、权限不足、设备离线等异常提示处理 |
产品总结
┌────────────────────────────┐
│ 管理后台(Web) │
│ │
│ - 用户管理 │
│ - 设备管理 │
│ - 开门记录、状态监控 │
│ - OTA 发布/报警设置 │
└────────────┬─────────────┘
│
HTTPS / WebSocket / REST │
▼
┌───────────────────────────────────────────────────────┐
│ 后端服务(核心) │
│ │
│ - 用户认证(微信登录,JWT 校验) │
│ - 权限管理(学生/教师/管理员) │
│ - 开门控制接口(REST + MQTT下发) │
│ - 状态同步(接收设备心跳、门状态、电源状态) │
│ - 操作日志(谁、什么时候、开了哪扇门) │
│ - OTA升级(固件管理 + 升级调度) │
│ │
│ 第三方组件: │
│ - MQTT Broker(如 EMQX) │
│ - MySQL/PostgreSQL(数据存储) │
│ - Redis(token/二维码缓存、状态缓存) │
│ - MinIO/OSS(二维码图片、OTA包等资源存储) │
└──────┬───────────────────────────────────────┘
│
│MQTT / WebSocket / HTTPS
▼
┌──────────────────────────────────────────────────────────────┐
│ 智能柜设备端(Linux/Android) │
│ │
│ - 二维码展示(显示屏/LCD) │
│ - 网络通信模块(MQTT/HTTP) │
│ - 命令解析与处理(JSON/二进制指令) │
│ - 485锁控模块(控制开锁/反馈锁状态) │
│ - 门磁检测模块(开关门状态) │
│ - 电源检测(断电上报) │
│ - 心跳上报(定时发送在线信息) │
└──────────────────────────────────────────────────────────────┘
▲
│扫码进入控制界面
│HTTPS 请求控制命令
▼
┌──────────────────────────────────────────────────────────────┐
│ 微信小程序端(学生/教师) │
│ │
│ - 扫码进入 → 获取设备ID │
│ - 微信登录 + 校园身份绑定 │
│ - 请求开门接口(wx.request) │
│ - 实时柜门状态展示 │
│ - 操作结果反馈(成功/失败/离线) │
│ - 历史记录查询、个人借用统计 │
└──────────────────────────────────────────────────────────────┘
设备端屏幕设计草图-AI生成
╔══════════════════════════════════════════════════════════════╗
║ 📘 校园智能储物柜 📶 已联网|编号:S03 ║ ← 顶部状态栏:标题左,状态右(深蓝底,白字)
╠══════════════════════════════════════════════════════════════╣
║ ║
║ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ║
║ ▓ [ 二维码区域 ] ▓ ║ ← 居中放大二维码(黑白对比,圆角卡片)
║ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ║
║ ║
║ 请使用微信“校园储物柜”小程序扫码开门 ║ ← 二级说明(灰蓝色,14号字,居中)
║ ║
╠══════════════════════════════════════════════════════════════╣
║ 🔔 今日提示:柜门使用时限为 60 分钟,请勿长时间占用 ║ ← 底部公告栏(橙底白字,喇叭图标)
╚══════════════════════════════════════════════════════════════╝
