a4e9d5d52d195efd9ace6f401c7f55fd1ba0f020
STM32固件端文档
1. 端侧职责
- 从 K210 串口接收识别结果。
- 在本地执行签到逻辑(时间段判断、重复判定、缓存与重传)。
- 通过 ESP8266 将签到数据以 AES-128-CBC 加密后上传服务端。
- 维护 RTC(DS1302)与网络时间同步。
对应入口文件:User/main.c
2. 关键模块
- 主流程:
User/main.c - 考勤逻辑:
Hardware/Attendance.c - WiFi/HTTP:
Hardware/esp8266.c - 加密:
Hardware/Crypto.c - RTC:
Hardware/DS1302.c - 光照补光:
Hardware/LightSensor.c - K210串口解析:
Hardware/K210_USART.c
3. 当前默认配置(代码内)
文件:User/main.c
WIFI_SSID:yzfhWIFI_PASSWORD:yzfhrootHTTP_SERVER_IP:27.106.113.205HTTP_SERVER_PORT:8082CLASS_ID:1
建议将上述配置改为部署环境参数后再编译烧录。
4. 通信与接口
STM32 通过 ESP8266_HttpGet / ESP8266_SendEncryptedData 访问服务端:
POST /api/checkin:上传加密签到数据(必带X-Encrypted: AES128-CBC)。GET /api/time:获取服务器时间戳。GET /api/timeslots:下载时间段配置。GET /api/check_duplicate:按时段查重。GET /api/today_records:下载今日已签到学号列表。
5. 主流程说明
- 系统初始化(OLED、串口、考勤模块、加密模块、RTC、传感器)。
- 初始化并连接 ESP8266 到 WiFi 与 HTTP 服务器。
- 可用时同步网络时间到 DS1302。
- 定时拉取时间段配置。
- 处理 K210 上报的人脸识别结果:
- 置信度通过阈值后进入签到逻辑。
- 本地去重 + 服务器时段去重。
- 记录加入本地队列并尝试上传。
- 网络异常时离线缓存,恢复后批量补传。
6. 调试建议
- 优先看串口调试输出(
DEBUG_PRINT系列)。 - 检查
g_wifi_connected、g_server_connected变化。 - 若频繁重连,先确认 AP 稳定性、服务器可达性与 8082 端口。
7. 构建与烧录
工程为 Keil 工程:
Project.uvprojxProject.uvoptx
按当前板卡配置在 Keil 中编译并烧录。
8. 依赖与注意事项
- 与服务端 AES Key/IV 必须一致(否则
/api/checkin解密失败)。 - DS1302 可用时优先作为本地时钟;不可用则回退网络时间。
Attendance.c的默认时间段仅为兜底,实际以服务器下发为准。
Description
Languages
C
94.5%
Assembly
5.5%