151 3746 0293

行业动态

一、产品简介聚澜智能钥匙柜是一款软硬件一体化物联网钥匙管控设备,依托RFID 射频识别、生物识别、云端管理平台、电磁锁控技术,彻底替代传统纸质登记钥匙管理模式,实现钥匙借还全自动、权限分级管控、存取全程留痕可追溯聚澜智能。柜体采用加厚冷轧钢板钣金工艺,产品线覆盖 10‑200 点位多种规格;分为壁挂小型款、落地
RFID智能钥匙柜产品介绍 + 核心控制代码方案
时间:2026-09-05 16:42:55
<p style="text-indent: 2em;">一、产品简介</p><p>聚澜智能钥匙柜是一款软硬件一体化物联网钥匙管控设备,依托RFID 射频识别、生物识别、云端管理平台、电磁锁控技术,彻底替代传统纸质登记钥匙管理模式,实现钥匙借还全自动、权限分级管控、存取全程留痕可追溯聚澜智能。</p><p>柜体采用加厚冷轧钢板钣金工艺,产品线覆盖 10‑200 点位多种规格;分为壁挂小型款、落地大容量款两大形态,可按需定制防爆、恒温除湿、国密加密传输等特殊版本,广泛用于政企机关、公检法、物业园区、酒店、4S 店、工厂机房、轨道交通等场景。</p><p><img src="/static/upload/image/20260905/1788597764387515.png" style="cursor: pointer;"/></p><h2>二、核心功能</h2><ol class=" list-paddingleft-2" style="width: 840.75px;"><li><p>多方式身份认证:指纹、人脸、IC 刷卡、密码、APP 远程审批,多重开锁验证方式可选</p></li><li><p>分级权限管理:管理员、普通操作人员、临时访客多角色,支持限时临时授权,到期自动回收权限</p></li><li><p>RFID 在位实时检测:每一把钥匙绑定独立 RFID 电子标签,系统实时判断钥匙取出 / 归还状态,识别准确率可达 99.9%,解决金属环境标签串扰漏读问题</p></li><li><p>异常报警机制:超时未归还、暴力开柜、非法取走钥匙触发声光告警,消息推送管理员</p></li><li><p>完整操作日志审计:自动记录取还人、钥匙编号、存取时间、用途,日志不可篡改,满足安防合规审计</p></li><li><p>系统开放对接:提供标准 HTTP / 串口通信协议,支持对接 OA 系统、门禁平台、内网涉密系统,适配银河麒麟、统信 UOS 国产操作系统</p></li><li><p>应急保障:断电保留数据,配备独立机械应急开锁通道,保障故障场景钥匙可取</p></li></ol><h2>三、整体技术架构</h2><p>整套系统三层架构</p><ol class=" list-paddingleft-2" style="width: 840.75px;"><li><p>硬件层:ESP32/STM32 主控板 + RFID‑RC522 读写模块 + 多路电磁锁控板 + 指纹 / 人脸识别模块 + 触摸屏</p></li><li><p>终端层:本地触控程序,负责身份校验、锁控指令下发、钥匙状态读取</p></li><li><p>云端后台层:用户权限管理、借还日志存储、远程开锁、设备监控 API 接口</p></li></ol><h2>四、示例核心代码(3 套可运行参考代码)</h2><blockquote><p>说明:以下为演示参考代码,聚澜智能商用成品使用自研加密通信协议;示例仅展示开锁逻辑、RFID 读取、后端接口原型,不能直接替代原厂控制系统。</p></blockquote><h3>代码 1:后端开锁接口 SpringBoot(Java)</h3><pre>import&nbsp;org.springframework.web.bind.annotation.*; import&nbsp;javax.annotation.Resource; import&nbsp;java.util.HashMap; import&nbsp;java.util.Map; @RestController @RequestMapping(&quot;/api/keyCabinet&quot;) public&nbsp;class&nbsp;KeyCabinetController&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;@Resource &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;LockBoardService&nbsp;lockBoardService; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;钥匙开锁接口 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;channel&nbsp;锁通道编号&nbsp;1‑50 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;keyId&nbsp;钥匙RFID标签编号 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;开锁结果 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;@PostMapping(&quot;/openLock/{channel}&quot;) &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Map&lt;String,Object&gt;&nbsp;openLock(@PathVariable&nbsp;Integer&nbsp;channel, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@RequestParam&nbsp;String&nbsp;keyId, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@RequestParam&nbsp;Long&nbsp;userId){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&lt;String,Object&gt;&nbsp;result&nbsp;=&nbsp;new&nbsp;HashMap&lt;&gt;(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//校验用户是否具备该钥匙权限 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;hasAuth&nbsp;=&nbsp;lockBoardService.checkUserAuth(userId,keyId); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!hasAuth){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;code&quot;,500); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;msg&quot;,&quot;无取用权限&quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//下发串口开锁指令 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;openSuccess&nbsp;=&nbsp;lockBoardService.sendOpenCmd(channel); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(openSuccess){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//记录取钥匙日志 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lockBoardService.saveBorrowLog(userId,keyId,channel); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;code&quot;,200); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;msg&quot;,&quot;开锁成功,请取走钥匙&quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;code&quot;,500); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;msg&quot;,&quot;开锁失败,硬件指令下发异常&quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;归还钥匙检测接口 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;@PostMapping(&quot;/returnKey&quot;) &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Map&lt;String,Object&gt;&nbsp;returnKey(@RequestParam&nbsp;String&nbsp;keyId, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@RequestParam&nbsp;Integer&nbsp;channel){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&lt;String,Object&gt;&nbsp;result&nbsp;=&nbsp;new&nbsp;HashMap&lt;&gt;(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;detectResult&nbsp;=&nbsp;lockBoardService.rfidDetect(channel,keyId); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(detectResult){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lockBoardService.saveReturnLog(keyId,channel); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;code&quot;,200); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;msg&quot;,&quot;钥匙归还成功&quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;code&quot;,500); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.put(&quot;msg&quot;,&quot;未检测到钥匙标签&quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><h3>代码 2:硬件主控 ESP32 MicroPython RFID + 锁控示例</h3><pre>from&nbsp;machine&nbsp;import&nbsp;Pin,UART import&nbsp;mfrc522 import&nbsp;time #初始化串口&nbsp;对接多路锁控板 uart&nbsp;=&nbsp;UART(2,baudrate=9600,tx=17,rx=16) #RFID读卡初始化 rdr&nbsp;=&nbsp;mfrc522.MFRC522(spi_id=0,sck=18,mosi=19,miso=5,cs=4,rst=22) #继电器锁通道引脚定义 lock_channel1&nbsp;=&nbsp;Pin(23,Pin.OUT) def&nbsp;open_lock(channel_num:int): &nbsp;&nbsp;&nbsp;&nbsp;&quot;&quot;&quot;开锁指令,通道1开锁2秒自动落锁&quot;&quot;&quot; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;channel_num&nbsp;==&nbsp;1: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_channel1.on() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;time.sleep(2) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lock_channel1.off() def&nbsp;read_rfid_tag(): &nbsp;&nbsp;&nbsp;&nbsp;&quot;&quot;&quot;读取钥匙RFID标签UID&quot;&quot;&quot; &nbsp;&nbsp;&nbsp;&nbsp;(stat,tag_type)&nbsp;=&nbsp;rdr.request(rdr.REQIDL) &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;stat&nbsp;==&nbsp;rdr.OK: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(stat,uid)&nbsp;=&nbsp;rdr.anticoll() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;stat&nbsp;==&nbsp;rdr.OK: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uid_str&nbsp;=&nbsp;&quot;&quot;.join([str(i)&nbsp;for&nbsp;i&nbsp;in&nbsp;uid]) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;uid_str &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;None #主循环 while&nbsp;True: &nbsp;&nbsp;&nbsp;&nbsp;tag_uid&nbsp;=&nbsp;read_rfid_tag() &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;tag_uid&nbsp;is&nbsp;not&nbsp;None: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print(&quot;检测钥匙标签UID:&quot;,tag_uid) &nbsp;&nbsp;&nbsp;&nbsp;#监听后台下发串口开锁指令 &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;uart.any()&gt;0: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recv_data&nbsp;=&nbsp;uart.read().decode() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&quot;OPEN_1&quot;&nbsp;in&nbsp;recv_data: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open_lock(1) &nbsp;&nbsp;&nbsp;&nbsp;time.sleep(0.3)</pre><h3>代码 3:前端开锁调用 JS 示例</h3><pre>/** &nbsp;*&nbsp;钥匙柜开锁请求函数 &nbsp;*&nbsp;@param&nbsp;{number}&nbsp;channelNo&nbsp;锁通道号 &nbsp;*&nbsp;@param&nbsp;{string}&nbsp;keyId&nbsp;RFID标签编号 &nbsp;*/ async&nbsp;function&nbsp;unlockKey(channelNo,keyId){ &nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;userId&nbsp;=&nbsp;localStorage.getItem(&quot;loginUserId&quot;); &nbsp;&nbsp;&nbsp;&nbsp;try{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;res&nbsp;=&nbsp;await&nbsp;fetch(`/api/keyCabinet/openLock/${channelNo}?keyId=${keyId}&amp;userId=${userId}`,{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method:&quot;POST&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;json&nbsp;=&nbsp;await&nbsp;res.json(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(json.code&nbsp;===&nbsp;200){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;开锁成功!请取出钥匙&quot;); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(json.msg); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}catch&nbsp;(err){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.error(&quot;网络异常&quot;,err); &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><h2>五、通信协议简要说明(串口)</h2><p>聚澜系列钥匙柜锁控板串口默认波特率:9600‑8‑N‑1 下发开锁指令示例:#OPEN,01# →打开 1 号钥匙点位; 查询钥匙在位状态指令:#QUERY,01#; 返回报文:#STATUS,01,IN#钥匙在位 /#STATUS,01,OUT#钥匙取出。</p><h2>六、产品价值总结</h2><p>聚澜智能钥匙柜把传统钥匙管理由人管人升级成系统管人,降低钥匙丢失、错拿、越权使用风险,全流程数据留痕,大幅降低物业、行政安保的人力管理成本,是政企安防精细化管控的刚需硬件解决方案。</p><p><br style="white-space: normal;"/></p><p><br/></p>
请留下您的联系方式,我们免费为您提供最新方案和报价
提 交
15137460293 发送短信
报名免费获取设计方案及报价