我是一個(gè)在校本科生,在實(shí)驗(yàn)室學(xué)習(xí),前幾周根據(jù)老師的意思設(shè)計(jì)一個(gè)家庭智能消防系統(tǒng),需要完成的基本功能分為檢測(cè),GSM通訊電話短信報(bào)警,語音播報(bào),水泵滅火等方面。雖然簡(jiǎn)單,但是其中確實(shí)也遇到了一些困難,所以把我這個(gè)方案的整個(gè)思路分享給大家,希望對(duì)大家有所幫助。同時(shí)也歡迎大神提出我的錯(cuò)誤之處,給與我新的指導(dǎo),感激不盡。PS:電路,程全部在壓縮包里。芯片是STC89C52
智能報(bào)警撲救系統(tǒng)主要可以分為火災(zāi)隱患檢測(cè),火災(zāi)發(fā)生自動(dòng)報(bào)警,火災(zāi)發(fā)生語音引導(dǎo)逃生,火災(zāi)發(fā)生自動(dòng)施雨撲救滅火,這四個(gè)基本功能。其中第一項(xiàng)火災(zāi)隱患檢測(cè)用到了三個(gè)傳感器,溫度傳感器用于感應(yīng)屋內(nèi)不正常的熱源起到警示作用,煙霧氣體傳感器用于感應(yīng)液化氣,天然氣等易燃?xì)怏w,當(dāng)感應(yīng)到屋內(nèi)氣體濃度到達(dá)設(shè)定的閾值時(shí),蜂鳴器會(huì)起到警示作用。火焰?zhèn)鞲衅鳈z測(cè)到周圍有火焰出現(xiàn)時(shí),即火災(zāi)已經(jīng)初步發(fā)生,系統(tǒng)馬上啟動(dòng)報(bào)警功能,向設(shè)定好的人發(fā)短信及撥打電話,并且警報(bào)聲響,語音播報(bào)開始引導(dǎo)人們開始逃生,同時(shí),由系統(tǒng)控制的水泵開始降雨撲火。由于火災(zāi)發(fā)生時(shí),家庭電源一般自動(dòng)斷電,所以本套系統(tǒng)采用自給供電,可以避免火災(zāi)發(fā)生造成電路損壞無法工作的情況發(fā)生。
接下來說一下每個(gè)模塊的簡(jiǎn)單情況,
(1)溫度傳感器,用的是大眾化的DS18B20芯片,我用的模塊上只有三個(gè)接口,GND,VCC,DQ,DQ是數(shù)據(jù)傳送接口,只需要連接到單片機(jī)上的一個(gè)普通的引腳上就可以。因?yàn)橹霸跍y(cè)試溫度的時(shí)候,只有模塊沒有看不到實(shí)際溫度,所以我接了一個(gè)四位數(shù)碼管來顯示溫度,我提供的程序只顯示兩位數(shù),不精確到小數(shù)點(diǎn)后兩位,實(shí)際上我并不需要那么精確的溫度,而且這個(gè)模塊說實(shí)話,你想要的很精確的話,最好別用這么廉價(jià)的。這個(gè)模塊不難,說的就這么多。
(2)煙霧氣體傳感器,我當(dāng)時(shí)為了找那個(gè)可以檢測(cè)煙霧的傳感器在淘寶上找了好久,一搜索總是彈出來一大堆,MQ-2,MQ-5之類的傳感器,之后我發(fā)現(xiàn)這類傳感器根本不能檢測(cè)到煙霧,只是檢測(cè)可燃?xì)怏w,后來找到離子煙霧傳感元件,但是很可惜只是有個(gè)元件,我懶得焊電路,就沒有用這個(gè),現(xiàn)在用的是MQ-5,MQ-5傳感器有四個(gè)口,GND,VCC,DO,AO。DO是數(shù)字輸出,什么是數(shù)字輸出呢,就是只輸出0和1,連接到單片機(jī)上就可以判斷成高低電平很方便,缺點(diǎn)是不夠精確的控制,你可以調(diào)節(jié)它的精度來簡(jiǎn)單的判斷,比如說你調(diào)節(jié)到中間,那么只有一它檢測(cè)到氣體濃度到達(dá)那個(gè)閾值后,DO就可以輸出1報(bào)警什么的(之后自己加一個(gè)響應(yīng)),AO是模擬輸出,就是輸出模擬值,這個(gè)值可以通過PCF8591芯片進(jìn)行DA模數(shù)轉(zhuǎn)換成具體的值,然后在程序里if這個(gè)值,來精確的控制,可以這樣說,假如把精度區(qū)間分成100,那么手動(dòng)調(diào)節(jié)精度旋鈕只是粗略的判斷,你們用數(shù)模轉(zhuǎn)化值判斷的話就很精確了,比如87?等等根據(jù)需要。
(3)火焰?zhèn)鞲衅鳎且粋(gè)可以檢測(cè)火焰的傳感器,一般是用作機(jī)器人眼睛尋找判斷熱源的,它的用法和MQ-5極其極其的相似,在這里我就不贅述了,其他的描述大家可以百度百科。
(4) 語音播報(bào)模塊,簡(jiǎn)單通俗的說,就是一個(gè)錄音放音的模塊,因?yàn)橹皇呛?jiǎn)單的項(xiàng)目,所以買了一個(gè)幾塊錢的可以錄音10S的,可以手動(dòng)操作,上面有可供選擇的按鍵,錄音鍵,播放鍵,同時(shí)也有兩排引腳和兩個(gè)跳線帽可以控制不同的播放模式,循環(huán)播放還是怎么的,同時(shí)由直通模式,可以做喊話器,說實(shí)話還挺好玩的,編程控制就是接到單片機(jī)上通過引腳控制。
(5) 水泵模塊,這個(gè)小水泵也是淘寶上逛了好久才發(fā)現(xiàn)了,供電12V,想到火災(zāi)發(fā)生時(shí),電都斷了,怎么給他供電,所以就買了一個(gè)12V的可充電電池,同時(shí)用降壓模塊,可以把12V降到5V供單片機(jī)使用,這就已經(jīng)解決了電源的問題。其次,因?yàn)樗媚K沒法直接用單片機(jī)控制,所以用到了一個(gè)繼電器模塊,繼電器模塊的原理,相信高中都學(xué)過,而且網(wǎng)上一大推原理圖,一頭接單片機(jī)VCC,GND,io口,另一頭接12V電池正,水泵負(fù)極。
(6) GSM通信模塊是有難度的,以前也沒接觸過,剛開始淘寶店家發(fā)的資料也啥都不是,只有一堆指令還有一個(gè)軟件可以用,看的暈暈乎乎的,后來同樣在論壇發(fā)現(xiàn)了一個(gè)我可以用的程序,檢查之后發(fā)現(xiàn)還是不適合自己,所以只能自己辛苦的探索了,我用的是安可信A6的GSM通信模塊,想?yún)⒖嫉耐瑢W(xué)首先你得有個(gè)這樣的板子不是,首先,你的確需要了解一堆指令,我這次項(xiàng)目用到的是打電話和發(fā)短信,發(fā)短信相關(guān)的指令有AT,AT+CMGF=1,AT+CSCS,AT+CMGS,電話相關(guān)的指令有AT+SNFS=0,ATD+86132222222222,因?yàn)檫@個(gè)是需要單片機(jī)的串口進(jìn)行發(fā)送指令,GSM模塊才會(huì)響應(yīng)的,所以單純的每次修改程序,下載測(cè)試,,肯定非常的麻煩,所以必須要用到串口助手軟件,在電腦直接連接到模塊,通過串口助手發(fā)送指令信息,測(cè)試功能,在經(jīng)歷N多次失敗后,終于測(cè)試出了正確的指令及正確的指令發(fā)送順序 - while(i--)
- {
- if (sendCommand("AT\r\n", "", 500, 2) == Success);
- delay_ms(500);
- if (sendCommand("AT+CMGF=1\r\n", "", 500, 1) == Success);
- delay_ms(500);
- if (sendCommand("AT+CSCS=\"GSM\"\r\n", "", 500, 1) == Success);
- delay_ms(500);
- if (sendCommand("AT+CMGS=\"13592606142\"\r\n", "", 500, 1) == Success);
- delay_ms(500);
- if (sendCommand("Fire is coming!!!", "", 500, 1) == Success);
- delay_ms(500);
- if (sendCommand(send_buf, "", 500, 1) == Success);
- delay_ms(5000);
- }
- /******************打電話****************************/
- while(j--)
- {
- if (sendCommand("AT\r\n", "", 500, 1) == Success);
- delay_ms(500);
- if (sendCommand("AT+SNFS=0\r\n", "", 500, 1) == Success);
- delay_ms(500);
- if (sendCommand("ATD+8613592606142\r\n", "", 500, 1) == Success);
- delay_ms(20000);
-
- while(1);
- }
復(fù)制代碼需要注意的事,因?yàn)槲抑笆钦业降膭e人的代碼程序,但是對(duì)于我的板子并不適用,所以我修改了大量的代碼,但是幾乎保存了原來作者的風(fēng)格,其中比如if (sendCommand("AT\r\n", "", 500, 1) == Success);我改動(dòng)了延時(shí),減少了指令發(fā)送次數(shù),本來是10次,現(xiàn)在一次或者兩次,延時(shí)增加,并且取消了返回值(這樣子其實(shí)不好,但是我每次測(cè)試都是100%成功,反而加上成功返回值反而總是失敗,所以干脆不加了,就是引號(hào)里本來是OK,但是現(xiàn)在什么都沒有加,)曾經(jīng)有一段時(shí)間我已經(jīng)可以發(fā)送短信了,但是我要求發(fā)送三條,但是總是偷空減料的只有僅僅一條,精心的研程序,并沒有什么可以看到的錯(cuò)誤,困惱了一天,又拿到串口上測(cè)試,用同樣的延時(shí),結(jié)果可以看到,成功的次數(shù)并不多,但是可以發(fā)送,所以在想,到底有時(shí)可以發(fā)送有時(shí)不可以有時(shí)為什么?突然聯(lián)想到反應(yīng)速度這個(gè)詞上,如果我連續(xù)發(fā)送的數(shù)據(jù)模塊其實(shí)反應(yīng)不過來那豈不是就是發(fā)送不成功了嗎,馬上增加延時(shí)時(shí)間到十倍,結(jié)果很完美,很成功的發(fā)送,看著連續(xù)的短信發(fā)來,開心,(心疼話費(fèi)一波)后來調(diào)試到之前延時(shí)的2.5倍發(fā)現(xiàn)剛好不會(huì)出現(xiàn)錯(cuò)誤,要不然指令那么慢,家都燒完了,電話才打出去豈不是完蛋了哈哈。這個(gè)模塊功能很強(qiáng)大,當(dāng)然現(xiàn)在我只是學(xué)會(huì)了使用淺顯的一層,之后還是要好好看看的,畢竟40多大洋呢,雖然不是自己的錢買的,嘿嘿。 我會(huì)把數(shù)據(jù)資料和程序單獨(dú)發(fā)過來的,大家可以互相交流,畢竟我也是一只正在努力的小菜鳥了啊,眼界太窄,希望前輩指教。
突然發(fā)現(xiàn)數(shù)據(jù)資料100多兆,不讓傳,所以上傳都百度云盤了 下載地址:
如果文件已經(jīng)失效請(qǐng)聯(lián)系論壇管理員qq125739409更新鏈接,51黑論壇的每一個(gè)用戶分享的網(wǎng)盤內(nèi)容都是有備份的.
http://pan.baidu.com/s/1hs6Bai4
源碼下載地址:
完整版程序.rar
(91.82 KB, 下載次數(shù): 262)
2017-8-29 16:47 上傳
點(diǎn)擊文件名下載附件
|