羅詠涵 黎江曉 劉曦蕾



關鍵詞:樹莓派;座位預約;圖書館
據各類高校圖書館自習情況的調查來看,基于圖書館安靜舒適的環境和濃厚的學習氛圍,到圖書館學習成了眾多學子提升自我、追逐夢想的不二選擇。隨著社會迅速發展,各類資源競爭難免愈發激烈,而圖書館的座位資源,往往供不應求。而供不應求的結果,可能會出現惡意搶占資源的現象,譬如惡意搶座、占座等。這些現象會在不同程度上增加圖書館工作人員的管理難度,甚至可能引發不必要的矛盾。如何把圖書館或者其他公共場所的座位資源合理利用、如何更好地為使用者提供便利、降低管理難度,是本項目亟待解決的問題。
一、項目構想
基于圖書館、自習室及其他流動性辦公場所中的座位分配問題,目前較為成熟的管理系統有:基于單片機的座位管理系統、基于RFID 技術的圖書館座位管理系統、基于B/S 模式的座位管理系統,但這些系統仍有不足,如需要用戶線下排隊座位預約,未能提供座位預約服務和智能化的座位處理方案。而利用樹莓派設計一個兼有預約和管理功能的系統,實現座位的“智能化”“人工化”是一個可行的解決方案。該方案的實現有助于實現圖書館等公共場所及資源共享座位或工位的效率化、人性化、經濟化分配,從而實現管理效率的提高和資源的合理使用,促進各個相關產業的綠色可持續發展[1]。
二、系統設計
該系統選用樹莓派(搭載了Linux 系統)作為主控核心,各類設備均以模塊化的形式由其進行統一式管理。樹莓派通過GPIO 控制各類設備所相對應的驅動,從而智能化地管理各類設備。該項目整體通過python 編程實現樹莓派和其他嵌入式部件的通信,完成核心功能;通過小程序或web 頁面連接進行前端展示和控制交互;在基本需求實現后完成實體組裝部分;通過PHP 語言完善后端和服務器端的開發,完善設備[2]。項目整體分為三大模塊,每個模塊通過編程技術進行功能的實現。各模塊功能如圖1 所示。
(一)GPIO 和紅外識別的線下感應模塊
本項目基于樹莓派進行嵌入式程序的開發,當前通過GPIO 管腳外接嵌入式設備來進行一系列線下系統的控制,可通過微信掃碼激活,在打卡激活設備后,通過每間隔時間向服務器發送請求讀取并比對數據庫內的后臺預約信息,信息識別成功后,由樹莓派內python 程序控制并發送片選信號,嵌入式設備通過GPIO 接收到信號后,即可控制電力設備,并啟動供電設施。
通過在類似的模塊進行貼合項目需要的改進,完成了樹莓派與各類嵌入式設備的交互。其中制定了兩種情況的實現模式,一種是現場通過微信掃碼后向服務器發送比對信號,成功后跳轉到線下打卡界面如圖2、圖3所示;另一種是采用紅外識別當前座位是否正在使用中[3]。
此模塊通過紅外感應來查看座位狀態,使用者在離開座位后系統便會開始計時,若在規定時間內未能返回,系統則會開啟節能模式。反之,若在規定時間內返回系統將會停止計時,繼續工作。其中的墨水顯示屏使用的電子紙采用“微膠囊電泳顯示”技術進行圖像顯示,其基本原理是懸浮在液體中的帶電納米粒子受到電場作用而產生遷移。電子紙顯示屏是靠反射環境光來顯示圖案的,在自然光下,電子紙顯示屏清晰可視,可視角度幾乎達到了180°。因此,電子紙顯示屏適用于瀏覽閱讀。其使用8PIN 排線連接,在樹莓派終端中開啟SPI 接口,配合python 編程即可使用。
(二)LNMP 架構模式的遠程預留工位模塊
在本模塊中, 使用LNMP 架構模式, 在Linux系統( 本項目在Ubuntu 虛擬機中實現) 下使用Nginx+MySQL+Python 的方式進行服務器的搭建。搭建服務器的大致流程如下:
通過瀏覽器發送http request 請求到服務器(Nginx),服務器響應并處理web 請求,將一些靜態資源(CSS、頁面圖片等)保存至服務器上,將php 腳本通過接口傳輸協議(網關協議)PHP-FCGI(fast-cgi)傳輸給PHPFPM(進程管理程序),通過PHP-FPM 調用PHP 解析器進程,PHP 解析器解析php 腳本信息。將解析后的腳本返回到PHP-FPM,PHP-FPM 再通過fast-cgi 的形式將腳本信息傳送給Nginx 進行處理。服務器再通過Httpresponse 的形式傳送給瀏覽器。瀏覽器在進行解析與渲染后呈現可視化界面。在網頁設計中采用HTML5、CSS、JavaScript 等前端技術,進行可視化交互界面編寫。該過程中參考了現有市面上流行的,大眾可接受、經常使用的UI 設計,在大眾接受的美觀、簡介的基礎上,進行合理的特色化改進,在符合產品理念和初心的同時,使產品既有創新點,又不為大眾用戶的使用造成負擔,預約界面如圖4、圖5 所示。
此外,通過設計合理的關系型數據庫,可以輕松檢索信息,提高信息的質量和一致性,易于更新和維護。并使用Java 編寫后端服務模塊功能,實現對數據庫的調用。在數據層通過固定的服務器,每間隔時間接收樹莓派發出的請求,通過PHP 編寫程序控制服務器并對相應的請求進行處理并反饋信號,從而達到實時更新系統狀態,避免數據沖突及讀取錯誤信息。
通過后端相應控制程序的連接與調用,讀取相關數據通過指定格式傳送至前端界面,實現信息的更新。同時將信息更新至可視化模塊,即展示于本地的電子墨水屏。在此模塊中,用戶可以自行在線上進行座位的預訂和時間的選擇,同時可以看到所有座位的預約及使用情況,也可以自主選擇自己喜歡的座位。
(三) Python 實現的可視化打卡激活模塊
在此模塊中,實現了用戶到達工位后進行掃碼激活打卡,以此來啟動設備,在獲取掃碼用戶簡單信息的同時,運用python 編寫程序,通過樹莓派控制相關嵌入式設備的啟動與關閉。之所以采用Python 語言,是因為能用簡單的方式向樹莓派提供命令。這與低級語言(比如匯編),形成了鮮明的對比,匯編語言更接近計算機思維,但讓一個沒有經驗的人用它來編程幾乎不可能。高級與自然清晰的語法使Python 成為一個有價值的工具[4-5]。而該模塊也是用戶第二核心接觸的模塊,再通過外設的連接,來傳輸信息,樹莓派每間隔時間向服務器進行請求,更新數據庫內字段存儲內容,同時通過編程來實現電力開關控制,及相應服務設施的啟動。
如圖6 所示,用戶通過網頁進行預約后通過PHP編寫程序控制服務器并對相應的請求進行處理并反饋信號,再將信息儲存到數據庫當中,運用Python 編程,控制通過樹莓派控制相關嵌入式設備的啟動與關閉。例如在紅外感應到用戶離開半小時后自動控制斷電,再將數據傳輸到電腦上實現人員信息的登記。
三、結束語
針對高校圖書館或自習室座位資源無法得到充分利用的問題,本項目基于樹莓派開發的座位預約功能系統將改變傳統的占座位模式,在合理規劃座位資源的同時,還能在一定程度上使座位“智能化”“人性化”,以此滿足用戶在學習或工作時段的主要需求,為用戶提供更為便利的服務。另一方面,在一定程度上降低了公共場所中座位資源的管理難度,方便人們的使用,將資源的利用分配與數字科技聯系到一起,體現了強有力的為民服務的宗旨,讓資源利用合理化和公共設施便民化深入人心。用戶可以做到足不出戶,就能通過線上的方式進行座位的預約,既節省時間,又能提高公共場所座位以及共享資源的效率化、人性化、經濟化分配,進而實現管理效率的提高和資源的合理使用。此外,后臺可以通過數據分析得出用戶的預約偏好,進而方便工作人員合理安排工作管理時間。綜上,本項目可在一定程度上促進相關產業的綠色可持續發展,提高經濟效益。