基于STM32和ESP8266的智慧考勤系统设计与实现【免费开源】

简介: 本文介绍了一个基于 STM32F103ZET6 + ESP8266 Mesh 的智慧考勤系统,涵盖了硬件架构、软件设计、网络组网、服务器端实现与数据导出。该系统不仅实现了考勤自动化,还支持多点分布式部署,具有良好的扩展性与应用价值。

基于STM32和ESP8266的智慧考勤系统设计与实现

源码见文末

一、前言

随着智能硬件与物联网技术的快速发展,传统的考勤方式(如纸质登记、简单IC卡刷卡机)已无法满足企业、学校等场景对效率与智能化的需求。本文介绍了一种基于 STM32F103ZET6 微控制器ESP8266 WiFi 模块 的智慧考勤系统。该系统支持 刷卡指纹识别 两种验证方式,能够通过 ESP8266 Mesh 组网 与服务器通讯,实现 人员信息管理考勤数据自动导出(Excel 表格),大幅提升了管理效率与系统智能化水平。


在这里插入图片描述

二、系统总体设计

在这里插入图片描述

智慧考勤系统主要由三部分组成:

  1. 终端考勤设备(STM32F103ZET6 + RFID + 指纹识别模块 + ESP8266)
  2. 无线网络通讯层(ESP8266 Mesh 组网)
  3. 服务器管理平台(人员管理 + 数据存储 + Excel导出)

系统架构图

[RFID / 指纹模块] → [STM32F103ZET6 控制器] → [ESP8266 Mesh节点] 
       ↘------------------------------------------↗
                          [服务器端(Web + 数据库 + Excel导出)]

在此架构下,STM32F103 负责底层硬件控制与身份验证,ESP8266 提供可靠的无线组网通信,服务器端则实现业务逻辑、数据存储与可视化。


三、硬件设计

在这里插入图片描述

1. 控制器:STM32F103ZET6

  • 主频 72MHz,资源丰富(512KB Flash, 64KB RAM)。
  • 提供多个 UART、SPI、I²C 接口,便于连接指纹模块、RFID、ESP8266。
  • 低功耗,稳定可靠,适合嵌入式考勤设备。

2. 身份验证模块

  • RFID 模块:用于刷卡(IC 卡/ID 卡),通过 UART 与 STM32 通讯。
  • 指纹识别模块:采用 UART 接口,提供指纹采集、比对功能。

3. 网络通讯模块:ESP8266

  • 支持 2.4GHz WiFi,内置 TCP/IP 协议栈。
  • 通过 ESP-MESH 技术 实现多节点网络覆盖,避免单点连接压力。
  • 使用 UART 与 STM32F103 通讯,协议采用 AT 指令自定义串口协议

4. 电源与其他模块

  • 5V 适配器供电,LDO 转换 3.3V 给 ESP8266。
  • LCD 显示屏(用于显示考勤结果、系统提示)。
  • 蜂鸣器 / LED 指示灯,提示打卡成功与否。

在这里插入图片描述

四、软件架构设计

系统软件分为三层:

  1. 设备端(STM32F103)

    • 串口驱动:与 RFID / 指纹模块 / ESP8266 通讯。
    • 数据采集:刷卡/指纹比对结果 → 上传至服务器。
    • 状态显示:LCD 显示考勤结果。
  2. 通讯层(ESP8266 Mesh)

    • Mesh 节点自动组网,确保大范围考勤设备无缝互联。
    • 提供 TCP 客户端,定期上传考勤数据至服务器。
  3. 服务器端(Web + 数据库)

    • 用户管理(添加、删除、修改人员信息)。
    • 考勤数据管理(存储、查询、统计)。
    • Excel 导出功能(批量导出考勤报表)。

五、ESP8266 Mesh组网原理

传统 WiFi 模式下,多个终端需要直接连接路由器,当节点数量过多时会造成 拥塞与掉线。ESP8266 Mesh 通过 分布式网络 架构,让节点之间可以 自动转发数据,实现 多节点覆盖 + 动态路由

  • 根节点:连接外部服务器,作为网关。
  • 子节点:分布在各个考勤点,自动连接到上级节点。
  • 数据转发:若子节点无法直连网关,会通过邻近节点中继。

