DIY項目彙報:智能家庭改造初嘗試

DIY項目彙報:智能家庭改造初嘗試

隨著微功耗處理器以及通訊芯片的發展,以往較為耗能的有線通訊方式越來越阻礙了通訊網絡的發展,於是一大批的無線通訊方案應運而生,例如NBIOT,藍牙4.0,zigbee等等。同時微功耗無線處理器的流行使得傳統家電帶上了智能的色彩,智能家居必將是未來家庭的必備。某些高科技企業也在揶揄這塊市場,紛紛推出了自家的智能家居解決方案,比較知名的有米家方案以及阿里智能的解決方案。但是回到現實的使用上來說,每個家庭的條件環境其實不一樣,同樣的產品未必在每個家庭上都可以使用方便,所以個性化的定製產品才可以更好的方便我們的生活。

於是在暑假期間,萌生了DIY一套智能家居方案的想法,具有各種智能開關和傳感器等節點,並且對接物聯平臺實現聯網控制以及數據的上傳。由於家庭中將會使用到的智能設備種類繁多,所以我將採用模塊化的設計思路,即採用核心板加外圍功能部分的思路,像搭積木一樣的構建各個智能設備。大家有同樣想製作的想法可以參考。截至發帖前,我完成了智能網關,智能牆壁開關,無線遙控開關以及無線氣象站的設計製作,之後有新的設備加入的話,我會及時的更新。

設想篇

下面是一張我構思的網絡拓撲圖:

DIY項目彙報:智能家庭改造初嘗試

無線通訊方案的選擇:zigbee

好早之前就接觸過zigbee組網,對於這種低成本低功耗的網絡還是抱有很大信心的。這裡講解選擇這個網絡的幾大理由:

  • mesh結構的網絡很適合智能家居的控制結構,在入網的任何一個節點都可以訪問到所有節點的數據,這點很適合網關控制各個設備。
  • 低功耗使得終端設備甚至可以採用電池供電,使得所有的模組都儘量可能的無線化。
  • 多跳傳輸,無線方案中最大的問題就是數據發送的不穩定以及障礙物對信號的遮擋導致數據無法正確傳輸,而ZigBee的多跳恰好解決了這個問題,節點會自動選擇優質的傳輸路線多跳傳輸,保證信號質量。

zigbee網絡確實是好,但是對於我這種比較懶惰的人並不想去學習那複雜的傳輸理論以及zigbee通訊芯片的編程,於是我選擇上網購買ZigBee模塊,最後選擇了一種小型的串口轉zigbee模塊,比較方便單片機通訊。

DIY項目彙報:智能家庭改造初嘗試

核心板的製作:

說到模塊化,那麼就需要核心的控制板。本質來說就是將單片機以及購買的zigbee模塊集成到一張電路板上,並且預留各種接口,方便後期移植到各種設備上,這樣一張電路板就可以適用各種智能家居設備了。

在保證功能足夠的同時,體積也是我需要考慮的問題,如果核心板做的過大,會導致無法安裝到某些空間狹小的智能設備中,所以小體積是我所著重考慮的。

基於多方面考慮之後,stc8F2k08s2進入了我的視線,小巧的sop16封裝以及簡單的外圍電路,足夠的IO口(14個)。這款芯片成為了核心板的控制單片機。於是一番繪製原理圖以及PCB之後,成品大概明朗了:

DIY項目彙報:智能家庭改造初嘗試

焊接好的成品如下:

DIY項目彙報:智能家庭改造初嘗試

這將會成為以後所有我的智能家居方案的核心控制板。

完成了核心板的製作,網關成為了下一個比較關注的對象,因為家中的所有智能設備的控制以及通訊都會由他來完成,包括鏈接到互聯網上傳數據,所以說對於網關的硬件選取也是重中之重。上聯互聯網,下接zigbee小型通訊網,網關擔任了一個家庭控制中心的角色,對於它的選擇我認為esp8266是個不錯的方案,可以支持arduino ide編程,這對於不太瞭解網絡通訊協議的我來說是個好消息,因為在arduino的編程中,我可以藉助強大的庫函數來完成我想要的功能。

DIY項目彙報:智能家庭改造初嘗試

esp8266是一個擁有了近80Mhz的主頻的32位處理器,內置了wifi模組省去了網線,並且擁有豐富的外設以及較高的性能,可以勝任智能網關的工作。當然,近期樂鑫發佈的ESP32系列芯片也會是個好的選擇,更高的主頻以及wifi藍牙雙模的設計讓其擁有更加方便的接入方式,由於手頭上正好有一塊esp8266,所以沒有采用性能更好的ESP32。

這樣我需要對ESP8266進行片上編程,並調用它的串口和zigbee模塊通信,當zigbee的節點收到其他設備發來的數據的時候,esp8266可以對其處理或者通過WiFi上傳到雲平臺,整體的設計思路就是這樣。

DIY項目彙報:智能家庭改造初嘗試

