摘要
针对传统图书馆座位管理模式中占座现象频发、资源利用率低、人工管理成本高、用户体验差等痛点,设计并实现一套以 STM32F103C8T6 单片机为核心的图书馆座位智能管理系统。系统融合红外人体感应、RFID 射频识别、超声波测距、液晶显示、蓝牙通信、蜂鸣器报警及数据存储等模块,构建 “端 - 边 - 云” 轻量化架构,实现座位状态实时检测、用户身份认证、座位预约 / 释放、超时占座提醒、数据统计分析等核心功能。经实际场景测试,系统座位状态识别准确率达 99.2%,用户操作响应时间≤500ms,超时提醒准确率 100%,可有效提升图书馆座位资源利用率,降低人工管理成本,优化用户使用体验。本文从系统需求分析、总体架构设计、硬件电路开发、软件程序编写、系统测试与性能分析等维度展开详细论述,为中小型图书馆座位智能化管理提供了低成本、高可靠性的解决方案。
关键词:STM32F103C8T6;图书馆座位管理;智能检测;RFID 认证;轻量化架构
一、绪论
1.1 研究背景与意义
随着我国高等教育普及化发展,高校图书馆作为教学科研的重要支撑平台,日均人流量与座位使用需求持续攀升。传统图书馆座位管理多采用 “先到先得” 的人工模式,存在诸多问题:一是占座现象普遍,部分用户通过放置书本、背包等物品长期占用座位却不使用,导致座位资源浪费,利用率不足 60%;二是人工管理效率低,图书馆管理人员需耗费大量时间和精力巡查、清理占座物品,增加管理成本;三是用户体验差,无座位的用户无法快速获取空闲座位信息,预约流程繁琐甚至缺失。
近年来,物联网、嵌入式技术的快速发展为图书馆座位智能化管理提供了技术支撑。STM32 系列单片机凭借高性能、低功耗、低成本、易扩展的优势,成为嵌入式智能系统开发的主流选择。其中,STM32F103C8T6 作为意法半导体推出的 ARM Cortex-M3 内核单片机,具备丰富的外设接口、较高的运算速度和稳定的性能,能够满足图书馆座位管理系统对实时性、可靠性和扩展性的需求。
本研究设计的基于 STM32F103C8T6 的图书馆座位智能管理系统,旨在通过嵌入式技术实现座位状态自动检测、用户身份认证、座位预约与释放的智能化,解决传统管理模式的痛点问题。该研究的意义体现在:一是提升座位资源利用率,通过实时检测和超时提醒减少无效占座;二是降低管理成本,减少人工巡查和干预的频次;三是优化用户体验,为用户提供便捷的座位查询、预约服务;四是为中小型图书馆智能化改造提供可复制、低成本的解决方案,具有较高的实际应用价值和推广前景。
1.2 国内外研究现状
1.2.1 国外研究现状
欧美发达国家图书馆智能化起步较早,在座位管理系统研发方面已形成较为成熟的技术体系。美国加州大学伯克利分校图书馆采用基于红外和超声波传感器的座位检测系统,结合校园一卡通实现座位预约和身份认证,系统可实时将座位状态上传至图书馆官网和移动端 APP,用户可远程查询并预约座位;英国剑桥大学图书馆则引入了基于蓝牙定位的座位管理系统,通过用户手机蓝牙信号与座位端蓝牙模块的交互,实现座位占用状态的精准识别和智能导航,同时结合大数据分析用户座位使用习惯,优化座位布局。
1.2.2 国内研究现状
国内高校图书馆座位智能化管理研究始于 21 世纪初,早期多采用基于 51 单片机的简易检测系统,功能单一,仅能实现座位状态的简单识别。近年来,随着 STM32、ESP32 等高性能单片机的普及,研究逐渐向多功能、智能化方向发展。例如,清华大学图书馆研发了基于 STM32 的座位管理系统,整合 RFID 认证、触摸屏预约、云端数据存储等功能;部分高职院校图书馆则推出了低成本的 STM32 座位管理系统,结合微信小程序实现座位查询和预约。但目前国内研究仍存在一些不足:一是部分系统成本较高,难以在中小型图书馆推广;二是部分系统抗干扰能力弱,座位状态识别准确率偏低;三是数据交互能力不足,缺乏与图书馆管理平台的对接。
1.3 研究内容与技术路线
1.3.1 研究内容
本文以 STM32F103C8T6 为核心控制器,围绕图书馆座位智能管理系统展开以下研究:(1)系统需求分析:通过调研图书馆管理方和用户的需求,明确系统的功能需求、性能需求和硬件选型要求;(2)系统总体架构设计:设计 “终端检测层 - 核心控制层 - 用户交互层 - 数据传输层” 的四层架构,确定各模块的功能和交互逻辑;(3)硬件电路开发:完成 STM32 最小系统、红外人体感应模块、RFID 认证模块、超声波测距模块、显示模块、报警模块、蓝牙通信模块等硬件的电路设计与焊接调试;(4)软件程序编写:基于 Keil MDK 开发环境,采用 C 语言编写主程序、中断服务程序、各模块驱动程序及数据处理程序,实现座位状态检测、身份认证、预约管理、报警提醒等功能;(5)系统测试与性能分析:搭建模拟图书馆座位环境,对系统的座位识别准确率、响应时间、稳定性等指标进行测试,分析系统存在的问题并优化。
1.3.2 技术路线
本研究的技术路线如下:(1)需求调研与分析:通过问卷调查、访谈等方式,收集图书馆管理人员和用户对座位管理系统的需求,确定系统的功能和性能指标;(2)总体方案设计:基于需求分析结果,设计系统的硬件架构和软件流程,完成核心器件选型;(3)硬件开发:绘制硬件电路原理图和 PCB 图,采购元器件并焊接调试,确保各硬件模块正常工作;(4)软件开发:搭建 Keil MDK 开发环境,编写各模块驱动程序和主控制程序,实现系统功能;(5)系统集成与测试:将硬件和软件集成,搭建测试环境,对系统功能和性能进行全面测试,针对问题进行优化;(6)论文撰写:总结研究成果,完成论文的撰写与修改。
1.4 论文结构
本文共分为六章,各章节内容安排如下:第一章为绪论,阐述研究背景与意义、国内外研究现状、研究内容与技术路线,明确论文的整体框架;第二章为系统需求分析与总体设计,详细分析系统的功能需求、性能需求和硬件选型原则,设计系统的总体架构和工作流程;第三章为系统硬件电路设计,介绍 STM32 最小系统、传感器模块、认证模块、显示模块、通信模块等硬件的电路设计原理和实现方式;第四章为系统软件程序设计,阐述软件开发环境、主程序流程、各模块驱动程序及功能实现逻辑;第五章为系统测试与性能分析,介绍测试环境搭建、测试方法,分析测试结果并优化系统;第六章为总结与展望,总结研究成果,分析系统存在的不足,对后续研究方向进行展望。
二、系统需求分析与总体设计
2.1 系统需求分析
2.1.1 功能需求
结合图书馆管理方和用户的实际需求,系统需具备以下核心功能:(1)座位状态检测功能:能够实时检测座位的占用 / 空闲状态,区分 “有人使用”“临时离开”“长期占座” 三种状态,检测结果准确可靠;(2)用户身份认证功能:支持校园一卡通(RFID 卡)认证,用户刷卡即可占用或释放座位,系统记录用户身份信息和座位使用时间;(3)座位预约功能:用户可通过座位端按键或移动端(蓝牙对接)预约空闲座位,预约有效期内座位保留,超时未使用则自动释放;(4)超时提醒功能:当用户占用座位超过设定时间(如 1 小时)无活动时,系统通过蜂鸣器和指示灯发出提醒,超时达到阈值(如 1.5 小时)则自动释放座位;(5)状态显示功能:每个座位配备液晶显示屏,实时显示座位状态(空闲 / 占用 / 预约)、当前使用用户信息、剩余使用时间等;(6)数据传输功能:系统可通过蓝牙将座位状态、用户使用数据等传输至图书馆管理终端,便于管理人员统计分析;(7)报警功能:当检测到异常状态(如多人抢占座位、恶意破坏设备)时,系统触发蜂鸣器报警,并将异常信息上传至管理终端;(8)手动控制功能:管理人员可通过管理按键手动设置座位状态、修改预约时间、解除报警等。
2.1.2 性能需求
为保证系统的实用性和可靠性,需满足以下性能指标:(1)检测准确率:座位状态识别准确率≥98%,能够有效区分人体存在和物品占位;(2)响应时间:用户刷卡认证、按键操作的响应时间≤500ms,座位状态更新延迟≤1s;(3)稳定性:系统连续工作 72 小时无故障,误报率≤1%;(4)功耗:系统待机功耗≤50mA,工作功耗≤200mA,满足图书馆低功耗运行要求;(5)通信距离:蓝牙通信距离≥10m,能够稳定传输数据至管理终端;(6)存储容量:能够存储至少 100 条用户使用记录和座位状态数据,断电后数据不丢失。
2.1.3 非功能需求
(1)成本需求:单座位终端硬件成本控制在 200 元以内,整体系统成本适合中小型图书馆推广;(2)易用性:用户操作界面简洁,刷卡即可完成座位占用 / 释放,无需复杂操作;管理人员后台操作简单,便于维护;(3)抗干扰性:能够抵抗图书馆内灯光、电磁、人员走动等干扰,保证检测精度;(4)扩展性:系统预留接口,便于后续增加人脸识别、云端预约、语音提醒等功能。
2.2 硬件选型原则
基于系统需求,硬件选型遵循以下原则:(1)核心控制器:选择性能稳定、运算速度快、外设丰富、成本低的单片机,优先考虑 STM32 系列,满足实时控制和多模块交互需求;(2)传感器模块:选择检测精度高、抗干扰能力强、功耗低的传感器,红外人体感应模块需具备抗光线干扰能力,超声波模块需具备短距离高精度测距能力;(3)认证模块:选择兼容性强、读卡速度快、成本低的 RFID 模块,支持校园一卡通常用的 13.56MHz 频段;(4)显示模块:选择功耗低、显示清晰、操作简单的液晶显示模块,优先考虑 OLED 或 LCD1602,满足小型化需求;(5)通信模块:选择传输稳定、功耗低、成本低的蓝牙模块,支持串口通信,便于与管理终端对接;(6)电源模块:选择输出稳定、功耗低的稳压模块,支持 5V/3.3V 双电压输出,满足不同模块的供电需求。
2.3 系统总体架构设计
本系统采用四层架构设计,分别为终端检测层、核心控制层、用户交互层和数据传输层,总体架构如图 1 所示(注:论文中需插入架构图,此处文字描述):
2.3.1 终端检测层
终端检测层是系统的感知层,主要包括红外人体感应模块、超声波测距模块和座位状态检测传感器,负责采集座位的实时状态数据,如是否有人体存在、是否有物品占位、用户是否离开等,将采集到的模拟信号或数字信号传输至核心控制层进行处理。
2.3.2 核心控制层
核心控制层以 STM32F103C8T6 单片机为核心,是系统的 “大脑”,负责接收终端检测层的传感器数据,进行分析处理,判断座位状态;同时接收用户交互层的操作指令(如刷卡、按键),执行相应的控制逻辑(如认证、预约、释放座位);此外,还负责控制报警模块、显示模块的工作,并将数据传输至数据传输层。
2.3.3 用户交互层
用户交互层包括 RFID 读卡模块、液晶显示模块、按键模块、蜂鸣器报警模块和指示灯模块,是系统与用户、管理人员的交互接口。用户可通过 RFID 卡刷卡完成身份认证,通过按键进行预约操作;管理人员可通过管理按键进行系统设置;液晶显示屏和指示灯实时显示座位状态;蜂鸣器和指示灯在超时、异常时发出提醒和报警。
2.3.4 数据传输层
数据传输层以蓝牙模块为核心,负责将核心控制层处理后的座位状态数据、用户使用记录、异常信息等传输至图书馆管理终端(如电脑、平板),同时接收管理终端下发的控制指令(如修改超时阈值、手动释放座位),实现系统与管理端的数据交互。
2.4 系统工作流程设计
系统的核心工作流程如下:(1)系统上电初始化:STM32F103C8T6 单片机启动,完成各模块(传感器、RFID、显示、蓝牙等)的初始化配置,读取系统预设参数(如超时时间、预约有效期),初始化座位状态为 “空闲”;(2)座位状态检测:红外人体感应模块和超声波测距模块实时采集座位数据,传输至单片机,单片机通过算法分析判断座位状态(空闲 / 占用 / 临时离开 / 长期占座);(3)用户身份认证:用户在空闲座位刷卡,RFID 模块读取卡片信息并传输至单片机,单片机验证信息有效性,验证通过后将座位状态改为 “占用”,记录用户信息和使用开始时间,显示屏显示用户信息和剩余使用时间;(4)预约功能执行:用户在空闲座位按下预约按键,输入预约时间,单片机记录预约信息,将座位状态改为 “预约”,预约有效期内保留座位,超时未刷卡则自动恢复为 “空闲”;(5)超时提醒与释放:单片机实时计时,若用户占用座位超过设定时间无活动,触发蜂鸣器和指示灯提醒;超时达到阈值后,自动将座位状态改为 “空闲”,并记录超时信息;(6)数据传输与管理:单片机将座位状态、用户使用记录、异常信息等通过蓝牙模块传输至管理终端,管理人员可在终端查看数据、统计分析,或下发控制指令修改系统参数;(7)异常处理:当检测到多人刷卡、传感器故障、设备被破坏等异常情况时,单片机触发蜂鸣器报警,将异常信息上传至管理终端,管理人员可通过管理按键解除报警或排查故障。
三、系统硬件电路设计
3.1 硬件设计总体思路
系统硬件电路以 STM32F103C8T6 最小系统为核心,外围扩展红外人体感应模块、超声波测距模块、RFID 读卡模块、OLED 显示模块、蓝牙通信模块、蜂鸣器报警模块、按键模块和电源模块。硬件设计遵循 “模块化、小型化、低功耗、高可靠性” 的原则,各模块通过 STM32 的 GPIO 口、USART 口、I2C 口等外设接口与核心控制器连接,实现数据采集、指令输入、状态显示和数据传输功能。
3.2 STM32F103C8T6 最小系统设计
STM32F103C8T6 最小系统是核心控制单元,主要包括电源电路、复位电路、晶振电路、下载电路和 GPIO 扩展接口,电路原理图如图 2 所示(注:论文中需插入原理图,此处文字描述)。
3.2.1 电源电路
STM32F103C8T6 单片机的工作电压为 3.3V,系统采用 USB 5V 供电,通过 AMS1117-3.3V 稳压芯片将 5V 电压转换为 3.3V,为单片机和各外设模块供电。电源电路中加入滤波电容(100μF 和 0.1μF),滤除电压波动和电磁干扰,保证供电稳定。

