李琛磊,种兰祥
近年随着物联网、大数据等新兴技术发展,我国智慧图书馆研究如火如荼。但截至目前,尚无将物联网技术应用到古籍图书馆无线环境监测系统的实践。众所周知,古籍是人类文化载体,几乎所有图书馆都将其视为珍品。但全球气候变化导致空气质量变差、大气环境污染问题显著,造成古籍纸张酸化现象严重。古籍图书馆中不合适的温湿度会导致虫害、霉菌滋生,严重影响着古籍保管的安全。然而,我国大部分图书馆古籍保护经费有限,出现书库老化、场所简陋、技术设施落后等问题,最为严重的是古籍保存环境未能得到根本性的监测与保护,导致古籍损坏现象加剧[1]。为此学界业界呼吁不断更新技术,寻求低成本方案监测和改善古籍图书馆环境。
通过实地调研西安地区古籍图书馆后发现,传统的古籍图书馆监测系统多采用人工定点观测和有线监测两种方式[2]。前者存在精度低和实时性差问题,后者基于RS485总线进行数据传输[3],因其采用分布式监测和集中供电,存在灵活性低和难以扩展等问题。近年电子技术与无线传感器网络的发展迅速,经济发达地区室内环境监测已开始采用无线通信方案,其中较为常见的有WiFi、ZigBee、GPRS、射频等。Xu Fucheng等[4]、温超等[5]采用CC2530硬件设计了一种基于Zigbee技术的图书馆内温湿度监测方案;张丽珍等[6]结合ZigBee与GPRS无线通信技术设计图书馆温湿度光照度环境监测系统;王栋等[7]、吴健等[8]、G.Alsuhly等[9]利用WiFi技术来传输图书馆或博物馆内监测到的环境变量。这些研究大多采用目前无线传感器网络较为常见的ZigBee、WiFi无线通信方案,普遍存在着信号干扰及功耗与成本问题,导致这些方案在经济欠发达地区很难推广使用,古籍图书馆将持续并长期处于技术落后、保存环境不佳的情况下,古籍存放的安全无法得到保证。为此本系统采用低成本、低功耗具有跳频功能的无线射频通信方式,不但能妥善解决上述问题,同时基于物联网三层架构体系,构造出一个易扩展、通用性强的多点无线古籍图书馆环境监测系统。
本系统应满足古籍图书馆监测的实时性、经济性、效果呈现动态性与易用性等需求。古籍作为中华文明的文化瑰宝,必须对其存放环境进行全方位的监测保护。根据《图书馆古籍特藏书库基本要求》发现古籍安全存放的相关环境参数如下:(1)温度要稳定在16~22℃;相对湿度稳定在45%~60%RH。(2)光照度以30lx~50lx为宜,减少紫外线对纸张的破坏。(3)室内SO2浓度限值在0.01mg/m3。(4)配置安防火灾自动报警装置。根据以上古籍保护要求,本系统选取对应传感器对室内物理量进行测量。为了提高监测系统的实时性与经济性,本系统采用低成本无线射频通信方案将监测数据发送给网关,使用Raspberry PI作为网关兼Web服务器,进一步降低成本。在效果呈现动态性与友好性方面,本系统自行开发出一套Web监测平台,其具有用户登录、增加删除设备、存储数据、查看当前数据及历史数据、声光报警等功能。Web监测平台将数据分析结果以更直观、友好的方式呈现给用户。同时将监测数据推到OneNet物联网平台作可视化展示,用户可在任意地点查看古籍图书馆内情况,进一步加强系统的易用性与友好性。此外,平台将各项报警数据发送到用户邮箱与手机,促使用户采取措施处理相关情况。
本着灵活、方便、可靠和易用原则,智慧古籍图书馆环境监测系统采用分布式模块化设计思想。依物联网三层架构,感知层选用最适合联接传感器的电子开发平台Arduino为测量节点,对古籍图书馆内温湿度、光照、SO2浓度、火焰以及人体进出情况进行测量,一旦监测数据超过设定阈值,系统会进行声光报警,同时向预留邮箱与手机发送报警信息。网络层常见的无线通信技术有WiFi、ZigBee、蓝牙等。蓝牙适用于便携式可移动监测平台,难以在古籍图书馆环境监测中有效发挥作用。ZigBee虽然是一种低功耗、近距离、自组网通信技术,但多工作于2.4GHz频段之上,容易和WiFi、蓝牙产生干扰,此外,ZigBee成本较高,难以在经济不发达地区推广。WiFi是日常生活中最普遍的无线通信技术,具有传输速度快、使用方便等特点,但WiFi功耗大,高带宽的效益难以发挥。在网络层使用低功耗、低成本并具有跳频功能的射频收发芯片nRF24L01,负责监测数据的无线传输,是一个优质的选择。应用层采用仅有信用卡大小的片式计算机Raspberry PI作为网关兼作Web 服务器,管理测量节点、收集存储数据、可视化展示监测数据,同时将数据推送到OneNet 物联网云平台,用户可使用多种终端通过互联网访问本监测系统。监测系统总体结构如图1所示。用户可根据需求,将无线测量节点部署在古籍图书馆内任何地方,测量节点与网关构成一个星型网络拓扑结构,以自组织的方式来向网关传输数据,继而构成一个无线传感器网络。服务器与物联网平台统一作为数据处理中心,负责数据的显示、预警、网络发布等。
图1 监测系统总体结构
测量节点Arduino 联接有温湿度、光照、SO2气体浓度、火焰、人体红外传感器对古籍图书馆内物理量进行测量。并通过联接的射频模块nRF24L01将测量数据发送给Raspberry PI。
Arduino 是一款AVR 架构电子原型开发平台,具有精简指令形式,使用类Java、C语言的Processing/Wiring开发环境。硬件由I/O接口电路和其集成的通信总线组成。本系统选用Arduino UNO R3为测量节点的主控模块,其采用Atmega328P作为处理器,内置32KB Flash、16MHZ晶振,14路数字I/O引脚并包含6路PWM通道,6路模拟输入引脚,每个I/O直流输出能力为20mA,具有UART 通信协议,集成IIC,SPI通信总线。
根据古籍保护相关要求,本系统采用DHT11温湿度传感器、SO2气体浓度传感器、SR501人体红外感应传感器、火焰传感器以及GY30光照传感器进行古籍图书馆内环境测量,后续可依需求增加传感器。
DHT11 是一款可校准的数字化温湿度传感器,内部集成有电阻式感湿元件和NTC 测温元件。温度测量范围在0~50℃,湿度测量范围在20%~90%RH[10]。Arduino与传感器通过单总线通信协议完成数据的双向通信,并按照DHT11时序规则将数据依次输出。SO2气体浓度传感器MQ135是一款化学类半导体模拟传感器,工作电压为5V。MQ135采用在洁净空气中电导率较低的SnO2作为气敏材料,当SO2气体存在时,气敏材料与SO2气体发生氧化还原反应,从而使SnO2电导率发生变化。SnO2电导率随SO2气体浓度增大而增大且呈线性关系。火焰传感器工作电压为5V,其对火焰光谱极其敏感。传感器依据高温燃烧所产生的760nm~1,100nm 光源进行火焰检测[11],准确检测火焰情况。人体红外传感器SR501用来检测古籍图书馆内人体进出情况,通过被动式红外探头检测人体发出10um左右的特定红外波长,并将此红外线通过菲涅尔滤镜汇聚到红外感应源上,以此判断是否有人通过。GY30光照传感器是一款数字传感器,光照检测范围介于1~65535lx。传感器使用光电二极管检测周边亮度,通过内部集成运算放大电路将电流信号放大并转换为电压信号,利用内置16位数模转换电路将光照强度直接数字输出[12]。
本系统采用的射频收发芯片nRF24L01 是Nordic研发的基于SW-ARQ基带协议引擎、频率在2.4GHz~2.5GHz ISM之间的单片无线收发芯片,共有126 个1MHz 带宽的信道,支持在126个信道之间自动跳频通信与多点通信。采用GFSK调制方式,内置放大器、频率发生器、晶振等,空中传输速率可达2Mbps,具有功耗低、传输速率快、数据传输稳定、安全等优点。无线射频模块工作电压介于1.9V~3.6V,它与测量节点和网关都通过SPI总线进行通信。CE为模块从低功耗空闲状态转换为高速工作状态的开启信号,Arduino与Raspberry PI通过SCK为射频模块提供时钟,CSN为片选信号,数据通过MOSI与MISO两根线进行主机与从机输入输出。IRQ为中断信号,当测量节点将监测数据成功发送给网关并收到网关发来的ACK信号时,Arduino和Raspberry PI两端的IRQ信号被拉低,完成这一次的数据传输。测量节点和网关可通过查询IRQ信号的标志位进而判断出数据成功发送或接收。射频模块在没有收发任务时处于低功耗待机状态,只有当网关请求数据发送时,射频模块被激活。
网关是监测系统的重要组成部分,作用是测量节点管理、数据收集与转发。本系统选用三代B+型Raspberry PI,将网关与服务器集于一体。Raspberry PI 3B+是基于 ARM 架构的 Soc 片上系统,采用博通公司BCM2837芯片组,处理速度可达1.4GHz,拥有64位4核处理器,搭载基于Linux 且面向Raspberry PI 硬件做了优化的Raspbian操作系统,有3.5万多个软件包和预编译的软件供Raspberry PI 使用,支持Python、C、C++等语言开发。Raspberry PI需要5V电源供电,配有4个USB2.0接口并支持USB Hub扩展,具有RJ45接口且内置板载WiFi。由其芯片内部引出40个GPIO引脚用于硬件开发,集成有UART、IIC、SPI多种通信协议。
射频模块是测量节点与网关通信的媒介,需要软件对其进行初始化、工作模式配置等。测量节点查找网关地址并发送数据,网关将数据上传到服务器中,通过一系列软件开发,完成一个测量硬件可配置的、数据可视化Web监测平台。
根据本系统需求,使用nRF24L01射频模块构建星型网络拓扑,实现一收多发功能。流程分为射频模块初始化、配置收发模式、发送接收数据、完成发送与接收。测量节点通过SPI总线对nRF24L01内部寄存器进行初始化,配置字长30字节,CSN引脚拉低进行初始化配置,其中包括EN_AA自动应答配置,SETUP_AW地址宽度配置等。初始化完成后,通过CONFIG 寄存器将nRF24L01 配置为 Shutdown、Standby、Idle-TX、TX、RX 等工作模式。在没有收发任务时模块首先稳定在Standby空闲模式。当CE引脚给一个持续10us的高脉冲,同时配置PRIM_RX为低电平,若此时发送端TX_FIFO 缓冲区为空,芯片由Standby模式进入Idle-TX模式并等待发送数据的到来。当数据需要发送时,将数据送入TX_FIFO 缓冲区,经过120us 时间后,Idle-TX会自动进入TX发送模式。为降低功耗,提高稳定性,采用配有前导码和CRC 校验位增强型ShockBurstTM收发方式,数据低速从Arduino送入,并高速向外发出,接收方自动处理前导码与CRC校验位,数据按照表1所示的帧格式发送。数据发送完毕后,芯片等待接收方应答信号,进而产生TX_DS中断,完成数据发送过程。当成功完成一次数据发送过程后,清除寄存器置位和TX_FIFO中已发送的数据,芯片CE信号拉低,再次进入Standby空闲模式,等待下一次数据发送。
表1 增强型ShockBurstTM数据帧格式
作为网关,Raspberry PI接收来自测量节点发来的数据。软件通过SPI时序完成射频模块一系列初始化后,将射频模块配置为RX模式。等待130us,射频模块进入监视状态,请求发送模块数据包的到来。数据包到来时,射频模块通过节点地址信息与CRC校验码对数据进行判断,当数据包正确时,nRF24L01自动移除前导码、地址信息与CRC 校验位,并通过STATUS 状态寄存器RX_DR 中断置位通知Raspberry PI 得到正确数据,继而从RX_FIFO数据缓存区读取出正确的数据包。等待所有数据读取完毕后,清除STATUS状态寄存器置位,清空RX_FIFO缓存区数据,CE 引脚拉低,使其进入Standby 空闲模式,完成此次数据接收,并等待下一次数据到来。
为保证用户良好体验,本系统应用层设计为B/S模式。在Raspberry PI上采用LAMP架构搭建轻量级Web 服务器。安装配置Apache 服务器,用PHP+Pyhton语言进行系统后端开发,将测量节点发来的环境数据存储在MySQL数据库中。前端界面采用HTML+CSS+JavaScrip技术开发。用户可在同一局域网内使用任意终端登录查看智慧古籍图书馆内环境数据。系统后端结构框图见图2。网关接收到来自测量节点的数据,用Python中的MySQLdb函数连接并导入数据库。在数据库中建立存储测量节点物理量的数据表,并定义设备ID为主键,与数据库中的设备表进行关联。将PHP 嵌套在前端HTML 页面之中与数据库建立连接,浏览器与服务器采用AJAX异步交换信息。后端通过遍历数据库中存储的测量节点数据,把数据封装为JSON格式进行数据回传,用JavaScrip 中的Echarts 组件将数据图形化显示,最终完成古籍图书馆环境变量的实时监测。
图2 系统后端结构框图
本系统网关并行连接OneNet物联网云服务平台。OneNet是中国移动公司为用户提供的开放物联网平台,其定位为PaaS服务,适用多种网络环境的接入协议,各类传感器、智能网关都可以通过OneNet提供的API和应用模板进行设备接入与程序开发。平台提供数据存储,添加触发器,增加、删除设备等功能,方便系统后续功能的扩展。Raspberry PI作为网关,可根据用户需求自行设定数据上传时间,并将接收到的各个测量节点数据推送到物联网平台。网关通过Internet接入OneNet物联网平台,并选用HTTP协议上传数据到平台的云服务器。物联网平台接入步骤如下:注册网关接入设备账号,登录OneNet物联网平台建立智慧古籍图书馆环境监测项目,获取云平台分配的唯一“Master-APIkey”与设备ID号并作为连接凭证,添加设备并在设备之下增加数据流模板,数据流要与网关发来的传感器数据相互对应。当云平台接收到来自Raspberry PI的数据上报请求时,通过鉴权“APIkey”和设备ID号确认与网关建立TCP连接,把传感器数据封装为JSON格式,上传到物联网平台云服务器进行处理。在环境变量超过阈值时,除了进行声光报警外,利用平台提供的触发器功能,通知绑定的邮箱和手机,使用户对情况进行相应处理。
本系统一方面采用仅有信用卡大小的Raspberry PI作为网关兼Web服务器,接收和处理来自测量节点采集的各项数据,作为Web 监测平台,使用户可以在局域网内访问古籍图书馆情况。另一方面网关接入OneNet物联网平台,并按照用户设定的时间间隔向平台上传监测数据,随即在“应用孵化中心”对数据进行可视化展示,使用户可以在任意地点查看古籍图书馆内环境监测情况。用户在后期利用自行搭建的Web监测平台可以更方便的管理、维护和增加功能,且信息安全得到保证。OneNet物联网平台在声光报警外还提供了触发器报警功能,又因其公网特性,用户可在任意地点掌握古籍图书馆情况,两种方式依存,取长补短。
在自行搭建的Web 监测平台内,实现了用户登录、添加删除设备、实时显示当前监测数据、查看历史数据曲线与回看数据等功能。用户登陆成功后自动跳转到数据显示界面,前端界面如图3 所示,可看到各传感器最新的监测数据。同时可从系统中查询所有传感器监测的历史数据,其历史曲线如图4所示。在查看历史数据界面中,用户可通过调节折线图下方的条形框来选择日期时间段回看历史数据。
图3 室内环境实时数据
图4 历史数据变化曲线
用户可登录OneNet物联网平台,在任意地点查看各个测量节点最新监测数据与历史数据曲线,如图5所示。其前端界面使用仪表盘组件让用户直观地看到网关最新推送的数据,并用折线图来展现各个监测数据的变化。在报警方面,物联网平台的触发器关联着系统内所有测量节点,一旦古籍图书馆内环境监测物理量不在古籍安全保护范围内,界面立即显示该节点并报警,同时激活触发条件,将触发时间、测量节点名称、传感器信息、触发值等相关数据通过邮件与短信的方式发送到预留邮箱和手机,促使用户采取措施处理,同时记录并保存报警数据,方便用户后续对数据进行预警分析、处理。
图5 物联网平台监测界面
本文采用物联网三层架构体系,详细介绍了智慧古籍图书馆环境监测系统的技术思路,将物联网、无线传感器网络相关技术运用到智慧图书馆建设之中。设计开发了一种可以连接32个测量节点的星型网络拓扑结构智慧古籍图书馆环境监测系统。为增强用户体验度,并行连接OneNet物联网平台,用户可以在任意地点任何时间查看智慧古籍图书馆环境质量情况。测量节点可根据用户需求,部署到整个图书馆内,进一步加强智慧图书馆建设。实验测试证明,本系统具有耗能小、成本低、可扩展、部署方便、用户体验好等特点,具有较高的普适性与应用价值,能够满足各地区智慧古籍图书馆环境监测的需要。后续将继续优化本系统,扩展节点数量,提高可靠性和稳定性,并对报警数据进行预警分析。