智能柜

app开发

Posted by LXG on July 30, 2025

锁控板

xintian_lock

产品准备


                +----------------------+
                |  微信小程序         |
                |  - 扫码              |
                |  - 登录              |
                |  - 发起开门请求      |
                +----------+----------+
                           |
                           v
                +----------+----------+
                |   后端服务(API   |
                |  - 权限校验         |
                |  - 控制逻辑         |
                |  - MQTT/HTTP 发命令 |
                +----------+----------+
                           |
                           v
              +------------+------------+
              |     智能柜设备主控     |
              |  - 接收指令            |
              |  - 通过485控制锁控板   |
              |  - 上报状态反馈        |
              +------------+------------+

设备端

✅ 设备端功能定位

设备端是整个系统中的“控制中枢”,主要负责以下任务:

  1. 接收来自后端/小程序的开门控制命令
  2. 通过 485 串口控制锁控板开关柜门
  3. 状态反馈(如门状态、设备离线、断电等)
  4. 控制显示屏显示二维码和提示信息
  5. 支持 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
                         +------------------------+
                         | 状态上报与日志模块      |
                         +------------------------+

服务器端

✅ 后端主要功能

  1. 接收小程序请求(如开门、查询状态)
  2. 管理设备(二维码、状态、控制命令等)
  3. 与智能柜设备通信(HTTP、MQTT、WebSocket等)
  4. 用户权限和身份校验
  5. 状态存储、统计、日志分析
  6. 支持远程运维功能(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    |
| 存储用户、设备、日志等数据 |
+----------------------------+

微信小程序端

✅ 小程序端主要功能

  1. 扫码进入柜子使用界面
  2. 用户身份登录和绑定(校园账号/微信账号)
  3. 展示柜子状态(门状态、设备在线)
  4. 发送开门请求
  5. 显示开门结果反馈
  6. 查看历史使用记录与个人信息
  7. 异常提示(设备离线、权限不足等)

✅ 主要模块划分

模块名称 功能描述 主要技术/工具
扫码与跳转模块 扫描柜体二维码,跳转对应页面 微信扫码 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 分钟请勿长时间占用           底部公告栏橙底白字喇叭图标
╚══════════════════════════════════════════════════════════════╝


chatgpt_ai_design