Files
bishe-STM32/README.md
T
2026-05-01 11:18:34 +08:00

65 lines
2.3 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.
# 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`: `yzfh`
- `WIFI_PASSWORD`: `yzfhroot`
- `HTTP_SERVER_IP`: `27.106.113.205`
- `HTTP_SERVER_PORT`: `8082`
- `CLASS_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. 主流程说明
1. 系统初始化(OLED、串口、考勤模块、加密模块、RTC、传感器)。
2. 初始化并连接 ESP8266 到 WiFi 与 HTTP 服务器。
3. 可用时同步网络时间到 DS1302。
4. 定时拉取时间段配置。
5. 处理 K210 上报的人脸识别结果:
- 置信度通过阈值后进入签到逻辑。
- 本地去重 + 服务器时段去重。
- 记录加入本地队列并尝试上传。
6. 网络异常时离线缓存,恢复后批量补传。
## 6. 调试建议
- 优先看串口调试输出(`DEBUG_PRINT` 系列)。
- 检查 `g_wifi_connected`、`g_server_connected` 变化。
- 若频繁重连,先确认 AP 稳定性、服务器可达性与 8082 端口。
## 7. 构建与烧录
工程为 Keil 工程:
- `Project.uvprojx`
- `Project.uvoptx`
按当前板卡配置在 Keil 中编译并烧录。
## 8. 依赖与注意事项
- 与服务端 AES Key/IV 必须一致(否则 `/api/checkin` 解密失败)。
- DS1302 可用时优先作为本地时钟;不可用则回退网络时间。
- `Attendance.c` 的默认时间段仅为兜底,实际以服务器下发为准。