鄭祿+常佳
摘要摘要:為滿足高校實(shí)驗(yàn)室信息化建設(shè)中的安全需求,設(shè)計(jì)了基于Arduino和Python的實(shí)驗(yàn)室聯(lián)動(dòng)門禁報(bào)警系統(tǒng)。提出基于Arduino開源單片機(jī)為核心模塊的設(shè)計(jì)方案,該方案利用開源的Python語言編寫API接口連接各部分功能,使它們能互相通信,解決了傳統(tǒng)門禁的弊端,提高了實(shí)驗(yàn)室的安全性。
關(guān)鍵詞關(guān)鍵詞:Arduino;Python;實(shí)驗(yàn)室安全;聯(lián)動(dòng)報(bào)警
DOIDOI:10.11907/rjdk.162733
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2017)001007602
引言
高等院校實(shí)驗(yàn)室承擔(dān)著學(xué)校實(shí)驗(yàn)教學(xué)、科研等重要任務(wù),安全保障越來越受到重視[1]。隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,門禁報(bào)警系統(tǒng)成為最主要的安保系統(tǒng)之一。門禁報(bào)警系統(tǒng)應(yīng)用是高校實(shí)驗(yàn)室信息化建設(shè)的一個(gè)重要組成部分,是實(shí)驗(yàn)室安全管理的必然要求,也是保障實(shí)驗(yàn)室安全開放的必要手段和方法[2]。
實(shí)驗(yàn)室聯(lián)動(dòng)門禁報(bào)警系統(tǒng)與傳統(tǒng)的門禁安保設(shè)備不同,它變被動(dòng)的監(jiān)控與報(bào)警為主動(dòng)模式。傳統(tǒng)實(shí)驗(yàn)室門禁系統(tǒng)只是簡單實(shí)現(xiàn)控制學(xué)生進(jìn)出事務(wù),采用機(jī)械式門鎖和鑰匙[3],若管理人員鑰匙丟失則直接影響實(shí)驗(yàn)教學(xué),嚴(yán)重者會(huì)造成教學(xué)事故發(fā)生。本文利用Arduino和Python技術(shù)設(shè)計(jì)的門禁系統(tǒng),具有很好的聯(lián)動(dòng)性、擴(kuò)展性、安全性和實(shí)用性,能夠滿足復(fù)雜的環(huán)境要求,適應(yīng)實(shí)驗(yàn)室建設(shè)發(fā)展。
1系統(tǒng)硬件設(shè)計(jì)
1.1Arduino簡介
Arduino是基于單片機(jī)的人機(jī)互動(dòng)產(chǎn)品開發(fā)平臺(tái),具有豐富易用的模塊,常被稱為“電子積木”。Arduino的硬件平臺(tái)是開源項(xiàng)目,任何人都可以在Arduino的硬件平臺(tái)上做二次開發(fā)。Arduino硬件平臺(tái)有基于AVR的單片機(jī)主控板,各式I/O電子模板,以及豐富的外圍模塊[4]。本系統(tǒng)開發(fā)環(huán)境采用ATmega32u4微控制器板,它有20個(gè)數(shù)字I/O引腳,1個(gè)16 MHz的晶體振蕩器,1個(gè)Micro USB接口,1個(gè)DC接口,1個(gè)ICSP接口,1個(gè)復(fù)位按鈕。使用的Leonardo是Arduino控制器中最新的多功能微型控制器,直接使用ATmega32u4的USB通信功能,減除了USB轉(zhuǎn)UART芯片程序。
1.2聯(lián)動(dòng)報(bào)警基本原理
聯(lián)動(dòng)報(bào)警功能使用TCP/IP協(xié)議。系統(tǒng)將各種門禁設(shè)備的IP地址與MAC地址嵌入在Arduino單片機(jī)代碼中進(jìn)行綁定,并用代碼標(biāo)記對(duì)應(yīng)的位置,用來區(qū)分不同實(shí)驗(yàn)室的不同設(shè)備。報(bào)警功能實(shí)現(xiàn)方式是將控制報(bào)警的中斷函數(shù)寫在Arduino單片機(jī)代碼中,報(bào)警函數(shù)通過IP協(xié)議找到目的地址,利用TCP協(xié)議進(jìn)行功能通信。
1.3系統(tǒng)結(jié)構(gòu)
實(shí)驗(yàn)室聯(lián)動(dòng)門禁報(bào)警系統(tǒng)可以接收到所有區(qū)域門禁發(fā)送的信息,實(shí)驗(yàn)員通過門禁控制器按鈕發(fā)送報(bào)警信息到本地單片機(jī)。本地單片機(jī)調(diào)取報(bào)警中斷函數(shù),通過TCP協(xié)議80端口傳到PC端的主控制中心。主控制中心將接收到的信息傳送到實(shí)驗(yàn)室聯(lián)動(dòng)門禁報(bào)警系統(tǒng),系統(tǒng)根據(jù)數(shù)據(jù)庫中的設(shè)備信息進(jìn)行比對(duì),判斷是否是報(bào)警信息。如是系統(tǒng)報(bào)警則將信息記錄在數(shù)據(jù)庫中,同時(shí)開啟多線程將報(bào)警信息發(fā)送到其它門禁系統(tǒng)。報(bào)警功能開啟,LED顯示屏顯示報(bào)警位置,以此判斷找到安全出口,快速安全撤離。系統(tǒng)結(jié)構(gòu)原理如圖1所示。
2系統(tǒng)軟件設(shè)計(jì)
2.1Python簡介
Python是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言。Python的源代碼和解釋器遵循GPL協(xié)議,語法簡潔清晰,具有簡潔性、易讀性以及可擴(kuò)展性,同時(shí)具有豐富的庫函數(shù)支持[5],可以快速生成程序的原型。本系統(tǒng)采用Python語言編寫部分核心代碼。
聯(lián)動(dòng)報(bào)警功能由C語言完成,LED屏顯示由C#語言完成,由Python語言搭建系統(tǒng)整體環(huán)境。各種功能對(duì)接使用Python的Application Programming Interface接口,它能夠便捷地對(duì)系統(tǒng)進(jìn)行維護(hù)和管理。同時(shí),Python的API接口可以快速將不同編程語言實(shí)現(xiàn)的功能模塊對(duì)接在一起實(shí)現(xiàn)相互通信功能,解決了系統(tǒng)中多語言集成的兼容性問題。
2.2系統(tǒng)流程設(shè)計(jì)
程序開始時(shí)對(duì)Arduino單片機(jī)進(jìn)行初始化設(shè)置,單片機(jī)通過判斷觸發(fā)報(bào)警按鈕檢測是否有報(bào)警信號(hào)傳來,當(dāng)檢測到有報(bào)警信號(hào)傳來時(shí),單片機(jī)會(huì)通過TCP/IP協(xié)議將報(bào)警信號(hào)傳給PC端的Python主控制器。Python主控制器會(huì)將報(bào)警信號(hào)傳遞給其它場所,進(jìn)而聯(lián)動(dòng)報(bào)警,LED屏顯示報(bào)警場所信息。系統(tǒng)流程如圖2所示。
實(shí)驗(yàn)室聯(lián)動(dòng)門禁報(bào)警系統(tǒng)實(shí)現(xiàn)了多門聯(lián)動(dòng)報(bào)警功能。有報(bào)警信息時(shí)快速觸發(fā),控制器中心及時(shí)判斷報(bào)警信息并及時(shí)發(fā)送,實(shí)驗(yàn)相關(guān)人員能在第一時(shí)間得到報(bào)警信息,及時(shí)安全逃出實(shí)驗(yàn)室。系統(tǒng)的核心代碼實(shí)現(xiàn)主要涉及接收請(qǐng)求的各種設(shè)備IP地址、開啟報(bào)警時(shí)間、增加報(bào)警日志、開啟LED線程、開啟門禁線程、停止報(bào)警信息等。聯(lián)動(dòng)報(bào)警核心偽代碼如下:
3系統(tǒng)實(shí)現(xiàn)
以兩門聯(lián)動(dòng)報(bào)警為例。當(dāng)門禁系統(tǒng)處于正常狀態(tài)時(shí),如圖3所示。當(dāng)1號(hào)門報(bào)警時(shí), 2號(hào)門接收到報(bào)警聯(lián)動(dòng)信息,LED屏顯示報(bào)警信息并正確顯示報(bào)警地點(diǎn),如圖4所示。當(dāng)2號(hào)門報(bào)警時(shí), 1號(hào)門接收到報(bào)警聯(lián)動(dòng)信息,LED屏顯示報(bào)警信息并正確顯示報(bào)警地點(diǎn),如圖5所示。
結(jié)語
基于Arduino和Python搭建的實(shí)驗(yàn)室聯(lián)動(dòng)門禁報(bào)警系統(tǒng)在一個(gè)實(shí)驗(yàn)室發(fā)生緊急情況時(shí),其他實(shí)驗(yàn)室實(shí)驗(yàn)員可立即通過本系統(tǒng)收到緊急報(bào)警信息,迅速通過安全出口撤離學(xué)生,為師生人身安全及實(shí)驗(yàn)設(shè)備安全提供保障。本系統(tǒng)借助先進(jìn)的信息技術(shù),消除了實(shí)驗(yàn)室門禁間的信息孤島,具有安全、可靠、管理簡單等特點(diǎn),提高了實(shí)驗(yàn)室的安全性。
參考文獻(xiàn):
[1]王治文,陳俊武,洪慧.面向開放管理的實(shí)驗(yàn)室門禁系統(tǒng)[J]. 實(shí)驗(yàn)室研究與探索,2009,28(6):6063.
[2]李郁峰,高小明.基于網(wǎng)絡(luò)的低成本實(shí)驗(yàn)室門禁管理系統(tǒng)[J].實(shí)驗(yàn)室研究與探索, 2010,29(6):169171.
[3]馮德尹.基于B/S架構(gòu)的實(shí)驗(yàn)室門禁管理系統(tǒng)設(shè)計(jì)[J].數(shù)據(jù)庫與信息管理, 2014,16(38):5961.
[4]楊繼志,郭敬.Arduino的互動(dòng)產(chǎn)品平臺(tái)創(chuàng)新設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2012,12(4):3941.
[5]羅亮,陳紅,盧解卿.談如何用Python控制Arduino[J].中國信息技術(shù)教育,2016 (8):6567.
責(zé)任編輯(責(zé)任編輯:杜能鋼)
第1期 陳光輝,王巍琳:基于ARM與Web的養(yǎng)殖場遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)軟 件 導(dǎo) 刊2017年標(biāo)題