这种方式特别适合 考勤系统多点分布 的应用场景(如学校、企业园区)。


六、服务器端实现

服务器采用 Python + Flask + MySQL 搭建,提供 Web 管理界面与数据存储功能。

1. 数据库设计(MySQL)

-- 人员表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id VARCHAR(20) UNIQUE,
    name VARCHAR(50),
    department VARCHAR(50)
);

-- 考勤记录表
CREATE TABLE attendance (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id VARCHAR(20),
    time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status VARCHAR(20)
);

2. 后端接口示例(Flask)

from flask import Flask, request, jsonify
import pymysql

app = Flask(__name__)

# 数据库连接
db = pymysql.connect(host="localhost", user="root", password="123456", database="attendance")
cursor = db.cursor()

@app.route('/upload', methods=['POST'])
def upload_data():
    data = request.json
    user_id = data['user_id']
    status = data['status']
    cursor.execute("INSERT INTO attendance(user_id, status) VALUES (%s, %s)", (user_id, status))
    db.commit()
    return jsonify({
   "msg": "考勤数据上传成功"})

@app.route('/users/add', methods=['POST'])
def add_user():
    data = request.json
    cursor.execute("INSERT INTO users(user_id, name, department) VALUES (%s, %s, %s)", 
                   (data['user_id'], data['name'], data['department']))
    db.commit()
    return jsonify({
   "msg": "用户添加成功"})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

3. Excel导出功能

借助 pandas + openpyxl,可以快速将考勤数据导出为 Excel:

import pandas as pd
import pymysql

def export_excel():
    conn = pymysql.connect(host="localhost", user="root", password="123456", database="attendance")
    df = pd.read_sql("SELECT * FROM attendance", conn)
    df.to_excel("考勤数据.xlsx", index=False)
    print("考勤数据已导出为 Excel 文件")

在这里插入图片描述

七、系统运行流程

  1. 用户刷卡或录入指纹 → STM32F103 验证身份。
  2. STM32F103 通过 UART 将用户 ID 与考勤状态传递给 ESP8266。
  3. ESP8266 作为 Mesh 节点,将数据上传至服务器。
  4. 服务器接收数据,存入 MySQL 数据库。
  5. 管理员可通过 Web 界面进行用户管理与数据查询。
  6. 支持一键导出 Excel,形成考勤报表。

八、功能扩展与优化

  • 人脸识别模块:可进一步引入摄像头与 AI 模型,提升安全性。
  • 断网缓存:STM32F103 本地存储未上传数据,联网后自动补传。
  • 数据可视化:利用 ECharts/Matplotlib 生成考勤统计图。
  • 移动端管理:通过小程序或APP进行实时考勤查看。

九、总结

本文介绍了一个基于 STM32F103ZET6 + ESP8266 Mesh 的智慧考勤系统,涵盖了硬件架构、软件设计、网络组网、服务器端实现与数据导出。该系统不仅实现了考勤自动化,还支持多点分布式部署,具有良好的扩展性与应用价值。

在企业、校园、工厂等场景中,该系统能够有效替代传统考勤模式,助力 智能办公智慧校园 的发展。

完整源码开源分享:https://blog.csdn.net/weixin_52908342/article/details/150591980

