3.1 KiB
3.1 KiB
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/mappingsGET /api/v1/faces/pending-deletePOST /api/v1/faces/delete-ack
5. 启动与运行流程
- 初始化摄像头、KPU 模型、LCD、按键中断、串口。
- 启动 ESP8266,尝试连接 WiFi。
- 启动同步:
- 读取
/sd/sync_version.txt。 - 请求统一同步状态。
- 先删除
pending_delete中的人脸特征。 - 再应用
face_mappings。 - 成功后保存新的同步版本。
- 进入主循环:识别 + 绘制 + 向 STM32 上报。
- 分时网络任务(避免阻塞识别帧率):
- 新增人脸时先把 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 使用统一学号语义(映射同步后应发送真实学号语义)。
- 网络任务失败不会阻塞识别主流程,但会影响照片与映射同步时效;本地照片缓存会用于后续补传。