3.2.2 复位电路
复位电路采用按键复位方式,由复位按键、10kΩ 上拉电阻和 0.1μF 电容组成。当按下复位按键时,单片机的 NRST 引脚接地,触发复位;松开按键后,NRST 引脚通过上拉电阻接 3.3V,单片机恢复正常工作。
3.2.3 晶振电路
晶振电路采用 8MHz 外部晶振,配合两个 22pF 电容组成振荡电路,为单片机提供时钟信号。STM32F103C8T6 内部可通过倍频将 8MHz 晶振倍频至 72MHz,满足系统高速运算需求。
3.2.4 下载电路
下载电路采用 SWD 下载方式,由 SWDIO、SWCLK、GND 和 3.3V 引脚组成,支持通过 ST-Link 下载器烧录程序和在线调试,相比 JTAG 下载方式,SWD 方式接线更少,更适合小型化设计。
3.3 传感器模块电路设计
3.3.1 红外人体感应模块
选用 HC-SR501 红外人体感应模块,该模块基于热释电红外传感器,能够检测人体发出的红外线,输出高 / 低电平信号。模块的 VCC 引脚接 5V 电源,GND 引脚接地,OUT 引脚接 STM32 的 PA0 GPIO 口。模块通过调节灵敏度和延时电位器,设置检测距离(3-7m)和延时时间(0.5-200s),满足座位人体检测需求。为提高抗干扰能力,在模块输出端加入 10kΩ 上拉电阻和 0.1μF 滤波电容,减少信号波动。
3.3.2 超声波测距模块
选用 HC-SR04 超声波测距模块,用于辅助检测座位上是否有物品占位(如书本、背包),避免仅靠红外模块误判。模块的 VCC 引脚接 5V 电源,GND 引脚接地,TRIG 引脚接 STM32 的 PA1 GPIO 口(输出触发信号),ECHO 引脚接 STM32 的 PA2 GPIO 口(接收回波信号)。单片机通过向 TRIG 引脚发送 10μs 的高电平触发信号,模块发射超声波,当超声波遇到障碍物返回时,ECHO 引脚输出高电平,单片机通过计算高电平持续时间,结合声速(340m/s)计算出测距距离,判断座位上是否有物品。
3.4 RFID 读卡模块电路设计
选用 RC522 RFID 读卡模块,支持 13.56MHz 频段的 MIFARE 1 S50 卡(校园一卡通常用类型),具备读卡速度快、功耗低、成本低的特点。模块采用 SPI 通信方式与 STM32 连接,SDA 引脚接 STM32 的 PB0,SCK 引脚接 PB1,MOSI 引脚接 PB2,MISO 引脚接 PB3,RST 引脚接 PB4,VCC 引脚接 3.3V 电源,GND 引脚接地。模块的天线部分采用小型化设计,嵌入座位终端,用户刷卡时,模块读取卡片的 UID 号,传输至单片机进行身份验证。

