
2026电赛C题-小熊派解决方案
简介
适用于2026电赛C题的解决方案,因为一些原因今年电赛失利,但还是决定将项目开源出来,希望能帮到大家
简介:适用于2026电赛C题的解决方案,因为一些原因今年电赛失利,但还是决定将项目开源出来,希望能帮到大家开源协议
:CC BY-NC-SA 4.0
(未经作者授权,禁止转载)描述
星闪数字钥匙智能门锁系统
> 电赛 C 题 | 星闪 SLE 身份识别 + UWB 四锚点定位 + 智能门锁
>
> 本简介由AI辅助生成
项目简介
本项目实现了一套基于星闪(SLE)近距通信与 UWB 超宽带定位的数字钥匙门锁系统。钥匙端通过星闪广播身份 ID,门锁端识别 ID 后利用 4 个 UWB 锚点进行厘米级测距定位,在授权范围内自动解锁,实现无感身份验证与区域感知。
系统架构
星闪 SLE 通信
┌────────────┐ ID 广播 + Notify ┌─────────────────────┐
│ 钥匙 KEY │ ◄──────────────────────► │ 门锁 LOCK │
│ (H3863) │ UUID: 0x2828/0x2929 │ (H3863) │
│ │ │ SLE / UART×2 / OLED │
└────────────┘ │ LED×3 / 蜂鸣器 │
└─────────────────────┘
▲ ▲
UART1 │ │ UART2
▼ ▼
┌──────────┐ ┌──────────┐
│ 锚点 E │ │ 锚点 G │
│ 锚点 F │ │ 锚点 H │
│ STM32 + │ │ STM32 + │
│ DW1000 │ │ DW1000 │
└──────────┘ └──────────┘
核心功能
| 功能 | 实现方式 |
|---|---|
| 身份识别 | 星闪 SLE SSAP 协议,钥匙广播 4-bit ID,门锁接收校验 |
| 厘米级测距 | 4 × STM32+DW1000 UWB 锚点,DS-TWR 双向测距 |
| 定位解算 | 4 锚点差分平方算法计算 2D 坐标 + 方位角 |
| 滤波平滑 | 每锚点独立卡尔曼滤波 + 自适应野值剔除 |
| 区域感知 | 三级区域:感知 > 欢迎区(2m) > 解锁区(1m) |
| 状态指示 | OLED 实时显示 + LED 三色指示 + 蜂鸣器事件提示 |
| ID 校验 | 拨码开关设置期望 ID,与接收 ID 比对 |
硬件方案
器件清单
| 器件 | 型号 | 数量 | 角色 |
|---|---|---|---|
| 主控板 | BearPi-Pico H3863 | 2 | 钥匙 + 门锁 |
| UWB 模组 | DW1000 + STM32F103 | 4 | 测距锚点 E/F/G/H |
| 显示屏 | SSD1306 0.96" OLED | 1 | 门锁状态显示 |
| LED | 红/绿/黄 | 3 | 锁定/解锁/欢迎 |
| 蜂鸣器 | 有源蜂鸣器 | 1 | 进出区域提示 |
| 拨码开关 | 4 位 DIP | 2 | ID 设置 |
主控芯片
Hi3863 -- 海思 RISC-V 32bit MCU,240MHz,集成 Wi-Fi6 / BLE / 星闪 SLE,606KB SRAM,4MB Flash。
UWB 锚点布局
60cm
E ┌──────────┐ G
│ │
│ │ 60cm
│ │
F └──────────┘ H
标签端轮询 4 个锚点(E->F->G->H),各锚点独立测距后通过串口输出 X D:距离 格式数据,门锁端双 UART 并行接收。
软件架构
任务结构
门锁端运行两个并行 RTOS 任务:
- Lock 任务(优先级 17):SLE Client 扫描连接、ID 校验、OLED 刷新、LED/蜂鸣器控制、区域状态机
- Dist 任务(优先级 15):双 UART 接收 4 锚点测距数据、卡尔曼滤波、野值剔除、位置解算
定位算法
径向距离:
r = (avg - 61.0) / 1.105
坐标:
x = (d_G² - d_E²) / 120
y = (d_H² - d_F²) / 120
方位角:
angle = -atan2(y, x) × (180/π) - 125°
区域状态机
| 区域 | 距离 | LED | 蜂鸣器 |
|---|---|---|---|
| 解锁区 | < 1.0m | 绿灯 | 短响 100ms |
| 欢迎区 | < 2.0m | 黄灯 | 长响 200ms |
| 感知区 | >= 2.0m | 红灯 | - |
接线参考
门锁端 (H3863)
| 外设 | 引脚 | 说明 |
|---|---|---|
| LED Red | GPIO 4 | 锁定指示 (PIN_MODE_2) |
| LED Green | GPIO 5 | 解锁指示 (PIN_MODE_4) |
| LED Yellow | GPIO 14 | 欢迎指示 |
| Buzzer | GPIO 6 | 有源蜂鸣器 |
| OLED SCL | GPIO 13 | 软件 I2C |
| OLED SDA | GPIO 12 | 软件 I2C |
| DIP Switch ×4 | GPIO 9/1/2/3 | 期望 ID 输入 |
| UART1 TX/RX | GPIO 15/16 | 锚点 E/F 数据 |
| UART2 TX/RX | GPIO 8/7 | 锚点 G/H 数据 |
钥匙端 (H3863)
| 外设 | 引脚 | 说明 |
|---|---|---|
| DIP Switch ×4 | GPIO 0/1/2/3 | ID 输入 |
> 所有引脚均可通过 Kconfig 配置修改。
软件开源
完整源代码(H3863 固件 + STM32 UWB 锚点固件)已开源:
https://gitcode.com/gcw_rVSV2mp6/diansai-C
包含:
diansai2/-- H3863 钥匙端 + 门锁端固件(星闪通信、测距处理、OLED、状态机)stm32_uwb/-- STM32 UWB 标签 + 4 锚点固件(DW1000 驱动、DS-TWR 测距)
编译烧录
H3863 固件
- 获取 BearPi-Pico H3863 SDK
- 将
diansai2/放入application/samples/products/ - menuconfig 选择 KEY 或 LOCK 角色
python build.py -c diansai2- BurnTool_H3863 烧录
STM32 UWB 固件
- Keil MDK 打开
stm32_uwb/标签/USER/SPI.uvprojx编译标签固件 - 分别打开
基座/~基座4/编译 4 个锚点固件(BASE_ID 分别为 E/F/G/H) - ST-Link 烧录
创新点
- 星闪 SLE 通信:采用新一代短距通信技术 SparkLink Edge,原生 SSAP 协议栈,低延迟低功耗
- 4 锚点 UWB 定位:分布式测距 + 差分平方坐标解算 + 方位角计算
- 多级滤波融合:独立卡尔曼 + 自适应野值剔除 + 角度指数平滑(含 360° 环绕处理)
- 三级区域状态机:感知 -> 欢迎 -> 解锁,事件驱动蜂鸣器提示
许可证
CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享 4.0 国际)
- 允许学习、研究、修改、分享
- 禁止任何形式的商业使用
- 衍生作品须采用相同许可证
详情:https://creativecommons.org/licenses/by-nc-sa/4.0/
致谢
- BearPi-Pico H3863 SDK -- 海思 Hi3863 开发板
- LiteOS -- 华为轻量级实时操作系统
- Decawave DW1000 -- UWB 测距芯片
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。




![[已验证] PN7160 RFID/NFC调试器](https://image.lceda.cn/oshwhub/pullImage/781e4be003fd44b9a6b89ece6395948b.jpg?x-oss-process=image/resize,w_122,h_85,m_lfit/format,webp)





