基于LabVIEW與ARM微控制器的智能家居控制系統(tǒng)
引 言
近年來,物聯(lián)網(wǎng)[1] 被認為是繼互聯(lián)網(wǎng)之后最重大的科技創(chuàng)新,成為了全球關注的熱點領域。 智能家居屬于物聯(lián)網(wǎng)的一個重要分支[2],又稱智能住宅,英文名為Smart Home[3],是指以住宅為基礎平臺,利用綜合布線、網(wǎng)絡控制、安全防范等技術將與家居生活有關的設施進行集成,其目標是建立一個從家庭到小區(qū)乃至整個城市的綜合信息服務和管理系統(tǒng),以提高住宅技術水平,優(yōu)化居住環(huán)境[4,5]。 本文介紹了一個實用的智能家居系統(tǒng)中的分支系統(tǒng)——基于LabVIEW 與ARM 微控制器的智能家居控制系統(tǒng),利用 32 位 ARM 配合LabVIEW 上位機實現(xiàn)智能家居中的遠程控制功能。
1 系統(tǒng)方案設計
系統(tǒng)的總體結構如圖 1 所示,整個系統(tǒng)主要由上位機和下位機兩大部分組成,采用LabVIEW 編寫上位機顯示程序[6,7]; 下位機主要由ARM 最小系統(tǒng)、液晶屏顯示電路、外設等組成。STM32F107 作為主控芯片,通過 RS-232 串口控制外設的狀態(tài),為了保證控制的準確性,每次狀態(tài)有改變時,外設都要向ARM 返回其改變后的狀態(tài),并在上位機上顯示出來。
2 系統(tǒng)的硬件設計
2.1 微控制器選型
該系統(tǒng)中用到的處理器 STM32F107VCT6[8] 是 STM32 增 強型系列產(chǎn)品,該處理器是一個 32 位處理器,基于 ARM V7 架構的 Cortex-M3 內(nèi)核,主頻 72 MHz,內(nèi)部含有 256 字節(jié)的 FLASH 和 64 K 字節(jié)的 SRAM,擁有 32 位寬的數(shù)據(jù)路徑、寄 存器庫和內(nèi)存接口,其中包括 13 個通用寄存器、兩個堆棧指 針、一個鏈接寄存器、一個程序計數(shù)器和一系列包含編程狀 態(tài)寄存器的特殊寄存器。具有處理速度高,代碼量少的優(yōu)點, 嵌入式快速中斷控制器支持延時操作和實時性能。
2.2 TFT 液晶屏選型
TFT 是“Thin Film Transistor” 的簡稱, 是指薄膜晶體管(矩陣)——可以“主動地”對屏幕上各個獨立的像素進行控制,圖像產(chǎn)生的基本原理為 :顯示屏由許多可發(fā)以出任意顏色光線的像素組成,主要控制各個像素顯示相應的顏色就可以達到目的。本系統(tǒng)采用TFT LCD 屏,LCD 屏的分辨率為320*240,262 K 色,采用ILI9320 控制器,包括 720 路源極驅動以及320 路的柵極驅動,自帶有顯存,容量為172 800 字節(jié)。ILI9320 控制模塊與 STM32F107 處理器之間的接口為“i80- system”接口,用到的信號如圖 2 所示,其中DB 為數(shù)據(jù)總線, 其它的信號為控制信號。 由于STM32F107 不支持FSMC,所以本系統(tǒng)通過GPIO 總線對屏進行訪問操作,實現(xiàn)圖形界面的顯示。
2.3 串口模塊設計
本系統(tǒng)采用 ARM 自帶的串行通訊模塊。STM32F107 的 串口非常豐富,功能也很強勁,最多可提供 5 路串口。本系統(tǒng) 采用其中兩個串口,一個用來進行上位機命令的實時接收,另 一個用來實時控制外設。本系統(tǒng)選擇的串口接口是 9 個引腳的RS-232 接口。由于處理器 STM32F107 輸出的是 TTL/COMS 電平,而 PC 串口為 RS-232 電平,所以硬件設計使用了美信 (MAXIM)公司的電平轉換芯片 MAX232 實現(xiàn)雙向電壓轉換。
3 軟件設計
軟件部分主要包括上位機軟件和下位機軟件,上位機軟 件由 LabVIEW 編寫完成,主要負責人機互通,發(fā)送控制命令。 下位機軟件主要由 STM32 底層驅動程序、串口通訊程序、液 晶屏顯示程序組成。
3.1 上位機設計
LabVIEW[9] 是一種采用圖標代替文本行創(chuàng)建應用程序的 圖形化編程語言,本系統(tǒng)通過 LabVIEW 提供的 VISA 控件, 設置串口為 COM1口,波特率為 9 600 b/s,采用事件結構對 用戶界面做出響應,上位機顯示界面如圖 3 所示,每當按下顯 示界面的一個按鍵則產(chǎn)生一個事件,事件控制外設狀態(tài)。

