欢迎光临
我们一直在努力

【毕设选题】微信小程序蓝牙门锁:从系统架构与硬件接线看控制端和执行端怎么配合

专注毕业设计软硬件结合方向,技术栈包括
Qt、SpringBoot、Vue、Web、APP、小程序,以及树莓派、ESP32、STM32、Arduino 等平台。

可提供:系统功能设计、软硬件架构设计、关键电路参考、核心代码讲解、测试方案设计、项目文档整理、开题/中期/论文/答辩学习辅导。

搜到"微信小程序蓝牙门锁"这个题名时,最想先看到的通常是两件事:这套东西到底由哪几块拼起来,以及手机和门锁之间到底是怎么联系上的。本篇就从整体架构、功能流程、硬件接线三个角度把系统铺开,说明它分成了哪两端、三种模式各自怎么用、门锁一侧靠什么把指令变成动作,以及这套设计的能力边界在哪里。至于"值不值得做、难度分布在哪",已经在《微信小程序蓝牙门锁毕设:ESP32 控锁、小程序控权限,难度与分工怎么估?》里展开,这里不重复。

一、项目简介

本项目是一套以微信小程序为控制端、以 ESP-WROOM-32 为主控执行端的智能蓝牙锁方案。从整体上看,分成三层:

  • 交互层(控制端):运行在手机上的微信小程序,负责用户登录、门锁信息展示、三种模式的切换,以及开锁与关锁操作。
  • 通信与主控层:ESP32 及其蓝牙模块,负责被手机扫描到、被连接、接收指令,并在校验之后决定是否驱动门锁。
  • 执行层:继电器模块与 12V 电磁锁,把主控输出的一路电平信号转换成门锁的通断。

系统架构示意图

图示智能控制端与响应执行端两个子系统之间的数据交互关系,控制端内含自由、锁定、访客三种并列模式。

架构上沿用了物联网常见的那套分法:控制端相当于应用侧,执行端相当于现场设备侧。需要如实说明的是,架构图里只出现了"智能控制端"和"响应执行端"两个子系统,而数据存储设计里提到的后端数据库并没有落在其中任何一端。也就是说,"开锁记录存进数据库"这个说法与架构给出的两端结构之间并不完全对应,本篇文章最后一节会继续说明这一点。

二、功能与业务流程

从使用者视角看,这套系统围绕"谁能在什么条件下开锁"展开,用三种工作模式来承载不同的日常场景。

1. 三种工作模式

模式主要使用者能否开关锁成立条件
自由模式 管理员 可以 管理员登录并对门锁执行开关操作,是默认状态
锁定模式 无 都不可以 管理员远程把门锁置于锁定,任意用户均不响应
访客模式 临时访客 可以 管理员生成并分享临时密钥,访客输入正确密钥后放行

自由模式是默认状态。管理员打开小程序、登录后,界面会显示门锁信息,点击自由模式下的门锁完成连接,即可进行开锁与关锁。这里有一个容易忽略的细节:首次登录的作用是记录管理员信息,之后的每次登录则用于验证管理员信息,两件事共用了同一个入口。

2. 三种模式各自的业务过程

自由模式面向管理员日常使用,除了开关锁,管理系统一侧还承担设备名称修改、门锁模式切换、用户增删与权限设置、门锁记录查看、生成临时密钥等管理动作。

锁定模式的设计初衷是提高安全性,避免非法或误操作导致门锁开启。门锁处于锁定状态时,任何用户都无法开关,只有管理员在小程序里把它切回自由模式或访客模式,开关操作才会恢复。

访客模式解决的是"主人不在、访客到访"这类场景。管理员先在管理系统中添加临时访客信息,并在访客模式下设置临时密钥,再把密钥分享出去;访客登录小程序、连接门锁、输入正确的临时密钥,验证通过后即可开关锁。管理员还可以查看访客的使用时间、日期和频率。需要特别指出的一点是:临时密钥并非系统随机生成,而是由管理员手工设置、并且可以任意修改、并非只设一次。访客用完门锁后,管理员把模式切回自由或锁定,该临时权限随即失效。

