王存娥 ,楊延寧 ,任新成 ,張 雄
(1.延安大學圖書館,陜西 延安 716000;2.延安大學物理與電子信息學院,陜西 延安 716000)
近年來,隨著高校學生人數的急劇增加,學校的圖書閱覽室、自習室等地人潮擁擠[1]。在圖書館經常能夠看到許多同學為尋找一個學習的座位,穿梭于各個樓層間。造成這種情況的原因一方面是閱覽室面積少,另一方面的原因是閱覽室的人數分布不均。有的閱覽室人滿為患,而有的閱覽室則空余座位較多。學生不了解當前各個閱覽室的人數情況,往往浪費了大量時間去尋找閱覽室的空余座位而影響了學習。傳統的視頻監控通過在閱覽室中安裝攝像頭的方式來對讀者流量進行統計,但這種方式受人流量密集程度影響較大,只能達到監控的目的,不能對室內的讀者流量進行統計,而且成本較高,不適合廣泛應用[2]。因此,有必要在閱覽室面積一定的條件下設計一套全新的閱覽室人流量監測系統來自動監測閱覽室人數,以提高閱覽室的管理效率[3]。
設計要求包括四個方面:①對進入閱覽室的人數進行統計,并在液晶顯示屏(liquid crystal display,LCD)上顯示;②對離開閱覽室的人數進行統計,并在LCD上顯示;③對閱覽室內實時人數進行統計,并在LCD上顯示;④當閱覽室內人數超過所預定的人數時,蜂鳴器報警。
本文設計的人流量計數器安裝在房屋的出入口處。當傳感器探測到有人進出時,產生的低電平會在單片機內部進行脈沖計數。在單片機的驅動下,LCD顯示進出的人數和室內實時的人數。當閱覽室內部的實時人數超過預設值時,蜂鳴器就會報警。使用復位按鍵對LCD進行清零。系統主要由單片機、報警電路、紅外光電傳感器、顯示電路、按鍵電路等模塊組成。系統設計原理如圖1所示。

圖1 系統設計原理圖
系統的核心控制單元選用STC89C52單片機,按鍵電路用來設定系統的閥值,即報警值。時鐘電路與復位電路是單片機正常工作所不可或缺的。本文選用成熟的字符型顯示器LCD1602。與傳統的LED數碼管顯示相比,LCD1602機身薄,顯示信息量豐富,節省電力,占用系統I/O口少,能夠有效節約系統資源[4]。光電檢測模塊是本設計的關鍵。與對射式光電傳感器相比,反射式紅外傳感器的發射器與接收器集成,具有探測距離遠、受可見光干擾小、易于裝配和使用方便等特點。因此,光電檢測模塊選擇反射式紅外傳感器E18-D50NK[5]。該傳感器具有監測分辨率高、響應時間短、非接觸等優點。
硬件電路由電源電路、鍵盤電路、紅外檢測電路、單片機的復位電路和晶振電路、LCD顯示電路以及報警電路構成。核心模塊為STC89C52單片機,紅外發射與接收電路E18-D50NK、顯示模塊LCD1602。
將人流量計數器安裝在閱覽室的出入口處,E18-D50NK可以實現對進入人員和離開人員的檢測。當傳感器探測到有人進出時,低電平會在單片機內部進行脈沖計數。E18-D50NK反射式紅外傳感器的發射器與接收器集成。當有人從閱覽室出入口通過時,發射器發出的紅外光束會被人體反射,然后被接收器接收。隨著光信號的變化,光電元件的電信號也會隨之改變,形成脈沖信號。該信號送到單片機STC89C52內計數。LCD1602在單片機的驅動下顯示人數信息,實現了人數的實時統計。工作前,通過復位電路使系統進行初始化。與自動復位電路相比,手動復位不需要編寫程序。當系統電路在工作電壓下進行正常工作時,通過手動方式使單片機系統復位。當閱覽室的人數達到預先設置的報警值時,系統會進行報警。管理人員根據報警信息采取相應的措施,限制閱覽室的人流量。
自然界中的太陽光中存在一定量的紅外光線。除此之外,一些特定的人工光源也存在紅外光線,如篝火火焰、日光燈和廣告燈等。這些紅外線會干擾接收器的正常工作[6]。因此,必須盡可能地減小這些紅外光線的干擾。分析發現,盡管雜散的紅外光線很多,但是其波長卻有一定的差異。本文采用調制解調法來解決這個問題。具體來說,就是用發射器發射頻率固定的紅外光束,然后再讓接收器來區分某一個頻率已知的紅外光束,最終解決了雜散光束的干擾[7]。
系統總流程如圖2所示[8]。

圖2 系統總流程圖
軟件控制程序主要由主程序、液晶顯示程序和設置計數報警程序三部分組成。它們主要實現計數加減、鍵盤掃描、LCD顯示以及設定超值就報警等功能。軟件編程部分包括對鍵盤電路的按鍵識別、報警人數的預設、LCD顯示內容以及室內人數超過預設值時報警等。
當處于正常的工作電壓下時,系統首先會進行初始化操作。根據圖書閱覽室的實際情況,給系統設定閥值,即報警值。接著紅外光電傳感器檢測有無人進出。若無人進出,則繼續等待;如果有人進出,則讀取進出人數的數值。通過單片機的驅動在LCD上顯示具體的數值,當達到預設的報警值時,系統就會報警。如果要使系統停止報警,可以按復位按鍵停止報警,主程序初始化,系統再次正常工作。系統主流程如圖3所示。

圖3 系統主流程圖
LCD1602液晶是字符型液晶,它內部自帶有字符庫,可以寫兩行,每行16個字符。寫顯示服務程序時,要先寫命令,然后設定字符的顯示,最后寫數據。每寫一次命令或數據,都要判斷液晶是否忙。液晶顯示程序流程如圖4所示。

圖4 液晶顯示程序流程圖
系統設計由軟件和硬件兩部分組成,兩者相輔相成。調試是確保系統正常工作的關鍵步驟。系統的調試過程由三個階段組成,分別為硬件電路調試、軟件總體程序調試和軟硬件結合調試。
首先,進行硬件電路調試。在蜂鳴器的供電端接+5 V的電壓,并在與單片機相連的一端加上低電平,蜂鳴器可以連續發出響聲,表明蜂鳴器能夠正常工作,報警電路正常。用萬用表分別檢測復位電路、時鐘電路、程序下載接口以及電源各部分的連線是否有問題,經測試,一切正常。軟件調試是整個系統調試過程中不可缺少的一部分。只有當軟件調試成功時,系統才有可能實現其功能。在KEIL軟件中,用C語言編寫程序;然后用KEIL的編譯功能編譯,來檢查程序是否有語法等錯誤。根據編譯完的下方提示進行分析,反復修改程序一直到編譯成功為止[9]。將編譯好的程序下載到PROTEUS仿真軟件中測試,仿真結果符合要求。在硬件電路和軟件調試都完成以后,最后對整個系統進行整機軟硬件結合調試。
本文設計的閱覽室人流量監測系統能夠準確、快速地統計進入和離開閱覽室人數以及室內的實時人數。當超過預設值時,蜂鳴器進行報警。本設計還存在一些缺陷,比如不能準確區分進入室內的物體和人。因此,有必要進一步完善設計,提高系統的抗干擾性,使系統更加適應環境,擴展應用場合。