3.2 下位機設計
系統(tǒng)初始化,液晶屏顯示歡迎界面,界面內(nèi)容包括該系 統(tǒng)名字以及該系統(tǒng)在使用過程中需要注意的各項事項。ARM 在接收上位機發(fā)來的指令后,將相應的命令按照通信協(xié)議打 包發(fā)送給外設,外設再將變化后的狀態(tài)按通信協(xié)議返回給 ARM,ARM 提取數(shù)據(jù)并傳輸給上位機顯示。下位機流程如 圖 4 所示。
3.2.1 USART串行通訊程序
本系統(tǒng)中通過設置波特率寄存器 USART_BRR 達到配置 不同波特率的目的。波特率 [10] 計算如式(1):

這 里 的 fCK 是 給外 設 的 時 鐘,USARTDIV 是 一 個 無 符 號 的 定 點 數(shù) :USARTDIV=DIV_Mantissa[11 :0]+DIV_ Fraction[3 :0]/16
DIV_Mantissa[11 :0] 定 義 USART 分 頻 器 除 法 因 子(USARTDIV) 的整 數(shù)部 分,DIV_Fraction[3 :0] 定義了 USART 分頻器除法因子(USARTDIV)的小數(shù)部分,在寫 入USART_BRR 之后,波特率計數(shù)器會被波特率寄存器的新 值替換。因此,不要在控制進行中改變波特率寄存器的數(shù)值。 ARM 與外設之間的通信協(xié)議 :數(shù)據(jù)包 = 前導碼 + 地址 + 命令控制碼 + 后導碼。
3.2.2 液晶屏顯示模塊程序
TFT LCD 的初始化主要是在函數(shù) ili9320_Initializtion() 中實現(xiàn)的。首先,我們調(diào)用 LCD_Init()函數(shù),對 TFT LCD 使用的 GPIO 管腳進行初始化,完成了 GPIO 的初始化后,我 們就可以正常訪問 TFT LCD 驅動芯片了,程序首先讀取驅動 芯片的 ID,然后依據(jù)驅動芯片的型號執(zhí)行相應的初始化程序, 本系統(tǒng)所采用的驅動芯片的 ID 為 9320。

4 系統(tǒng)測試
使用本系統(tǒng)進行實際的遠程控制,我們選取的實驗終端 為一個配備了四個繼電器的控制板,上位機控制協(xié)議如以下表 1 所列。

按下上位機顯示界面的按鍵后,對應的繼電器會實時做 出響應,如果繼電器打開了,則上位機顯示界面上對應的燈會 亮起,如果繼電器關閉,則上位機對應的燈會熄滅。正常情況下,液晶屏顯示歡迎界面,包括系統(tǒng)的名字及系統(tǒng)的相關注意事項。 一旦整套系統(tǒng)出現(xiàn)故障,液晶屏顯示“ERROR”,ARM 向蜂 鳴器發(fā)出報警信號,蜂鳴器響起,測試結果達到了系統(tǒng)預期 效果。
5 結 語
本文設計并實現(xiàn)了一套基于 LabVIEW 與 ARM 微控制器 的智能家居控制系統(tǒng)。ARM 處理器作為下位機接受上位機發(fā) 送來的指令,實現(xiàn)了照明、家電(如空調(diào)、熱水器等)、窗簾、 防盜報警、電話等遠程控制。以前的智能家居控制系統(tǒng)由于功 能要求不是很高,大多數(shù)都采用 8 位微控制器作為核心,本系 統(tǒng)采用 32 位 ARM 處理器搭配 LabVIEW 編寫的上位機,這 從根本上將智能家居的性能提高了一個很大的層次,首先在控 制方法上由定時變?yōu)榱藢崟r遠程,其次在任務執(zhí)行方面由單任 務串行變?yōu)榭啥嗳蝿詹⑿?,最后加上終端可視化界面,完成了 一整套功能強大、界面友好、操作簡單的智能家居遠程控制 系統(tǒng)