叢子林
摘 要: 為了提高室內(nèi)溫度控制距離、實(shí)現(xiàn)手機(jī)無(wú)線控制以及溫度智能調(diào)節(jié),基于溫度傳感器和FPGA設(shè)計(jì)一個(gè)室內(nèi)溫度智能無(wú)線控制系統(tǒng)。通過(guò)Android Studio集成開發(fā)環(huán)境,編寫手機(jī)應(yīng)用程序,程序?qū)崿F(xiàn)讀取室內(nèi)溫度和窗子開關(guān)狀態(tài),同時(shí)還實(shí)現(xiàn)溫度調(diào)節(jié)和最高預(yù)警溫度設(shè)置的功能。通過(guò)溫度傳感器采集溫度與串口WiFi模塊組成無(wú)線溫度測(cè)量網(wǎng)絡(luò),工作在AP模式的主串口WiFi模塊通過(guò)RS 232串口與FPGA無(wú)線通信,F(xiàn)PGA作為主控中心處理數(shù)據(jù)并發(fā)送數(shù)據(jù)給手機(jī)終端和紅外控制空調(diào),并且通過(guò)電機(jī)控制窗簾和窗子。經(jīng)測(cè)試,該系統(tǒng)運(yùn)行穩(wěn)定,操作簡(jiǎn)單﹑方便而且推廣價(jià)值較高。
關(guān)鍵詞: 溫度傳感器; FPGA; 無(wú)線控制; 溫度智能調(diào)節(jié)
中圖分類號(hào): TN926?34; TP212.9 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)06?0070?03
Design of indoor temperature intelligent wireless control based on
temperature sensor and FPGA
CONG Zilin
(School of Electronic and Information Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China)
Abstract: In order to prolong the indoor temperature control range, and attain the goal of mobile phone wireless control and intelligent temperature adjustment, a intelligent wireless indoor temperature control system was designed based on the temperature sensor and FPGA. A mobile phone application program was written in the Android Studio integrated development environment. Reading of the indoor temperature, open/close state of windows, temperature adjustment and setting of maximum warning temperature were realized. The wireless temperature measuring network is composed of the temperature acquisition sensor and a serial port WIFI module. Main serial WIFI module working in AP mode communicates with FPGA through RS232 serial port. The FPGA as the main control center processes the data, sends the data to the mobile phone terminal and infrared control air conditioner, and control the curtains and windows through motors. The testing result indicates that the system runs smoothly, and has simple operation and high promotion value.
Keywords: temperature sensor; FPGA; wireless control; intelligent temperature control
隨著電子技術(shù)和信息科技的快速發(fā)展,溫度控制從手動(dòng)控制逐漸向著自動(dòng)、智能、安卓終端無(wú)線控制方向發(fā)展。溫濕度監(jiān)測(cè)在工業(yè)、農(nóng)業(yè)、化工等行業(yè)有著廣泛的應(yīng)用。在很多情況下溫濕度監(jiān)測(cè)需要對(duì)較大空間的多個(gè)點(diǎn)和不同空間的點(diǎn)進(jìn)行監(jiān)測(cè),傳統(tǒng)的有線方式極為不便。為了實(shí)時(shí)準(zhǔn)確地監(jiān)測(cè)多個(gè)觀測(cè)點(diǎn)的溫濕度情況,需要實(shí)現(xiàn)溫濕度的分布測(cè)量和無(wú)線傳輸?shù)墓δ躘1]。
WiFi是近年來(lái)越來(lái)越流行的一種無(wú)線通信網(wǎng)絡(luò),目前大量學(xué)者將其應(yīng)用在不同領(lǐng)域進(jìn)行數(shù)據(jù)傳輸。雖然ZigBee的使用比其要早,但使用范圍和熱度不如WiFi,因?yàn)閃iFi的傳輸帶寬更寬,傳輸距離更長(zhǎng),抗干擾性更強(qiáng)[2]。針對(duì)家居中分布測(cè)量和無(wú)線傳輸特點(diǎn),本文提供一種WiFi轉(zhuǎn)串口與FPGA傳輸溫度測(cè)量方法。終端不用在固定地點(diǎn)進(jìn)行控制,利用WiFi覆蓋廣的特點(diǎn),提高了溫度數(shù)據(jù)傳輸和控制命令的距離。設(shè)計(jì)一種FPGA和WiFi模塊利用串口傳輸數(shù)據(jù)自動(dòng)或手動(dòng)調(diào)節(jié)空調(diào)、窗簾和窗戶的狀態(tài),調(diào)節(jié)智能室內(nèi)溫度的功能。
1 總體設(shè)計(jì)
系統(tǒng)框圖如圖1所示,首先開發(fā)一款空調(diào)控制和溫度接收顯示APP,包括空調(diào)控制,溫度顯示和溫度設(shè)置功能。通過(guò)WiFi轉(zhuǎn)串口模塊透明傳輸數(shù)據(jù),實(shí)現(xiàn)Android終端與FPGA芯片的無(wú)線通信,同時(shí)FPGA主處理器實(shí)時(shí)接收所有測(cè)量點(diǎn)溫度,并對(duì)串口收到的數(shù)據(jù)進(jìn)行處理,將相應(yīng)的控制信號(hào)發(fā)送出去。最終紅外控制空調(diào),通過(guò)控制電機(jī)的正反轉(zhuǎn)控制窗簾和窗戶關(guān)和開,達(dá)到控制室內(nèi)溫度的目的。
FPGA串口接WiFi轉(zhuǎn)串口模塊。Android互動(dòng)終端接收FPGA信號(hào)通過(guò)將它轉(zhuǎn)換成WiFi信號(hào)方式進(jìn)行,同時(shí)用戶可以發(fā)出控制命令給FPGA。WiFi轉(zhuǎn)RS 232串口服務(wù)器的無(wú)線網(wǎng)絡(luò)類型設(shè)置為AP模式,AP模式提供無(wú)線接入服務(wù),允許其他無(wú)線設(shè)備接入,其他WiFi模塊為STA模式,本身并不接收無(wú)線的接入,它可以連接到AP模式WiFi。WiFi串口服務(wù)器支持串口透明傳輸模式,可以實(shí)現(xiàn)串口即插即用,從而最大程度地降低用戶使用的復(fù)雜度。在此模式下,所有需要收發(fā)的數(shù)據(jù)都被在串口與WiFi之間做透明傳輸,不做任何解析。該模塊傳輸距離最大400 m,滿足家中任何地點(diǎn)控制和接收溫度信息的要求,WiFi串口波特率設(shè)置為9 600 b/s。
2 FPGA軟件實(shí)現(xiàn)
FAPG最小系統(tǒng)是最小工作系統(tǒng),外部擴(kuò)展必須有最小系統(tǒng)保證。一般可以把其組成分為7個(gè)部分:FPGA主芯片、PROM存儲(chǔ)芯片、電源電路、外部時(shí)鐘電路、復(fù)位電路、下載接口電路、下載模式選擇電路及接口引出插針。本次選用48 MHz晶振電路作為外部時(shí)鐘發(fā)生電路,設(shè)計(jì)選用Quartus Ⅱ集成環(huán)境和VHDL為FPGA編程語(yǔ)言。VHDL具有與具體硬件電路無(wú)關(guān)和與設(shè)計(jì)平臺(tái)無(wú)關(guān)的特性,能從多個(gè)層次對(duì)數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大簡(jiǎn)化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。并且具有良好的電路行為描述和系統(tǒng)描述的能力,在語(yǔ)言易讀性和層次化、結(jié)構(gòu)化設(shè)計(jì)方面表現(xiàn)了強(qiáng)大的生命力和應(yīng)用潛力。因此,VHDL支持各種模式的設(shè)計(jì)方法:自頂向下與自底向上或混合方法,在面對(duì)當(dāng)今許多電子產(chǎn)品生命周期縮短,需要多次重新設(shè)計(jì)以融入最新技術(shù)、改變工藝等方面,VHDL都表現(xiàn)了良好的適應(yīng)性[3]。
本設(shè)計(jì)采用模塊化設(shè)計(jì),主程序通過(guò)例化調(diào)用分頻模塊,串口收發(fā)模塊,通過(guò)case語(yǔ)句對(duì)接收的溫度值進(jìn)行選擇并且執(zhí)行Andriod終端傳輸進(jìn)來(lái)的命令。主程序流程圖如圖2所示。
2.1 分頻模塊
分頻模塊是系統(tǒng)軟件設(shè)計(jì)中最重要的,溫度測(cè)量要求微秒單位操作,需要分頻得出微秒單位時(shí)序。串口模塊正確傳送與接收是在分頻模塊的基礎(chǔ)上產(chǎn)生的。系統(tǒng)時(shí)鐘=分頻數(shù)×16×9 600,晶振為48 MHz,計(jì)算分頻數(shù)等于312.5,取整等于312。分頻因子是分頻數(shù)的一半,所以分頻數(shù)為156。分頻模塊就是156個(gè)系統(tǒng)時(shí)鐘是高電平,之后156個(gè)低電平,之后根據(jù)時(shí)鐘重復(fù)高低電平交替。如圖3所示溫度模塊分頻得出1 μs的時(shí)序仿真圖,可以清晰地看到但服務(wù)信號(hào)由高電平跳變?yōu)榈碗娖綍r(shí),分頻程序開始。經(jīng)過(guò)24個(gè)系統(tǒng)時(shí)鐘,輸出保持低電平,又經(jīng)過(guò)24個(gè)時(shí)鐘,輸出得到1 μs時(shí)鐘。
2.2 串口收發(fā)模塊
通信參數(shù)波特率是9 600 b/s,數(shù)據(jù)位8 b,一個(gè)起始位和一個(gè)停止位,無(wú)校驗(yàn)位。由于串口收發(fā)程序差不多,這里主要介紹串口發(fā)送數(shù)據(jù)程序設(shè)計(jì)。在傳輸前首先為收發(fā)兩端規(guī)定參數(shù),這樣不會(huì)誤碼。發(fā)送時(shí)鐘是16 b,所以發(fā)送1位也就需要持續(xù)16個(gè)發(fā)送時(shí)鐘。收發(fā)兩邊空閑狀態(tài)時(shí),傳送線為邏輯“1”狀態(tài)。數(shù)據(jù)的傳送總是以一個(gè)“起始位”(邏輯‘0)開始的,接著傳送數(shù)據(jù)位(低位先行,即LSB),最后是一個(gè)“停止位”(邏輯‘1)。串口發(fā)送通過(guò)狀態(tài)機(jī)實(shí)現(xiàn)串口的發(fā)送的過(guò)程,狀態(tài)機(jī)很好的描述了串口發(fā)送的過(guò)程,為編程節(jié)省了時(shí)間。有復(fù)位信號(hào)和采樣數(shù)少于16個(gè)邏輯‘1則回到空閑狀態(tài)(idle),其他情況轉(zhuǎn)移到發(fā)送起始位狀態(tài)(start_bit),采樣少于16個(gè)邏輯‘0則回到發(fā)送起始位狀態(tài)。其他情況轉(zhuǎn)移到發(fā)送數(shù)據(jù)位狀態(tài)(data_bit),每個(gè)數(shù)據(jù)位采樣16次,計(jì)數(shù)發(fā)送8位數(shù)據(jù),少于采樣數(shù)和發(fā)送數(shù)據(jù)位數(shù),則回到發(fā)送數(shù)據(jù)位狀態(tài)重新發(fā)送數(shù)據(jù)。發(fā)送完8位數(shù)據(jù)后轉(zhuǎn)移到發(fā)送停止位狀態(tài)(stop_bit),采樣少于16個(gè)邏輯‘1回到發(fā)送停止位狀態(tài)。發(fā)送完停止位后回到空閑狀態(tài)等待繼續(xù)發(fā)送數(shù)據(jù)。
2.3 溫度測(cè)量模塊
主處理芯片上通過(guò)DS18b20型號(hào)溫度傳感器進(jìn)行溫度測(cè)量,其他溫度模塊通過(guò)WiFi無(wú)線與FPGA溫度信息傳遞。一線通信協(xié)議結(jié)構(gòu)對(duì)時(shí)序要求非常嚴(yán)格,如總線復(fù)位,設(shè)置總線為低電平并保持至少480 μs,然后拉高電平,等待溫度傳感器拉低電平作為響應(yīng),則總線復(fù)位完成。根據(jù)溫度的開發(fā)資料,運(yùn)行狀態(tài)機(jī)對(duì)溫度在該時(shí)序完成動(dòng)作對(duì)溫度傳感器進(jìn)行編程。對(duì)DS18B20按照初始化、ROM 命令、功能命令三個(gè)步驟進(jìn)行操作。
3 Android客戶端軟件設(shè)計(jì)
Android操作系統(tǒng)是應(yīng)用分享率最高,而且還是應(yīng)用最廣泛的操作系統(tǒng),擴(kuò)展名為apk的文件是Android應(yīng)用程序包,必須包含配置文件 (AndroidManifest.xml)、編譯后的Java類和應(yīng)用資源。
3.1 WiFi通信
WiFi通信主要通過(guò)TCP通信程序?qū)崿F(xiàn)。Android客戶端編程用到的是Android Studio[4] 開發(fā)環(huán)境,優(yōu)點(diǎn)主要是開發(fā)者可以在編寫程序的同時(shí)看到自己的應(yīng)用在不同尺寸屏幕中的樣子,提高了客戶端在不同屏幕上的兼容性。串口轉(zhuǎn)WiFi服務(wù)器IP地址是10.10.100.254,端口號(hào)是8899,Android控制端作為客戶端,通過(guò)TCP的Socket套接字連接到WiFi服務(wù)器端后,發(fā)送控制命令到服務(wù)器端。對(duì)于客戶端,實(shí)現(xiàn)TCP通信需要如下步驟:
(1) 創(chuàng)建客戶端套接字,指定服務(wù)器端IP地址與端口號(hào),服務(wù)器IP地址是10.10.100.254,端口號(hào)是8899, 代碼如下:
Socket client_socket=new socket(“10.10.100.254”,8899)
(2) 與服務(wù)器端的通信同樣使用輸入輸出流InputStream和OutputStream類對(duì)象。在對(duì)應(yīng)的按鈕被單擊后,發(fā)送相應(yīng)的命令數(shù)據(jù)。通過(guò)onclick()函數(shù)對(duì)按鈕進(jìn)行監(jiān)聽。為每個(gè)按鈕分配一個(gè)十六進(jìn)制數(shù),如燈一開的按鈕點(diǎn)擊后發(fā)送8位十六進(jìn)制0x01,如果有點(diǎn)擊事件發(fā)生,把響應(yīng)按鈕的十六進(jìn)制數(shù)給WiFi轉(zhuǎn)串口模塊,最終把數(shù)據(jù)傳到FPGA芯片中進(jìn)行處理。
(3) 關(guān)閉套接字通信完成后,同樣需要將輸入輸出流以及Socket關(guān)閉,主動(dòng)釋放這些資源[5]。
3.2 布局文件
Android操作界面通過(guò)res/layout文件下activity_main.xml文件實(shí)現(xiàn)。Android中的線性布局管理器用LinearLayout表示,它是將放入其中的組件按照垂直或水平方向來(lái)布局,也就是控制放入其中的組件橫向排列或縱向排列,這次設(shè)計(jì)選擇橫向排列。如圖4所示,溫度界面分為溫度顯示、溫度設(shè)置、溫度刷新、停止刷新和系統(tǒng)復(fù)位功能。通過(guò)Fragment和ViewPager一起實(shí)現(xiàn)動(dòng)態(tài)切換功能,溫度界面、空調(diào)控制界面、窗子和窗簾控制界面自由切換,方便操作。
4 結(jié) 語(yǔ)
本文介紹了一種以FPGA為主處理芯片,Android終端通過(guò)無(wú)線控制室內(nèi)溫度,同時(shí)FGPA自動(dòng)控制溫度。滿足了人們對(duì)于溫度智能化控制要求,同時(shí)設(shè)計(jì)還有很多可以提升的地方。例如可以實(shí)現(xiàn)語(yǔ)音控制,可以和智能手表連接通過(guò)測(cè)量體溫自動(dòng)控制溫度。本設(shè)計(jì)在實(shí)驗(yàn)開發(fā)板上運(yùn)行,經(jīng)過(guò)測(cè)試,操作方便,成本低,適合大量推廣使用智能溫度控制和調(diào)節(jié)系統(tǒng)。
參考文獻(xiàn)
[1] 劉軍良.WiFi 技術(shù)在溫濕度遠(yuǎn)程監(jiān)測(cè)系統(tǒng)中的應(yīng)用[J].自動(dòng)化儀表,2014,35(6):79?82.
[2] 周皓東,黃燕,劉煒.基于WiFi無(wú)線傳感器網(wǎng)絡(luò)的水質(zhì)監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2015,34(5):99?101.
[3] 潘松,潘明.現(xiàn)代計(jì)算機(jī)組成原理[M].北京:科學(xué)出版社,2007:8.
[4] 陳甫.Android Studio 應(yīng)用[J].電腦知識(shí)與技術(shù),2014(8X):5659?5661.
[5] 李鷗.實(shí)戰(zhàn)Android應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,2012:187.
[6] 何步職,高惠芳,李小龍. 基于CAN總線的多點(diǎn)溫度采集系統(tǒng)設(shè)計(jì)[J].物聯(lián)網(wǎng)技術(shù),2015,5(6):36?37.