一、項目概述
1.1 引言
21世紀是信息化的世紀,各種信息新技術(shù)推動著人類文明的進步。本文介紹的基于以太網(wǎng)和DTMF編解碼的遠程家居控制器可以使得人們可以通過手機或電話在任何時候、任意地點對家中的電器進行遠程控制;也可以在下班途中,通過手機預(yù)先將家中的空調(diào)打開、讓熱水器提前燒好熱水……;而這一切的實現(xiàn)都僅僅是打一個簡單的電話。此外,該系統(tǒng)還提供以太網(wǎng)遠程控制,用戶登錄特定的網(wǎng)站就可以了解家電的工作情況以及進行相應(yīng)控制。如果不幸出現(xiàn)某種險情,此控制器還可以自動撥打電話通知你,你就可以在第一時間獲得通知以便進一步采取行動。當你回到家時,你還可以運用遙控器來控制家電工作。舒適、時尚的家居生活是社會進步的標志,對家里的電器、燈光、電源、家庭環(huán)境進行方便地控制,使人們盡享高科技帶來的簡便而時尚的現(xiàn)代生活。
1.2選題動機
如今,我國正在快速發(fā)展智能家居行業(yè),特別是基于GSM網(wǎng)絡(luò)的居多,然而,因為價格的昂貴至今還未進入平常百姓家。本系統(tǒng)針對此情況,設(shè)計一款成本低廉,面向普通家庭,集本地控制和遠程控制于一體的智能家居控制器。眾所周知,電話網(wǎng)絡(luò)已經(jīng)遍及我國各地,電腦也已經(jīng)基本普及。我們利用電話網(wǎng)開發(fā)基于DTMF編解碼的電話遠程控制系統(tǒng) ,其外圍電路成本低于30元人民幣;利用現(xiàn)有發(fā)達的internet,我們開發(fā)出基于以太網(wǎng)的遠程控制系統(tǒng),用戶可以隨時隨地通過電話或PC機瀏覽器遠程控制家用電器和監(jiān)控家庭安全隱患。同時,在家用戶可以通過遙控器無線遙控家用電器和實時監(jiān)控家庭安全隱患。
二、需求分析
2.1 功能要求
本著“環(huán)保與創(chuàng)新”的主題,此系統(tǒng)集本地家電控制和監(jiān)控模塊,DTMF編解碼的電話遠程控制和監(jiān)控模塊以及以太網(wǎng)web server的遠程家居控制和監(jiān)控系統(tǒng)模塊三大模塊為一體,實現(xiàn)智能家居控制。電話遠程控制和以太網(wǎng)遠程控制,不需進行專門的布線,不占用無線電頻率資源,避免了電磁污染。且可以通過以太網(wǎng)實時監(jiān)控家用電器,避免了沒必要的電力資源浪費。
一、本地家電控制和監(jiān)控模塊
此模塊能夠?qū)崟r檢測溫濕度、一氧化碳、煙霧等的數(shù)值或者濃度,并在1602液晶上顯示相關(guān)參數(shù)。當超過一定的警戒線,它還會發(fā)出警報以及通知主系統(tǒng)(AVR 32)出現(xiàn)何種警情,讓主系統(tǒng)進行相關(guān)處理。
二、DTMF編解碼的電話遠程控制和監(jiān)控模塊
此模塊能夠受手機控制,通過手機撥打家里電話來遠程控制家里的電器的開閉,以及當家里出現(xiàn)盜賊或者出現(xiàn)險情(包括火災(zāi)、煤氣泄漏等)時固定電話能及時自動撥打電話通知用戶。
三、以太網(wǎng)web server的遠程家居控制和監(jiān)控系統(tǒng)模塊
此模塊通過網(wǎng)線接入以太網(wǎng)后,用戶可以通過手機或PC機打開相應(yīng)瀏覽器來遠程控制家里的電器的開閉,以及監(jiān)控家里的溫濕度,煤氣傳感器和煙霧傳感器的數(shù)據(jù)。
2.2 性能要求
一、本地家電控制和監(jiān)控模塊
此模塊性能要求傳感器采集數(shù)據(jù)要實時,而且要快速,采集出來的數(shù)據(jù)經(jīng)過相應(yīng)轉(zhuǎn)換后得到的數(shù)值與實際數(shù)值相差不能超過5%,溫度的精度為0.1℃,濕度的精度為0.5%RH。
二、DTMF編解碼的電話遠程控制和監(jiān)控模塊
此模塊性能要求能響應(yīng)速度快,即有人撥打電話時,此模塊能夠在1S內(nèi)檢測到有電話打入,并記錄下?lián)艽蛉溯斎氲陌存I信息。此外,當要實現(xiàn)自動撥打電話時,要求此模塊模擬按下的電話號碼要準確無誤,確保準確性。
此模塊要求接入互聯(lián)網(wǎng),當用戶瀏覽網(wǎng)頁時,家用電器信息和傳感器數(shù)據(jù)每隔幾秒刷新一次,確保數(shù)據(jù)傳輸?shù)目焖傩院蜏蚀_性。
三、方案設(shè)計
3.1 系統(tǒng)功能實現(xiàn)原理(除圖片外需有文字介紹)
本系統(tǒng)功能的實現(xiàn)由三大模塊實現(xiàn):
(1)本地家電控制和監(jiān)控模塊;
(2)DTMF編解碼的電話遠程控制和監(jiān)控模塊;
(3)以太網(wǎng)web server的遠程家居控制和監(jiān)控系統(tǒng)模塊。
一。本地家電控制和監(jiān)控模塊
1.模塊概要
傳感器是用來監(jiān)測家庭的險情情況的,所以要求監(jiān)測速度快,效率高。為了提高整個系統(tǒng)的整體性能,我們把無線遙控模塊和各傳感器以及ATMEGA 16單片機作為主機(AVR 32)的一個子系統(tǒng),子系統(tǒng)作為一個獨立的模塊可以單獨工作但又從屬于主機,突出了容易操作以及執(zhí)行效率高的優(yōu)點。整體的硬件框圖如下圖3.1—1所示:
傳感器子系統(tǒng)模塊包括:人體紅外感應(yīng)傳感器模塊;一氧化碳傳感器;煙霧傳感器;溫濕度傳感器。它們采集出來的數(shù)據(jù)在液晶1602上顯示。而ATMEGA 16單片機與主系統(tǒng)之間的通信是通過RS485總線來進行通信的。
圖3.1—1 傳感器子系統(tǒng)模塊
2.單元功能模塊介紹
2.1人體紅外感應(yīng)傳感器
外形如下圖所示:
一般來說,人體會發(fā)出波長為10um 左右的紅外線,在本次設(shè)計中采用PIR熱釋電傳感器,其低功耗、靜態(tài)功耗50uA,寬電壓范圍,電源可為5V電源。使用簡單,總共有3個引腳,一個為+5V電源引腳,一個為GND引腳,一個為感應(yīng)輸出電平引腳,沒人時輸出低電平,感應(yīng)距離最大為7米。當有人進入感應(yīng)范圍,此傳感器的感應(yīng)輸出電平引腳輸出有效高電平,單片機可以通過讀取此引腳來判斷是否有人進入。當有人進入時,單片機通過自動撥打電話通知用戶,并室內(nèi)響鈴。
2.2 溫濕度傳感器
本設(shè)計采用數(shù)字溫濕度傳感器DHT11。此傳感器包括一個電阻式測濕元件和一個NTC測溫元件。它為單線制串行輸出接口,單總線結(jié)構(gòu)輸出有效地節(jié)省用戶控制器的I/O口資源。40bit二進制數(shù)據(jù)輸出,其中濕度整數(shù)部分占1Byte,小數(shù)部分1Byte,溫度整數(shù)部分1Byte,小數(shù)部分1Byte。濕度為高16位。最后1Byte為校驗和。具體見下表:
計算方法為:
Humi(濕度)=bite 4.bite 3
Temp(溫度)=bite 2. bite 1
Jiaoyan( 校驗)=bite4+bite 3+bite 2+bite 1
DHT11的外形以及引腳排列如下圖所示:
DHT11的供電電壓為3.5~5.5V。傳感器上電后,要等待1s以越過不穩(wěn)定狀態(tài)在此期間不要發(fā)送任何指令。電源引腳之間可增加一個瓷片電容用以去耦濾波。
DHT11與單片機的連接如下圖所示:
2.3 一氧化碳傳感器
本設(shè)計采用MQ9一氧化碳傳感器。其主要特點是對一氧化碳、甲烷、液化石油氣具有很高的靈敏度和良好的選擇性,具有長期的使用壽命和可靠的穩(wěn)定性。
半導體可燃氣體傳感器MQ-9所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫(SnO2)。采用高低溫循環(huán)檢測方式低溫(1.5V加熱)檢測一氧化碳,傳感器的電導率隨空氣中一氧化碳氣體濃度增加而增大,高溫(5.0V加熱)檢測可燃氣體甲烷、丙烷并清洗低溫時吸附的雜散氣體。使用簡單的電路即可將電導率的變化,轉(zhuǎn)換為與該氣體濃度相對應(yīng)的輸出信號。
2.4煙霧傳感器
本設(shè)計采用MQ—2煙霧傳感器。MQ-2傳感器成本低,靈敏性能很好。它所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫,當室內(nèi)有煙霧時,MQ-2的電導率隨空氣中煙霧氣體的濃度增大而增大,使用簡單的電路即可將電導率的變化轉(zhuǎn)換為與該濃度相對應(yīng)的輸出信號。
其外形如下圖所示:
2.5 1602液晶顯示模塊
本設(shè)計采用1602液晶顯示模塊,不可顯示漢字,可以顯示字母以及數(shù)字和一些特定字符,滿足本設(shè)計不要求很高的顯示相關(guān)的溫濕度參數(shù)以及百分比參數(shù)。電源為+5V即可。顯示顏色為黃綠色,與MCU數(shù)據(jù)接口為8位并行連接。
此模塊外形尺寸圖如下圖所示:
此模塊的引腳定義如下圖所示:
2.6無線遙控模塊
本設(shè)計采用PT2262/PT2272通用編/解碼無線遙控模塊。在通常使用中,我們一般采用8位地址碼和4位數(shù)據(jù)碼,這時編碼電路PT2262和解碼PT2272的第1~8腳為地址設(shè)定腳,有三種狀態(tài)可供選擇:懸空、接正電源、接地三種狀態(tài),3的8次方為6561,所以地址編碼不重復度為6561組,只有發(fā)射端PT2262和接收端PT2272的地址編碼完全相同,才能配對使用。當兩者地址編碼完全一致時,編碼芯片PT2262發(fā)出的編碼信號由:地址碼、數(shù)據(jù)碼、同步碼組成一個完整的碼字,解碼芯片PT2272接收到信號后,其地址碼經(jīng)過兩次比較核對后,VT腳才輸出高電平,與此同時相應(yīng)的數(shù)據(jù)腳也輸出高電平,如果發(fā)送端一直按住按鍵,編碼芯片也會連續(xù)發(fā)射。
我們采用的遙控器如下圖3所示:
圖3 編碼發(fā)射模塊實物圖與原理框圖
2.7 RS485串口總線
RS-485串行總線接口標準以差分平衡方式傳輸信號,具有很強的抗共模干擾的能力,允許一對雙絞線上一個發(fā)送器驅(qū)動多個負載設(shè)備。本設(shè)計采用MAX485芯片作為RS485總線的接口芯片。我們可以用RS232接口連接兩塊單片機,但是,當你需要在一個更長的距離上或者比RS232更快的速度下進行傳輸?shù)臅r候,RS485就是一個解決的方法。RS485與RS232相比有很多優(yōu)點:1. 成本低,驅(qū)動器和接收器價格便宜,并且只需要單一的一個+5V(或者更低)的電源來產(chǎn)生差動輸出需要的最小1.5V的壓差。與之相對應(yīng),RS-232的最小+5V與-5V輸出需要雙電源或者一個價格昂貴的接口芯片,這個接口芯片可以生成這些電源;2.網(wǎng)絡(luò)能力好,RS-485是一個多引出線接口,這個接口可以有多個驅(qū)動器和接受器,而不是限制為兩臺設(shè)備。利用高阻抗接受器,一個RS-485連接可以最多有256個接點;3.長距離連接,其距離最長可以達到一千多米;4.快速,比特率可以高達10Mbps。電纜長度和比特率是有關(guān)的,較低的比特率允許較長的電纜。
MAX485芯片的引腳如下圖所示:
引腳說明如下表2—2所示:
MAX485引腳說明
二.DTMF編解碼的電話遠程控制和監(jiān)控模塊:
1.模塊概要
該模塊控制器由解碼芯片MT8870接收遠端發(fā)送來的DTMF信號并對其進行解碼,解碼后的信號由MCU采集處理,同時當出現(xiàn)警情時,MCU發(fā)送信號到HT9200B,通過HT9200B來撥打用戶的電話號碼,以便用戶及時了解情況。由為了方便用戶使用,系統(tǒng)設(shè)計了語音提示電路。電話遠程控制系統(tǒng)一般工作在無人值守環(huán)境,所以應(yīng)具有自動離線、上線、復位功能。本系統(tǒng)采用AVR 32作為中央處理器。同時,電話遠程控制系統(tǒng)正常工作還需電源供電電路、驅(qū)動電路等輔助電路。系統(tǒng)組成框圖如圖3.2-—0所示。由圖可知,此模塊主要由振鈴檢測電路、模擬摘掛機電路、DTMF音頻解碼電路、語音提示電路、MCU(AVR 32)、控制電路、電源電路以及DTMF編碼電話電路組成。
圖3.2—0 DTMF控制模塊硬件結(jié)構(gòu)框圖
控制器并聯(lián)于電話機的兩端,不會影響電話機的正常使用。用戶通過異地電話撥通控制器所連接的固定電話的電話號碼,通過程控交換機向電話機發(fā)出振鈴信號。控制器檢測到若干次振鈴后,即若干次響鈴后無人接聽時電話自動摘機,進入密碼檢測階段,輸入正確密碼后選擇被控電器進行相應(yīng)控制。
2.單元功能模塊電路
2.1振鈴檢測電路
振鈴檢測電路如圖3.2-1所示,圖中二極管有組成全波整流電路,其作用有兩個:
(1)將不確定的線路供電正負變?yōu)楣潭ǖ恼撦敵觯?/p>
(2)將交流的振鈴信號變?yōu)槊}動直流以供檢測。
當沒有振鈴信號時,線路上的供電電壓為50V左右(部分交換機為70V左右),經(jīng)四個二極管構(gòu)成的全橋整流后,不足以使62V穩(wěn)壓管導通,振鈴信號輸出端電壓接近0V,當振鈴信號到來時,線路上的90V交流振鈴信號經(jīng)全橋整流變化后變?yōu)?0V的脈動直流電,其峰值足以擊穿穩(wěn)壓值為75V穩(wěn)壓管,經(jīng)電阻R1給光電耦合器U1(4N25)提供電壓,從光電耦合器輸出的波形是時通時斷的方波信號,可以直接輸出到單片機的中斷輸入口,單片機可以根據(jù)振鈴信號光電轉(zhuǎn)換后的高低電平檢測有無振鈴。R1取為5K左右。
電路中光電耦合器U1隔離了振鈴信號和單片機的直接連接,光電耦合器以及光電轉(zhuǎn)換原理傳輸信息,它不僅使信息發(fā)出端與信息接收端是絕緣的,從而對地電位差干擾有很強的抑制能力,而且有很強的抑制電磁干擾能力。保護單片機也提高了穩(wěn)定性。
2.2自動摘掛機電路
設(shè)計主要思路:
根據(jù)國家標準規(guī)定:不論任何電話機,摘機狀態(tài)的直流電阻應(yīng)小于等于300歐姆,有“R”鍵的電子電話機的摘機狀態(tài)直流電阻應(yīng)小于等于350歐姆。當用戶摘機時,電話機通過叉簧接上約250歐姆的負載,使整個電話線回路流過約30mA的電流。交換機檢測到該電流后便停止鈴流發(fā)送,并將線路電壓變?yōu)槭畮追闹绷鳎瓿山永m(xù)。
模擬摘掛機電路如圖3.2-2所示。平時電話掛機時,兩條電話線處于開路狀態(tài)。當撥打電話號碼時,來自電話線的高壓振鈴信號經(jīng)振鈴檢測電路,通過光電耦合器在其二次側(cè)形成方波脈沖信號送到單片機進行振鈴脈沖進行計數(shù),當振鈴次數(shù)達到設(shè)定次數(shù)時,由單片機內(nèi)部軟件程序控制,控制摘掛機口輸出一個低電平,然后電平送到三極管PNP1的基極,使三極管飽和。此時,+5V電源經(jīng)三極管,再通過繼電器線圈接地,繼電器線圈得電,使繼電器的常開觸點閉合,150歐姆電阻接入電路當中,電話接通。當用戶輸入密碼錯誤,或者是操作結(jié)束后,系統(tǒng)由軟件控制PNP1截止,繼電器線圈失電,常開觸點斷開,電話線又處于開路狀態(tài),從而實現(xiàn)模擬掛機。
2.3 DTMF解碼電路
DTMF雙音頻信號解碼電路是目前在按鍵電話(固定電話、移動電話)、程控交換機以及無線通信設(shè)備中廣泛應(yīng)用的集成電路。它包括DTMF發(fā)送器與DTMF接收器,前者主要應(yīng)用于按鍵電話作雙音頻信號發(fā)送器,發(fā)送一組雙音多頻信號,從而實現(xiàn)音頻撥號。電話鍵盤按鍵與雙音頻信號以及對應(yīng)編碼的對應(yīng)關(guān)系如下表所示:
表1 電話鍵盤與DTMF頻率以及對應(yīng)編碼關(guān)系
本系統(tǒng)的雙音多頻DTMF信號解碼電路由MT8870主要承擔。MT8870的連線如下圖3.2-3所示,VCC接+5V,2、3腳接收來自電話機的雙音多頻脈沖信號。該雙音多頻信號經(jīng)過MT8870解碼后在其數(shù)據(jù)輸出端(Q1~Q4)輸出相對應(yīng)的8421碼。MT8870的數(shù)據(jù)輸出端Q4~Q1連到單片機,單片機識別4位代碼。電話按鍵與相應(yīng)譯碼輸出。為了使單片機及時獲取有效數(shù)據(jù),MT8870的StD端接到單片機的中斷腳。當MT8870獲取有效雙音多頻信號后,通過中斷來提示輸入口接收有效二進制代碼。而無效的雙音頻信號(電話線路雜音、人們的語音信號等)是不會引起MT8870的StD變化的。
圖3.2-3 MT8870雙音頻解碼電路
2.4 DTMF編碼電路
HT9200B的DTMF信號編碼電路如下圖3.2—4所示:
需要在X1和X2兩腳接上3.579545MHZ的晶體振蕩器,HT9200B是一種高品質(zhì)的DTMF信號發(fā)生器,可產(chǎn)生高質(zhì)量、高穩(wěn)定、高精度的DTMF信號,低功耗、總諧波失真低,在單片機的控制下可從DTMF引腳發(fā)出16個雙音及8個單音。HT9200B提供了可選擇的串行及并行模式以供用戶與各種應(yīng)用設(shè)備連接。本設(shè)計中選用了并行模式。
圖3.2—4 DTMF信號編碼電路
在并行模式下,HT9200B提供四位數(shù)據(jù)輸入D0~D3以產(chǎn)生相應(yīng)的DTMF信號,/SP引腳接至高電平時選擇并行工作模式,之后輸入數(shù)據(jù),最后將CE端下拉為低電平以傳送DTMF信號。從CE下降至有DTMF信號輸出的間隔時間約為6mS,其并行數(shù)據(jù)代碼與輸出音頻的對應(yīng)關(guān)系如下表2所示:
表2 HT9200B并行數(shù)據(jù)與輸出音頻的對應(yīng)關(guān)系
2.5 語音提示電路
由于我們團隊手上有一塊凌陽語音單片機模塊,以及考慮到團隊經(jīng)費問題,我們團隊一致同意采用凌陽語音單片機SPCE061A作為語音提示模塊。由于SPCE061A具有良好的語音功能,所以可以把它作為EVK1100的語音模塊從機使用,通過AVR 32作為主機來控制SPCE061A單片機發(fā)出相應(yīng)的語音提示,為了做到良好隔離的作用,我們采用光電耦合器作為中間媒介,主機通過控制光電耦合器的通斷來向從機傳送相應(yīng)的數(shù)據(jù)。從機通過讀取光電耦合器形成的不同信號來輸出不同的語音提示。控制圖如下圖3.2-5所示:
圖3.2—5 語音提示電路控制模塊
2.6 家用電器控制電路
由于單片機輸出的電平為弱電電平,而家用電器需要的是220V交流強電,所以就只能通過弱電來控制強電。本家用電器控制電路如圖3.2—5所示:為了隔離弱點和強電并且可以控制電器的開關(guān),我們采用MOC3021光電耦合器來隔離強弱電平,同時采用BTA06雙向可控硅來作為一個開關(guān),此開關(guān)受MOC3021控制。當單片機引腳輸出低電平時,MOC3021的1腳和2腳之間的發(fā)光二極管發(fā)光,4腳和6腳就導通,有電壓加到BTA06的控制端,BTA06導通,家用電器的供電回路形成就可以開始工作。
當需要關(guān)閉電器時,單片機引腳輸出高電平,MOC3021的1腳和2腳之間的發(fā)光二極管不發(fā)光,4腳和6腳不導通,沒有電壓加到BTA06的控制端,BTA06截止,家用電器供電回路無法形成,不能工作。
圖3.2—6 家用電器控制電路
三.以太網(wǎng)web server的遠程家居控制和監(jiān)控模塊
1.模塊概要
本模塊采用EVK1100開發(fā)板+傳感器模塊,通過移植精簡的tcp/ip協(xié)議,開發(fā)出一控制家用電器和監(jiān)控家庭安全隱患的web 服務(wù)器控制端,將家中的實時信息和家用電器等裝置,通過無線方式連接到此控制器中,此控制器直接通過RJ45連接到以太網(wǎng),實現(xiàn)嵌入式的internet。通過avr32開發(fā)web server,這樣就可以通過遠程pc機或手機通過瀏覽器遠程通訊,控制家電設(shè)備和監(jiān)控家庭安全隱患。
以太網(wǎng)硬件結(jié)構(gòu)組成框圖如下圖3.3—1所示:
圖 3.3—1 以太網(wǎng)硬件結(jié)構(gòu)圖
2.單元功能模塊電路
2.1 PHY芯片DP83848I的自適應(yīng)以太網(wǎng)通信接口設(shè)計
DP83848I是工業(yè)溫度單端口的10/100 Mb / s以太網(wǎng)物理層收發(fā)器,25MHz時鐘輸出,智能降功耗模式。可為系統(tǒng)提供穩(wěn)定可靠的優(yōu)質(zhì)網(wǎng)絡(luò)解決方案,為工廠企業(yè)及其他惡劣的操作環(huán)境下,支持實時傳輸?shù)囊蕴W(wǎng),符合IEEE 802.3u的技術(shù)標準
以太網(wǎng)接口設(shè)計如下:
圖 3.3—2 DP83848I以太網(wǎng)接口設(shè)計
2.3 TCP/IP協(xié)議棧
由于該嵌入式 Web 服務(wù)器硬件結(jié)構(gòu)簡單,硬件資源,特別是系統(tǒng)程序存儲空間容量有限,所以我們在該系統(tǒng)中采用了精簡 TCP/IP 協(xié)議棧,系統(tǒng)在應(yīng)用層實現(xiàn)了HTTP 超文本傳輸協(xié)議,在傳輸層采用 TCP 協(xié)議,在網(wǎng)絡(luò)層實現(xiàn) IP 協(xié)議,同時還實現(xiàn)能報告數(shù)據(jù)傳送差錯等情況的 ICMP 協(xié)議。以太網(wǎng)數(shù)據(jù)的傳輸采用 MAC 地址來識別,而ARP協(xié)議提供 IP 地址和數(shù)據(jù)鏈路層使用的MAC地址之間的轉(zhuǎn)換功能,為了保證系統(tǒng)在以太網(wǎng)的通信,實現(xiàn)了ARP協(xié)議。
本設(shè)計中的精簡 TCP/IP 協(xié)議具有同 TCP/IP 協(xié)議一樣的四層結(jié)構(gòu),各層實現(xiàn)的功能如下:
①鏈路層。設(shè)計中通過以太網(wǎng)接入到 Internet,因此物理層和數(shù)據(jù)鏈路層要符合以太網(wǎng)的 IEEE802.3 標準。ENC28J60向上層軟件提供與硬件無關(guān)的接口,最終完成了數(shù)據(jù)在以太網(wǎng)中的接收和發(fā)送。因此,設(shè)計中物理層與數(shù)據(jù)鏈路層的設(shè)計是通過 ENC28J60硬件和驅(qū)動程序共同實現(xiàn)的。
②網(wǎng)絡(luò)層實現(xiàn)了 ARP協(xié)議、ICMP協(xié)議和 IP協(xié)議。ARP是地址解析協(xié)議,具體處理過程是當接收到 ARP數(shù)據(jù)包,處理器就查看 IP地址是請求還是響應(yīng)。如果是響應(yīng),則將響應(yīng)中的網(wǎng)卡地址存到 ARP 高速緩存表中;如果是請求,處理器將返回自己的網(wǎng)卡物理地址給對方。ICMP 是調(diào)試響應(yīng) PING 的請求,檢測網(wǎng)路是否通順。依照系統(tǒng)實際應(yīng)用的要求,IP協(xié)議只需實現(xiàn)對數(shù)據(jù)報傳送和接收,無須實現(xiàn)路由選擇算法和差錯控制,同時也不需支持IP數(shù)據(jù)報的分片和重組。
③傳輸層實現(xiàn) TCP 協(xié)議。TCP 協(xié)議是面向連接的、端對端的可靠通信協(xié)議。設(shè)計中采取了 TCP 連接的建立與關(guān)閉機制、超時重傳機制、數(shù)據(jù)包確認機制、流量控制機制來保證
它的可靠性。在超時重傳機制中,如果超時重傳定時器溢出后還沒有收到確認,則重傳該數(shù)據(jù)包,并復位重傳定時器。為簡單起見,程序里每次只發(fā)送一個 TCP 數(shù)據(jù)包,然后等待它的確認,只有收到確認后才會繼續(xù)發(fā)送下面的 TCP 數(shù)據(jù)包。在本設(shè)計,程序重傳的間隔時間是固定的,沒有采用 TCP 協(xié)議中的標準算法,當達到一定的次數(shù)后,發(fā)送方還沒有收到確認,則會放棄該包的發(fā)送并關(guān)閉 TCP 連接。TCP 的流量控制是為了協(xié)調(diào)通信雙方的收發(fā)速率不均衡而設(shè)計的。設(shè)計中考慮到系統(tǒng)在使用 TCP協(xié)議時,只設(shè)置了一個中等 IP包大小接收緩存,因此接收窗口恒定設(shè)為 1024。這樣遠端主機就會以較慢的傳輸速率與本端的 Web服務(wù)器進行通信,不會導致死機。
④應(yīng)用層實現(xiàn)了 HTTP 協(xié)議。HTTP 是在 Web 服務(wù)器和瀏覽器之間通信的協(xié)議。為了簡化,設(shè)計中采用固定的 HTTP報文頭封裝 HTTP應(yīng)答數(shù)據(jù)報文。在響應(yīng) HTTP 請求時,由于以太網(wǎng)數(shù)據(jù)包的數(shù)據(jù)部分不能超過 1500 字節(jié),因此當發(fā)送數(shù)據(jù)超過 1500 字節(jié),需要分組發(fā)送。
四.操作系統(tǒng)的選擇——FreeRTOS
FreeRTOS是一款可移植的、開放源代碼的微型實時內(nèi)核 ,它免費下載、免版稅,并可用于商業(yè)應(yīng)用。為多種不同的處理器架構(gòu)和開發(fā)工具提供移植包。 每個官方移植包都包含一個配置好的應(yīng)用范例,用來展示內(nèi)核特性,加快學習進程,并允許“開箱即用(out of the box)”式的開發(fā)。活躍的用戶社區(qū)能夠提供免費技術(shù)支持。而商業(yè)支持則隨全面的開發(fā)服務(wù)一起提供。
1. freeRTOS的特性
FreeRTOS是一種專為小型嵌入式系統(tǒng)設(shè)計的,可擴展的實時內(nèi)核。亮點在于:
(1)免費RTOS內(nèi)核- 占先式、協(xié)作式和混合式配置選項。
(2)SafeRTOS衍生產(chǎn)品,高信任度的代碼完整性。
(3)設(shè)計遵循 小型,簡單,易用。
(4)易于移植的代碼結(jié)構(gòu),絕大部分使用C語言編寫。
(5)同時支持 任務(wù)(tasks)和協(xié)程(co-routines)。
(6)強大的 運行跟蹤(execution trace) 功能。
(7)堆棧溢出檢測 選項。
(8)軟件不限制可創(chuàng)建任務(wù)數(shù)量。
(9)軟件不限制可用優(yōu)先級數(shù)量。
(10)優(yōu)先級分配無限制 – 多個任務(wù)可指定為同一優(yōu)先級。
(11)隊列,二進制信號量,計數(shù)信號量,遞歸信號量和互斥量,用于任務(wù)之間、或任務(wù)和中斷之間的通信和同步。
(12)Mutexes with priority inheritance.
(13)自由的開發(fā)工具 (Cortex-M3, ARM7, MSP430, H8/S, AMD, AVR, x86 和8051 移植包)。
(14)免費的嵌入式軟件源碼。
(15)免版稅。
(16)Cross development from a standard Windows host.
(17)針對所選目標板,提供配置好的演示應(yīng)用,可以“開箱即用”和加速學習。
(18)Compile time configuration allows a ROM footprint print 低至 4.3KB 在 ARM7 (Thumb mode)上使用GCC (third party figures, requires specific GCC command line options)。
2. 為什么選擇freeRTOS
選擇freeRTOS的理由:
(1)針對眾多不同的體系結(jié)構(gòu)和開發(fā)工具,提供一種解決方案。
(2)眾所周知的可靠性,信心源自其姊妹項目SafeRTOS.
(3)仍在持續(xù)開發(fā)中。
(4)具有最低限度的ROM, RAM和處理器開銷。
(5)它非常簡單-內(nèi)核僅由 3個C語言文件組成。大部分文件包含在.zip文件中,只需下載眾多示范應(yīng)用即可。
(6)商業(yè)應(yīng)用,真正免費 (詳情參閱許可協(xié)議)。
(7)提供移植包,平臺開發(fā),或必要的應(yīng)用開發(fā)服務(wù)。
(8)發(fā)展良好,擁有龐大且不斷增長的用戶群。
(9)每個移植包均包含一個設(shè)置好的范例。無須懂得如何設(shè)置項目 – 只需下載,編譯!
(10)擁有一個優(yōu)秀、活躍的免費支持論壇。
(11)商業(yè)支持有保證。
(12)提供豐富的文檔。
(13)擴展性強,簡潔,易于使用。
3.2 硬件平臺選用及資源配置
1. 硬件平臺: EVK1100開發(fā)板
2. 資源配置如下:
EVK1100開發(fā)板 :AT32UC3A
1)傳感器(光照,溫度,電位器)
2)4*20藍色lcd
3)SPI, SD和MMC讀卡器
外圍器件:
1)傳感器模塊: 濕度傳感器DHT11;人體紅外傳感器;MQ-9一氧化碳傳感器 ;MQ-2煙霧傳感器 ;無線遙控模塊;
2)DTMF編解碼模塊:MT8870解碼芯片;HT9200B編碼芯片;5V繼電器;光電耦合器以及一系列電阻電容等等;
3.3系統(tǒng)軟件架構(gòu)
系統(tǒng)軟件架構(gòu)包括兩部分:
主單片機(AVR32)的軟件架構(gòu);
本地控制模塊從單片機(ATMEGLA 16L)的軟件架構(gòu)。
3.4 系統(tǒng)軟件流程(除圖片外需有文字介紹)
1.傳感器模塊流程圖如下圖所示:
1.1溫濕度傳感器,煙霧傳感器,一氧化碳傳感器采集數(shù)據(jù)流程圖如下圖所示:
本設(shè)計中傳感器部分作為一個子系統(tǒng),由ATMELA 16L來作為MCU,獨立子系統(tǒng)的好處就在于采集數(shù)據(jù)快,靈敏度高,能夠?qū)崟r監(jiān)控家庭隱患情況。如流程所示,溫濕度傳感器,煙霧傳感器,一氧化碳傳感器初始化后,就進行采集數(shù)據(jù),MCU就讀取各個數(shù)據(jù)進行處理,并在液晶上顯示相關(guān)參數(shù)。然后,MCU判斷溫度(濕度,煙霧,一氧化碳)值是否異常,出現(xiàn)異常則報警,報警包括兩部分,稍后介紹,沒異常則回到采集數(shù)據(jù),重復執(zhí)行。
人體紅外感應(yīng)模塊采集數(shù)據(jù)程序流程圖如下圖所示:
本設(shè)計中紅外線的記監(jiān)測采用外部中斷的方式,此方式響應(yīng)速度快。人體紅外感應(yīng)模塊的信號輸出腳接到MCU的外部中斷腳。當紅外模塊檢測到有人時,其信號輸出腳由低電平變?yōu)橛行Ц唠娖剑|發(fā)中斷。在中斷中調(diào)用報警子程序完成報警。沒有人就繼續(xù)循環(huán)檢測。報警子程序稍后介紹。
1.3 無線遙控模塊子程序流程圖
本地控制模塊采用無線遙控來控制,其流程圖如下圖所示:
當無線發(fā)射模塊有按鍵按下時,無線接收模塊輸出的信號觸發(fā)中斷,單片機讀取無線接收模塊輸出引腳的信號,通知讀取到的信號來判斷擁護按下什么按鍵,進而執(zhí)行按鍵對應(yīng)的控制命令。
1.4 報警子程序流程圖
本設(shè)計報警包括家庭報警以及發(fā)送信號讓主機自動電話報警,程序流程圖如下圖所示:
當出現(xiàn)警情時,ATMELA 16L從機首先向主機(EVK1100)發(fā)送信號,通知主機要進行自動電話報警,告知用戶。當收到主機發(fā)回來的確認信號時,從機啟動蜂鳴報警,如果危險仍未解除,就持續(xù)蜂鳴報警。直到危險解除,程序結(jié)束。
2.DTMF程序流程圖
2.1遠程控制程序流程圖如下圖所示:
當有電話打入時,振鈴檢測電路檢測到有振鈴信號,通過單片機來對振鈴信號進行計數(shù)。系統(tǒng)判斷振鈴的次數(shù),達到預(yù)設(shè)的100次仍沒有摘機,單片機就控制模擬摘掛機電路進行自動摘機。同時單片機控制語音提示模塊播放語音提示用戶輸入密碼,密碼正確就可以進行相應(yīng)的電器控制,密碼不正確就直接掛機。當操作完成后,單片機控制摘掛機電路實行電話掛機,通話結(jié)束。若在這100次振鈴過程中,主人接通了電話,則控制器不起作用。
DTMF遠程控制程序運行流程圖
2.2 遠程報警程序流程圖如下圖所示:
當有警情發(fā)生時,傳感器給單片機外部中斷信號,系統(tǒng)進入報警中斷子程序,首先電話模擬摘機,系統(tǒng)與電話線接通。調(diào)用撥號子程序發(fā)送電話號碼,同時監(jiān)聽電話線上信號,判斷對方是否摘機。如果第一個電話沒有撥通就發(fā)送第二個電話號碼,循環(huán)撥號,直到撥通號碼。然后語音播放出現(xiàn)何種險情,程序結(jié)束。
3.以太網(wǎng)web server的遠程家居控制和監(jiān)控系統(tǒng)
3.1 以太網(wǎng)web server的遠程家居控制和監(jiān)控系統(tǒng)程序流程圖
首先,客戶可以通過手機或PC機與服務(wù)器建立連接,再通過偵聽端口80,判斷是否有客戶請求到達,若有則將調(diào)用應(yīng)用程序http進行相應(yīng)處理,否則,繼續(xù)偵聽。Http是用于處理HTTP請求的應(yīng)用程序,在應(yīng)用軟件上實現(xiàn)簡單WEB服務(wù)器功能,其主要由三個模塊構(gòu)成:一是用戶登陸模塊;二是家電監(jiān)控模塊;三是家庭安全隱患實時監(jiān)控模塊。用戶登陸模塊需要解決用戶的合法性檢查,即接收用戶輸入的用戶名和密碼,進行校驗,合法則進入web server總控制頁面,非法則發(fā)出警告頁面。家電監(jiān)控模塊針對各家電的硬件情況,收集信息家電的狀態(tài)碼,并通過網(wǎng)頁形式顯示;家庭安全隱患監(jiān)控模塊收集各個傳感器模塊的實時數(shù)據(jù),而且若超過警戒值,會有相應(yīng)的警戒網(wǎng)頁形式提醒
3.2 TCP/IP協(xié)議棧管理程序
由于TCP/IP協(xié)議分布在鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層上是分層實現(xiàn)的,每一層只負責處理通信過程中的一部分問題,其它不能實現(xiàn)其功能,我們進行 TCP/IP 協(xié)議棧程序設(shè)計時,根據(jù)協(xié)議分層的思路采用模塊化的程序設(shè)計方法,為了在接收數(shù)據(jù)包后能根據(jù)數(shù)據(jù)包的類型 (ICMP TCP UDP 等)作出相應(yīng)的處理,我們設(shè)計了協(xié)議棧管理程序,當接收到正確的以太網(wǎng)幀后,根據(jù)以太網(wǎng)幀數(shù)據(jù)類型將接收的數(shù)據(jù)送至相應(yīng)的模塊程序進一步處理。
3.4 web服務(wù)和CGI處理框圖
web 服務(wù)
監(jiān)聽端口80來自遠程測控端的請求,建立TCP連接,查詢與TCP連接相關(guān)聯(lián)的本地套接字,根據(jù)遠程測控端的 HTTP請求作相應(yīng)的處理(讀取 ram中的網(wǎng)頁數(shù)據(jù)、調(diào)用 CGI 處理函數(shù)),并將生成的網(wǎng)頁數(shù)據(jù)通過本地套接字發(fā)送至遠程測控端,通訊完后關(guān)閉套接字,斷開本次TCP連接。
CGI處理
本系統(tǒng)采用了 CGI(公用網(wǎng)關(guān)接口) 來實現(xiàn)動態(tài)Web技術(shù),Web服務(wù)器通過調(diào)用 CGI 程序?qū)崿F(xiàn)和瀏覽器的交互,也就是CGI 程序接受瀏覽器發(fā)送給Web服務(wù)器的信息,進行相應(yīng)處理,并將響應(yīng)結(jié)果回送給Web 服務(wù)器及瀏覽器。
3.5 系統(tǒng)預(yù)計實現(xiàn)結(jié)果
當用戶撥打該電話號碼時,語音模塊提示用戶輸入密碼(密碼是存儲在EEPROM中)。只有當用戶所輸入的密碼和存儲的密碼相同時,用戶才能進行接下來的電器(風扇、電燈)控制,否則固定電話直接掛掉用戶的電話。對于電器的控制,系統(tǒng)是通過語音來提示用戶操作,例如:“打開風扇請按1,關(guān)閉風扇請按2”,用戶就可以按照語音提示來按下按鍵1來打開風扇,按下按鍵2來關(guān)閉風扇。操作完后語音提示是否用戶操作結(jié)束,用戶根據(jù)語音來繼續(xù)進行相應(yīng)的操作。
當用戶通過手機或PC機瀏覽器,進入登錄界面,網(wǎng)頁首先顯示提醒用戶輸入密碼,當用戶輸入密碼正確時,進入控制和監(jiān)控界面,接下來用戶就可以控制家用電器和查看傳感器的有關(guān)數(shù)據(jù)。
當有警情發(fā)生時,傳感器給單片機外部中斷信號,系統(tǒng)進入報警中斷子程序,首先電話模擬摘機,系統(tǒng)與電話線接通。調(diào)用撥號子程序發(fā)送電話號碼,同時監(jiān)聽電話線上信號,判斷對方是否摘機。如果第一個電話沒有撥通就發(fā)送第二個電話號碼,循環(huán)撥號,直到撥通號碼或者定時溢出,該子程序還調(diào)用語音子程序現(xiàn)場報警,對進入的人產(chǎn)生威嚇作用。從而實現(xiàn)現(xiàn)場報警和遠程報警兩種功能。
評論