黃思博 潘良辰 儲健
摘要: 隨著全球經(jīng)濟的一體化和科技的高速發(fā)展,人們正享受著高科技給他們帶來的極大方便,如家居對門禁系統(tǒng)的需求正發(fā)生著重大的變化。智能家居“門警”系統(tǒng)利用openwrt系統(tǒng)、arduino主控板、攝像頭、gprs模塊等手段實現(xiàn)主人對家庭門鈴、門體的啟動、敲打的及時了解,能夠使主人不在家時,也能較好的解決來訪者的溝通,并且對于不法分子以此方法試探家中有無人員,以便實現(xiàn)偷盜等情況也有較好的解決功能。此設計具有成本低廉、可操作性強、及時高效、有效防盜等特點,具有較高的研發(fā)和推廣價值。
關鍵詞:arduio主控板;openwrt系統(tǒng);gprs;智能監(jiān)控
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)13-3067-03
1 緒論
當今社會是科學技術(shù)日新月異、飛速發(fā)展的信息時代。人們正感受著高科技給他們帶來的極大方便,同時,人們對于高科技服務于生活的要求也越來越高。但隨著科技的發(fā)展,也帶來了許多不安全的方面[1],例如,運用高科技手段進行盜竊等犯罪行為與日增多,家居對門禁系統(tǒng)的需求正發(fā)生著重大的變化[2]。
對于現(xiàn)有的門警系統(tǒng)來說,并沒有專門為家居設計的系統(tǒng),而且存在安全性能低、成本高、功能單一等缺點[3],不能滿足家居對門警系統(tǒng)的需求。因此本團隊在安徽理工大學大學生科研項目資助下,設計了一套新穎的智能家居"門警"系統(tǒng)。
2 系統(tǒng)主要功能
智能家居"門警"系統(tǒng),具有對門戶出入控制、實時監(jiān)控、保安防盜報警等多種功能,它主要方便用戶隨時了解家庭安全情況,智能處理特殊情況(如:小偷偷竊及時報警或提示用戶),用戶遠程自動控制招待客人從而為用戶提供一個高效先進的家庭環(huán)境。
本系統(tǒng)采用了裝有openwrt系統(tǒng)的路由器和Arduino MEGA2560共同來完成的,這將更加簡化了編寫程序的繁瑣,也降低了開發(fā)成本。
1) 智能門警系統(tǒng)由攝像頭、路由器、讀卡器、GPRS模塊、主控板和電子門鎖組成。當有來訪者按動門鈴按鈕或者敲門,便會通過主控板控制GPRS給戶主發(fā)送信息,戶主可通過訪問網(wǎng)頁的形勢查看通過openwrt上傳的實時照片,并選擇與來訪者通過GPRS通話抑或通過電子門鎖給人開門。
2) 遠程開門功能 ,戶主可過手機發(fā)動指令給GPRS遠程控制家門的開關。
3) 實時監(jiān)控,通過攝像頭用motion做監(jiān)控,畫面上只要有變化,就會保存照片到制定位置,主人可登錄網(wǎng)頁進行查看。
本系統(tǒng)可以與來訪者通話,以識別來訪者的身份與來訪目的。
3 系統(tǒng)組成
本系統(tǒng)采用的是Arduino MEGA 2560 的微控制器板,相較于其他型號的Arduino控制器,它提供了更多I/O口與更大運算儲存空間.它包含了54個數(shù)字輸入輸出口(其中14個可以作為PWM輸出),16個模擬輸入口,4個串口(硬件串口),同時含有一個USB連接頭,一個電源插孔,一個ICSP接口,一個復位按鍵等支持主控器運行的最小系統(tǒng).用一根USB數(shù)據(jù)線連接到電腦,或者一個交流轉(zhuǎn)直流的電源適配器,亦或是一個電池即可讓它運行起來.大多數(shù)為Aruino Duemilanove 或 Diecimila設計的擴展板都兼容于Mega。本系統(tǒng)主要采用的Arduino MEGA 2560的主要性能指標如下:主控芯片 :ATmega2560;工作電壓:5V;輸入電壓:12V;數(shù)字輸入輸出口 :54;模擬輸出口 :16。
信息的傳輸主要利用GPRS。本系統(tǒng)的GPRS采用了SIM300模塊。 SIM300 內(nèi)部集成了TCP/IP 協(xié)議棧,并且擴展了TCP/IP AT 指令,使用戶利用該模塊開發(fā)數(shù)據(jù)傳輸設備變得特別簡單、方便。 SIM300 是一款三頻段GSM/GPRS 模塊,可在全球范圍內(nèi)的EGSM 900MHz、DCS 1800MHz、PCS 1900MHz 三種頻率下工作,能夠提供GPRS 多信道類型多達10 個,并且支持CS-1、CS-2、CS-3 和CS-4 四種GPRS 編碼方案。在GPRS模塊上插入一張已開通SIM 卡并接通電源后,由微控制器單片機向其發(fā)送AT指令,將單片機處理好的GPS數(shù)據(jù)發(fā)送給GPRS,從而實現(xiàn)了GPRS通過GPRS網(wǎng)絡、GPRS-Internet網(wǎng)關、Internet與Android終端建立連接,進而實現(xiàn)了GPRS與監(jiān)控中心的Android終端通信,并以此來傳輸數(shù)據(jù)。
4 系統(tǒng)實現(xiàn)
4.1系統(tǒng)原理圖
本系統(tǒng)主要采用Arduino主控板、GPRS模塊、震動傳感器、usb攝像頭、TP—Link路由器等。通過arduino主控板控制GPRS模塊、接收震動傳感器信號、以及控制舵機實現(xiàn)通話、開門等功能。USB攝像頭定時采集門外情況并且通過TP-LINk路由器上傳到指定網(wǎng)站。
如當客人訪問主人時,此刻SW-420常閉型震動傳感器檢測動態(tài),會向arduino主控板發(fā)出信號,此時攝像頭能夠?qū)⑴臄z照片通過TP-link WR703N向網(wǎng)絡中發(fā)送照片,用戶通過手機軟件或者網(wǎng)頁登陸方式訪問,用戶根據(jù)是不是熟悉的客人,采用兩種解決方案。方案一是熟人時,會通過SIM300與該客人進行通話交流,如果有需要可以招待客人進屋。方案二是陌生人時,會通過SIM300詢問客人情況,若是小偷及時報警并且通知用戶。系統(tǒng)原理如圖1所示。
圖1 系統(tǒng)原理圖
4.2 TP—LINK加載系統(tǒng)
1)從OpenWrt的官方站點https://openwrt.org/下載固件,固件分為squashfs和jiffs2兩種文件系統(tǒng)。具體的區(qū)別是jiffs2將固件本身和后續(xù)安裝的包會放置在一個分區(qū)內(nèi),因此可以充分利用空間。squashfs則將固件單獨掛在在/rom分區(qū),系統(tǒng)出現(xiàn)問題時,系統(tǒng)的恢復非常便利。
2)通過原有的路由器管理頁面,進行固件升級。
3)初始設置
默認的網(wǎng)段為192.168.1.*。將703N用網(wǎng)線和PC相連,且將PC的IP設置為不為192.168.1.1的任意IP。這里假設為192.168.1.100,掩碼為255.255.255.0。通過PC,telnet 192.168.1.1后,若可連接。則大功成半。然后將root的密碼進行重置。因為要用telnet和SSH的緣故,windows上要安裝putty和配置自帶的telnet,便利起見,推薦直接使用安裝linux的PC。
SSH到703N(ssh root@192.168.1.1)更改網(wǎng)絡配置。修改/etc/config/network文件,將靜態(tài)IP設置修改為DHCP。 重啟之后,就可以搜索到名為OpenWrt的無線網(wǎng)絡了。
4.3 Arduino和GPRS連接
Arduino11、12口與GPRS的RX、TX分別連接,正常的撥打電話,接聽電話,讀取短信(產(chǎn)生控制開關門命令),發(fā)送某內(nèi)容短信給某電話。讀取短信時是首先Arduino自己讀一遍,是某個命令(這里收到“b”就讓電子門鎖工作)就執(zhí)行指定的操作,不是不執(zhí)行,這是遠程控制操作。
部分代碼如下:
#define SEND_MESSA_TO_YOUR "at+cmgs=\"***********\"\r\n"
//填入你手上的手機號碼
#define SEND_MESSA_CONTENT "Your are under attack!"
#define CALL_YOU_TELNUMBER "ATD***********;\r\n"
//填入你手上的手機號碼
下面代碼是通過hand()函數(shù)檢測gprs與Arduino是否連接成功,以方便進一步實現(xiàn)Arduino控制gprs打電話,發(fā)短信等操作。
int Hand(char *s)
{
delay(200);
clearBuff();
delay(300);
readSerial(aa);
if(strstr(aa,s)!=NULL) //檢測Arduino和模塊的連接
{g_timeout=0;
clearBuff();
return 1;
}......
}
void AT(void)
{......
while(strstr(aa,"OK")==NULL)
{
clearBuff();
led(1);
Serial.println(ATE0);
delay(500);
readSerial(aa);
led(0);
}while(1)
{......
if((strstr(aa,"0,1")!=NULL)||(strstr(aa,"0,5")!=NULL))
{clearBuff();
break;
}
else
{delay(500);
}}}
通過gprs打電話,實現(xiàn)來訪客人與主人之間的通話。
void send_call(void)
{clearBuff();
Serial.println(CALL_YOU_TELNUMBER); //進行撥打電話操作
delay(2000);
while(Hand("OK")==0);}
4.4 Arduino和其他部件的連接
Arduino通過i/o接口和其他部件連接,控制其運行。如對于門鎖的控制Arduino通過i/o接口和繼電器鏈接,進而控制舵機的運行。當GPRS接到開門的短信時,Arduino通過控制相應的I/o接口控制繼電器的處于連通狀態(tài),繼而舵機可以旋轉(zhuǎn),帶動門鎖,即打開門讓客人進入。
5 結(jié)束語
通過幾個月的努力,在這次的科研立項中不僅檢驗了我們所學習的知識,也培養(yǎng)了如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監(jiān)督。學會了合作,學會了運籌帷幄,學會了寬容,學會了理解,也學會了做人與處世??蒲辛㈨検俏覀冎R綜合應用的實踐訓練,這是我們邁向社會,從事職業(yè)工作前一個必不少的過程.“千里之行始于足下”,通過這次科研立項,我深深體會到這句千古名言的真正含義.我們今天認真的學習,學會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的基礎。
參考文獻:
[1] Dale Wheat.Arduino技術(shù)內(nèi)幕[M].北京:人民郵電出版社,2013.
[2] 羅雷.嵌入式實時操作系統(tǒng)[M].北京:北京航空航天大學出版社,2011.
[3] 陳呂洲.Arduino[M].北京:北京航空航天大學出版社,2014.endprint
2)通過原有的路由器管理頁面,進行固件升級。
3)初始設置
默認的網(wǎng)段為192.168.1.*。將703N用網(wǎng)線和PC相連,且將PC的IP設置為不為192.168.1.1的任意IP。這里假設為192.168.1.100,掩碼為255.255.255.0。通過PC,telnet 192.168.1.1后,若可連接。則大功成半。然后將root的密碼進行重置。因為要用telnet和SSH的緣故,windows上要安裝putty和配置自帶的telnet,便利起見,推薦直接使用安裝linux的PC。
SSH到703N(ssh root@192.168.1.1)更改網(wǎng)絡配置。修改/etc/config/network文件,將靜態(tài)IP設置修改為DHCP。 重啟之后,就可以搜索到名為OpenWrt的無線網(wǎng)絡了。
4.3 Arduino和GPRS連接
Arduino11、12口與GPRS的RX、TX分別連接,正常的撥打電話,接聽電話,讀取短信(產(chǎn)生控制開關門命令),發(fā)送某內(nèi)容短信給某電話。讀取短信時是首先Arduino自己讀一遍,是某個命令(這里收到“b”就讓電子門鎖工作)就執(zhí)行指定的操作,不是不執(zhí)行,這是遠程控制操作。
部分代碼如下:
#define SEND_MESSA_TO_YOUR "at+cmgs=\"***********\"\r\n"
//填入你手上的手機號碼
#define SEND_MESSA_CONTENT "Your are under attack!"
#define CALL_YOU_TELNUMBER "ATD***********;\r\n"
//填入你手上的手機號碼
下面代碼是通過hand()函數(shù)檢測gprs與Arduino是否連接成功,以方便進一步實現(xiàn)Arduino控制gprs打電話,發(fā)短信等操作。
int Hand(char *s)
{
delay(200);
clearBuff();
delay(300);
readSerial(aa);
if(strstr(aa,s)!=NULL) //檢測Arduino和模塊的連接
{g_timeout=0;
clearBuff();
return 1;
}......
}
void AT(void)
{......
while(strstr(aa,"OK")==NULL)
{
clearBuff();
led(1);
Serial.println(ATE0);
delay(500);
readSerial(aa);
led(0);
}while(1)
{......
if((strstr(aa,"0,1")!=NULL)||(strstr(aa,"0,5")!=NULL))
{clearBuff();
break;
}
else
{delay(500);
}}}
通過gprs打電話,實現(xiàn)來訪客人與主人之間的通話。
void send_call(void)
{clearBuff();
Serial.println(CALL_YOU_TELNUMBER); //進行撥打電話操作
delay(2000);
while(Hand("OK")==0);}
4.4 Arduino和其他部件的連接
Arduino通過i/o接口和其他部件連接,控制其運行。如對于門鎖的控制Arduino通過i/o接口和繼電器鏈接,進而控制舵機的運行。當GPRS接到開門的短信時,Arduino通過控制相應的I/o接口控制繼電器的處于連通狀態(tài),繼而舵機可以旋轉(zhuǎn),帶動門鎖,即打開門讓客人進入。
5 結(jié)束語
通過幾個月的努力,在這次的科研立項中不僅檢驗了我們所學習的知識,也培養(yǎng)了如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監(jiān)督。學會了合作,學會了運籌帷幄,學會了寬容,學會了理解,也學會了做人與處世。科研立項是我們知識綜合應用的實踐訓練,這是我們邁向社會,從事職業(yè)工作前一個必不少的過程.“千里之行始于足下”,通過這次科研立項,我深深體會到這句千古名言的真正含義.我們今天認真的學習,學會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的基礎。
參考文獻:
[1] Dale Wheat.Arduino技術(shù)內(nèi)幕[M].北京:人民郵電出版社,2013.
[2] 羅雷.嵌入式實時操作系統(tǒng)[M].北京:北京航空航天大學出版社,2011.
[3] 陳呂洲.Arduino[M].北京:北京航空航天大學出版社,2014.endprint
2)通過原有的路由器管理頁面,進行固件升級。
3)初始設置
默認的網(wǎng)段為192.168.1.*。將703N用網(wǎng)線和PC相連,且將PC的IP設置為不為192.168.1.1的任意IP。這里假設為192.168.1.100,掩碼為255.255.255.0。通過PC,telnet 192.168.1.1后,若可連接。則大功成半。然后將root的密碼進行重置。因為要用telnet和SSH的緣故,windows上要安裝putty和配置自帶的telnet,便利起見,推薦直接使用安裝linux的PC。
SSH到703N(ssh root@192.168.1.1)更改網(wǎng)絡配置。修改/etc/config/network文件,將靜態(tài)IP設置修改為DHCP。 重啟之后,就可以搜索到名為OpenWrt的無線網(wǎng)絡了。
4.3 Arduino和GPRS連接
Arduino11、12口與GPRS的RX、TX分別連接,正常的撥打電話,接聽電話,讀取短信(產(chǎn)生控制開關門命令),發(fā)送某內(nèi)容短信給某電話。讀取短信時是首先Arduino自己讀一遍,是某個命令(這里收到“b”就讓電子門鎖工作)就執(zhí)行指定的操作,不是不執(zhí)行,這是遠程控制操作。
部分代碼如下:
#define SEND_MESSA_TO_YOUR "at+cmgs=\"***********\"\r\n"
//填入你手上的手機號碼
#define SEND_MESSA_CONTENT "Your are under attack!"
#define CALL_YOU_TELNUMBER "ATD***********;\r\n"
//填入你手上的手機號碼
下面代碼是通過hand()函數(shù)檢測gprs與Arduino是否連接成功,以方便進一步實現(xiàn)Arduino控制gprs打電話,發(fā)短信等操作。
int Hand(char *s)
{
delay(200);
clearBuff();
delay(300);
readSerial(aa);
if(strstr(aa,s)!=NULL) //檢測Arduino和模塊的連接
{g_timeout=0;
clearBuff();
return 1;
}......
}
void AT(void)
{......
while(strstr(aa,"OK")==NULL)
{
clearBuff();
led(1);
Serial.println(ATE0);
delay(500);
readSerial(aa);
led(0);
}while(1)
{......
if((strstr(aa,"0,1")!=NULL)||(strstr(aa,"0,5")!=NULL))
{clearBuff();
break;
}
else
{delay(500);
}}}
通過gprs打電話,實現(xiàn)來訪客人與主人之間的通話。
void send_call(void)
{clearBuff();
Serial.println(CALL_YOU_TELNUMBER); //進行撥打電話操作
delay(2000);
while(Hand("OK")==0);}
4.4 Arduino和其他部件的連接
Arduino通過i/o接口和其他部件連接,控制其運行。如對于門鎖的控制Arduino通過i/o接口和繼電器鏈接,進而控制舵機的運行。當GPRS接到開門的短信時,Arduino通過控制相應的I/o接口控制繼電器的處于連通狀態(tài),繼而舵機可以旋轉(zhuǎn),帶動門鎖,即打開門讓客人進入。
5 結(jié)束語
通過幾個月的努力,在這次的科研立項中不僅檢驗了我們所學習的知識,也培養(yǎng)了如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監(jiān)督。學會了合作,學會了運籌帷幄,學會了寬容,學會了理解,也學會了做人與處世??蒲辛㈨検俏覀冎R綜合應用的實踐訓練,這是我們邁向社會,從事職業(yè)工作前一個必不少的過程.“千里之行始于足下”,通過這次科研立項,我深深體會到這句千古名言的真正含義.我們今天認真的學習,學會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的基礎。
參考文獻:
[1] Dale Wheat.Arduino技術(shù)內(nèi)幕[M].北京:人民郵電出版社,2013.
[2] 羅雷.嵌入式實時操作系統(tǒng)[M].北京:北京航空航天大學出版社,2011.
[3] 陳呂洲.Arduino[M].北京:北京航空航天大學出版社,2014.endprint