當(dāng)前位置:首頁(yè) > 學(xué)習(xí)資源 > 講師博文 > 一個(gè)完整的智能家居系統(tǒng)學(xué)習(xí),想從事智能家居系統(tǒng)的看過(guò)來(lái)!
(一)什么是智能家居:
智能家居可以理解為一個(gè)控制系統(tǒng),通過(guò)物聯(lián)網(wǎng)將家里的智能設(shè)備連接起來(lái),通過(guò)手機(jī)控制,遠(yuǎn)程控制,自動(dòng)控制,語(yǔ)音控制等多種控制方式,組成對(duì)家庭的一個(gè)智能系統(tǒng),通過(guò)一臺(tái)智能手機(jī)或者是一個(gè)智能平板,或者語(yǔ)音設(shè)備就可以控制家里的所有智能設(shè)備。
(二)智能家居的四大模塊(APP模塊,服務(wù)器模塊,MO模塊,ZigBee模塊)
1.APP模塊框架
如下圖1-1所示:
圖1-1APP框架圖
APP實(shí)現(xiàn)的功能是通過(guò)連接網(wǎng)絡(luò),從而達(dá)到控制智能設(shè)備的目的,可以通過(guò)APP來(lái)控制LED燈的亮滅、風(fēng)扇的開(kāi)關(guān)、門(mén)的開(kāi)關(guān)、蜂鳴器的開(kāi)關(guān)等等,同時(shí)也能夠?qū)崟r(shí)獲取家中的溫濕度光、照等等。下面是我們?cè)谡n程中實(shí)現(xiàn)的APP界面(APP采用QT編寫(xiě)的客戶(hù)端),界面如下圖所示,登錄界面(1-2)
圖1-2 APP登錄界面
2.服務(wù)器模塊
服務(wù)器的運(yùn)行環(huán)境我們?cè)谔摂M機(jī)下進(jìn)行(Ubuntu),服務(wù)器的主要功能是接收客戶(hù)端的請(qǐng)求,同時(shí)連接下位機(jī)(M0開(kāi)發(fā)板)。比如客戶(hù)端發(fā)送一個(gè)開(kāi)燈的命令,服務(wù)器收到命令之后,會(huì)發(fā)送一個(gè)請(qǐng)求到下位機(jī),告訴它需要開(kāi)燈,下位機(jī)收到命令之后就會(huì)執(zhí)行該操作,同時(shí)下位機(jī)也會(huì)返回?cái)?shù)據(jù)(溫濕度,光照等)到服務(wù)器,服務(wù)器接收到之后再發(fā)送給客戶(hù)端。
服務(wù)器涉及到的知識(shí)點(diǎn)比較多,華清遠(yuǎn)見(jiàn)嵌入式課程中,我們用到了sqlite3數(shù)據(jù)庫(kù)(用來(lái)保存用戶(hù)的用戶(hù)名,密碼和手機(jī)號(hào)),線(xiàn)程池,json數(shù)據(jù)庫(kù),串口方面的知識(shí)等等,該文章重點(diǎn)介紹串口部分的應(yīng)用。
服務(wù)器最關(guān)鍵的,我覺(jué)得不在于代碼本身,你首先需要調(diào)通串口,因?yàn)槟阒挥姓{(diào)通串口才能實(shí)現(xiàn)其他的功能,因?yàn)殚_(kāi)發(fā)板(M0)是通過(guò)串口和服務(wù)器相連的,一旦串口不能收發(fā)數(shù)據(jù),一切都是白談。我們一般將串口連接在電腦上的時(shí)候,都是和windows系統(tǒng)連的,可以通過(guò)打開(kāi)串口調(diào)試助手來(lái)進(jìn)行調(diào)試(包括收發(fā)數(shù)據(jù)),但是現(xiàn)在我們的串口是連接在虛擬機(jī)上的,要和服務(wù)器相同,我們要保證串口和虛擬機(jī)是相同的,我們將串口插上電腦之后,打開(kāi)虛擬機(jī),在最上面一行找的虛擬機(jī)三個(gè)字,單擊然后有一個(gè)可移動(dòng)設(shè)備,點(diǎn)擊它找到一個(gè)usb-serial的圖標(biāo)點(diǎn)擊連接就ok了,具體的操作圖如圖2-1。
圖2-1
為了確保串口已經(jīng)連接到虛擬機(jī)上了,我們可以通過(guò)命令來(lái)查看(進(jìn)入vim命令,輸入 ls /dev/ttyUSB0)一般都是ttyUSB0,但是也有特殊情況,有的可能是ttyUSB1,所以我們可以輸入 ls /dev/ttyUSB* 。具體的如圖2-2所示(出現(xiàn)下面黃色字體的樣式表示接入串口成功)。
圖2-2
接入串口成功之后,我們?nèi)缓箝_(kāi)始進(jìn)行代碼的編寫(xiě),我們需要在虛擬機(jī)下寫(xiě)一個(gè)串口的代碼來(lái)充當(dāng)串口調(diào)試助手,從而進(jìn)行串口數(shù)據(jù)的調(diào)試。我選擇的是以文件 通過(guò)這些函數(shù),我們可以實(shí)現(xiàn)串口的初始化(比如設(shè)置波特率,奇偶檢驗(yàn)位,停止位等等),可以進(jìn)行數(shù)據(jù)的收發(fā)等等。
3.M0模塊
華清遠(yuǎn)見(jiàn)智能家居項(xiàng)目采用的是ARM-CortexM0(LPC11C14開(kāi)發(fā)板),服務(wù)器(可以將服務(wù)器移植到A9開(kāi)發(fā)板上進(jìn)行操作,我這里沒(méi)有進(jìn)行移植,所以直接在服務(wù)器上運(yùn)行)發(fā)送操作請(qǐng)求數(shù)據(jù)包到MO來(lái)完成相應(yīng)的用戶(hù)希望完成的操作,同時(shí)M0給服務(wù)器回復(fù)相應(yīng)的確認(rèn)包,表示M0已經(jīng)完成了這項(xiàng)操作,這樣就可以完成一次交互。
M0的框架設(shè)計(jì)如圖3-1所示
圖3-1 M0框架圖
MO的開(kāi)發(fā)板上,我們需要先實(shí)現(xiàn)點(diǎn)亮led燈的操作,蜂鳴器,風(fēng)扇等等。完成了這些基礎(chǔ)實(shí)驗(yàn)之后,在加入通信協(xié)議,比如我上位機(jī)發(fā)送open就表示請(qǐng)求開(kāi)燈。
4.ZigBee模塊
ZigBee 是為低數(shù)據(jù)速率、短距離無(wú)線(xiàn)網(wǎng)絡(luò)通信定義的一系列通信協(xié)議標(biāo)準(zhǔn)。服務(wù)器與M0之間是用ZigBee來(lái)進(jìn)行數(shù)據(jù)的傳輸。ZigBee有兩個(gè)模塊,一個(gè)是協(xié)調(diào)器,它與服務(wù)器通過(guò)串口相連,另一個(gè)是終端,它與M0也是通過(guò)串口相連。所以我們可以通過(guò)讀和寫(xiě)串口的API,就可以得到我們想要的數(shù)據(jù)包,具體的還需要參考通信協(xié)議說(shuō)明。
上面大約介紹了華清遠(yuǎn)見(jiàn)智能家居系統(tǒng)學(xué)習(xí)的幾大模塊,并就每個(gè)模塊的實(shí)現(xiàn)及技術(shù)進(jìn)行了大概的介紹,希望能給致力于從事智能家居系統(tǒng)學(xué)習(xí)的愛(ài)好者們有所幫助。更多更細(xì)節(jié)的技術(shù)內(nèi)容學(xué)習(xí),可以加入華清遠(yuǎn)見(jiàn)嵌入式課程的學(xué)習(xí),這里有我們自主研發(fā)的智能家居系統(tǒng),全套的硬件實(shí)訓(xùn)支持,非常適合學(xué)習(xí)。