Library Seat Monitoring System Based on STM32
At present, the quiet study environment of the library is more and more popular among college students, but the fact that the seats in the library are relatively scarce makes the phenomenon of seat occupancy in the library more and more serious. In view of the above phenomenon, this paper designs a library seat monitoring system based on STM32 chip. Different from the common modes in the market that use image recognition to monitor seats or use library access control, the system uses infrared sensors to detect the use of library seats, and transmits the information to the supreme position system to realize the monitoring of library seats.
STM32F103C8T6
随着近些年来高校招生规模的不断扩大,图书馆作为学生学习的必争之地,受到广大师生的热烈欢迎。然而,近年来,图书馆的座位增长率与在校师生人数增长率严重失衡,常常供不应求,这就导致学生为了霸占位置而大费周章,严重破坏了校园的和谐环境,助长了不好的风气,给学校带来非常不利的影响
使用红外传感器监测座位使用情况,拥有安装便利,成本低,容易实现,后期维护简单等特点,同时可以实时监测每一座位,解决了图书馆占座和座位资源无法合理分配等问题。该系统可自动分辨出座位上是否被使用,并将信息上传至上位系统,配合上位机系统的预约、可视化管理等功能,方便同学找座和图书管理员管理,大大提高了图书馆座位的利用率。
本文所设计的系统具有座位使用情况检测、实时显示和向上位系统传输数据等功能。基于其所需的功能,把系统分为主控芯片、显示模块、红外传感器模块、数据传输模块,分别实现主控功能、显示使用情况功能、数据传输功能。系统总体框架如
红外传感器用于监测座位的使用情况,每个红外传感器配备了一个红外光源和一个光接收装置。传感器工作时,红外光源不断发射红外光,当座位被使用时,人体将红外光反射至接收器,接收器接收到红外光后,会向控制芯片传递信号“1”,表示座位正在被使用。相反,如果接收器未接收到红外光,那么它会向控制芯片传递信号“0”,表示座位未被使用;显示模块主要用于直观地展示红外传感器的监测结果。一旦红外传感器检测到座位有人使用,显示模块就会显示出数字1,以表明座位正在被使用;如果红外传感器没有检测到座位被使用,那么显示模块就会显示出数字0,以表明座位处于空闲状态;数据传输模块用于将红外传感器的信号通过串口通信发送至上位机。由此上位机就可以实时了解到各个座位的使用情况,便于进行进一步的座位管理和监管。
系统总体表现为:首先,红外传感器检测座位的使用情况,并将检测结果转化为信号传递给STM32芯片。然后,STM32芯片再将这些信号分别发送至OLED显示屏和上位机。在OLED显示屏上,我们可以看到单个座位的使用情况;而在上位机上,我们可以得到图书馆全部座位的使用情况。
东南大学曾设计过类似系统,其以AT89C51单片机作为控制核心,移位寄存器、LED共阳数码管、红外接近开关设计了一款监控管理系统
STM32F103C8T6型芯片用于处理红外传感器采集的信息,并对外部连接设施进行控制,实现芯片和上位系统的信号传递。本系统将STM32芯片的I/O口与显示模块连接,使用I2C通信协议进行数据传递,每个红外传感器均通过单总线协议与STM32芯片进行通信,这一通信方式有效降低了系统的复杂性并减少了所需的I/O端口数量,同时将读取到的信号传递到显示模块,可视化地展示每个座位的状态,即被占用(显示为1)或未被占用(显示为0),并将此信号通过串口通信传输到上位机。
本系统需要显示当前座位的预约和使用信息,故选用OLED模块。OLED显示模块采用0.96寸四引脚OLED。而I2C接口模式仅需2根线便可控制OLED,故选择I2C接口模式
本系统采用反射式红外传感器,接线如
在本座位监测系统中,数据传输的需求相对简单,主要涉及二进制状态信息——即座位被占用或空置的实时数据。鉴于此,系统设计采用了串口通信作为数据传输手段。串口通信的优势在于其简洁性和成本效益,能够在最小化硬件需求的情况下实现数据的序列化传输;仅通过发送(TXD)和接收(RXD)两根信号线,便能完成从STM32至上位计算机的数据通信。
为了实现STM32芯片与上位机之间的连接,本系统采用了USB转TTL (USB to TTL)的转换设备。该设备的主要功能是将USB信号转换为TTL电平信号,从而允许STM32通过USB接口与上位机进行串行通信。STM32与TTL的接线
当红外传感器检测到人体存在时,STM32将编码为“1”的信号通过串口通信发送至上位机,表示相应的座位正被占用。相反,若红外传感器未检测到人体,则STM32发送编码为“0”的信号,表示座位当前处于未被占用的状态。
本系统软件设计主要分为三大部分,以模块化的方式编写程序
1) 第一部分为红外检测模块,其用于检测座位使用情况。
2) 第二部分为显示模块,用于实时显示座位的使用情况。
3)第三部分为串口通信模块,其用于实时将座位使用情况传输至上位机。
首先设置打开STM32中GPIOB的时钟,并定义一个结构体,命名为GPIO_InitStructure,接着初始化B13引脚,模式选择为IPU上拉输入,输出速度设定为50 MHz。为了方便书写和使用,定义InfraredSensor_get()函数,其使用内置函数GPIO_ReadInputDataBit (GPIOB, GPIO_Pin_13)返回连接在B13端口的红外传感器的值。
首先设置打开STM32中GPIOB的时钟,输出类型设置为复用推挽输出,波特率采用9600,8字长,停止位长度1,无校验位,硬件流控制,只需要发送。然后,初始化Serial,初始化代码使用模块自带的默认初始化参数。最后,完成的函数包括Serial_SendByte() (发送单个字符);Serial_SendArray() (发送数组);Serial_SendString() (发送字符串);Serial_SendNumber (uint32_t Number, uint8_t Length) (发送十进制数字)。本系统主要使用Serial_SendNumber()向上位机传输信号,故上位机在接收信号时需选择文本模式接收。
首先声明“Delay.h”(延时)“OLED.h”(OLED显示)“InfraredSensor.h”(红外传感器)“Serial.h”(串口通信)等四个头文件,使得在主函数中可以调用这些模块中的函数。
构建循环while (1),使程序持续运行,再使用InfraredSensor_get()返回红外传感器的值x,判断红外传感器的值,然后使用OLED_ShowNum (1, 1, x, 1)将红外传感器的结果显示于OLED显示屏并使用Serial_SendNumber (x, 1)将此结果通过串口通信发送至上位机。
传感器检测到座位被使用时,结果如
传感器未检测到座位被使用时,结果
本项目的宗旨是为了解决传统图书馆座位管理方式中存在的座位资源浪费等问题,提高座位利用率。在此设计了一款基于STM32C8T6的图书馆座位监测系统,此系统实现了用红外传感器检测座位使用情况,并将情况上传至上位机,可配合上位机程序实现图书馆座位的预约与监测。虽然该系统还存在一些问题,但通过持续的技术研究和用户反馈,我们有信心能够不断改进系统,未来还可以在本系统的基础上添加压敏传感器、摄像头识别模块等以提升系统的监测准确度,并可增加校园卡刷卡入座功能,避免出现预约座位与实际使用座位不符的情况出现,同时也可增加开关装置,在不需要使用的时候可以关闭系统以节约能源,使其更好地服务于图书馆和读者。希望本研究能够为相关领域提供有价值的参考,辅助图书馆座位管理向智能化、信息化的方向发展。