為了方便網關節點的狀態顯示以及相關信息讀取,為以後的調試提供便利,我給網關添加了一塊4.3寸的串口觸摸屏,這樣方便信息的讀取以及調試工作。

DIY項目彙報:智能家庭改造初嘗試

完成了zigbee節點核心板的設計以及網關的硬件選擇,整個智能家居系統的主要部分就構建完成了,我先不講解程序的編寫,因為我將會在調試好每一個智能設備之後,再對網關進行編寫對應設備的接口程序。即完成一個智能設備的開發之後再對接網關,使其加入到家中的zigbee網絡,實現聯動控制或者聯網控制,因為畢竟我使用的ZigBee模組只是起一個通訊的作用,具體的功能實現還是靠核心板上的單片機來完成。這種開發方法叫做迭代開發,對於較為龐大的項目是一種較好的解決方案。

DIY項目彙報:智能家庭改造初嘗試

製作篇

下面是介紹智能牆壁開關的設計,核心就是使得家裡牆壁開關智能化,可以聯網控制,達到場景聯動,智能控制等目的。

我嘗試就家中的傳統開關進行改造,但是發現拆開之後內部空間實在不夠,沒法完成改裝

DIY項目彙報:智能家庭改造初嘗試

DIY項目彙報:智能家庭改造初嘗試

於是嘗試網購新的開關,尋找空間大些的牆壁開關,後來我找到了專門生產觸摸智能開關外殼的廠家,購買了幾個觸摸牆壁開關的外殼,內部空間較大,適合改造

DIY項目彙報:智能家庭改造初嘗試

DIY項目彙報:智能家庭改造初嘗試

由於是觸摸面板,所以我準備使用觸摸模塊作為輸入。關於執行機構,也就是一充當原來機械開關的器件,我準備使用繼電器來代替。繼電器可以讓我使用單片機輸出的信號去控制220V交流電壓的通斷,並且提供良好的隔離以及絕緣性能。

DIY項目彙報:智能家庭改造初嘗試

1.代碼的編寫:

選擇了繼電器以及觸摸模塊之後,我在麵包板上搭建了電路,接下來就是編寫代碼了

對於 智能開關節點,我將zigbee模塊配置成了路由器節點,這樣做的好處是,牆壁開關同時扮演了一個路由器的角色,看可以協助一些遠距離的終端節點完成多跳數據傳輸。。例如我想在臥室使用一個無線開關(下一章將會開發的)去控制家門口的燈光,直接將數據發送到家門口的智能開關上或許信號強度不夠造成通信失敗,這時我在客廳增加一個路由器節點之後,無線開關的信號便可以傳輸到家門口的智能開關上。

DIY項目彙報:智能家庭改造初嘗試

同樣的,為了響應國家節能減排的號召,我給單片機配置成了空閒模式以節省功耗,但是空閒模式下單片機沒法正確及時的檢測到觸摸按鍵的按下,所以我使用單片機的外部中斷來檢測觸摸按鍵,當觸摸按鍵按下時,單片機檢測到電平變化,引發中斷,喚醒單片機,使得單片機執行相關指令。

DIY項目彙報:智能家庭改造初嘗試

當zigbee模塊收到來自智能網關的數據時候(例如閉合開關或者斷開開關),其輸出數據引發的串口中斷也會喚醒單片機,這時候單片機會執行收到的指令,隨後再次進入空閒模式。

DIY項目彙報:智能家庭改造初嘗試

此外,為了更好的檢測每個開關的狀態,每次開關有動作之後,會將當前的狀態上報給智能網關,以便網關檢測家中所有的開關狀況。

DIY項目彙報:智能家庭改造初嘗試

2.開關的測試:

鏈接zigbee的協調器節點到電腦上,打開智能開關的電源,可以看到每當我觸摸開關,對應的繼電器都會動作,並且協調器節點串口都會輸出一些數據:

DIY項目彙報:智能家庭改造初嘗試

下面是一幀數據的解讀

DIY項目彙報:智能家庭改造初嘗試

同時,在串口監視器輸入關閉兩路開關的指令,按回車發送,可以觀察到本來開啟的兩路開關,全部關閉了

測試完畢,智能開關達到了我想要的功能,下面就是針對我購買的外殼設計PCB板了

3.智能開關PCB的設計與製作:

對於購買的外殼,我先找到了一張廠家提供的CAD圖紙,上面標有了一些基本尺寸,這樣方便我去設計一塊合適的PCB板。

DIY項目彙報:智能家庭改造初嘗試

將之前在麵包板上搭建的電路,繪製成原理圖之後效果如下:

DIY項目彙報:智能家庭改造初嘗試

轉換成PCB文件後,經過簡單的元件擺放以及佈線後,完成的效果如下:

DIY項目彙報:智能家庭改造初嘗試

將交流高壓部分和直流低壓部分開槽隔離,提供了較好的抗干擾特性。而反面則設有zigbee模塊以及單片機的位置。

