罗咏涵 黎江晓 刘曦蕾
关键词:树莓派;座位预约;图书馆
据各类高校图书馆自习情况的调查来看,基于图书馆安静舒适的环境和浓厚的学习氛围,到图书馆学习成了众多学子提升自我、追逐梦想的不二选择。随着社会迅速发展,各类资源竞争难免愈发激烈,而图书馆的座位资源,往往供不应求。而供不应求的结果,可能会出现恶意抢占资源的现象,譬如恶意抢座、占座等。这些现象会在不同程度上增加图书馆工作人员的管理难度,甚至可能引发不必要的矛盾。如何把图书馆或者其他公共场所的座位资源合理利用、如何更好地为使用者提供便利、降低管理难度,是本项目亟待解决的问题。
一、项目构想
基于图书馆、自习室及其他流动性办公场所中的座位分配问题,目前较为成熟的管理系统有:基于单片机的座位管理系统、基于RFID 技术的图书馆座位管理系统、基于B/S 模式的座位管理系统,但这些系统仍有不足,如需要用户线下排队座位预约,未能提供座位预约服务和智能化的座位处理方案。而利用树莓派设计一个兼有预约和管理功能的系统,实现座位的“智能化”“人工化”是一个可行的解决方案。该方案的实现有助于实现图书馆等公共场所及资源共享座位或工位的效率化、人性化、经济化分配,从而实现管理效率的提高和资源的合理使用,促进各个相关产业的绿色可持续发展[1]。
二、系统设计
该系统选用树莓派(搭载了Linux 系统)作为主控核心,各类设备均以模块化的形式由其进行统一式管理。树莓派通过GPIO 控制各类设备所相对应的驱动,从而智能化地管理各类设备。该项目整体通过python 编程实现树莓派和其他嵌入式部件的通信,完成核心功能;通过小程序或web 页面连接进行前端展示和控制交互;在基本需求实现后完成实体组装部分;通过PHP 语言完善后端和服务器端的开发,完善设备[2]。项目整体分为三大模块,每个模块通过编程技术进行功能的实现。各模块功能如图1 所示。
(一)GPIO 和红外识别的线下感应模块
本项目基于树莓派进行嵌入式程序的开发,当前通过GPIO 管脚外接嵌入式设备来进行一系列线下系统的控制,可通过微信扫码激活,在打卡激活设备后,通过每间隔时间向服务器发送请求读取并比对数据库内的后台预约信息,信息识别成功后,由树莓派内python 程序控制并发送片选信号,嵌入式设备通过GPIO 接收到信号后,即可控制电力设备,并启动供电设施。
通过在类似的模块进行贴合项目需要的改进,完成了树莓派与各类嵌入式设备的交互。其中制定了两种情况的实现模式,一种是现场通过微信扫码后向服务器发送比对信号,成功后跳转到线下打卡界面如图2、图3所示;另一种是采用红外识别当前座位是否正在使用中[3]。
此模块通过红外感应来查看座位状态,使用者在离开座位后系统便会开始计时,若在规定时间内未能返回,系统则会开启节能模式。反之,若在规定时间内返回系统将会停止计时,继续工作。其中的墨水显示屏使用的電子纸采用“微胶囊电泳显示”技术进行图像显示,其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移。电子纸显示屏是靠反射环境光来显示图案的,在自然光下,电子纸显示屏清晰可视,可视角度几乎达到了180°。因此,电子纸显示屏适用于浏览阅读。其使用8PIN 排线连接,在树莓派终端中开启SPI 接口,配合python 编程即可使用。
(二)LNMP 架构模式的远程预留工位模块
在本模块中, 使用LNMP 架构模式, 在Linux系统( 本项目在Ubuntu 虚拟机中实现) 下使用Nginx+MySQL+Python 的方式进行服务器的搭建。搭建服务器的大致流程如下:
通过浏览器发送http request 请求到服务器(Nginx),服务器响应并处理web 请求,将一些静态资源(CSS、页面图片等)保存至服务器上,将php 脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHPFPM(进程管理程序),通过PHP-FPM 调用PHP 解析器进程,PHP 解析器解析php 脚本信息。将解析后的脚本返回到PHP-FPM,PHP-FPM 再通过fast-cgi 的形式将脚本信息传送给Nginx 进行处理。服务器再通过Httpresponse 的形式传送给浏览器。浏览器在进行解析与渲染后呈现可视化界面。在网页设计中采用HTML5、CSS、JavaScript 等前端技术,进行可视化交互界面编写。该过程中参考了现有市面上流行的,大众可接受、经常使用的UI 设计,在大众接受的美观、简介的基础上,进行合理的特色化改进,在符合产品理念和初心的同时,使产品既有创新点,又不为大众用户的使用造成负担,预约界面如图4、图5 所示。
此外,通过设计合理的关系型数据库,可以轻松检索信息,提高信息的质量和一致性,易于更新和维护。并使用Java 编写后端服务模块功能,实现对数据库的调用。在数据层通过固定的服务器,每间隔时间接收树莓派发出的请求,通过PHP 编写程序控制服务器并对相应的请求进行处理并反馈信号,从而达到实时更新系统状态,避免数据冲突及读取错误信息。
通过后端相应控制程序的连接与调用,读取相关数据通过指定格式传送至前端界面,实现信息的更新。同时将信息更新至可视化模块,即展示于本地的电子墨水屏。在此模块中,用户可以自行在线上进行座位的预订和时间的选择,同时可以看到所有座位的预约及使用情况,也可以自主选择自己喜欢的座位。
(三) Python 实现的可视化打卡激活模块
在此模块中,实现了用户到达工位后进行扫码激活打卡,以此来启动设备,在获取扫码用户简单信息的同时,运用python 编写程序,通过树莓派控制相关嵌入式设备的启动与关闭。之所以采用Python 语言,是因为能用简单的方式向树莓派提供命令。这与低级语言(比如汇编),形成了鲜明的对比,汇编语言更接近计算机思维,但让一个没有经验的人用它来编程几乎不可能。高级与自然清晰的语法使Python 成为一个有价值的工具[4-5]。而该模块也是用户第二核心接触的模块,再通过外设的连接,来传输信息,树莓派每间隔时间向服务器进行请求,更新数据库内字段存储内容,同时通过编程来实现电力开关控制,及相应服务设施的启动。
如图6 所示,用户通过网页进行预约后通过PHP编写程序控制服务器并对相应的请求进行处理并反馈信号,再将信息储存到数据库当中,运用Python 编程,控制通过树莓派控制相关嵌入式设备的启动与关闭。例如在红外感应到用户离开半小时后自动控制断电,再将数据传输到电脑上实现人员信息的登记。
三、结束语
针对高校图书馆或自习室座位资源无法得到充分利用的问题,本项目基于树莓派开发的座位预约功能系统将改变传统的占座位模式,在合理规划座位资源的同时,还能在一定程度上使座位“智能化”“人性化”,以此满足用户在学习或工作时段的主要需求,为用户提供更为便利的服务。另一方面,在一定程度上降低了公共场所中座位资源的管理难度,方便人们的使用,将资源的利用分配与数字科技联系到一起,体现了强有力的为民服务的宗旨,让资源利用合理化和公共设施便民化深入人心。用户可以做到足不出户,就能通过线上的方式进行座位的预约,既节省时间,又能提高公共场所座位以及共享资源的效率化、人性化、经济化分配,进而实现管理效率的提高和资源的合理使用。此外,后台可以通过数据分析得出用户的预约偏好,进而方便工作人员合理安排工作管理时间。综上,本项目可在一定程度上促进相关产业的绿色可持续发展,提高经济效益。