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