相关文章
|
4月前
|
JSON 数据可视化 物联网
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
随着物联网(IoT)技术的发展,实时数据监测系统逐渐成为日常生活和工业环境中不可或缺的组成部分。其中,气象监测系统不仅可以提供温度、湿度、天气状况等信息,还可以通过数据分析为农业、城市管理和个人生活提供智能化建议。本项目以STM32F407为核心控制器,结合FreeRTOS实时操作系统和ESP8266 Wi-Fi模块,实现一套高可靠、实时更新的智能气象监测系统。同时,系统集成了计时功能,通过串口屏将实时数据可视化展示,为用户提供直观的操作体验。
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
|
4月前
|
传感器 数据采集 人工智能
基于STM32单片机的智能晾衣架设计与实现【开源免费】
随着智能家居的发展,传统晾衣架已经难以满足现代家庭对便捷、智能化的需求。基于STM32单片机的智能晾衣架能够实现自动升降、光照检测、风干控制、远程控制等功能,为家庭用户提供更智能、更舒适的晾晒体验。本项目以STM32F103C8T6为核心控制器,通过电机驱动模块、光照传感器、温湿度传感器、蓝牙/Wi-Fi通信模块,实现晾衣架的自动化与远程控制。
基于STM32单片机的智能晾衣架设计与实现【开源免费】
|
4月前
|
存储 编解码 开发者
基于STM32和OLED的小恐龙游戏项目设计与实现【免费开源】
小恐龙游戏最初是作为浏览器离线小游戏而广为人知,其简单的操作与生动的画面使其深受用户喜爱。本项目将经典的小恐龙跳跃游戏移植到嵌入式平台上,使用STM32微控制器作为核心控制器,OLED屏幕进行显示,搭配按键或触摸实现用户交互。通过本项目,既可以体验游戏开发在嵌入式系统上的实现方式,又能掌握STM32 GPIO、定时器、OLED驱动、按键扫描及简单动画实现技术。
基于STM32和OLED的小恐龙游戏项目设计与实现【免费开源】
|
4月前
|
传感器 数据采集 物联网
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
随着可穿戴设备的普及,智能手环逐渐成为健康管理、运动监测和生活便捷的重要工具。本项目旨在设计一款基于STM32微控制器和FreeRTOS实时操作系统的智能手环,具备心率监测、运动计步、睡眠分析以及蓝牙通信功能。通过FreeRTOS实现多任务调度,提高系统响应效率和资源利用率,同时保证低功耗设计,延长手环续航。
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
|
4月前
|
传感器 数据采集 安全
基于STM32与ESP8266的智能家居控制系统【免费开源】
通过本项目的开发,不仅加深了对 STM32 外设编程的理解,还掌握了物联网系统的整体设计思路。从传感器数据采集,到通信协议实现,再到云端与APP交互,完整地体验了智能家居系统的开发流程。这为后续更复杂的 IoT 项目打下了坚实基础。
基于STM32与ESP8266的智能家居控制系统【免费开源】
|
4月前
|
传感器 数据采集 安全
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
本项目成功实现了基于STM32的智慧行李箱设计,采用了超声波测距、重力传感器和报警系统等技术,打造了一款智能且安全的行李箱。通过超声波测距模块,行李箱能够实时跟随主人并根据距离变化调整电机的速度与方向,确保小车始终保持与主人的相对位置。此外,重力测量模块能够检测行李箱内物品的重量,若超重则及时通过LED和蜂鸣器提醒主人,避免物品过重对行李箱造成损害或不便。
STM32与传感器技术结合打造智能行李箱 | 自动跟随与报警系统【免费开源】
|
4月前
|
传感器 物联网 生物认证
【免费开源】基于STM32的智慧门禁系统设计与实现(附源码)
基于STM32的智慧门禁系统,整合了RFID、密码、指纹等多种身份验证方式,实现门锁的智能化控制。通过模块化设计,系统易扩展,可接入更多智能设备,如远程监控、访客记录上传云端等。该项目不仅适用于小型办公场所、社区门禁,也可作为智能家居控制系统的一部分,具有良好的推广价值和实用性。
【免费开源】基于STM32的智慧门禁系统设计与实现(附源码)
|
4月前
|
传感器 人工智能 监控
【免费开源】基于STM32的智能宠物喂食系统设计与实现(全流程技术详解)附源码
本项目基于STM32F103C8T6设计实现智能宠物喂食系统,支持定时喂食、远程控制、余粮检测、语音提示等功能,结合传感器与物联网技术,提升宠物喂养智能化水平,适用于家庭及嵌入式课程实践。源码开源,具备良好扩展性。
【免费开源】基于STM32的智能宠物喂食系统设计与实现(全流程技术详解)附源码
|
4月前
|
传感器 前端开发 物联网
【免费开源】STM32+ESP8266 打造低成本智能家居物联网系统(附源码与硬件设计)
本项目基于STM32与ESP8266打造低成本智能家居系统,支持温度监测、远程控制与数据上传,附完整源码与硬件设计,适合物联网初学者与电子爱好者学习与扩展。
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
1504 2