张海涛,胡志朋
(南京邮电大学,江苏 南京 210003)
随着科学技术的不断发展,新科技产品在人们日常生活中得到了广泛应用,尤其是通信技术在很大程度上影响着人们的生活[1]。例如高校图书馆座位资源的有效利用一直是高校管理的一个主要问题。传统的采用人工管理方式、刷卡方式的图书馆座位管理系统,存在不够灵活、系统管理存在漏洞等问题,因此采取信息化管理是必要的趋势[2]。而高速发展的信息通信技术为解决这一问题提供了很好的技术支持。
近年来,提出了不少信息系统管理方法,如基于微信公众平台的座位预约系统[3]、基于NFC技术的图书馆座位管理系统[4]、基于GIS技术的高校图书馆座位管理系统[5]等。文献[3]提出的通过微信公众平台的座位预约系统让学生可以通过微信公众号进行图书馆座位的预约,方便快捷,便于管理。但是该系统依然存在座位使用时间不够灵活,没有临时离座的设计,系统过分依赖移动端等问题。文献[4]提出的基于NFC技术的图书馆座位管理系统与微信公众平台的座位预约系统类似,相比于前一个系统,该系统解决了学生暂离座位造成不必要麻烦的问题,但是同样存在预约在座时间造成的座位使用时间不够灵活的问题。此外,该系统的核心是NFC技术,然而现在市面上的手机支持NFC功能的并不在多数,这就会给学生造成很大的困扰。文献[5]中基于GIS技术的高校图书馆座位管理系统主要设计了一种将地理信息与图书馆座位信息结合的图书馆管理系统,方便学生查询和找到空闲座位。但是该系统并不能很好地解决对于恶意占座,暂离座位的情况。
随着无线传感、无线传输以及嵌入式设备技术的发展,使得开发具有自动、实时查询监控功能的智能化图书馆座位管理系统变得可行。因此,结合超声波传感技术、蓝牙无线传感器以及微型计算机,文中设计了一套具有实时监控和查询图书馆座位信息的管理系统。蓝牙技术的实现是通过近距离的无线连接,为移动通信设备提供通信链路,进而实现近距离信息设备资源的共享[6-7]。超声波传感器是利用超声波的特性研制而成的传感器。
超声波传感器具有成本低、安装维护方便、体积小、可以较好地实现非接触测量等特点[8-10]。因此,提出的基于Arduino单片机[11-15]并结合超声波和蓝牙无线传感技术[16]的图书馆座位信息管理系统具有切实可行的基础。
建立的基于超声波和蓝牙无线传感技术的图书馆座位管理系统的体系结构如图1所示。
图1 系统体系结构
系统主要由数据采集、数据传输、实时监控三部分构成。数据采集部分,使用超声波传感模块自动探测座位使用状态、按键控制模块设定临时离开座位状态、LED模块显示座位当前使用状态。数据传输部分,使用蓝牙传输模块将数据采集部分获取的座位状态信息,从发送端无线传输到接收端,并使用网络传输模块进一步通过有线方式传递到局域网中。实时监控部分,接收数据传输部分传递过来的座位状态信息,并使用网页对座位状态进行实时显示。
1.1.1 数据采集
数据采集部分主要包括3个模块,分别为LED显示模块、超声波传感模块以及按键计时模块。LED显示模块使用LED灯表示座位被使用的3种状态:“亮”代表无人,“闪烁”代表暂时离开,“暗”代表有人。为防止LED灯“亮”对使用座位人员(学生)造成的干扰,因此使用LED灯“暗”代表有人。利用超声波传感模块双程传播时间(time of flight,TOF)来测量超声波发射器与被探测物体之间的距离。其有效探测距离为2~450 cm,有效探测角度为0~15 度。如果距离超声波发射器在设定的空间范围内检测到有人存在,则LED显示模块的LED灯“暗”,否则LED灯“亮”。按键计时模块用于区分“暂时离开”和“离开”的状态。当座位使用者需要短暂离开时,其只需按下按键,LED灯即开始“闪烁”,同时开始计时。通常计时时间设置为30分钟,在此时间内,LED灯将一直“闪烁”,直至有人回到座位。若30分钟后,仍然没有人回到座位,则LED灯停止“闪烁”、变“暗”,座位回归无人状态。此时,该座位可被其他人使用,管理人员如果看到该座位有“占座”的书籍等,可以将书籍等转移到指定地点。
1.1.2 数据传输
数据传输部分主要包括蓝牙传输模块、有线网络传输模块和LED显示模块。蓝牙传输模块分为发送端和接收端。发送端和接收端的角色通过使用串口调试的AT指令进行设置。发送端通过发射蓝牙无线信号,将数据采集部分获取的座位状态信息无线传输给接收端。在实际应用中,蓝牙传输模块的发送端集成于数据采集部分、安装每个座位上,而蓝牙传输模块的接收端集成于数据传输部分、安装在每个房间。系统使用的HC-05蓝牙模块的有效传输距离为10 m左右,可以满足数据采集部分数据的无线传输需求。有线网络传输的作用是通过有线网络,将蓝牙传输模块接收端的数据高速传递到局域网络。LED显示模块则将数据采集部分获取的信息,在数据传输部分进行直观显示。该模块的状态信息与数据采集部分的LED显示模块会保持一致。
1.1.3 实时监控
实时监控部分只有一个模块即网页实时显示模块,学生或者图书馆管理员使用PC、PDA或者智能手机等智能终端采用有线(或无线)方式接入局域网,在浏览器上输入局域网服务器的IP地址后,可分别对图书馆座位的使用状态信息进行查询和实时监控。
该系统根据硬件电路和需要实现的功能进行了软件设计。
具体功能流程如图2 所示。
图2 系统工作流程
当系统开始工作时,超声波模块开始探测座位前是否有人,如果有人,则LED显示模块的灯熄灭;如果没有人,则LED显示模块的灯亮。当学生临时有事需要离开,则需要按下按键模块的按键,没有按下按键离开LED灯会点亮,表示无人使用;按下按键,LED灯进入闪烁状态,表示暂离状态,同时30分钟计时器开始工作,如果超过30分钟还没有人回来LED灯就会点亮,表示无人占座;如果在30分钟之内超声波检测到有人回来,则LED灯将由闪烁状态转化为熄灭状态。蓝牙接收端接收到的信息最终会通过网络模块传输到计算机终端,实时显示座位的状态。
系统的数据采集模块采用Arduino UNO R3硬件开发板对超声波模块、LED显示模块、按键计时模块以及蓝牙传输模块的发送端进行集成,其中超声波模块选用HC-SR04,蓝牙传输模块的发送端选用HC-05,整个数据采集部分依靠Arduino硬件开发板的USB接口或16VDC输入接口进行供电。
数据采集部分的硬件设计与实现,电路连接原理如图3所示。
HC-SR04超声波模块的GND引脚,Echo引脚,Trig引脚,VCC引脚分别连接到Arduino硬件开发板的GND端口,数字5端口,数字6端口以及电源5 V端口。LED显示模块的正极长引脚连接到Arduino硬件开发板的数字7端口,负极短引脚连接到电源GND端口(需串联220 Ω电阻)。按键计时模块的引脚1,2,3分别连接到Arduino硬件开发板的电源5 V端口,数字8端口,电源GND端口。HC-05蓝牙传输模块的发送端的VCC引脚连接到Arduino硬件开发板的电源5 V端口,GND引脚连接到电源GND端口,发送端的TX_5V引脚连接到数字RX0端口,RX_5V引脚连接到数字TX1端口。
图3 数据采集部分的原理
数据传输模块包含了蓝牙传输模块的接收端、网络传输模块以及LED显示模块。与Arduino硬件开发板进行集成,其中蓝牙传输模块的接收端选用HC-05,网络传输模块选用W5100。
数据传输部分的硬件设计与实现,硬件连接原理如图4所示。
图4 数据传输部分的原理
HC-05蓝牙传输模块的接收端的VCC引脚,GND引脚,TX_5V引脚,RX_5V引脚分别连接到Arduino硬件开发板的电源5 V端口,GND端口,RX0端口以及TX1端口。LED显示模块的负极短引脚连接到Arduino硬件开发板的电源GND端口,LED显示模块的正极长引脚连接到Arduino硬件开发板的数字12端口(需串联220 Ω电阻)。
实时监控模块包括W5100网络传输模块和终端显示两部分。电路连接原理如图5所示。
图5 实时监控部分的原理
W5100网络传输模块与Arduino硬件开发板的连接:W5100网络传输模块的数字端口(DIGTAL PWM(/)的2 3/ 4 5/ 6/ 7 8 9/ 10/ 11/ 12 13 TX→1 0→RX)的引脚线,AREF、GND引脚线,6个ICSP引脚线,模拟端口(ANALOG IN A0 A1 A2 A3 A4 A5)的引脚线,RESET端口的引脚线分别插入Arduino UNO硬件开发板数字端口(2 3 4 5 6 7 8 9 10 11 12 13 TX 1 RX 0)的引脚孔,REF、GND引脚孔,ICSP引脚孔,模拟端口(ANALOG IN 0 1 2 3 4 5)引脚孔,RESET端口引脚孔。
实时监控部分的终端使用PC、PAD或者智能手机等设备有线(或无线)接入W5100局域网,在浏览器上输入局域网服务器的IP地址后,即可对座位的使用状态数据进行实时监控。
图6是实时监控终端的页面显示图,其中第一张图表示1号座位已经有人占用,此时通过串口监控工具可以看出,数据采集部分向串口发送数字0。第二张图表示1号座位为空闲状态,串口监控工具显示数据采集部分向串口发送数字1。第三张图表示1号座位有人且为暂离状态,数据采集部分向串口发送数字2。
图6 实时监控终端页面显示
数据采集部分的程序代码实现,采用Arduino IDE作为程序集成开发环境,定义inputPin为超声波输入数字口,outputPin为超声波输出数字口,led为led灯的数字口,button为按钮的数字口,sittingtime为在座时延,unseattime为离座时延。collectionSetup()方法初始化开发板的状态具体代码如下:
1.void collectionSetup()
2.{pinMode(inputPin,INPUT);
3.pinMode(outputPin,OUTPUT);
4.pinMode(led, OUTPUT); //led
5.pinMode(button,INPUT);
6.Serial.begin(9600);}
其中2~6行表示分别将超声波的输入数字口置为输入,超声波输出数字口置为输出,led数字口置为输出,按键数字口置为输入,设置开发板的串口波特率为9 600。
采集程序的主体方法为collectionLoop(),在该系统开始运行到结束运行的整个过程中,该方法会一直循环运行,具体代码实现如下:
1.voidcollectionLoop() {
2.if(HIGH==digitalRead(button))
3.thirtyminutes();
4.digitalWrite(outputPin,HIGH);
5.delayMicroseconds(10);
6.digitalWrite(outputPin,LOW);
7.int distance=pulseIn(inputPin,HIGH)/58;
8.delay(1000);
9.if(distance>=50) {
10.digitalWrite(led,HIGH);
11.sittingtime=0;
12.unseattime=unseattime+1;
13.if(unseattime>=60){
14.Serial.print('1');
15.unseattime=0;}}}
程序的2~3行表示当检测到数据采集部分的按键被按下时,开始调用30分钟的计时函数。学生为暂离状态。代码4~7行通过对超声波模块设置高低电位实现测距的功能,9~15行表示如果检测到超过50 cm,就点亮Led灯,表示学生不在座位上,反之则熄灭Led灯,表示该座位已经被占用。在这段代码中间需要添加连续在座和连续离座1分钟的判定代码,以减少误判的概率,如代码13~15所示。
数据网络传输部分与系统监控部分需要设置Led数字口为ledpin,设置MAC地址和ip地址,以及局域网服务器端口号,其初始化方法由transmissionSetup()定义,具体代码如下所示:
1.voidtransmissionSetup() {
2.Serial.begin(9600); 9600
3.while (!Serial) {;}
4.Ethernet.begin(mac,ip);
5.server.begin();
6.Serial.print("server is at");
7.Serial.println(Ethernet.localIP());
8.pinMode(ledpin,OUTPUT); }
传输部分的程序的transmissionSetup方法同数据采集部分实现的功能类似,都是实现初始化开发板的各个变量。设置串口的波特率为9 600,等待连接的建立,如果Serial为false则在while循环中一直等待连接的建立。当有连接建立时,通过第4~5行代码建立局域网的连接并启动局域网服务器,第8行代码设置Led的数字口为输出。
传输部分的主要功能代码以及系统监控部分的代码由transmissionLoop()方法实现,蓝牙接收端接收到的来自数据采集端蓝牙发送端的信息,通过这段程序代码,从采集端获取的信息通过图像的方式更直观地反应在客户端上,具体伪代码实现如下:
1.voidtransmissionLoop() {
/**
判断并建立客户端部分代码省略
**/
2.if(ok) init(client);
3.if(val==‘1’)
client.println(background='green';);
4.else if(val=='0'||val=='2') client.println(background='red'); }
如上述代码所示,代码第2行初始化客户端的页面。代码3~4行表示当接收到传来的变量为“1”时,就将相应位置显示为绿色,表示位置空缺,当传过来的变量为“0”或“2”时就将相应的位置显示为红色,表示位置已经被占用。并且接收端的Led也显示为相应的状态。
实时监控部分的代码,主要用于初始化浏览器客户端的页面,把图书馆座位信息直观地反应出来。其初始化方法由init()定义,具体伪代码如下:
1.void init(EthernetClient client){
2.refreshtime=60s;
3.id='a';
4.for i=0 to 6
5.print blank;
6.document.getElementById('a');
7.if value==1
8.background='green';
9.else
10.background='red'}
代码的第2行设定页面定时刷新时间为1分钟,第3行指定监控的座位的id属性值,4~5行建立了6个单元格,表示6个座位,第6~10行根据从串口获取的数据,给相应属性值的单元格设置背景颜色。
针对传统图书馆座位管理系统存在不够灵活、系统管理存在漏洞等问题,设计了一种新型的图书馆座位管理系统,即基于无线传感技术的微型计算机信息管理系统。该系统包括3个模块:数据采集模块负责采集图书馆座位信息,数据传输模块负责接收端和采集端之间数据的传递,实时监控部分可以让学生在任何时候都可以查询出图书馆位置的实时信息。相对于传统方式具有以下优势:不依赖外部环境,不存在由于学生忘带手机而引起的不能入座,不能在终端进行离座操作等问题;系统硬件电路简单、易于搭建,控制系统使用方便可靠;用户可以通过PC端和移动端实时查看图书馆位置的使用情况,有效解决图书馆的“占座”问题。