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