访客模式的完整先后次序如下:

#mermaid-svg-KRWbuSTPD1UDApPh{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KRWbuSTPD1UDApPh .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KRWbuSTPD1UDApPh .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KRWbuSTPD1UDApPh .error-icon{fill:#552222;}#mermaid-svg-KRWbuSTPD1UDApPh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KRWbuSTPD1UDApPh .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KRWbuSTPD1UDApPh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KRWbuSTPD1UDApPh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KRWbuSTPD1UDApPh .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KRWbuSTPD1UDApPh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KRWbuSTPD1UDApPh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KRWbuSTPD1UDApPh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KRWbuSTPD1UDApPh .marker.cross{stroke:#333333;}#mermaid-svg-KRWbuSTPD1UDApPh svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KRWbuSTPD1UDApPh p{margin:0;}#mermaid-svg-KRWbuSTPD1UDApPh .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-KRWbuSTPD1UDApPh .cluster-label text{fill:#333;}#mermaid-svg-KRWbuSTPD1UDApPh .cluster-label span{color:#333;}#mermaid-svg-KRWbuSTPD1UDApPh .cluster-label span p{background-color:transparent;}#mermaid-svg-KRWbuSTPD1UDApPh .label text,#mermaid-svg-KRWbuSTPD1UDApPh span{fill:#333;color:#333;}#mermaid-svg-KRWbuSTPD1UDApPh .node rect,#mermaid-svg-KRWbuSTPD1UDApPh .node circle,#mermaid-svg-KRWbuSTPD1UDApPh .node ellipse,#mermaid-svg-KRWbuSTPD1UDApPh .node polygon,#mermaid-svg-KRWbuSTPD1UDApPh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KRWbuSTPD1UDApPh .rough-node .label text,#mermaid-svg-KRWbuSTPD1UDApPh .node .label text,#mermaid-svg-KRWbuSTPD1UDApPh .image-shape .label,#mermaid-svg-KRWbuSTPD1UDApPh .icon-shape .label{text-anchor:middle;}#mermaid-svg-KRWbuSTPD1UDApPh .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KRWbuSTPD1UDApPh .rough-node .label,#mermaid-svg-KRWbuSTPD1UDApPh .node .label,#mermaid-svg-KRWbuSTPD1UDApPh .image-shape .label,#mermaid-svg-KRWbuSTPD1UDApPh .icon-shape .label{text-align:center;}#mermaid-svg-KRWbuSTPD1UDApPh .node.clickable{cursor:pointer;}#mermaid-svg-KRWbuSTPD1UDApPh .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KRWbuSTPD1UDApPh .arrowheadPath{fill:#333333;}#mermaid-svg-KRWbuSTPD1UDApPh .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KRWbuSTPD1UDApPh .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KRWbuSTPD1UDApPh .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KRWbuSTPD1UDApPh .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KRWbuSTPD1UDApPh .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KRWbuSTPD1UDApPh .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KRWbuSTPD1UDApPh .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KRWbuSTPD1UDApPh .cluster text{fill:#333;}#mermaid-svg-KRWbuSTPD1UDApPh .cluster span{color:#333;}#mermaid-svg-KRWbuSTPD1UDApPh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KRWbuSTPD1UDApPh .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KRWbuSTPD1UDApPh rect.text{fill:none;stroke-width:0;}#mermaid-svg-KRWbuSTPD1UDApPh .icon-shape,#mermaid-svg-KRWbuSTPD1UDApPh .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KRWbuSTPD1UDApPh .icon-shape p,#mermaid-svg-KRWbuSTPD1UDApPh .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KRWbuSTPD1UDApPh .icon-shape .label rect,#mermaid-svg-KRWbuSTPD1UDApPh .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KRWbuSTPD1UDApPh .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KRWbuSTPD1UDApPh .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KRWbuSTPD1UDApPh :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

是

否

管理员在控制端添加临时访客

在访客模式下设置临时密钥

