畢設題目:
——————————————————————————————————————————————————————————————————————————————
基於Zigbee的智能家居監測系統的設計與實現
智能家居是以住宅為平台,利用綜合布線技術、網絡通信技術、安全防范技術、音視頻技術將家居生活有關的設施集成,構建高效的住宅設施與家庭日程事務的管理系統;
其目的是提升家居的安全性、便利性、舒適性、藝術性,並實現環保節能的居住環境。根據智能家居的特點,設計一個基於Zigbee的智能家居監測系統。
主要設計任務如下:
1. 了解Zigbee基本模塊;
2. 了解ZStack協議;
3. 熟悉Zigbee模塊的功能並在ZStack協議下實現監測任務;
4. 完成信號采集並把信號發送至手機端。
要求:
1. 了解Zigbee主要模塊的功能;
2. 在Zigbee模塊上實現ZStack協議;
3. 用戶界面具有個性化特點;
4. 功能操作簡單方便,具有一定的實用性。
應收集的資料及參考文獻:
1. Zigbee 模塊的相關參數;
2. ZStack協議的相關內容。
——————————————————————————————————————————————————————————————————————————————
ZigBee 就是 IEEE 802. 15. 4 的代名詞。
Z-Stack 是ZigBee 的具體實現。
開題
開題時要知道自己的系統怎么實現,如何完成,要有具體的解決方案。
而現在我對題目的理解就是:在zigbee模塊上實現Z-Stack協議,並在手機上實現一個有點兒用的功能 :)
根據題目的要求,在ZigBee模塊上實現Z-Stack協議,指的就是至少實現這樣的一個(點對點)網絡:
一台ZigBee模塊作為該網絡的協調器,一台ZigBee模塊作為該網絡的終端設備。
協調器與終端設備之間實現通信。
實現監測任務
監測並非監控,不需要有如用ZigBee模塊來控制其他家電的操作。
只需要對家居環境的一些參數進行收集即可。
需要終端設備上配有例如溫度,濕度,氣體成分的傳感器。
家居指的是家庭裝修、家具配置、電器擺放等一系列和居室有關的甚至包括地理位置(家居風水)都屬於家居范疇。
完成信號采集
終端設備把傳感器檢測到的數據傳給協調器(進行匯總)。
信號發送至手機端
這一點最頭疼,
現在市面上只有極少數的手機支持ZigBee協議,大部分手機只有WiFi,藍牙。
目前我找到的解決方案有:
A.ZigBee與WiFi的雙模無線網關設計方案
http://www.elecfans.com/tongxin/119/20140930355368.html
B.基於CC2530的ZigBee轉以太網網關的設計與實現
http://blog.csdn.net/wiznet2012/article/details/38379703
C.串口USB連PC,PC聯網與手機進行通信。也就是ZigBee模塊將信息傳給PC機,PC再把信息傳給移動端。
基於Zigbee的智能家居監測系統的設計與實現
我的具體解決方案如下:
場景
在ZigBee模塊上安裝溫度,濕度傳感器,兩台及以上ZigBee模塊自組網,
選定作為協調器節點的模塊用USB線與家用電腦連接,電腦連入互聯網。手機連入互聯網。
原理
兩台及以上ZigBee模塊組網互通,傳送實時溫濕度信息匯總到協調器節點,
協調器節點與電腦串口通信傳遞信息,電腦與手機間通過互聯網實現通信傳遞信息。
硬件
配有傳感器的ZigBee模塊兩台及以上
USB線一條
聯網的電腦一台
聯網的手機一部
軟件
一套ZigBee程序
一個Windows軟件
一個Android應用
體驗
用戶點開手機打開APP,即可獲取室內溫濕度信息,還可以觀察到一天中溫濕度的變化。
當然這些信息電腦上也能看到。
ZigBee程序在終端設備節點實現與協調器節點的綁定,並讀取傳感器的數據發送給協調器節點。
ZigBee程序在協調器節點實現網絡組建,並將收集到的數據通過串口發送到電腦。
Windows程序用Java編寫實現兩個主要功能:讀取節點從串口發送的數據,建立socket服務將數據發送給連接該服務的應用程序。
Android程序同樣使用Java語言,即建立與電腦的連接,接收實時的數據信息。
*這種需要連電腦的設計老師並未同意,理由是不會有人為了實現遠程監控,離開家后還把電腦開着。
現在只能是買硬件來實現模塊聯網了。開題當天又加了一堆功能。。。
其具體的實現為:一台作為終端設備的ZigBee模塊配有溫濕度傳感器,讀取溫濕度信息並發送給協調器節點;
一台ZigBee模塊作為該網絡的協調器節點,搜集從其他節點發送過來的家居環境中的溫濕度信息;
協調器節點作為一台TCP主機接入互聯網,將搜集來的數據通過W5500模塊發送給手機;
手機端通過APP應用程序接收實時的溫濕度數據信息。
手機端還可以設置希望的溫濕度范圍,該范圍將保存在協調器節點上,當接收到其他節點傳來的數據后進行判斷,
如果超出設定的范圍,將發出相應的指令,完成相應的調溫調濕動作。
預期將會在三個平台上完成三個相關程序:
1.運行在ZigBee終端設備節點上的ZigBee程序:該程序在終端設備節點實現讀取溫濕度傳感器的數據信息,並發送數據信息給協調器節點的功能;
2.運行在ZigBee協調器節點上的ZigBee程序:該ZigBee程序在協調器節點的功能為實現網絡組建,並將收集到的數據通過W5500模塊發送到手機端。同時對數據進行判斷,做出相應的動作。
3.運行在手機平台的Android應用程序:實現與協調器節點建立連接並接收實時的數據信息的功能。並對接收到的數據進行處理。
好復雜啊。。。感覺要跪
//6月17日更新,前天答的辯。
最終還是放棄了W5500模塊,改回了用電腦作為系統核心的設計方案。
主要原因還是不會用啊,
ZigBee模塊與W5500模塊之間主從設備的編程還是比較迷的。
我的水平還不能僅憑網上的一篇帖子就把它弄明白:(
但最初也不應該選W5500模塊來用網線進行連接,
選WiFi模塊應該會更好些,或者說更好演示些,
但肯定是沒有用電腦來的更容易。
所以我最后到底做了什么呢?
利用ZigBee模塊,電腦,手機 ,完成了一套對溫濕度進行實時監測和調控的智能家居環境溫濕度監測系統。
這系統可以干些什么呢?
1.可以在電腦和手機上顯示實時的溫濕度信息;
2.可以在電腦上可以查看溫濕度的歷 史記錄;
3.可以設置溫濕度范圍,如果超出范圍系統可以自主調節溫濕度。
。。。相比別人畢設做個操作系統來說,是慘了點。。。
但以后還會有同學接着這個“基於”繼續進行他們的設計,姑且留下些經驗好了。
整體的設計就像這樣:
在終端設備節點上配有一個溫濕度傳感器, 在協調器節點上連接了一個風扇, 連個節點間用天線傳遞信號。
協調器節點與電腦用USB數據線相連。 電腦與手機用的是無線網 ,現在電腦連手機的熱點。
顯然這個風扇就是被系統控制的調溫設備;
電腦連手機熱點為了演示和掩飾自己網絡通信技術水平很低的無奈之舉,
反正這台電 腦的信息是傳到了這台手機上。。。IP是硬寫在程序里的。呵呵
(想象的)可以改進的地方:
電腦與手機的信息交流如果是上訴這樣設計的話,實用性真是超低。
低一點要求的話,電腦和手機都連WiFi,在同一個局域網里,手機和電腦的連接不想輸IP的話,可以用掃二維碼的方式實現啊。
手機想要獲得信息,電腦彈出個二維碼,掃碼連接。
高一點要求的話,電腦真的是有必要的嗎?既然是用WiFi,直接在ZigBee模塊上配個 WiFi模塊不是更好,
ZigBee模塊也就是一個單片機,進行一些簡單的判斷操作完全沒有問題。
二維碼干脆直接印在ZigBee模塊,WiFi模塊,調溫設備組合在一起的這個物件上好了,
或者只需用電腦操作一次,進行一些必要的配置操作,然后以后的操作就不再需要電腦,
而是ZigBee模塊與手機之間直接進行信息交流。如果想在電腦上顯示也可以,但不是必須的。
如果是要包裝成產品,肯定是要這樣的。但如果只是要演示,那就什么樣都無所謂了。
這次畢設唯一可以稱之為亮點的地方就是這個自主調節功能:“濕度過高,風扇開啟 ”。
原理就是這樣:
電腦在收到溫濕度信息后,會進行范圍判斷,如果超出范圍,電腦會向協調器節點發送命令,協調器節點收到命令后,
做出相應的操作,比如發送一個下降沿信號,開啟風扇。好吧這稱為亮點也有點過了。。。
(想象的)可以改進的地方:
協調器節點:“我接收到其他節點發送過來的信息,我再把這個信息通過串口發給你電腦,
你幫我判斷一下現在的溫濕度是否超出范圍。如果超出范圍你給我來個信兒,
我好做出相應的操作。。。等等好像哪里不對勁啊,為什么需要你幫我判斷?”
信息就是要匯總到協調器節點,那在協調器節點上判斷一下不就行了。。。
按照上面設計,電腦根本不存在的好吧,是啊,用手機直接把限定范圍發送到協調器節點上儲存,
協調器節點接收信息的同時,就做下判斷。超出范圍就直接發信號開啟風扇。
這才是正確的思路啊
什么你問我沒有電腦信息怎么儲存,模塊上最大200多K不夠吧?
哦?你一條信息的長度,記錄的頻率,代碼對存儲數據空間的優化等,都是很能影響儲存空間的大小的。
像是這一秒,下一秒,和下N秒的數據都是一樣的,根本不用都記下啊。看你優化咯。
再不夠不是還可以連個外部存儲設備嗎,外放的音響上不是都可以插閃存卡的嗎。
要看歷史數據,直接從模塊把信息傳給手機,把數據在手機上顯示出來,應該也是可以實現的。
關於風扇
ZigBee模塊和風扇連在一起,你就可以把它想象成一個智能風扇了。
最初想的是,不就是個風扇么,引腳置一不就上電了,風扇不就轉了。
但你可以想象一下。3.3v帶起來的風扇真的能起到調控的作用么。。。
可能就真的只能作為演示系統了。
正好手頭有個稍微有點兒科技感的風扇,拆開看是有電路板的,
電路板上還有芯片,這個風扇是按鈕控制的,按一下開啟一檔風,
再按一下加一檔,再按一下加到三檔,再按就關閉。
我就那根電線挨個引腳試,反正輸入只有5v,試觸幾下也不會有太大問題。
然后就找到了一個只要置零就會使風扇工作狀態改變的焊點,
在這個點上焊上導線,導線另一端接在ZigBee模塊上的一個引腳。
編程使這個引腳置零,就可以控制這個風扇了。
如果控制其他設備,原理應該也是一樣的。
上面更新的都是扯淡,
真正答辯的時候還是發現了問題,老師給予了建議:
主要的問題有:
1.發送信號到手機端到底是觸發還是輪詢。
發送溫濕度信息給手機是輪詢,發送設備控制信號是觸發。
2.模塊檢測的頻率是用戶不能自己設置的
想要改的話,就加個傳參數的延時函數就行了。
這是屬於設計的問題,看想沒想到了。
3.數據處理
對數據的處理應該是這個系統的核心
沒用數據庫就這么用文件一條一條存,優化還是優化