隨著微功耗處理器以及通訊芯片的發(fā)展,以往較為耗能的有線通訊方式越來越阻礙了通訊網(wǎng)絡的發(fā)展,于是一大批的無線通訊方案應運而生,例如NBIOT,藍牙4.0,zigbee等等。同時微功耗無線處理器的流行使得傳統(tǒng)家電帶上了智能的色彩,智能家居必將是未來家庭的必備。某些高科技企業(yè)也在揶揄這塊市場,紛紛推出了自家的智能家居解決方案,比較知名的有米家方案以及阿里智能的解決方案。但是回到現(xiàn)實的使用上來說,每個家庭的條件環(huán)境其實不一樣,同樣的產(chǎn)品未必在每個家庭上都可以使用方便,所以個性化的定制產(chǎn)品才可以更好的方便我們的生活。
于是在暑假期間,萌生了DIY一套智能家居方案的想法,具有各種智能開關(guān)和傳感器等節(jié)點,并且對接物聯(lián)平臺實現(xiàn)聯(lián)網(wǎng)控制以及數(shù)據(jù)的上傳。由于家庭中將會使用到的智能設(shè)備種類繁多,所以我將采用模塊化的設(shè)計思路,即采用核心板加外圍功能部分的思路,像搭積木一樣的構(gòu)建各個智能設(shè)備。大家有同樣想制作的想法可以參考。截至發(fā)帖前,我完成了智能網(wǎng)關(guān),智能墻壁開關(guān),無線遙控開關(guān)以及無線氣象站的設(shè)計制作,之后有新的設(shè)備加入的話,我會及時的更新。
設(shè)想篇
下面是一張我構(gòu)思的網(wǎng)絡拓撲圖:
無線通訊方案的選擇:zigbee
好早之前就接觸過zigbee組網(wǎng),對于這種低成本低功耗的網(wǎng)絡還是抱有很大信心的。這里講解選擇這個網(wǎng)絡的幾大理由:
mesh結(jié)構(gòu)的網(wǎng)絡很適合智能家居的控制結(jié)構(gòu),在入網(wǎng)的任何一個節(jié)點都可以訪問到所有節(jié)點的數(shù)據(jù),這點很適合網(wǎng)關(guān)控制各個設(shè)備。
低功耗使得終端設(shè)備甚至可以采用電池供電,使得所有的模組都盡量可能的無線化。
多跳傳輸,無線方案中最大的問題就是數(shù)據(jù)發(fā)送的不穩(wěn)定以及障礙物對信號的遮擋導致數(shù)據(jù)無法正確傳輸,而ZigBee的多跳恰好解決了這個問題,節(jié)點會自動選擇優(yōu)質(zhì)的傳輸路線多跳傳輸,保證信號質(zhì)量。
zigbee網(wǎng)絡確實是好,但是對于我這種比較懶惰的人并不想去學習那復雜的傳輸理論以及zigbee通訊芯片的編程,于是我選擇上網(wǎng)購買ZigBee模塊,最后選擇了一種小型的串口轉(zhuǎn)zigbee模塊,比較方便單片機通訊。
核心板的制作:
說到模塊化,那么就需要核心的控制板。本質(zhì)來說就是將單片機以及購買的zigbee模塊集成到一張電路板上,并且預留各種接口,方便后期移植到各種設(shè)備上,這樣一張電路板就可以適用各種智能家居設(shè)備了。
在保證功能足夠的同時,體積也是我需要考慮的問題,如果核心板做的過大,會導致無法安裝到某些空間狹小的智能設(shè)備中,所以小體積是我所著重考慮的。
基于多方面考慮之后,stc8F2k08s2進入了我的視線,小巧的sop16封裝以及簡單的外圍電路,足夠的IO口(14個)。這款芯片成為了核心板的控制單片機。于是一番繪制原理圖以及PCB之后,成品大概明朗了:
焊接好的成品如下:
這將會成為以后所有我的智能家居方案的核心控制板。
完成了核心板的制作,網(wǎng)關(guān)成為了下一個比較關(guān)注的對象,因為家中的所有智能設(shè)備的控制以及通訊都會由他來完成,包括鏈接到互聯(lián)網(wǎng)上傳數(shù)據(jù),所以說對于網(wǎng)關(guān)的硬件選取也是重中之重。上聯(lián)互聯(lián)網(wǎng),下接zigbee小型通訊網(wǎng),網(wǎng)關(guān)擔任了一個家庭控制中心的角色,對于它的選擇我認為esp8266是個不錯的方案,可以支持arduino ide編程,這對于不太了解網(wǎng)絡通訊協(xié)議的我來說是個好消息,因為在arduino的編程中,我可以借助強大的庫函數(shù)來完成我想要的功能。
esp8266是一個擁有了近80Mhz的主頻的32位處理器,內(nèi)置了wifi模組省去了網(wǎng)線,并且擁有豐富的外設(shè)以及較高的性能,可以勝任智能網(wǎng)關(guān)的工作。當然,近期樂鑫發(fā)布的ESP32系列芯片也會是個好的選擇,更高的主頻以及wifi藍牙雙模的設(shè)計讓其擁有更加方便的接入方式,由于手頭上正好有一塊esp8266,所以沒有采用性能更好的ESP32。
這樣我需要對ESP8266進行片上編程,并調(diào)用它的串口和zigbee模塊通信,當zigbee的節(jié)點收到其他設(shè)備發(fā)來的數(shù)據(jù)的時候,esp8266可以對其處理或者通過WiFi上傳到云平臺,整體的設(shè)計思路就是這樣。
為了方便網(wǎng)關(guān)節(jié)點的狀態(tài)顯示以及相關(guān)信息讀取,為以后的調(diào)試提供便利,我給網(wǎng)關(guān)添加了一塊4.3寸的串口觸摸屏,這樣方便信息的讀取以及調(diào)試工作。
完成了zigbee節(jié)點核心板的設(shè)計以及網(wǎng)關(guān)的硬件選擇,整個智能家居系統(tǒng)的主要部分就構(gòu)建完成了,我先不講解程序的編寫,因為我將會在調(diào)試好每一個智能設(shè)備之后,再對網(wǎng)關(guān)進行編寫對應設(shè)備的接口程序。即完成一個智能設(shè)備的開發(fā)之后再對接網(wǎng)關(guān),使其加入到家中的zigbee網(wǎng)絡,實現(xiàn)聯(lián)動控制或者聯(lián)網(wǎng)控制,因為畢竟我使用的ZigBee模組只是起一個通訊的作用,具體的功能實現(xiàn)還是靠核心板上的單片機來完成。這種開發(fā)方法叫做迭代開發(fā),對于較為龐大的項目是一種較好的解決方案。
制作篇
下面是介紹智能墻壁開關(guān)的設(shè)計,核心就是使得家里墻壁開關(guān)智能化,可以聯(lián)網(wǎng)控制,達到場景聯(lián)動,智能控制等目的。
我嘗試就家中的傳統(tǒng)開關(guān)進行改造,但是發(fā)現(xiàn)拆開之后內(nèi)部空間實在不夠,沒法完成改裝
于是嘗試網(wǎng)購新的開關(guān),尋找空間大些的墻壁開關(guān),后來我找到了專門生產(chǎn)觸摸智能開關(guān)外殼的廠家,購買了幾個觸摸墻壁開關(guān)的外殼,內(nèi)部空間較大,適合改造
由于是觸摸面板,所以我準備使用觸摸模塊作為輸入。關(guān)于執(zhí)行機構(gòu),也就是一充當原來機械開關(guān)的器件,我準備使用繼電器來代替。繼電器可以讓我使用單片機輸出的信號去控制220V交流電壓的通斷,并且提供良好的隔離以及絕緣性能。
1.代碼的編寫:
選擇了繼電器以及觸摸模塊之后,我在面包板上搭建了電路,接下來就是編寫代碼了
對于 智能開關(guān)節(jié)點,我將zigbee模塊配置成了路由器節(jié)點,這樣做的好處是,墻壁開關(guān)同時扮演了一個路由器的角色,看可以協(xié)助一些遠距離的終端節(jié)點完成多跳數(shù)據(jù)傳輸。。例如我想在臥室使用一個無線開關(guān)(下一章將會開發(fā)的)去控制家門口的燈光,直接將數(shù)據(jù)發(fā)送到家門口的智能開關(guān)上或許信號強度不夠造成通信失敗,這時我在客廳增加一個路由器節(jié)點之后,無線開關(guān)的信號便可以傳輸?shù)郊议T口的智能開關(guān)上。
同樣的,為了響應國家節(jié)能減排的號召,我給單片機配置成了空閑模式以節(jié)省功耗,但是空閑模式下單片機沒法正確及時的檢測到觸摸按鍵的按下,所以我使用單片機的外部中斷來檢測觸摸按鍵,當觸摸按鍵按下時,單片機檢測到電平變化,引發(fā)中斷,喚醒單片機,使得單片機執(zhí)行相關(guān)指令。
當zigbee模塊收到來自智能網(wǎng)關(guān)的數(shù)據(jù)時候(例如閉合開關(guān)或者斷開開關(guān)),其輸出數(shù)據(jù)引發(fā)的串口中斷也會喚醒單片機,這時候單片機會執(zhí)行收到的指令,隨后再次進入空閑模式。
此外,為了更好的檢測每個開關(guān)的狀態(tài),每次開關(guān)有動作之后,會將當前的狀態(tài)上報給智能網(wǎng)關(guān),以便網(wǎng)關(guān)檢測家中所有的開關(guān)狀況。
2.開關(guān)的測試:
鏈接zigbee的協(xié)調(diào)器節(jié)點到電腦上,打開智能開關(guān)的電源,可以看到每當我觸摸開關(guān),對應的繼電器都會動作,并且協(xié)調(diào)器節(jié)點串口都會輸出一些數(shù)據(jù):
下面是一幀數(shù)據(jù)的解讀
同時,在串口監(jiān)視器輸入關(guān)閉兩路開關(guān)的指令,按回車發(fā)送,可以觀察到本來開啟的兩路開關(guān),全部關(guān)閉了
測試完畢,智能開關(guān)達到了我想要的功能,下面就是針對我購買的外殼設(shè)計PCB板了
3.智能開關(guān)PCB的設(shè)計與制作:
對于購買的外殼,我先找到了一張廠家提供的CAD圖紙,上面標有了一些基本尺寸,這樣方便我去設(shè)計一塊合適的PCB板。
將之前在面包板上搭建的電路,繪制成原理圖之后效果如下:
轉(zhuǎn)換成PCB文件后,經(jīng)過簡單的元件擺放以及布線后,完成的效果如下:
將交流高壓部分和直流低壓部分開槽隔離,提供了較好的抗干擾特性。而反面則設(shè)有zigbee模塊以及單片機的位置。
約幾天后,我收到了制作好的板子。
同時到來的還有一些元器件。
焊接過程太繁瑣無聊,略去。焊接好之后的效果圖
安裝上觸摸模塊之后,使用雙面膠將觸摸模塊粘貼在面板玻璃上。
燒錄程序,合上外殼
背后使用標簽標明出接線口定義,方便安裝。
使用智能開關(guān)替代家中的傳統(tǒng)開關(guān)。
4.網(wǎng)關(guān)對應程序的編寫:
這部分的程序主要是網(wǎng)關(guān)接受物聯(lián)平臺發(fā)來的控制指令json字符串,然后解碼翻譯,最后通過zigbee網(wǎng)絡告知智能開關(guān)引起相應動作。所以其核心在于接受服務器的json字符串,解釋其含義。
同樣的,還是使用arduino的json庫來處理這些信息,查閱物聯(lián)平臺的通訊協(xié)議手冊,發(fā)現(xiàn)采用如下格式:
所以只需要解讀say指令后面附帶的指令即可,于是很快的,一個使用else if語句的并列結(jié)構(gòu)就寫好了,程序?qū)κ盏降淖址来闻袛?,如果相同則發(fā)送指令給智能開關(guān)。
上傳程序到ESP8266,開始測試!
5.綜合測試
安裝智能開關(guān)到位,接上網(wǎng)關(guān)的電源,觸摸觸摸開關(guān),電燈可以正常開啟關(guān)閉
拿出手機,打開物聯(lián)平臺,按下開啟電燈按鈕,電燈開啟。
至此,我實現(xiàn)了智能開關(guān)的設(shè)計,電路搭建以及使用網(wǎng)絡控制。并且支持各種功能擴展(定時開關(guān),和人體傳感器聯(lián)動等等),升級空間十分大,并且可聯(lián)網(wǎng)控制,給生活帶來了很大方便。
無線遙控開關(guān)制作
晚上睡覺前,有的墻壁開關(guān)距離床上太遠,因此不方便關(guān)燈,所以我準備設(shè)計一款遙控無線開關(guān),可以通過配對的形式完成對家中所有智能設(shè)備的控制,類似與隨手貼開關(guān)。下面是介紹無線遙控開關(guān)的設(shè)計。
作為zigbee網(wǎng)絡中的終端節(jié)點,無線遙控開關(guān)需要具有低功耗運行模式,因此根據(jù)我采用的e18zigbee模塊的數(shù)據(jù)手冊,將其配置成睡眠模式
拿出制作好的zigbee最小系統(tǒng)板
無線遙控開關(guān)上面有一個按鍵用來操作,所以焊接一個按鍵開關(guān)到最小板模塊上
另外焊接上電源線,采用紐扣電池供電
用3D打印機打印了殼子
將板子切割一下放進去
組裝好的樣子
2.網(wǎng)關(guān)對應的配置
我繪制了一個顯示屏的界面
在此界面下,按下墻壁開關(guān)的配對按鈕
此時顯示屏上會顯示相關(guān)信息,設(shè)備編號為1的會顯示在第一行,以此類推,超出一頁的部分會自動翻頁
如果復位按鍵損壞,還可以使用MAC地址添加方式
點擊信息右邊的配對按鈕,屏幕下方會顯示配對中的提示語
此時按下無線遙控開關(guān)的按鈕
即可在顯示屏上見到配對成功的提示語
此時使用無線遙控開關(guān)即可控制燈的亮滅
實現(xiàn)這個功能的主要原理就是無線開關(guān)記住了墻壁開關(guān)的短地址,這樣每次按下按鍵都會發(fā)送一次數(shù)據(jù)給智能墻壁開關(guān)以便控制亮滅。由于是電池供電的開關(guān),為了避免在更換電池后需要重新配對的問題,我使用了單片機內(nèi)置的EEPROM來存儲短地址,這樣就無需每次上電都要重新配對了。
責任編輯 LK
-
處理器
+關(guān)注
關(guān)注
68文章
19440瀏覽量
231321 -
ZigBee
+關(guān)注
關(guān)注
158文章
2271瀏覽量
243465 -
智能家居
+關(guān)注
關(guān)注
1930文章
9613瀏覽量
186560
發(fā)布評論請先 登錄
相關(guān)推薦
評論