把临时密钥分享给访客

访客登录并连接门锁

临时密钥是否正确

执行开锁或关锁

拒绝操作

管理员切回自由或锁定模式

临时权限失效

图示访客模式从授权、连接、校验到权限失效的完整流转。

三种模式的切换与密钥的设置都在控制端完成,而这些判断最终怎么变成门锁的动作,涉及蓝牙连接与身份校验,会在《微信小程序蓝牙门锁的权限链路:三种模式怎么一路落到继电器动作?》里更细地拆开。

3. 面向管理的辅助能力

除了开锁本身,设计里还给管理员预留了几类管理动作:修改设备名称、切换门锁模式、增删用户与设置权限、查看门锁记录、生成临时密钥。这些并不直接参与一次开锁,但决定了门锁是"只能自己用"还是"可以分权使用"。允许下发或修改的配置集中在控制端,执行端只负责接收并执行。

三、系统运行流程

整套系统的运行可以分成两条主线:控制端负责交互与指令下发,执行端负责应答与动作。下面这张流程图给出的是数据交互的先后次序。

控制端(微信小程序)流程

启动后,小程序先读取本地存储、用户信息与系统状态栏信息,随后展示门锁信息;用户点击连接后建立与门锁的蓝牙连接,再下发开锁或关锁指令,并在收到状态反馈后更新界面。

数据交互流程图

图示从用户授权、蓝牙连接、开锁指令传输到锁状态反馈与数据同步的先后次序。

从这张图可以看出,控制端负责的是一条从"授权"走到"同步"的链路,它不直接操作门锁的电路,只把意图转成数据发出去。

执行端(ESP32 门锁)流程

执行端上电后先完成蓝牙初始化并进入广播状态,等待手机扫描并发起连接;连接建立后接收指令、做身份校验,校验通过才驱动继电器,由继电器带动电磁锁完成动作,随后把状态回传。

需要留意一个容易被忽略的细节:在手机小程序与锁体的数据交互过程中,交互都是由手机终端连接蓝牙之后主动发起的。锁端不主动寻找手机,它只是被连接、被请求的一方,这一点决定了排错的方向——搜不到设备时,先查锁端有没有正常广播,而不是去查手机有没有发指令。

四、技术架构与接口

系统从下到上可以看成控制端、通信与主控、执行三层,控制端主导交互与权限表达,执行端做应答与动作,两者通过低功耗蓝牙衔接。

