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