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