#mermaid-svg-zO34zp9izE7l9e3M{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-zO34zp9izE7l9e3M .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-zO34zp9izE7l9e3M .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-zO34zp9izE7l9e3M .error-icon{fill:#552222;}#mermaid-svg-zO34zp9izE7l9e3M .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zO34zp9izE7l9e3M .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-zO34zp9izE7l9e3M .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zO34zp9izE7l9e3M .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zO34zp9izE7l9e3M .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-zO34zp9izE7l9e3M .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zO34zp9izE7l9e3M .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zO34zp9izE7l9e3M .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zO34zp9izE7l9e3M .marker.cross{stroke:#333333;}#mermaid-svg-zO34zp9izE7l9e3M svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zO34zp9izE7l9e3M p{margin:0;}#mermaid-svg-zO34zp9izE7l9e3M .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-zO34zp9izE7l9e3M .cluster-label text{fill:#333;}#mermaid-svg-zO34zp9izE7l9e3M .cluster-label span{color:#333;}#mermaid-svg-zO34zp9izE7l9e3M .cluster-label span p{background-color:transparent;}#mermaid-svg-zO34zp9izE7l9e3M .label text,#mermaid-svg-zO34zp9izE7l9e3M span{fill:#333;color:#333;}#mermaid-svg-zO34zp9izE7l9e3M .node rect,#mermaid-svg-zO34zp9izE7l9e3M .node circle,#mermaid-svg-zO34zp9izE7l9e3M .node ellipse,#mermaid-svg-zO34zp9izE7l9e3M .node polygon,#mermaid-svg-zO34zp9izE7l9e3M .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zO34zp9izE7l9e3M .rough-node .label text,#mermaid-svg-zO34zp9izE7l9e3M .node .label text,#mermaid-svg-zO34zp9izE7l9e3M .image-shape .label,#mermaid-svg-zO34zp9izE7l9e3M .icon-shape .label{text-anchor:middle;}#mermaid-svg-zO34zp9izE7l9e3M .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-zO34zp9izE7l9e3M .rough-node .label,#mermaid-svg-zO34zp9izE7l9e3M .node .label,#mermaid-svg-zO34zp9izE7l9e3M .image-shape .label,#mermaid-svg-zO34zp9izE7l9e3M .icon-shape .label{text-align:center;}#mermaid-svg-zO34zp9izE7l9e3M .node.clickable{cursor:pointer;}#mermaid-svg-zO34zp9izE7l9e3M .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-zO34zp9izE7l9e3M .arrowheadPath{fill:#333333;}#mermaid-svg-zO34zp9izE7l9e3M .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zO34zp9izE7l9e3M .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zO34zp9izE7l9e3M .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zO34zp9izE7l9e3M .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-zO34zp9izE7l9e3M .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zO34zp9izE7l9e3M .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-zO34zp9izE7l9e3M .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zO34zp9izE7l9e3M .cluster text{fill:#333;}#mermaid-svg-zO34zp9izE7l9e3M .cluster span{color:#333;}#mermaid-svg-zO34zp9izE7l9e3M div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zO34zp9izE7l9e3M .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-zO34zp9izE7l9e3M rect.text{fill:none;stroke-width:0;}#mermaid-svg-zO34zp9izE7l9e3M .icon-shape,#mermaid-svg-zO34zp9izE7l9e3M .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zO34zp9izE7l9e3M .icon-shape p,#mermaid-svg-zO34zp9izE7l9e3M .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-zO34zp9izE7l9e3M .icon-shape .label rect,#mermaid-svg-zO34zp9izE7l9e3M .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zO34zp9izE7l9e3M .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-zO34zp9izE7l9e3M .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-zO34zp9izE7l9e3M :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

响应执行端 · ESP32 蓝牙锁

智能控制端 · 微信小程序

低功耗蓝牙 · 数据交互

锁状态反馈

自由模式

锁定模式

访客模式

逻辑层 JavaScript视图层 WXML / WXSS

ESP32 低功耗蓝牙GAP 角色与 GATT 承载

松乐继电器模块

12V 电磁锁

图示控制端三个模式汇入交互层、经低功耗蓝牙到达执行端,再逐级驱动到电磁锁的关系。

蓝牙这一层的接口分工是明确的:ESP32 侧的低功耗蓝牙协议栈分为 BLE Host 与 BLE Controller 两部分,Host 负责上层的 GAP(通用访问规范)、GATT(通用属性框架)以及各类 Profile,Controller 负责下层的链路层、逻辑链路控制与适配层以及物理层。手机作为连接发起方,在 GAP 语义里属于主动发起连接的角色,ESP32 一侧则是被连接的一方。具体的数据承载由 GATT 的属性完成,服务的标识属于实现层的细节,本文不展开。

硬件侧的接口关系则比较直观。主控以一路控制信号驱动继电器,继电器再切换电源到电磁锁的通路。

继电器接线图

图示 ESP32、继电器、电源模块与电磁锁之间的接线关系,主控侧为电源与一路控制线,继电器侧通过输出端子切换锁具供电。

模块选型说明
主控 ESP-WROOM-32 Wi-Fi 与蓝牙双模,双核,主频 80~240MHz,支持 SPI、I2C、UART 等接口
通信 ESP32 内置低功耗蓝牙 小程序侧只支持低功耗蓝牙,故采用此路线
驱动 松乐单刀双掷继电器 线圈电压 5V,最大切换电流 5A,最大切换电压 250V,额定线圈功率 360mW,动作与释放时间各约 10ms
执行 12V 1A 电磁锁 靠线圈通电产生磁场吸附铁块实现锁定
供电 12V 电源适配器 为锁具等提供驱动电源
控制端 微信小程序 逻辑层 JavaScript,视图层 WXML 与 WXSS

