Files
bishe-STM32/docs/02_K210识别端文档.md
T
2026-05-01 20:29:02 +08:00

76 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# K210识别端文档
## 1. 端侧职责
- 进行人脸检测、特征提取、识别。
- 通过 UART1 将识别结果实时发送给 STM32。
- 通过 UART2 驱动 ESP8266,与服务端同步人脸映射与删除任务。
- 上传新增人脸照片到服务端。
对应入口文件:`k210/main.py`
## 2. 通信链路
- `UART1`(K210 <-> STM32):发送识别结果。
- `UART2`(K210 <-> ESP8266):HTTP 通信到服务端 `:8082`。
识别结果发送格式(给 STM32):
- 已识别:`ID:<id>,NAME:<name>,CONF:<score>`
- 陌生人:`UNKNOWN`
## 3. 本地数据文件
- 人脸特征库:`/sd/recordftr.txt`
- 本地映射缓存:`/sd/face_mapping.txt`
- 本地同步版本:`/sd/sync_version.txt`
- 本地人脸照片缓存:`/sd/face_photos/<face_id>.jpg`
## 4. 服务端交互接口
K210 在脚本中使用 HTTP 访问以下接口:
- `GET /api/v1/sync/state?client=k210&last_version=<本地版本>`:按版本拉取统一同步状态。
- `POST /api/v1/sync/ack`:确认已完成删除任务。
- `GET /api/v1/sync/request`:轮询是否触发同步。
- `POST /api/v1/sync/request/ack`:确认收到同步请求。
- `GET /api/v1/faces/photos`:获取服务端已有照片列表,用于判断本地照片是否需要补传。
- `POST /api/v1/faces/photos/<face_id>`:上传 JPEG 人脸照片。
v1 兼容辅助接口:
- `GET /api/v1/faces/mappings`
- `GET /api/v1/faces/pending-delete`
- `POST /api/v1/faces/delete-ack`
## 5. 启动与运行流程
1. 初始化摄像头、KPU 模型、LCD、按键中断、串口。
2. 启动 ESP8266,尝试连接 WiFi。
3. 启动同步:
- 读取 `/sd/sync_version.txt`。
- 请求统一同步状态。
- 先删除 `pending_delete` 中的人脸特征。
- 再应用 `face_mappings`。
- 成功后保存新的同步版本。
4. 进入主循环:识别 + 绘制 + 向 STM32 上报。
5. 分时网络任务(避免阻塞识别帧率):
- 新增人脸时先把 JPEG 保存到 `/sd/face_photos/`,再加入上传队列。
- 启动时先获取服务端照片列表,再扫描 `/sd/face_photos/`,只补传服务端缺失的照片;如果服务端不可达,则退回全量加入补传队列。
- 优先处理照片上传队列,上传失败会保留本地照片并等待下次重试。
- 然后处理同步任务。
## 6. 按键功能
在 `k210/main.py` 中定义:
- 短按:添加人脸。
- 长按(约2秒):进入删除单个人脸模式。
- 超长按(约5秒):删除全部人脸。
## 7. 当前默认配置(代码内)
- WiFi:`YOUR_WIFI_SSID / YOUR_WIFI_PASSWORD`
- 服务端:`127.0.0.1:8082`(部署时改为实际服务端地址)
- API Token:`change-me-token`(部署时必须修改)
文件位置:`k210/main.py`
## 8. 部署注意事项
- SD 卡需包含模型文件:
- `/sd/FaceDetection.smodel`
- `/sd/FaceLandmarkDetection.smodel`
- `/sd/FeatureExtraction.smodel`
- 与 STM32 使用统一学号语义(映射同步后应发送真实学号语义)。
- 网络任务失败不会阻塞识别主流程,但会影响照片与映射同步时效;本地照片缓存会用于后续补传。