輕松打造智能家庭衛(wèi)士系統(tǒng)(原理,軟硬件實(shí)現(xiàn),器件選型)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
前言
家庭是社會(huì)的細(xì)胞,家庭的幸福也就預(yù)示著社會(huì)的和諧。一個(gè)良好的居住環(huán)境不但可以給我們一個(gè)健康的體魄,更能讓我們以一個(gè)良好的心情參加到工作、學(xué)習(xí)當(dāng)中。然而,生活在這個(gè)喧囂的城市,整天忙于工作和學(xué)習(xí)的我們也會(huì)常常忽視我們休整的地方——家庭,導(dǎo)致室內(nèi)各項(xiàng)生活指數(shù)都嚴(yán)重的超過(guò)了正常值;我們也會(huì)時(shí)??吹竭@樣的報(bào)道:出門(mén)時(shí)忘記關(guān)掉正在使用的煤氣,結(jié)果就引發(fā)了一場(chǎng)損失慘重的火災(zāi);還有,由于家里沒(méi)有防盜裝置,致使猖狂的小偷經(jīng)常對(duì)我們的人身、財(cái)產(chǎn)安全構(gòu)成嚴(yán)重的威脅。
基于以上的背景,我們就提出了這樣一個(gè)方案,它使得我們能夠隨時(shí)隨地了解到家里的各種情況(如:家里溫度高低,光線明亮與否)。當(dāng)出現(xiàn)意外險(xiǎn)情時(shí)(如家里燃?xì)庑孤?、有小偷闖入等),此系統(tǒng)能及時(shí)的告知我們,已達(dá)到有備而無(wú)患的效果。
1.1 系統(tǒng)整體設(shè)計(jì)
1.1.1硬件平臺(tái)選用及資源配置
本方案擬采用基于Atmel AVR32單片機(jī)的EVK1100開(kāi)發(fā)板作為硬件平臺(tái)。本平臺(tái)有幾大優(yōu)勢(shì)以利于設(shè)計(jì)方案的完成。首先是GPIO的引出,這就方便我們的各個(gè)模塊的擴(kuò)展。
其次是多達(dá)兩個(gè)的串口,可以很方便的讓我們完成實(shí)驗(yàn)調(diào)試。再次是上面的擴(kuò)展模塊(光線傳感器、溫度傳感器、LCD液晶)設(shè)置,可以加快設(shè)計(jì)完成的進(jìn)度。
在控制信息采集方面,方案使用了傳感器。相對(duì)來(lái)說(shuō),傳感器的使用不是太難,購(gòu)買(mǎi)也比較方便。主要用了:煙霧傳感器(采集環(huán)境煙霧濃度數(shù)據(jù))、濕度傳感器(采集周圍環(huán)境濕度數(shù)據(jù))、溫度傳感器(采集周圍環(huán)境溫度數(shù)據(jù))、光線傳感器(采集室內(nèi)光強(qiáng)數(shù)據(jù))。 本設(shè)計(jì)系統(tǒng)框圖如下圖1所示:
圖 1
1.1.2軟件設(shè)計(jì)
主控芯片AVR32 AT32UC3A0512,為降低CPU運(yùn)行負(fù)載,提高系統(tǒng)實(shí)時(shí)性,采用以1.8S為周期對(duì)占用時(shí)間長(zhǎng)的程序運(yùn)行,重點(diǎn)對(duì)標(biāo)志進(jìn)行判斷,同時(shí)以中斷的方式對(duì)標(biāo)志作處理。下圖2為本系統(tǒng)詳細(xì)軟件流程圖
圖 2
1.2各個(gè)模塊設(shè)計(jì)
1.2.1遠(yuǎn)程通信模塊GSM
GSM:global system for mobile communications全球移動(dòng)通信系統(tǒng),GSM 是當(dāng)前應(yīng)用最為廣泛的移動(dòng)電話標(biāo)準(zhǔn)。全球超過(guò)200個(gè)國(guó)家和地區(qū)超過(guò)10億人正在使用GSM電話。通過(guò)GSM我們能夠從任何地方遠(yuǎn)程遙控家里,借助于GSM我們只需支付極低的費(fèi)用,而不需要自己搭建一個(gè)通信系統(tǒng),自己搭建通信系統(tǒng)需要極大的人力,物力且通信范圍有限,GSM作為覆蓋最為廣泛的移動(dòng)電話系統(tǒng),可以很好的被我們所利用。
本設(shè)計(jì)核心模塊采用simcom公司的sim300模塊,具有相當(dāng)高的性價(jià)比。廣泛用于手機(jī),PDA,無(wú)線數(shù)據(jù)傳輸?shù)阮I(lǐng)域。sim300是采用60Pin板板連接器的雙頻GSM/GPRS模塊解決方案。模塊具有工業(yè)標(biāo)準(zhǔn)化接口,功耗低,可通過(guò)GSM/GPRS 850/900/1800/1900MHz通信網(wǎng)絡(luò)傳輸語(yǔ)音、短信、數(shù)據(jù)和傳真。
本項(xiàng)目中家里的任何情況,在任何時(shí)刻,任何地點(diǎn)都能及時(shí)的通知到我們,讓我們隨時(shí)隨地的了解家里的情況。同時(shí)遠(yuǎn)程手機(jī)可在異地通過(guò)發(fā)短信了解家里的情況,溫度、濕度、光照等等,同時(shí)家里發(fā)生異常,例如有外人闖入也可以通過(guò)GSM向遠(yuǎn)程手機(jī)報(bào)告,如果家里有小孩,在外的父母也能通過(guò)GSM及時(shí)了解家里的情況,例如撥通電話,對(duì)小孩作必要的囑咐。GSM模塊的通信示意圖如圖3所示:
圖 3
1.2.2人機(jī)交互設(shè)計(jì)
(1)語(yǔ)音模塊
采用WT588D語(yǔ)音芯片的應(yīng)用框圖如下:
圖 4
三線串口控制模式由三條通信線組成,分別是片選 CS,數(shù)據(jù) DATA,時(shí)鐘 CLK,時(shí)序根據(jù)標(biāo)準(zhǔn) SPI 通信方式。通過(guò)三線串口可以實(shí)現(xiàn)對(duì) WT588D語(yǔ)音模塊命令控制、語(yǔ)音播放。三線串口模式下,所有按鍵均無(wú)效。三線串口控制模式下的時(shí)序圖5如下:
圖 5
另外、由于直接使用WT588D驅(qū)動(dòng)喇叭時(shí)的驅(qū)動(dòng)能力不夠,需要外接語(yǔ)音放大器,本系統(tǒng)使用運(yùn)放TDA2882來(lái)放大語(yǔ)音信號(hào),放大電路如下圖6所示:
圖 6
(2)LCD顯示模塊
作為人機(jī)交互的重要模塊,lcd顯示采用avr開(kāi)發(fā)板上面的lcd204,我們目前的項(xiàng)目顯示內(nèi)容主要是溫度,濕度,光線強(qiáng)度,天然氣濃度等,顯示的內(nèi)容比較少。同時(shí),本次參賽的avr例程上面對(duì)lcd204有詳細(xì)的介紹,使用起來(lái)比較方便。
1.2.3傳感器檢測(cè)模塊
(1)紅外熱釋電探測(cè)模塊
熱釋電紅外傳感器是一種能檢測(cè)人或動(dòng)物發(fā)射的紅外線而輸出電信號(hào)的傳感器。隨著激光、紅外技術(shù)的迅速發(fā)展,熱釋電晶體已廣泛用于紅外光譜儀、紅外遙感以及熱輻射探測(cè)器,它可以作為紅外激光的一種較理想的探測(cè)器。
本系統(tǒng)的設(shè)計(jì)采用的是HC-SR501人體紅外感應(yīng)模塊,其內(nèi)部傳感器芯片為L(zhǎng)HI778。
系統(tǒng)中本模塊的工作原理如下圖7示:
圖 7
(2)MQ2氣體濃度檢測(cè)模塊
本系統(tǒng)中采用的可燃易爆氣體濃度檢測(cè)裝置是對(duì)液化氣、甲烷、丁烷、煙霧等都有較好的靈敏度的MQ2傳感器。
其靈敏度特性曲線如下圖8所示:
圖 8
本MQ2濃度檢測(cè)模塊的原理圖如下圖9所示:
圖 9
系統(tǒng)中MQ2濃度探測(cè)模塊的工作原理如下圖10示:
圖 10
(3)濕度傳感器
本設(shè)計(jì)采用的濕度傳感器是:HR31電阻型濕度傳感器。HR31濕敏電阻是采用有機(jī)高分子材料的濕度敏感元件,感濕范圍寬,長(zhǎng)期使用性能穩(wěn)定。能夠達(dá)到精度5%RH增減的要求。
其阻抗特性如下圖11所示:
圖 11
本系統(tǒng)中濕度傳感器的工作原理如下圖12所示:
圖 12
(4)溫度傳感器
考慮到EVK1100板卡上面已經(jīng)安裝了溫度傳感器NCP18WF,為了開(kāi)發(fā)的進(jìn)度和成本,就沒(méi)有再買(mǎi)模塊,直接使用就可以了。
在系統(tǒng)中的電路原理圖如下圖13所示:
圖 13
(5)光照強(qiáng)度傳感器
與溫度傳感器類似,光線傳感器也是使用的EVK1100上面自帶的TEMT6000光線傳感器。其電路原理圖如下左圖14所示,特性原理圖如下右圖15所示:
圖 14圖 15
1.3軟件設(shè)計(jì)
1.3.1中斷
為了更好的提高系統(tǒng)效率,本系統(tǒng)充分的利用了AVR32單片機(jī)的中斷功能。
(1)定時(shí)器中斷
在定時(shí)中斷服務(wù)函數(shù)里面利用AD采集各種傳感器數(shù)據(jù)是一種常用的手段,本設(shè)計(jì)就是利用1.8s定時(shí)來(lái)采集各種室內(nèi)數(shù)據(jù)
定時(shí)器后臺(tái)中斷程序流程:定時(shí)器前臺(tái)主程序流程:
(2)串口中斷
在設(shè)計(jì)中,AVR單片機(jī)與GSM模塊的通信是利用串口進(jìn)行的。由于用查詢方式接收串口數(shù)據(jù)會(huì)大大的降低系統(tǒng)性能實(shí)時(shí),故串口接收部分利用串口中斷。
遠(yuǎn)程用戶為了遠(yuǎn)程監(jiān)視家里的情況,只需要向目標(biāo)板GSM發(fā)送短信,GSM收到短信后會(huì)向核心板AVR32串口發(fā)送數(shù)據(jù),當(dāng)AVR32串口接受到數(shù)據(jù)后,在串口中斷中把標(biāo)志位flag置1,同時(shí)把串口接受到得數(shù)據(jù)儲(chǔ)存到緩存中,主程序在定時(shí)器控制下,每隔1.8s檢測(cè)flag,當(dāng)檢測(cè)到flag等于1的時(shí)候,讀取緩存中的數(shù)據(jù),根據(jù)讀取到得不同數(shù)據(jù),作不用的處理,然后單片機(jī)AVR32通過(guò)串口向GSM發(fā)送相應(yīng)的室內(nèi)信息代碼,然后GSM通過(guò)短信向遠(yuǎn)程用戶發(fā)送室內(nèi)檢測(cè)到的信息,例如溫度、濕度等等,從而高效的查詢家里的情況,達(dá)到遠(yuǎn)程控制的功能,流程如下圖16。
圖 16
1.3.2語(yǔ)音部分
作為人機(jī)交互的重要平臺(tái),語(yǔ)音處理部分主要是將各種傳感器采集到的參數(shù),通過(guò)語(yǔ)音提示用戶,語(yǔ)音部分的軟件框圖如下圖17所示,并通過(guò)發(fā)出警告的方式,提醒用戶改善居住環(huán)境。
圖 17
2 總結(jié)
本次項(xiàng)目設(shè)計(jì)時(shí)間相對(duì)緊迫,離最初的要求有一定的距離,但是總體效果還算令人滿意,實(shí)現(xiàn)了遠(yuǎn)程用戶實(shí)時(shí)監(jiān)視家里環(huán)境,在家里環(huán)境發(fā)生異常的情況下,如有外人闖入,溫度、濕度、可燃?xì)怏w濃度發(fā)生異常時(shí),及時(shí)的做出報(bào)警,同時(shí)通過(guò)GSM發(fā)送短信向遠(yuǎn)程用戶發(fā)出警告,其語(yǔ)音模塊能夠準(zhǔn)備的根據(jù)當(dāng)時(shí)環(huán)境測(cè)得的情況,做出語(yǔ)音提示。
本次設(shè)計(jì)加強(qiáng)了我們動(dòng)手、思考和解決問(wèn)題的能力。在設(shè)計(jì)過(guò)程中,是心里老想著這樣的方法可以行得通的,但實(shí)際上,總是實(shí)現(xiàn)不了,因此耗費(fèi)在這上面的時(shí)間也挺多的。但是到后面,我們又會(huì)換換方案,解決問(wèn)題。感觸最深的就是:無(wú)論多么簡(jiǎn)單的事情,一定要親自去做了才能做評(píng)價(jià)。想象中的簡(jiǎn)單不等于實(shí)現(xiàn)的簡(jiǎn)單。在本次設(shè)計(jì)當(dāng)中,我們的模塊調(diào)試用了相當(dāng)長(zhǎng)的時(shí)間。本來(lái)以為很簡(jiǎn)單,但是在實(shí)際調(diào)試過(guò)程中卻總是會(huì)遇到這樣那樣的問(wèn)題。最后連調(diào)的時(shí)候,本來(lái)以為模塊調(diào)試通過(guò)了,連調(diào)就容易了,但是當(dāng)所有模塊連接在一起的時(shí)候就會(huì)因?yàn)橄嗷サ臎_突而不能同時(shí)工作。所以又話了很長(zhǎng)時(shí)間來(lái)調(diào)試系統(tǒng),經(jīng)過(guò)幾天不分晝夜的努力,我們終于完成了我們的系統(tǒng)。
在調(diào)試系統(tǒng)的過(guò)程中,遇到的問(wèn)題真的很麻煩,比如在調(diào)試GSM SIM300模塊的過(guò)程中,需要通過(guò)avr單片機(jī)控制短信的接收和發(fā)送,但是,短信的接收過(guò)程中對(duì)于數(shù)據(jù)的采集,判斷,分析都是異常艱難的,需要從眾多的信息中提取出短信中的有效信息,就需要不斷地判斷,不斷地選擇。所以,在這個(gè)過(guò)程中會(huì)有很多莫名其妙的死機(jī),但是,我們還是堅(jiān)持了下來(lái),通過(guò)串口,分別調(diào)試gsm和avr部分。不斷優(yōu)化我們的程序,最后達(dá)到了我們想要的結(jié)果。另外,在語(yǔ)音模塊的控制上面,我們選擇使用三線spi控制過(guò)程中,仍然遇到了不少的問(wèn)題,比如,由于wt588d模塊上面的輸出,有busy信號(hào),這對(duì)于實(shí)時(shí)查詢語(yǔ)音的播報(bào)情況十分重要,所以在調(diào)試這個(gè)語(yǔ)音模塊的過(guò)程中,始終想把這個(gè)忙信號(hào)用起來(lái),但是,通過(guò)反復(fù)地調(diào)試,發(fā)現(xiàn)busy信號(hào)并不是隨語(yǔ)音的實(shí)時(shí)播報(bào)而一直顯示為高電平,反而只是在開(kāi)始播報(bào)時(shí)會(huì)產(chǎn)生一個(gè)上升沿而已,所以,我們最后修改方案,不使用這跟信號(hào)線了。
總之,通過(guò)本次設(shè)計(jì),我們又學(xué)到了不少知識(shí)。尤其是對(duì)AVR單片機(jī)又有了更深入的了解。通過(guò)本次大賽,我們對(duì)AVR32單片機(jī)的高級(jí)性能算是有了一個(gè)全新的認(rèn)識(shí)。它的內(nèi)部Flash多達(dá)512KB,完全保證了程序的存儲(chǔ)。方便的基于優(yōu)先級(jí)的中斷管理,能讓我們快速的實(shí)現(xiàn)程序的設(shè)計(jì)。還有,不能不說(shuō)集成開(kāi)發(fā)環(huán)境AVR Studio 5.0真的很方便,尤其是里面的模塊化編程asf部分,在我們的設(shè)計(jì)過(guò)程中起到了很大的作用。
3 參考文獻(xiàn)
《信號(hào)與系統(tǒng)》,ALAN V.OPPENHEIM著,西安:西安交通大學(xué)出版社,1997年;
《數(shù)字圖像處理學(xué)》,元秋奇著,北京:電子工業(yè)出版社,2000年;
《模擬電子線路基礎(chǔ)》,吳運(yùn)昌著,廣州:華南理工大學(xué)出版社,2004年;
《數(shù)字電子技術(shù)基礎(chǔ)》,閻石著,北京:高等教育出版社,1997年;
《數(shù)據(jù)結(jié)構(gòu)與算法》,張曉麗等著,北京:機(jī)械工業(yè)出版社,2002年;
《ARM&Linux嵌入式系統(tǒng)教程》,馬忠梅等著,北京:北京航空航天大學(xué)出版社,2004年;
《單片機(jī)原理及應(yīng)用》,李建忠著,西安:西安電子科技大學(xué),2002年;
附1:程序清單
/////////////////////////////////////////////////////////
//*************語(yǔ)音模塊頭文件***************************//
/////////////////////////////////////////////////////////
#ifndef _SOUND_H_
#define _SOUND_H_
#include "asf.h"
//IO口控制
#define GPIO_sound_control_Pin1 AVR32_PIN_PX23 //jidan0818 語(yǔ)音模塊IO:PX17
#define GPIO_sound_control_Pin2 AVR32_PIN_PX25 //jidan0818 語(yǔ)音模塊IO:PX17
#define GPIO_sound_control_Pin3 AVR32_PIN_PX27 //jidan0818 語(yǔ)音模塊IO:PX17
#define sound_cs GPIO_sound_control_Pin1 //PTAD_PTAD1
#define sound_clk GPIO_sound_control_Pin2 //PTAD_PTAD2
#define sound_data GPIO_sound_control_Pin3 //PTAD_PTAD0
//函數(shù)聲明
void init_sound_io(void);
void delay100us(unsigned char cnt);
void delay1s(unsigned char cnt);
void send_sound(unsigned char addr);
void sound_plus(void);
void sound_minus(void);
void sound_cycle(unsigned char addr);
void sound_stop(void);
void sound_test(void);
//各種報(bào)警語(yǔ)音聲明
void sound_wet_waring_high(void); //濕度過(guò)高報(bào)警
void sound_wet_waring_low(void); //濕度過(guò)低報(bào)警
void sound_temp_waring_high(void); //濕度過(guò)高報(bào)警
void sound_temp_waring_low(void); //濕度過(guò)低報(bào)警
void sound_sunshine_waring_high(void); //濕度過(guò)高報(bào)警
void sound_sunshine_waring_low(void); //濕度過(guò)低報(bào)警
void sound_gas_waring_high(void); //濕度過(guò)高報(bào)警
void sound_gas_waring_low(void); //濕度過(guò)低報(bào)警
void sound_people_waring(void); //濕度過(guò)高報(bào)警
void sound_temp(short int t ) ;
void sound_time(unsigned char hh,unsigned char mm,unsigned char ss);
void sound_sunshine(short int t );
void sound_wet(short int t );
void sound_gas(short int t ) ;
void sound_welcom(void);
#endif
/////////////////////////////////////////////////////////
//****************延時(shí)服務(wù)函數(shù)***************************//
/////////////////////////////////////////////////////////
//系統(tǒng)延時(shí)初始化函數(shù)
void delay_init(unsigned long fcpu_hz)
{
#ifndef FREERTOS_USED
s_fcpu_hz = fcpu_hz;
#endif
}
//系統(tǒng)ms延時(shí)函數(shù)
void delay_ms(unsigned long delay)
{
#if (defined FREERTOS_USED)
vTaskDelay( (portTickType)TASK_DELAY_MS(delay) );
#elif (defined NUTOS_USED)
NutSleep(delay);
#else
cpu_delay_ms(delay, s_fcpu_hz);
#endif
}
//系統(tǒng)us延時(shí)函數(shù)
void delay_us(unsigned long delay)
{
#if (defined FREERTOS_USED)
vTaskDelay( (portTickType)TASK_DELAY_MS(delay) );
#elif (defined NUTOS_USED)
NutSleep(delay);
#else
cpu_delay_us(delay, s_fcpu_hz);
#endif
}
/////////////////////////////////////////////////////////
//**********部分重要的服務(wù)函數(shù)***************************//
/////////////////////////////////////////////////////////
//播放存放語(yǔ)音的底層函數(shù)
相關(guān)閱讀
智能家庭離我們還有多遠(yuǎn)?