主控模块的板载结构如下图所示。

ESP32 实物图

图示 ESP-WROOM-32 模块的板载结构与两侧引脚排布。

工程上有一个容易混淆的地方:主控、继电器、电磁锁三者的工作电压并不相同,接线时要把"信号地"与"驱动电源"分开考虑,否则继电器吸合瞬间的电流变化容易被误判成通信问题。联调时建议先只验证"给控制信号、继电器是否动作",确认这一步之后再接上锁具。

五、实现范围、演示方式与局限

1. 已实现的核心功能

本项目能直接演示的功能可以归纳为三条:

  • 模式切换:自由、锁定、访客三种模式可在控制端切换,切换后门锁的响应行为随之改变。
  • 蓝牙开关锁:控制端连接门锁后,可在自由模式下下发开锁与关锁指令,执行端校验后驱动继电器动作。
  • 临时授权:访客模式下,管理员设置并分享临时密钥,访客凭正确密钥完成一次开关锁,权限可随模式切回而失效。

2. 适合演示的场景

基于上面的功能边界,这套设计比较适合用来展示以下几个场景:

演示场景需要配合的操作观察重点
自由模式开锁 管理员登录、连接门锁、下开发指令 继电器是否按指令动作、锁具是否随之通断
锁定模式拒止 先切到锁定,再尝试开关锁 任意用户的操作是否都不产生动作
访客授权开锁 管理员设密钥并分享,访客输入密钥 正确密钥放行、错误密钥被拒
权限失效 访客用完后再切回自由或锁定 原临时密钥是否不再能开锁
断连表现 连接过程中断开蓝牙或移开手机 界面提示与锁端状态是否一致

这些场景都建立在「执行端已上电并处于广播、手机蓝牙已开启」的前提下。如果演示时连不上,建议先确认锁端是否正常广播、小程序是否已完成登录与授权,再排查连接参数。

3. 当前局限与可扩展方向

本项目没有覆盖以下能力,写开题或答辩时要注意措辞:

  • 后端存储与架构不对应:数据存储设计提到用关系型数据库存放用户信息、设备信息与开锁记录,但架构层面只有控制端与执行端两个子系统,并未出现与之相连的服务端;项目创建时还选择了"不使用云服务"。因此"开锁记录落库"目前更像一个设计方向,而不是两端结构里已经打通的环节。
  • 加密传输尚未落实:数据交互被归纳为连接建立、身份验证、指令传输、状态反馈和数据加密传输等环节,但加密所用的具体方式并未给出,密钥如何管理也没有说明。
  • 临时密钥策略偏弱:密钥由管理员手工设置、可任意修改、并非随机生成,且没有明确的有效期与使用次数限制。
  • 缺少量化结论:文中给出了"完成真机调试"的工作描述,但没有给出连接距离、开锁时延、连续使用时长或成功率一类的数据,答辩时若要证明效果需要自行补测。
  • 供电口径较粗:电源部分以 12V 适配器为源头,但主控与继电器线圈的取电电压并不一致,设计描述里没有细化就地降压或分路供电的环节。

这些局限恰恰可以作为毕设的扩展点。常见的可深入方向包括:为开锁记录设计落库方案、给临时密钥加上有效期与次数限制、把锁状态反馈做成界面可核对的一致性提示。选一个做深,论文和答辩都会更有内容。

如果也在做类似的"小程序 + 硬件"门锁题目,可以在评论区说明自己的主控模块型号、锁具供电方式,以及目前卡在蓝牙连接、模式判定还是驱动接线;《微信小程序蓝牙门锁的权限链路:三种模式怎么一路落到继电器动作?》会针对连接与权限的判定链路再展开一层。

赞(0)
未经允许不得转载:171主机测评 » 【毕设选题】微信小程序蓝牙门锁:从系统架构与硬件接线看控制端和执行端怎么配合
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址