王进康,吴培鑫,李东阳,胡文文
(河南科技大学,河南 洛阳 471023)
对于高校大学生来说,图书馆是在校学生重要的学习场所之一。然而,由于图书馆座位数量有限,图书馆座位缺乏合理且有效的管理,从而出现读者排队抢座、长期占座而不使用等现象,这已成为高校图书馆座位管理的一大难题[1]。针对图书馆座位的使用问题,一些高校采用线上座位预约系统,支持查询和预约,这在一定程度上解决了占座问题。但这种线上座位预约系统无法动态监测座位状态,也会出现一种问题:选座者预约成功后但由于种种原因不到或者提前离开,如果不及时监测座位使用情况,即使该座位没人,在座位预约管理系统中也无法选择该座位,带来了资源浪费[2]。本文所述的基于STM32F103单片机的图书馆座位状态监测系统与线上座位预约系统配合使用可以很好地解决上述存在的问题,为解决占座问题提供了一个科学的解决方案,为入馆学习的学生带来了便利。
本研究综合利用传感器对物体的识别功能和单片机的控制功能,设计了一种基于单片机控制的图书馆座位管理系统[3]。系统设计不仅要实现自动监测座位状态,及时将座位状态发送至上位机,而且还要考虑实际情况,保证其工作稳定、易于安装维护和具有经济推广价值。
图书馆座位监测系统可分为:红外反射式传感器模块、STM32F103单片机模块、NB-IOT物联网模块、电源处理模块等。整体设计图如图1。
图1 整体设计图
根据实际情况,考虑系统实际运用的场所,保证系统的可实施性,该设计方案利用市面上成熟的电气元件。例如,监测座位状态的传感器应该稳定固定在桌子底下,这种场所一般光线较弱,可以采用价格较为便宜的红外反射式传感器,节约成本。考虑到桌子摆放灵活,所以电源处理部分采用锂电池或者可充电电池。为了防止断电,系统停止工作,在电压低的时候,通过蜂鸣器及时提醒图书馆管理员及时更换电池或充电。
红外反射式传感器TCRT5000 的红外发射二极管不断地发射红外线,当模块检测遇到前方障碍物时,红外线反射到光电三极管上,光电三极管导通,LM393电压比较器输出低电平;在没有遇到障碍物时,LM393电压比较器则输出高点平。STM32F103单片机根据LM393电压比较器的输出电平即可判断座位的状态。
STM32 单片机最小系统的构成元素包括STM32F103ZET6单片机、时钟电路、复位电路、I/O 扩展接口以及调试接口共同组成[4]。STM32F103ZET6能够接收JTAG与SWD的调试;时钟电路的晶振频率是8MHz;复位电路中具有按键复位与上电复位;I/O 扩展接口负责将闲置的 I/O 口进行引出,便于与其他设备的连接;调试接口的作用是为 STM32 单片机下载固件,同时也能对程序进行调试。
意法半导体公司生产的STM32F103ZET6芯片,它共有112个I/O口(PA-PG)。相比其它类型的单片机,在相对便宜的情况下,如此多的I/O口使该系统更加容易推广。
WH-NB71物联网模块芯片是上海稳恒电子 2017 年推出的 M2M 产品,其支持移动、联通、电信 NB-IoT 网络接入。该产品软件功能完善,支持CoAP协议,通过简单配置既可以实现串口到网络的双向数据透明传输,又很方便用户快速的搭建服务器平台。
目前该物联网模块开放的接口包括:电源输入,复位重启控制、恢复出厂设置控制、UART、SIM、射频接口。WH-NB71外围电路划分为电源引脚、天线引脚、Reload、Reset、SIM卡槽、UART、ADC七部分。分别对外围电路进行设计。
图2 NB-IOT物联网模块电路
图3 3.8 V电源处理模块
物联网模块与STM32F103单片机进行串口通讯,其UART_RX引脚接STM32F03的RX引脚,UART_TX引脚接STM32F103的TX引脚。物联网模块将单片机处理得到的座位状态发送至云端,从而方便用户通过手机移动端及时查看座位状态,进行查询、预约等操作。
为便于物联网模块及时调试和进行更新升级,需要设计NB-IOT调试接口电路,为后续调试及模块初始化做准备。调试接口电路采用MAX3232芯片,MAX3232采用专有的低压差发送器输出级,利用双电荷泵在3.0 V~5.5 V电源供电时能够实现真正的RS-232性能。其在最差工作条件下也能够保证120 kbps的数据速率。通过一对DB9口,可轻松建立起模块与上位机之间的通讯。
系统需要两路电源,分别为各个模块供电,其中一路为3.8 V电源,为NB-IOT物联网模块供电;另一路5 V电源,为STM32F103单片机和反射式红外传感器供电。两路电源模块采用常见的MP1482电平转换芯片,同时加入由STS3415防反接电路,防止电源接反时给电路带来损坏。
5 V电源与3.8 V电源电路原理图类似,根据以下公式只需改变电阻的比值就可得到5 V电压。
输出电压公式:Vout=0.923*(1+R29/R31)
3.8 V电源模块:取R15=31.2 k,R17=10 k,Vout=0.923*(1+31.2/10)=3.0276 V
为了防止电源电量不足,系统停止工作,需在系统中设计电源电压测量电路,及时地测量电源的电压。系统电压一旦低过某个设定值,蜂鸣器就会发出警报,以提醒图书馆管理人员及时更换电源或充电,从而避免座位状态监测系统停止工作。
电源监测电路采用两个100 k的电阻串联分压,分压后与电压跟随器LM324的3脚连接,电压跟随器的1脚接STM32F103单片机的PA0脚。通过以下算式计算当前的电压。
电源电压=(3.3/4 096*AINO通道采集的数值)*2
当电源电压小于设定时,BEEP输出3.3 V电压,三极管导通,蜂鸣器通电,发出警报。电路设计图如图4所示。
图4 电源电压测量部分
该座位状态监测系统软件设计采用模块化设计方法,使用C语言编程。根据不同功能,将软件分为4个模块,即主程序模块、参数设置模块、座位状态数据采集模块和数据上传模块。其中每个模块又可分为多个子模块,既相互独立又相互联系[5]。
系统工作流程如下:
1) 系统上电,各模块开始工作,此时电源指示灯亮起,通讯指示灯闪烁。
2) 反射式红外传感器实时监测座位状态,将座位状态通过电信号传递给单片机。
3) 单片机将收集各个反射式红外传感器实时监测座位状态,将I/O口与实际座位一一对应,将座位状态信息传递给NB-IOT模块。
4) NB-IOT模块通过CoAP协议将座位状态信息上传至云端。
5) 线上座位预约系统可查询云端数据,用户通过手机移动端查询座位状态,进行预约操作等。
6) 预约成功后,如果系统在30 min内查询云端数据,此座位无人,则释放座位,使座位处于可被预约状态。
7) 读者离开座位后,如果系统在20 min内查询云端数据,此座位无人,则释放座位,使座位处于可被预约状态。
8) 电源电压过低时,蜂鸣器发出警报。
系统工作流程图如图5。
图5 系统工作流程图
图书馆对每个高校来说都是十分重要且必备的,所以要对此引起足够的重视。我们要清楚知道目前图书馆座位预约系统存在的利弊,不断加强图书馆座位的管理,从而提高座位的使用率[6]。本系统的创新点是利用STM32F103和物联网模块可以实时监测座位状态,使座位预约系统更加灵活,有效,注意到了座位的利用率和预约者能否及时入座及预约者离开时间有很大关系。本文介绍了该图书馆座位监测系统的硬件设计和软件设计的大致思路。最终,将逐个击破每一部分,组合成一个合理、有效的可行性方案,达到设计目的。