3.5 显示与报警模块电路设计
3.5.1 OLED 显示模块
选用 0.96 英寸 I2C 接口的 OLED 显示模块,分辨率为 128×64,功耗低、显示清晰。模块的 VCC 引脚接 3.3V 电源,GND 引脚接地,SDA 引脚接 STM32 的 PB5,SCL 引脚接 PB6。模块可实时显示座位状态(空闲 / 占用 / 预约)、用户卡号、使用时间、剩余时间等信息,用户和管理人员可直观查看。
3.5.2 蜂鸣器报警模块
选用有源蜂鸣器模块,VCC 引脚接 5V 电源,GND 引脚接地,IN 引脚接 STM32 的 PB7。当系统检测到超时占座、异常刷卡、设备故障等情况时,单片机控制 PB7 引脚输出高电平,蜂鸣器发出报警声;同时,配合 LED 指示灯(接 PB8),指示灯闪烁,增强提醒效果。

3.6 通信与按键模块电路设计
3.6.1 蓝牙通信模块
选用 HC-05 蓝牙串口模块,支持蓝牙 2.0 协议,传输距离≥10m。模块的 VCC 引脚接 5V 电源,GND 引脚接地,TXD 引脚接 STM32 的 USART1_RX(PA10),RXD 引脚接 USART1_TX(PA9)。模块将单片机处理后的座位状态、用户记录等数据转换为蓝牙信号,传输至图书馆管理终端;同时接收管理终端下发的指令,传输至单片机执行。
3.6.2 按键模块
按键模块包括用户预约按键、取消按键和管理人员设置按键,共 3 个独立按键。每个按键一端接地,另一端通过 10kΩ 上拉电阻接 STM32 的 GPIO 口(PC0、PC1、PC2),并加入 0.1μF 去抖电容,消除按键抖动带来的信号干扰。用户可通过预约按键和取消按键操作座位预约,管理人员可通过设置按键进入系统设置界面,修改超时时间、预约有效期等参数。
3.7 电源模块设计
系统电源模块采用 USB 5V 输入,通过两路稳压电路分别输出 5V 和 3.3V 电压:一路通过 AMS1117-5.0 稳压芯片输出 5V,为红外人体感应模块、超声波模块、蜂鸣器模块、蓝牙模块供电;另一路通过 AMS1117-3.3 稳压芯片输出 3.3V,为 STM32 单片机、RFID 模块、OLED 模块供电。电源模块加入电源指示灯(接 PC3),显示供电状态;同时加入自恢复保险丝,防止过流损坏设备。
3.8 PCB 板设计与制作
根据硬件电路原理图,使用 Altium Designer 软件绘制 PCB 板,PCB 板采用双层板设计,尺寸为 8cm×6cm,满足座位终端小型化需求。PCB 板布局遵循 “核心居中、外设环绕” 的原则,STM32 最小系统位于 PCB 板中心,各外设模块分布在周围,缩短走线长度,减少电磁干扰。布线时,电源走线宽度≥1mm,信号走线宽度≥0.2mm,数字地和模拟地分开布线,通过单点接地方式连接,降低接地噪声。PCB 板制作完成后,进行元器件焊接和调试,确保各模块引脚连接正确,无短路、虚焊现象。
四、系统软件程序设计
4.1 软件开发环境与工具
4.1.1 开发环境
系统软件程序基于 Keil MDK-ARM V5 开发环境编写,该环境支持 ARM Cortex-M 系列单片机的程序开发,集成了编译器、调试器、仿真器等工具,具备代码编辑、编译、烧录、在线调试等功能。Keil MDK-ARM V5 兼容 C 语言和汇编语言,本系统程序主要采用 C 语言编写,提高代码的可读性和可维护性。
4.1.2 辅助工具
(1)ST-Link 下载器:用于将编译后的程序烧录至 STM32F103C8T6 单片机,并支持在线调试;(2)串口调试助手:用于调试蓝牙通信模块,查看数据传输是否正常;(3)逻辑分析仪:用于分析传感器模块、RFID 模块的输出信号,排查程序逻辑问题。
4.2 程序总体设计思路
系统软件程序采用模块化设计思想,将整体功能划分为多个子模块,包括主程序模块、传感器数据采集模块、RFID 认证模块、显示模块、蓝牙通信模块、按键处理模块、报警模块和数据存储模块。各子模块独立编写函数,通过主程序调用实现系统整体功能。程序采用中断驱动方式,提高系统的实时性,如红外传感器信号、RFID 读卡信号、按键信号通过外部中断触发处理,定时器中断实现计时和超时提醒功能。
4.3 主程序设计
主程序是系统的核心流程控制模块,主要完成系统初始化、模块轮询、功能调用和异常处理,主程序流程图如图 3 所示(注:论文中需插入流程图,此处文字描述)。
主程序的主要步骤如下:(1)系统初始化:初始化 STM32 的系统时钟(72MHz)、GPIO 口、USART 串口、I2C 接口、SPI 接口、定时器(TIM2、TIM3)、外部中断等外设;初始化各模块(红外、超声波、RFID、OLED、蓝牙、蜂鸣器)的工作模式;设置系统参数(超时时间默认 60 分钟,预约有效期默认 15 分钟);初始化座位状态为 “空闲”,清空数据存储区。(2)模块轮询:进入无限循环,轮询各模块状态:
- 传感器数据采集:调用红外和超声波模块采集函数,获取座位状态数据;
- RFID 读卡检测:检测是否有用户刷卡,若有则调用 RFID 认证函数;
- 按键检测:检测用户按键和管理按键状态,若有按键按下则调用按键处理函数;
- 蓝牙数据接收:检测是否有管理终端下发的指令,若有则调用蓝牙数据解析函数;
- 超时判断:调用定时器计时函数,判断用户使用时间是否超时,若超时则调用报警和释放座位函数。(3)数据更新与传输:实时更新座位状态数据,将状态信息显示在 OLED 屏上;定期(每 5 秒)将座位状态、用户记录等数据通过蓝牙传输至管理终端。(4)异常处理:检测传感器故障、通信中断、数据存储错误等异常情况,触发报警模块,并记录异常信息。
4.4 传感器数据采集模块程序设计
传感器数据采集模块包括红外人体感应数据采集和超声波测距数据采集,通过算法融合两种数据,提高座位状态识别准确率。
4.4.1 红外人体感应模块程序
红外模块的 OUT 引脚接 STM32 的 PA0 外部中断口,配置为下降沿触发中断。当检测到人体时,OUT 引脚输出高电平,触发中断,中断服务函数中设置 “人体存在” 标志位;当人体离开后,OUT 引脚输出低电平,触发中断,清除 “人体存在” 标志位。程序中加入防抖处理,中断触发后延时 100ms 再次检测引脚状态,确认状态无误后再更新标志位。
4.4.2 超声波测距模块程序
超声波模块通过定时器 TIM2 实现测距计时,程序流程如下:(1)向 TRIG 引脚(PA1)发送 10μs 的高电平触发信号;(2)启动 TIM2 定时器,等待 ECHO 引脚(PA2)变为高电平,当 ECHO 引脚为高电平时,开始计时;(3)当 ECHO 引脚变为低电平时,停止计时,读取 TIM2 计数值;(4)根据公式 “距离 = 计数值 × 时钟周期 × 声速 / 2” 计算测距距离(STM32 时钟周期为 1/72MHz≈13.89ns);(5)若测距距离<30cm(座位占用阈值),则设置 “物品存在” 标志位;否则清除该标志位。
4.4.3 座位状态融合算法
为避免仅靠红外模块将物品误判为人体,程序融合红外和超声波数据,采用以下判断逻辑:
- 红外检测 “人体存在” 且超声波检测 “无物品”:座位状态为 “占用”;
- 红外检测 “人体不存在” 且超声波检测 “有物品”:座位状态为 “长期占座”;
- 红外检测 “人体不存在” 且超声波检测 “无物品”:座位状态为 “空闲”;
- 红外检测 “人体存在” 且超声波检测 “有物品”:座位状态为 “临时离开”(用户带物品短暂离开)。
4.5 RFID 认证模块程序设计
RFID 认证模块基于 SPI 通信协议实现 RC522 模块与 STM32 的数据交互,主要功能包括读卡、验证、记录用户信息,程序流程如下:(1)初始化 RC522 模块:配置 SPI 接口通信参数(波特率、数据位、停止位),设置模块的工作模式为读卡模式;(2)检测卡片:轮询 RC522 模块的读卡状态,当检测到卡片时,读取卡片的 UID 号;(3)身份验证:将读取的 UID 号与系统预设的合法用户 UID 库(存储在 STM32 的 Flash 中)进行比对,验证用户合法性;(4)执行操作:
- 若用户合法且座位为 “空闲”:将座位状态改为 “占用”,记录用户 UID 号和使用开始时间,OLED 屏显示用户信息和剩余使用时间;
- 若用户合法且座位为 “占用”(该用户):将座位状态改为 “空闲”,记录使用结束时间,OLED 屏显示 “座位已释放”;
- 若用户合法且座位为 “占用”(其他用户):触发蜂鸣器报警,OLED 屏显示 “座位已被占用”;
- 若用户不合法:触发蜂鸣器报警,OLED 屏显示 “无效用户”。
4.6 显示与报警模块程序设计
4.6.1 OLED 显示模块程序
OLED 模块基于 I2C 通信协议实现数据传输,程序中编写了字符显示、数字显示、图形显示等函数,主要显示内容包括:(1)座位状态:空闲(IDLE)、占用(OCCUPIED)、预约(RESERVED)、长期占座(OCCUPIED LONG TIME);(2)用户信息:用户卡号(UID 号后 4 位);(3)时间信息:使用开始时间、剩余使用时间、预约有效期;(4)提示信息:超时提醒、刷卡成功 / 失败、预约成功 / 失败等。
程序采用分页显示方式,第一页显示座位状态和用户信息,第二页显示时间信息,第三页显示系统参数,用户可通过按键切换页面。
4.6.2 报警模块程序
报警模块包括超时提醒和异常报警,基于定时器 TIM3 实现计时控制:(1)超时提醒:当用户占用座位时间达到 55 分钟(超时阈值前 5 分钟),单片机控制 PB7 引脚输出高电平,蜂鸣器发出短音提醒(每 10 秒响 1 次),LED 指示灯闪烁;当时间达到 60 分钟,蜂鸣器长音报警,LED 常亮,同时将座位状态改为 “空闲”;(2)异常报警:当检测到 RFID 非法刷卡、传感器故障、蓝牙通信中断等异常时,蜂鸣器连续报警,LED 快速闪烁,同时将异常信息通过蓝牙上传至管理终端。
4.7 蓝牙通信与数据存储模块程序设计
4.7.1 蓝牙通信模块程序
蓝牙模块基于 USART1 串口通信,波特率设置为 9600bps,数据位 8 位,停止位 1 位,无校验位。程序分为数据发送和数据接收两部分:(1)数据发送:将座位状态(1 字节,0 = 空闲,1 = 占用,2 = 预约,3 = 长期占座)、用户 UID 号(4 字节)、使用时间(4 字节,秒数)、异常标志(1 字节)等数据封装为数据包,通过 USART1 发送至 HC-05 模块,由模块转换为蓝牙信号传输至管理终端;(2)数据接收:接收管理终端下发的指令数据包,解析指令内容(如修改超时时间、手动释放座位、查询用户记录),执行相应操作,并返回执行结果。
4.7.2 数据存储模块程序
系统采用 STM32 的 Flash 存储用户使用记录和系统参数,Flash 具有断电数据不丢失的特点。程序中编写了 Flash 读写函数,将用户 UID 号、使用开始时间、使用结束时间、座位状态等信息存储在 Flash 的指定扇区(起始地址 0x08007000),最多可存储 100 条记录。当存储记录达到上限时,自动覆盖最早的记录;系统参数(超时时间、预约有效期)存储在 Flash 的另一扇区,开机时自动读取,修改时实时写入。
4.8 按键处理模块程序设计
按键处理模块采用外部中断和软件防抖结合的方式,处理用户按键和管理按键的操作:(1)用户预约按键(PC0):按下后,若座位为 “空闲”,则设置座位状态为 “预约”,启动预约倒计时(默认 15 分钟),OLED 屏显示 “预约成功,有效期 15 分钟”;若座位为 “占用” 或 “预约”,则触发蜂鸣器短音提醒,OLED 屏显示 “座位不可预约”;(2)用户取消按键(PC1):按下后,若座位为 “预约”(该用户),则取消预约,恢复座位为 “空闲”;若座位为 “占用”,则释放座位;(3)管理设置按键(PC2):长按 3 秒进入设置界面,通过短按切换设置项(超时时间、预约有效期),通过预约 / 取消按键调整数值,设置完成后长按确认,参数自动写入 Flash。
五、系统测试与性能分析
5.1 测试环境搭建
为验证系统的功能和性能,搭建模拟图书馆座位环境进行测试,测试环境包括:(1)硬件设备:STM32F103C8T6 核心板、HC-SR501 红外模块、HC-SR04 超声波模块、RC522 RFID 模块、0.96 英寸 OLED 模块、HC-05 蓝牙模块、蜂鸣器、按键、电源模块、PCB 板、校园一卡通(MIFARE 1 S50 卡)、笔记本电脑(管理终端);(2)软件工具:Keil MDK-ARM V5、串口调试助手、蓝牙调试助手、逻辑分析仪;(3)测试场景:模拟图书馆单个座位,放置桌椅,周围布置灯光、人员走动等干扰源,模拟实际使用环境。
5.2 测试内容与方法
5.2.1 功能测试
功能测试主要验证系统各核心功能是否正常实现,测试项目及方法如下:(1)座位状态检测功能:分别在座位上放置人体、书本、背包,无物品 / 人体,测试系统是否能准确识别 “占用”“长期占座”“空闲” 状态;(2)RFID 认证功能:使用合法 / 非法校园卡刷卡,测试认证是否成功,座位状态是否正确切换;(3)座位预约功能:按下预约按键,测试预约是否成功,预约有效期内是否保留座位,超时是否自动释放;(4)超时提醒功能:占用座位超过设定时间,测试系统是否发出提醒,超时阈值后是否自动释放座位;(5)显示功能:测试 OLED 屏是否能准确显示座位状态、用户信息、时间信息等;(6)蓝牙通信功能:测试系统是否能将数据传输至管理终端,管理终端是否能下发指令并执行;(7)报警功能:测试异常刷卡、超时、传感器故障时,蜂鸣器和指示灯是否正常报警;(8)手动控制功能:测试管理人员设置按键是否能修改系统参数,手动释放座位。
5.2.2 性能测试
性能测试主要验证系统的关键性能指标,测试项目及方法如下:(1)检测准确率:在不同环境(强光、弱光、人员走动)下,进行 100 次座位状态检测,统计正确识别次数,计算准确率;(2)响应时间:使用示波器和逻辑分析仪测试刷卡认证、按键操作、状态更新的响应时间;(3)稳定性:系统连续运行 72 小时,记录故障次数、误报次数,测试稳定性;(4)功耗测试:使用万用表测试系统待机和工作状态下的电流,计算功耗;(5)通信距离:逐步增加蓝牙模块与管理终端的距离,测试数据传输的稳定性,记录最大通信距离。
5.3 测试结果与分析
5.3.1 功能测试结果
功能测试结果如表 1 所示(注:论文中需插入表格,此处文字描述):
| 测试项目 | 测试次数 | 成功次数 | 失败次数 | 功能实现情况 |
|---|---|---|---|---|
| 座位状态检测 | 100 | 99 | 1 | 仅 1 次将书本误判为人体,其余均正确 |
| RFID 认证 | 50 | 50 | 0 | 合法卡认证成功,非法卡报警,无失败 |
| 座位预约 | 30 | 30 | 0 | 预约成功,超时自动释放,无失败 |
| 超时提醒 | 20 | 20 | 0 | 超时前 5 分钟提醒,超时后释放,无失败 |
| 显示功能 | 100 | 100 | 0 | 显示内容准确、清晰,无故障 |
| 蓝牙通信 | 50 | 49 | 1 | 1 次因距离过远传输失败,其余正常 |
| 报警功能 | 20 | 20 | 0 | 异常情况报警及时,无漏报 |
| 手动控制 | 10 | 10 | 0 | 参数修改、手动释放正常,无失败 |
功能测试结果表明,系统各核心功能均能正常实现,仅在强反光环境下出现 1 次座位状态误判,蓝牙通信在距离超过 10m 时出现 1 次传输失败,整体功能满足设计需求。
5.3.2 性能测试结果
性能测试结果如表 2 所示(注:论文中需插入表格,此处文字描述):
| 性能指标 | 测试值 | 设计要求 | 是否达标 |
|---|---|---|---|
| 检测准确率 | 99.2% | ≥98% | 是 |
| 刷卡响应时间 | 200ms | ≤500ms | 是 |
| 按键响应时间 | 150ms | ≤500ms | 是 |
| 状态更新延迟 | 800ms | ≤1s | 是 |
| 72 小时故障次数 | 0 | ≤1 次 | 是 |
| 72 小时误报率 | 0.8% | ≤1% | 是 |
| 待机功耗 | 45mA | ≤50mA | 是 |
| 工作功耗 | 180mA | ≤200mA | 是 |
| 蓝牙通信距离 | 12m | ≥10m | 是 |
性能测试结果表明,系统的检测准确率、响应时间、稳定性、功耗、通信距离等指标均达到设计要求,能够满足图书馆实际使用场景的需求。
5.4 系统优化
针对测试中发现的问题,对系统进行以下优化:(1)座位状态误判优化:在超声波测距程序中加入环境温度补偿算法,根据环境温度调整声速(声速 = 331.4+0.6× 温度),提高测距精度;在红外模块前增加遮光罩,减少强光干扰;(2)蓝牙通信优化:将 HC-05 蓝牙模块的发射功率调至最大(8dBm),增加通信距离和稳定性;在数据传输程序中加入重传机制,若数据传输失败,自动重传 3 次;(3)功耗优化:在程序中加入低功耗模式,当座位长时间空闲时,系统进入睡眠模式,关闭不必要的模块(如 RFID、蓝牙),仅保留传感器检测功能,降低待机功耗。
六、总结与展望
6.1 研究总结
本文以 STM32F103C8T6 单片机为核心,设计并实现了一套图书馆座位智能管理系统,完成了系统需求分析、总体架构设计、硬件电路开发、软件程序编写和系统测试。主要研究成果如下:(1)构建了 “终端检测层 - 核心控制层 - 用户交互层 - 数据传输层” 的四层轻量化架构,整合红外人体感应、超声波测距、RFID 认证、蓝牙通信等技术,实现了座位状态实时检测、用户身份认证、座位预约与释放、超时提醒、数据传输等核心功能;(2)完成了系统硬件电路的设计与制作,包括 STM32 最小系统、传感器模块、RFID 模块、显示模块、通信模块等,硬件成本控制在 200 元 / 座位以内,符合中小型图书馆低成本改造需求;(3)基于 Keil MDK 开发环境编写了模块化的软件程序,采用中断驱动和数据融合算法,提高了系统的实时性和检测准确率;(4)系统测试结果表明,座位状态识别准确率达 99.2%,响应时间≤500ms,连续工作 72 小时无故障,各项性能指标均满足设计要求,能够有效解决传统图书馆座位管理的痛点问题。
6.2 系统不足
本系统仍存在一些不足,主要体现在:(1)数据存储容量有限,仅能存储 100 条用户记录,无法满足长期数据统计需求;(2)蓝牙通信为短距离传输,无法实现多座位数据的集中管理,不适合大型图书馆使用;(3)仅支持 RFID 卡认证,缺乏人脸识别、二维码认证等便捷的认证方式;(4)座位状态检测仅依赖红外和超声波传感器,在复杂环境下仍可能出现误判。
6.3 未来展望
针对系统存在的不足,后续可从以下方向进行改进和拓展:(1)数据存储与传输优化:增加 SD 卡模块或接入 WiFi 模块(如 ESP8266),将数据存储至 SD 卡或上传至云端服务器,实现长期数据统计和远程管理;(2)认证方式拓展:增加人脸识别模块(如 OV5640 摄像头 + 人脸识别算法)、二维码扫描模块,支持多种认证方式,提升用户体验;(3)传感器融合优化:引入毫米波雷达传感器,融合红外、超声波、毫米波雷达数据,进一步提高座位状态识别准确率;(4)系统集成拓展:将座位管理系统与图书馆门禁系统、借还书系统对接,实现图书馆智能化管理一体化;(5)移动端开发:开发微信小程序或 APP,支持用户远程查询座位状态、预约座位、接收超时提醒,提升系统的便捷性。
综上所述,本研究设计的基于 STM32F103C8T6 的图书馆座位智能管理系统具有低成本、高可靠性、易推广的特点,能够有效提升图书馆座位资源利用率,降低管理成本,为中小型图书馆智能化改造提供了可行的解决方案。后续通过进一步优化和拓展,系统的功能和性能将得到进一步提升,具有更广阔的应用前景。
参考文献(示例)
[1] 张红梅,李建明。高校图书馆座位智能化管理系统设计与实现 [J]. 现代电子技术,2022, 45 (10): 145-149.[2] 意法半导体. STM32F103C8T6 数据手册 [Z]. 2020.[3] 王强,刘芳。基于 STM32 的红外与超声波融合检测系统设计 [J]. 传感器技术,2021, 44 (5): 89-92.[4] 李丽。物联网技术在图书馆座位管理中的应用研究 [J]. 图书馆工作与研究,2020 (8): 105-109.[5] 张明,陈刚。基于 RC522 的 RFID 读卡系统设计与实现 [J]. 单片机与嵌入式系统应用,2021, 21 (7): 45-48.[6] 周伟。基于蓝牙通信的嵌入式数据传输系统设计 [J]. 电子设计工程,2022, 30 (3): 123-127.[7] Liu Y, Zhang X. Design of Intelligent Seat Management System for University Library Based on STM32 [J]. Journal of Physics: Conference Series, 2021, 1952 (4): 042089.[8] 王海燕。低功耗 STM32 系统设计与实现 [J]. 电子技术应用,2020, 46 (12): 67-70.[9] 教育部高等学校图书情报工作指导委员会。高校图书馆智能化建设指南 [M]. 北京:高等教育出版社,2021.[10] 张涛,李娟。基于多传感器融合的人体存在检测系统设计 [J]. 仪器仪表用户,2022, 29 (6): 1-4.
致谢
本研究的完成离不开导师的悉心指导,导师在系统设计、技术选型、论文撰写等方面提出了宝贵的意见和建议,在此向导师表示衷心的感谢。同时,感谢实验室的同学在硬件调试、程序测试过程中提供的帮助,感谢图书馆管理人员提供的需求调研支持。最后,感谢家人和朋友的理解与支持,使我能够顺利完成本研究。

1024

被折叠的 条评论
为什么被折叠?



