儲繼華, 梁民
(中國人民大學(xué) 1.圖書館; 2.實驗室管理與教學(xué)條件保障處, 北京 100872)
高校圖書館具有舒適的學(xué)習(xí)環(huán)境和豐富的學(xué)習(xí)資源,是師生查閱資料和自主學(xué)習(xí)的首選場所。近年來,高校圖書館建設(shè)投入不斷增加,硬件環(huán)境以及軟件系統(tǒng)配置都不斷優(yōu)化,學(xué)生需求的滿足程度也有所提高。但目前很多圖書館由于自習(xí)座位數(shù)量有限,以及缺乏合理有效的管理機(jī)制,從而出現(xiàn)讀者排隊搶座、大量長期占座但又不正常使用等現(xiàn)象,已成為高校圖書館座位管理的一大難題。針對當(dāng)前圖書館座位資源的使用現(xiàn)狀,很多高校研發(fā)或者購置了座位管理系統(tǒng),一定程度上解決了高校圖書館對館內(nèi)座位資源的管理問題。對實行了座位管理系統(tǒng)的中國人民大學(xué)圖書館、南開大學(xué)圖書館、北方民族大學(xué)圖書館、山東大學(xué)圖書館和福建農(nóng)林大學(xué)圖書館等高校圖書館進(jìn)行了調(diào)研,發(fā)現(xiàn)大多數(shù)圖書館的管理系統(tǒng)都是純軟件式管理,大多包括讀者權(quán)限下的自動分配座位、自主選擇座位、退座和管理員權(quán)限下的座位狀態(tài)控制、數(shù)據(jù)統(tǒng)計等[1],系統(tǒng)投入使用后,帶來了另外一個問題:選座者選座成功后,因為種種原因不到或者遲到早退,造成了資源浪費。對于選座成功后不到或者提前離開,如果不主動釋放座位,即使為空座,在座位預(yù)約管理系統(tǒng)中也無法選擇此座位,帶來了資源浪費。為此,如文獻(xiàn)《高校圖書館座位管理系統(tǒng)使用情況調(diào)查》[2]調(diào)研所述,各圖書館實行不同的管理制度和懲罰措施,一定程度上解決了以上問題。但是,靠制度和人力來管理,加大了管理成本,不可避免的也帶來師生之間矛盾。圖書館座位的高效管理是圖書館為讀者營造良好學(xué)習(xí)環(huán)境的重要工作內(nèi)容,在有限的座位數(shù)量條件下,如何實現(xiàn)座位的精準(zhǔn)管理,提高座位利用效率,最大程度滿足讀者的學(xué)習(xí)需求是圖書館管理工作亟需解決的問題。
相關(guān)研究主要從管理系統(tǒng)設(shè)計和硬件系統(tǒng)兩方面展開。管理系統(tǒng)設(shè)計的提升主要從預(yù)約機(jī)制設(shè)計[3]、用戶功能權(quán)限設(shè)計等不同機(jī)制的設(shè)計提升,基于Web的座位管理系統(tǒng)[4]、基于Android的座位管理系統(tǒng)等不同系統(tǒng)平臺設(shè)計的研究[5],以及與圖書館其他管理系統(tǒng)如門禁系統(tǒng)相結(jié)合,提升座位管理效率。硬件系統(tǒng)主要是與相關(guān)技術(shù)結(jié)合,對座位狀態(tài)進(jìn)行管理,如基于藍(lán)牙技術(shù)[6]、GIS技術(shù)[7]、RFID技術(shù)[8-9]和NFC[10]技術(shù)等實現(xiàn)對座位狀態(tài)的實時管理控制,提高座位管理利用效率。
為徹底依托技術(shù)手段,而非管理手段解決以上問題,設(shè)計了基于傳感器和單片機(jī)的監(jiān)控座位狀態(tài)(有人/無人)的系統(tǒng)。通過上述硬件系統(tǒng)采集到座位狀態(tài)數(shù)據(jù),把座位狀態(tài)及時傳送到座位管理系統(tǒng),可以及時更新座位狀態(tài),能很好的解決選座者因故不到或者遲到早退不主動在系統(tǒng)中釋放座位,其他人員不能選座的問題。
根據(jù)實際需要,系統(tǒng)應(yīng)能自動監(jiān)測座位狀態(tài)(有人/無人),并把座位狀態(tài)實時上傳給上位機(jī)。除滿足以上基本需求外,還要保證使用穩(wěn)定、易于安裝維護(hù)、容易擴(kuò)展和具有經(jīng)濟(jì)推廣價值。
根據(jù)以上要求,系統(tǒng)設(shè)計主要包括傳感器模塊、控制模塊和基站設(shè)備。各模塊功能描述如下。
(1) 傳感器模塊:對座位狀態(tài)(有人/無人)進(jìn)行監(jiān)測,然后傳送給控制單片機(jī)。
(2) 控制模塊:接收各傳感器采集的參數(shù)信息,并將其傳送至基站。
(3) 基站設(shè)備:對數(shù)據(jù)進(jìn)行處理后傳輸?shù)缴衔粰C(jī)。
系統(tǒng)的整體設(shè)計圖,如圖1所示。
圖1 系統(tǒng)整體設(shè)計圖
根據(jù)實際應(yīng)用環(huán)境,硬件系統(tǒng)要安裝在座位靠背或者座板底端適當(dāng)位置,以便采集座位狀態(tài)信息,因此,設(shè)計完成后的硬件系統(tǒng)體積不宜過大??紤]到座位為活動的,布線不方便,宜采用紐扣電池給設(shè)備供電,硬件系統(tǒng)和上位機(jī)的通訊方式也需要采用無線傳輸方式。
根據(jù)以上具體需求,傳感器采用Kionix公司的KX022加速度傳感器;控制單元采用 Nrodic nRF52832無線收發(fā)芯片;基站設(shè)備采用北京普諾興科技有限公司的PS-DCA900-P1型邊緣計算盒,此設(shè)備支持BLE藍(lán)牙連接, 并支持WIFI/ETH/4G 3種方式將數(shù)據(jù)傳輸云端。
控制單元采用 Nrodic公司的 nRF52832無線收發(fā)芯片。nRF52832具有超低功耗及極高的設(shè)計靈活性特點,支持藍(lán)牙低功耗(BLE),芯片上集成2.4 GHz 無線收發(fā)器,內(nèi)嵌32位ARM Cortex-M4F CPU,具有512 kB flash及64 kB RAM。
該芯片共有32個I/O口,其中有2個NFC天線接口和2個32.768 KHz的RTC實時時鐘口,剩余28個I/O口可供使用。本系統(tǒng)中使用了AIN0、AIN1這兩路12位ADC進(jìn)行電池電壓測量,使用1路SWI接口進(jìn)行座位狀態(tài)監(jiān)測采集[12]。
最小系統(tǒng)部分包含電源、RTC外部晶振、主時鐘外部晶振和SWD調(diào)試下載接口。此系統(tǒng)中,電源部分采用CR2032紐扣電池。nRF52832最小系統(tǒng)原理圖,如圖2所示。
圖2 nRF52832最小系統(tǒng)原理圖
座位狀態(tài)可以通過某一時刻加速度變化量來識別,如果座位靜止不動,某一時刻某個點上加速度就是0。當(dāng)座位上有人時,由于人是活的物體,難免會發(fā)生晃動,某一時刻某個點上x、y、z三軸的加速度數(shù)值不全為0。
根據(jù)以上分析, Kionix公司的 KX022加速度傳感器能夠采集到某一時刻某個點上x、y、z三軸的加速度數(shù)值,滿足需求,故選用此款傳感器作為座位狀態(tài)監(jiān)控傳感器。這款加速度傳感器可監(jiān)測x、y、z三軸的加速度變化,反應(yīng)靈敏,具備低功耗、I2C/SPI 輸出,同時擁有集成 FIFO/FILO 緩沖區(qū)和多種嵌入式功能??蛇x擇的參數(shù)為±2 g、±4 g或±8 g范圍以及輸出數(shù)據(jù)速率 (ODR)。
座位狀態(tài)監(jiān)測電路圖,如圖3所示。
圖3 座位狀態(tài)監(jiān)測電路圖
將引腳1(SDO/ADDR)和引腳4( TRIG)接地,固定I2C訪問地址,禁止FIFO,拉高nCS,片選一直使能。SCLK/SCL引腳作為I2C總線接nRF52832的P0.11引腳;SDI/SDA引腳接nRF52832的P0.12引腳;INT1和INT2引腳分別接nRF52832的P0.13和nRF52832的P0.14引腳。
系統(tǒng)采用CR2032紐扣電池為系統(tǒng)供電,系統(tǒng)待機(jī)時間可根據(jù)實際測量結(jié)果進(jìn)行計算。電池正極引腳接nRF52832的VDD引腳;電池負(fù)極引腳接nRF52832的接地引腳;兩個引腳間接4.7 μF的電容。部分電路圖,如圖4所示。
圖4 電池部分電路圖
由于尺寸、功耗因素,使用nRF52832 內(nèi)部模數(shù)轉(zhuǎn)換器,采集DET與LOW的數(shù)值,12位AD數(shù)值范圍為0至4 095。電源監(jiān)測電路圖,如圖5所示。
圖5 電源監(jiān)測電路圖
串聯(lián)兩個100 K的電阻,其BAT_DET引腳接nRF52832的P0.02引腳;BAT_LOW引腳接nRF52832的P0.03引腳。通過以下算式計算當(dāng)前的電壓。
BAT_DET電壓=3.3/4096*AIN0通道采集的數(shù)值。
BAT_LOW電壓=3.3/4096*AIN1通道采集的數(shù)值。
電池電壓=BAT_DET+((BAT_DET-BAT_LOW)/100 000)*100 000。
為指示明顯和方便交互,系統(tǒng)設(shè)計了LED指示燈,用來系統(tǒng)報警,還設(shè)計了按壓式按鍵,如圖6所示。
圖6 按鍵及指示燈部分電路圖
其中,LED接nRF52832引腳P0.31;BUTTON接nRF52832引腳P0.08。
該座位狀態(tài)監(jiān)測系統(tǒng)軟件設(shè)計采用模塊化設(shè)計方法,使用C語言實現(xiàn)。根據(jù)不同功能,分為4個模塊,即主程序模塊、參數(shù)設(shè)置模塊、座位狀態(tài)數(shù)據(jù)采集模塊和數(shù)據(jù)上傳模塊。其中每個模塊又可分為多個子模塊,既相互獨立又相互聯(lián)系[13]。
座位狀態(tài)監(jiān)測系統(tǒng)的工作流程如下:系統(tǒng)上電后,按順序?qū)RF52832、KX022以及其他外圍設(shè)備進(jìn)行初始化,如果初始化失敗,設(shè)置LED定時閃爍,并進(jìn)行重新初始化;所有設(shè)備初始化完成后,KX022定時讀取當(dāng)前三個方向角度值,傳送給nRF52832;nRF52832讀取當(dāng)前電池電量,并計算,當(dāng)電量低時,LED燈定時閃爍;nRF52832對以上兩個數(shù)據(jù)計算后,打包并發(fā)送至基站,隨后進(jìn)入低功耗休眠狀態(tài);休眠狀態(tài)設(shè)定的時間到后,進(jìn)行下一次讀取方向角度值和電量值并打包傳送的循環(huán)。
總體流程圖,如圖7所示。
圖7 系統(tǒng)流程圖
其中,nRF52832的初始化分為時鐘初始化、定時器初始化、調(diào)度器初始化、藍(lán)牙初始化和LED及按鍵初始化,分別由以下幾個函數(shù)來實現(xiàn): void nRF52_clock_init(void),void nRF52_timers_init(void),void scheduler_init(void), void ble_uart_init(void),void buttons_leds_init(void)。KX022讀取計算當(dāng)前角度主要由以下兩個函數(shù)來實現(xiàn)具體功能:uint8_t KX122_get_raw_xyz(uint16_t *data, uint8_t *size),Uint8_t calc_angle(uint16_t *data, uint8_t *size, float angle[])。數(shù)據(jù)填充至藍(lán)牙由函數(shù)void ble_uart_tx(uint8_t sendbuf[], uint16_t size)來完成,nordic庫函數(shù)會將此函數(shù)的數(shù)據(jù)寫入藍(lán)牙串口,并發(fā)送至基站。
其中,KX022計算三個軸上角度變化量的程序如下。
uint8_t calc_angle(uint16_t *data, uint8_t *size, float angle[]) {
uint8_t i;
for (i = 0; i < *size; ++i) { //*size定義為3,是X、Y、Z三個軸
angle[i]=-((((float)data[i]* 0.061f)/1000.0f)*9.8f)*(45.0f/9.8f );//計算某個軸的角度變化量
}
程序中計算某個軸角度變化量的原理,描述如下。
從KX022寄存器讀取到的數(shù)據(jù)值,是沒經(jīng)過換算的值,需要換算得到角度。16 bit最高位是符號位,剩下15 bit是數(shù)據(jù)位,數(shù)據(jù)范圍是-32 768至+32 767。我們選擇KX022的測量靈敏度為±2 g,所以分辨率為±0.061 mg/LSB。分辨率的計算方法為(2 g/32 768)*1 000=0.061 mg/LSB。原始數(shù)據(jù)轉(zhuǎn)換為角度的計算方法如下。
設(shè)原始數(shù)據(jù)為x,則原始數(shù)據(jù)對應(yīng)角度=((x*0.061 mg/LSB)/1 000*9.8)*(45°/9.8)。
為了分析該系統(tǒng)的性能,做出了實物并進(jìn)行了功能測試。測試方法如下。
(1) 斷開nRF52832的引腳P0.0和P0.1,LED燈會閃爍;
(2) 斷開KX022芯片引腳1(SDO/ADDR)和引腳4(TRIG)的接地,LED燈會閃爍;
(3) 實測紐扣電池電壓為2.0 V,安裝在系統(tǒng)上,上點后,LED燈會閃爍。
同時,在基站設(shè)備R900藍(lán)牙上位機(jī)上做了設(shè)置,當(dāng)收到nRF52832發(fā)送的數(shù)據(jù)包后,R900藍(lán)牙基站數(shù)據(jù)燈閃爍。實際測試,當(dāng)系統(tǒng)實物動、靜狀態(tài)發(fā)生改變時,R900藍(lán)牙基站數(shù)據(jù)燈會閃爍,證明監(jiān)測到了狀態(tài)變化,并傳送到了基站。
以上測試表明,系統(tǒng)在發(fā)生異常時監(jiān)測到錯誤并報警,對系統(tǒng)的運動狀態(tài)也能做到很好的監(jiān)測,符合設(shè)計需求。
針對現(xiàn)在圖書館座位預(yù)約管理系統(tǒng)中存在的預(yù)約座位后不去,或者遲到早退,從而使自習(xí)座位空置,浪費座位資源這一問題,本文設(shè)計了一款基于單片機(jī)的座位狀態(tài)(有人/無人)監(jiān)測系統(tǒng),并對其性能進(jìn)行了測試。該系統(tǒng)根據(jù)傳感器監(jiān)測到的三維量的變化判座位上是否有人,并實時傳送到基站。該系統(tǒng)和現(xiàn)有的座位管理系統(tǒng)對接后,把采集到的座位狀態(tài)數(shù)據(jù)利用在座位預(yù)約管理系統(tǒng)中,能夠解決當(dāng)前圖書館自習(xí)座位空置等浪費現(xiàn)象,同時,也必將優(yōu)化圖書館自動化管理策略,推動圖書館信息化建設(shè)與發(fā)展,提高圖書館讀者服務(wù)工作和業(yè)務(wù)工作的質(zhì)量和效率。在一定程度上,有較大的推廣應(yīng)用價值。