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

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

這 里 的 fCK 是 給外 設(shè) 的 時(shí) 鐘,USARTDIV 是 一 個(gè) 無 符 號(hào) 的 定 點(diǎn) 數(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ù)部分,在寫 入U(xiǎn)SART_BRR 之后,波特率計(jì)數(shù)器會(huì)被波特率寄存器的新 值替換。因此,不要在控制進(jìn)行中改變波特率寄存器的數(shù)值。 ARM 與外設(shè)之間的通信協(xié)議 :數(shù)據(jù)包 = 前導(dǎo)碼 + 地址 + 命令控制碼 + 后導(dǎo)碼。
3.2.2 液晶屏顯示模塊程序
TFT LCD 的初始化主要是在函數(shù) ili9320_Initializtion() 中實(shí)現(xiàn)的。首先,我們調(diào)用 LCD_Init()函數(shù),對(duì) TFT LCD 使用的 GPIO 管腳進(jìn)行初始化,完成了 GPIO 的初始化后,我 們就可以正常訪問 TFT LCD 驅(qū)動(dòng)芯片了,程序首先讀取驅(qū)動(dòng) 芯片的 ID,然后依據(jù)驅(qū)動(dòng)芯片的型號(hào)執(zhí)行相應(yīng)的初始化程序, 本系統(tǒng)所采用的驅(qū)動(dòng)芯片的 ID 為 9320。

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

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