基于stm32单片机的指纹识别考勤系统
硬件:
stm32f103最小系统板、as608指纹模块、0.96寸oled显示屏、usb转ttl模块、温湿度dht11传感器、蜂鸣器、 GY-906红外测温模块、电磁门开门指示灯led
单片机软件功能:
(1)测温湿度显示到oled屏幕,并把温湿度串口发给上位机
(2)红外测温显示到oled屏幕,并把温度串口发给上位机
(3)用单片机按键搭配as608指纹模块,实现指纹录入、指纹删除功能
(4)指纹正确,oled显示ok,电磁门开门指示灯led亮2秒,表示正常开门,然后led熄灭
(5)指纹错误,oled显示error,蜂鸣器响5秒,表示开门失败
上位机电脑软件功能:
(1)用python写一个显示界面
(2)显示出单片机发过来的温湿度、红外测温
(3)可以通过上位机软件删除指纹,并与单片机通信同步
(5)显示已打卡的人数和未打卡人数(即是录入的所有指纹中,已打卡和未打卡的)
交付:
(1)单片机程序
(2)上位机程序
(3)电路图
(4)pcb图
(5)实物
(6)视频使用教程
(7)lunwen材料
graph LR
A[开始] --> B{按键状态检测}
B -- 按键按下 --> C[消抖处理]
C --> D{按键动作识别}
D -- 按下 --> E[生成按下事件]
D -- 释放 --> F[生成释放事件]
E --> G[系统处理按下事件]
F --> H[系统处理释放事件]
G --> I[结束]
H --> I[结束]
B -- 无按键按下 --> I[结束]
graph LR
A[开始] --> B{模式检测}
B -- 模式0 --> C[显示考勤]
B -- 模式1 --> D[显示录入指纹]
B -- 模式2 --> E[显示删除指纹]
C --> F[显示温湿度]
C --> G[显示红外测温]
C --> H[显示指纹统计]
D --> I[显示录入指纹提示]
E -- 无指纹ID --> J[显示无ID删除提示]
E -- 有指纹ID --> K[显示删除指纹ID提示]
F --> L[结束]
G --> L[结束]
H --> L[结束]
I --> L[结束]
J --> L[结束]
K --> L[结束]
录指纹流程的Mermaid流程图:
graph LR
A[开始] --> B{获取指纹图像}
B -- 成功 --> C[生成特征]
C -- 成功 --> D{再次获取指纹图像}
D -- 成功 --> E[生成第二个特征]
E -- 成功 --> F[对比两次指纹]
F -- 成功 --> G[生成指纹模板]
G -- 成功 --> H[储存模板]
H -- 成功 --> I[结束]
B -- 失败 --> J[结束]
C -- 失败 --> J[结束]
D -- 失败 --> J[结束]
E -- 失败 --> J[结束]
F -- 失败 --> J[结束]
G -- 失败 --> J[结束]
H -- 失败 --> J[结束]
。
刷指纹流程的Mermaid流程图:
graph LR
A[开始] --> B[蜂鸣器响一次]
B --> C[获取指纹图像]
C -- 成功 --> D[生成特征]
D -- 成功 --> E[高速搜索]
E -- 成功 --> F[显示成功并开门]
E -- 失败 --> G[显示错误]
D -- 失败 --> G[显示错误]
C -- 失败 --> G[显示错误]
F --> H[结束]
G --> H[结束]
删除指纹流程的Mermaid流程图:
graph LR
A[开始] --> B[蜂鸣器响一次]
B --> C[输入指纹ID]
C -- 输入有效 --> D[删除指纹]
D -- 成功 --> E[显示成功]
D -- 失败 --> F[显示错误]
C -- 输入无效 --> F[显示错误]
E --> G[结束]
F --> G[结束]
graph LR
A[开始] --> B{初始化DHT11}
B -- 成功 --> C[复位DHT11]
C --> D{检测DHT11回应}
D -- 存在 --> E[读取数据]
E -- 成功 --> F[解码数据]
F -- 成功 --> G[返回温湿度数据]
D -- 不存在 --> H[结束]
E -- 失败 --> H[结束]
F -- 失败 --> H[结束]
G --> H[结束]
graph LR
A[开始] --> B[初始化SMBus]
B --> C[发送开始位]
C --> D[发送设备地址和读取命令]
D --> E[发送重复开始位和设备地址]
F[接收数据]
E --> F
F --> G[发送停止位]
G --> H[计算PEC]
H --> I[返回温度数据]
I --> J[结束]
graph LR
A[开始] --> B[初始化系统]
B --> C[检测PS_Sta状态]
C -->|有手指按下| D[刷指纹处理]
C -->|无手指按下| E[检查键盘输入]
E -->|键盘输入| F{键盘键值检测}
F -->|键值1| G[进入录指纹模式]
F -->|键值2| H[进入删除指纹模式]
F -->|键值3| I[确认删除指纹]
F -->|键值4| J[返回主页]
F -->|其他键| K[忽略其他键值]
G --> L[录入指纹流程]
H --> M[查找可删除的ID]
I --> N[删除指纹流程]
J --> O[清除签到人数]
L --> P[结束录入指纹]
M -->|找不到ID| Q[显示无ID可删除]
M -->|找到ID| R[显示可删除的ID]
P --> S[更新指纹库和显示]
R --> T[执行删除指纹]
T --> U[更新指纹库和显示]
Q --> V[结束删除指纹]
U --> V
S --> W[继续检测PS_Sta状态]
V --> W
W --> C
graph LR
A[开始] --> B[初始化系统]
B --> C[打开串口]
C --> D{解析串口数据}
D -- 温湿度数据 --> E[显示温湿度]
D -- 红外温度数据 --> F[显示红外温度]
C -- 按键1 --> G[发送录指纹指令]
C -- 按键2 --> H[发送删除指纹指令]
C -- 按键3 --> I[发送确认删除指令]
C -- 按键4 --> J[发送返回主页指令]
csharphttps://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!