DIY項目彙報:智能家庭改造初嘗試

約幾天後,我收到了製作好的板子。

DIY項目彙報:智能家庭改造初嘗試

同時到來的還有一些元器件。

DIY項目彙報:智能家庭改造初嘗試

焊接過程太繁瑣無聊,略去。焊接好之後的效果圖

DIY項目彙報:智能家庭改造初嘗試

DIY項目彙報:智能家庭改造初嘗試

安裝上觸摸模塊之後,使用雙面膠將觸摸模塊粘貼在面板玻璃上。

DIY項目彙報:智能家庭改造初嘗試

燒錄程序,合上外殼

背後使用標籤標明出接線口定義,方便安裝。

DIY項目彙報:智能家庭改造初嘗試

使用智能開關替代家中的傳統開關。

DIY項目彙報:智能家庭改造初嘗試

4.網關對應程序的編寫:

這部分的程序主要是網關接受物聯平臺發來的控制指令json字符串,然後解碼翻譯,最後通過zigbee網絡告知智能開關引起相應動作。所以其核心在於接受服務器的json字符串,解釋其含義。

同樣的,還是使用arduino的json庫來處理這些信息,查閱物聯平臺的通訊協議手冊,發現採用如下格式:

DIY項目彙報:智能家庭改造初嘗試

所以只需要解讀say指令後面附帶的指令即可,於是很快的,一個使用else if語句的並列結構就寫好了,程序對收到的字符串依次判斷,如果相同則發送指令給智能開關。

DIY項目彙報:智能家庭改造初嘗試

上傳程序到ESP8266,開始測試!

5.綜合測試

安裝智能開關到位,接上網關的電源,觸摸觸摸開關,電燈可以正常開啟關閉

DIY項目彙報:智能家庭改造初嘗試

拿出手機,打開物聯平臺,按下開啟電燈按鈕,電燈開啟。

DIY項目彙報:智能家庭改造初嘗試

至此,我實現了智能開關的設計,電路搭建以及使用網絡控制。並且支持各種功能擴展(定時開關,和人體傳感器聯動等等),升級空間十分大,並且可聯網控制,給生活帶來了很大方便。

無線遙控開關製作

晚上睡覺前,有的牆壁開關距離床上太遠,因此不方便關燈,所以我準備設計一款遙控無線開關,可以通過配對的形式完成對家中所有智能設備的控制,類似與隨手貼開關。下面是介紹無線遙控開關的設計。

1.電路設計

作為zigbee網絡中的終端節點,無線遙控開關需要具有低功耗運行模式,因此根據我採用的e18zigbee模塊的數據手冊,將其配置成睡眠模式

DIY項目彙報:智能家庭改造初嘗試

拿出製作好的zigbee最小系統板

DIY項目彙報:智能家庭改造初嘗試

無線遙控開關上面有一個按鍵用來操作,所以焊接一個按鍵開關到最小板模塊上

DIY項目彙報:智能家庭改造初嘗試

另外焊接上電源線,採用紐扣電池供電

DIY項目彙報:智能家庭改造初嘗試

DIY項目彙報:智能家庭改造初嘗試

用3D打印機打印了殼子

DIY項目彙報:智能家庭改造初嘗試

將板子切割一下放進去

DIY項目彙報:智能家庭改造初嘗試

DIY項目彙報:智能家庭改造初嘗試

組裝好的樣子

DIY項目彙報:智能家庭改造初嘗試

2.網關對應的配置

我繪製了一個顯示屏的界面

DIY項目彙報:智能家庭改造初嘗試

在此界面下,按下牆壁開關的配對按鈕

DIY項目彙報:智能家庭改造初嘗試

此時顯示屏上會顯示相關信息,設備編號為1的會顯示在第一行,以此類推,超出一頁的部分會自動翻頁

DIY項目彙報:智能家庭改造初嘗試

如果復位按鍵損壞,還可以使用MAC地址添加方式

DIY項目彙報:智能家庭改造初嘗試

DIY項目彙報:智能家庭改造初嘗試

點擊信息右邊的配對按鈕,屏幕下方會顯示配對中的提示語

DIY項目彙報:智能家庭改造初嘗試

此時按下無線遙控開關的按鈕

DIY項目彙報:智能家庭改造初嘗試

即可在顯示屏上見到配對成功的提示語

DIY項目彙報:智能家庭改造初嘗試

此時使用無線遙控開關即可控制燈的亮滅

DIY項目彙報:智能家庭改造初嘗試

實現這個功能的主要原理就是無線開關記住了牆壁開關的短地址,這樣每次按下按鍵都會發送一次數據給智能牆壁開關以便控制亮滅。由於是電池供電的開關,為了避免在更換電池後需要重新配對的問題,我使用了單片機內置的EEPROM來存儲短地址,這樣就無需每次上電都要重新配對了。


分享到:


相關文章: