劉曉鑫,張佳祥
(1.南京工業(yè)職業(yè)技術(shù)學(xué)院 江蘇 南京 210023;2.南京工程學(xué)院 江蘇 南京 210023)
基于單片機(jī)的無(wú)線藍(lán)牙降溫系統(tǒng)
劉曉鑫1,張佳祥2
(1.南京工業(yè)職業(yè)技術(shù)學(xué)院 江蘇 南京210023;2.南京工程學(xué)院 江蘇 南京210023)
采用單片機(jī)控制藍(lán)牙向上位機(jī)發(fā)送和接收無(wú)線信號(hào),對(duì)電機(jī)轉(zhuǎn)速進(jìn)行調(diào)控,從而達(dá)到降低液體溫度的目的。該設(shè)計(jì)利用單片機(jī),通過(guò)溫度傳感器DS18B20向上位機(jī)發(fā)送溫度數(shù)據(jù)。上位機(jī)收到數(shù)據(jù)后,可以根據(jù)不同的溫度點(diǎn)擊上位機(jī)的操作按鈕,向下位機(jī)發(fā)送指令,控制電機(jī)的轉(zhuǎn)速,最終完成對(duì)高溫液體的降溫。通過(guò)實(shí)驗(yàn)驗(yàn)證,該系統(tǒng)確實(shí)能夠?qū)崟r(shí)掌握液體溫度,并能夠取得良好的降溫效果。
單片機(jī);藍(lán)牙;溫度傳感器;上位機(jī);降溫
傳統(tǒng)的降低液體溫度的方法主要有兩種,一是將高溫液體與低溫液體混合后達(dá)到降溫的目的,另一種是通過(guò)加快液體的蒸發(fā)來(lái)降低液體溫度,這主要根據(jù)物理中的蒸發(fā)吸熱原理想出的方法。隨著社會(huì)的發(fā)展,科技水平的提高,家庭生活用品變得越來(lái)越智能化。傳統(tǒng)的對(duì)于熱飲料的降溫方式是加入冰塊,一段時(shí)間過(guò)去以后,雖然能夠增加飲料的口感,但是由于冰塊融化,卻將飲料或溶液的濃度降低了,這是一個(gè)弊端。當(dāng)然,實(shí)現(xiàn)另一種對(duì)高溫液體的降溫的方式,就是將盛有液體的容器置于冰水中,這樣的降溫方法是最有效的??墒牵圃毂某杀具€是比較巨大的,由于水的比熱大,降低一度需要消耗很多能量。另外,制造比室溫還要低的冰水所需要的設(shè)備也是昂貴的。為了能夠在盡量不改變液體的質(zhì)量的情況下,盡快降低高溫液體溫度,急需設(shè)計(jì)一種裝置來(lái)達(dá)到通過(guò)蒸發(fā)來(lái)快速降溫。本文通過(guò)設(shè)計(jì)上位機(jī)軟件,通過(guò)藍(lán)牙向下位機(jī)發(fā)送指令,查詢液體溫度信息,根據(jù)溫度大小,發(fā)送不同的命令給下位機(jī),下位機(jī)通過(guò)藍(lán)牙從模塊接收上位機(jī)發(fā)來(lái)的指令,從而控制電機(jī)的轉(zhuǎn)速,電機(jī)帶動(dòng)扇葉進(jìn)行旋轉(zhuǎn),加快了液體表面空氣的流動(dòng),最終達(dá)到以消耗最小電能,來(lái)達(dá)到降溫的目的。
傳統(tǒng)的降溫方法就是在通過(guò)低溫物體與高溫物體相接觸,從而形成一個(gè)溫度的平衡,這樣也能達(dá)到降溫的目的,但是可能成本較高。本設(shè)計(jì)采用單片機(jī)作為主控芯片,同時(shí)利用到藍(lán)牙主模塊和從模塊,主模塊作為上位機(jī)的信號(hào)發(fā)送端,從模塊作為下位機(jī)單片機(jī)的信號(hào)接收端,通過(guò)對(duì)上位機(jī)的操作,可以控制下位機(jī)的電機(jī)模塊,進(jìn)行不同程度的降溫工作,另外通過(guò)溫度傳感器反饋到上位機(jī)的信息,從而無(wú)需人工去感受液體的溫度,從另一方面提高了測(cè)溫的準(zhǔn)確性,使得能夠?qū)σ后w溫度進(jìn)行實(shí)時(shí)掌控[1]。
該降溫系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 System diagram
由圖1可以看出該系統(tǒng)一共可以分為七大模塊,其中上位機(jī)部分就是電腦主機(jī),鍵盤與之相連接,在本設(shè)計(jì)中的實(shí)驗(yàn)驗(yàn)證階段采用的是筆記本電腦作為上位機(jī),上位機(jī)還包括顯示部分,方便人機(jī)對(duì)話,操作鍵盤為人機(jī)對(duì)話提供了媒介,藍(lán)牙主模塊在系統(tǒng)中充當(dāng)無(wú)線信號(hào)的發(fā)送裝置,與上位機(jī)的接口是通過(guò)串口進(jìn)行接口的,它的主要功能就是把上位機(jī)中的指令毫無(wú)差錯(cuò)的發(fā)送到下位機(jī)的藍(lán)牙接收模塊中,也就是藍(lán)牙從模塊[2]。下位機(jī)中的藍(lán)牙從模塊負(fù)責(zé)接收上位機(jī)傳過(guò)來(lái)的指令或數(shù)據(jù),送到單片機(jī)中進(jìn)行處理,單片機(jī)AT89C52構(gòu)成了最小系統(tǒng),通過(guò)不同的指令完成對(duì)電機(jī)的控制,在系統(tǒng)中,電機(jī)帶動(dòng)扇葉進(jìn)行轉(zhuǎn)動(dòng),溫度傳感器負(fù)責(zé)把接收到的溫度數(shù)據(jù),通過(guò)單片機(jī)的處理以后,回傳到上位機(jī)中。上位機(jī)是通過(guò)反饋的溫度數(shù)據(jù),做出判斷,從而下發(fā)不同的控制指令。
3.1上位機(jī)藍(lán)牙主模塊設(shè)計(jì)
由于上位機(jī)就是一臺(tái)PC機(jī),在這里就不對(duì)電腦進(jìn)行詳細(xì)介紹了,這里的藍(lán)牙主模塊是該系統(tǒng)中核心的通信部件,如圖2中HC05藍(lán)牙發(fā)送主模塊圖所示。
圖2 HC05藍(lán)牙發(fā)送主模塊圖Fig.2 Main diagram of sending bluetooth
本系統(tǒng)中的HC05藍(lán)牙模塊來(lái)自于德飛萊公司,其實(shí)他就是一個(gè)藍(lán)牙串口,再簡(jiǎn)單的說(shuō)他就是一個(gè)串口。它可以替代現(xiàn)有的串口線,但不可完全替代,是有參數(shù)指標(biāo)的,其基本參數(shù)主要有:
1)采用CSR主流藍(lán)牙芯片,藍(lán)牙V2.0協(xié)議標(biāo)準(zhǔn)。
2)串口模塊工作默認(rèn)電壓3.6~6 V。
3)波特率為4 800,9 600,19 200,38 400,57 600,115 200用戶可設(shè)置。默認(rèn)為9 600。
4)核心模塊尺寸大小為:28 mm×15 mm×2.35 mm
5)工作電流:配對(duì)中:30~40 mA,配對(duì)完畢未通信:2~8 mA通信中:8 mA
6)休眠電流:無(wú)休眠
7)用于GPS導(dǎo)航系統(tǒng),水電煤氣抄表系統(tǒng),工業(yè)現(xiàn)場(chǎng)采控系統(tǒng)。
8)可以與藍(lán)牙筆記本電腦、電腦加藍(lán)牙適配器、PDA等設(shè)備進(jìn)行無(wú)縫連接。
在此模塊中,USB轉(zhuǎn)TTL模塊與電腦連接時(shí),需要在電腦上安裝對(duì)應(yīng)的驅(qū)動(dòng)文件,這個(gè)驅(qū)動(dòng)已由模塊的供應(yīng)商提供,安裝好這個(gè)驅(qū)動(dòng)以后,就能夠在電腦的設(shè)備管理器中看到對(duì)應(yīng)的串口COM4,這樣PC機(jī)就可以通過(guò)串口與HC05主模塊進(jìn)行信息交互了,例如可以發(fā)送些指令設(shè)定HC05的工作模式,設(shè)定其名稱等,當(dāng)然需要有相應(yīng)的終端界面可以進(jìn)行輸入操作[3]。
3.2下位機(jī)無(wú)線接收模塊設(shè)計(jì)
下位機(jī)主要由HC05從模塊,單片機(jī)最小系統(tǒng),溫度傳感器及電機(jī)構(gòu)成,如圖3中下位機(jī)模塊電路圖所示。
圖3 下位機(jī)模塊電路圖Fig.3 Circuit of receiver model
圖3很清晰的畫出了下位機(jī)的完整電路圖,下位機(jī)HC05模塊為無(wú)線信號(hào)接收從模塊,在工作時(shí),主模塊主動(dòng)與其配對(duì)后,發(fā)生數(shù)據(jù)交互,主要接收來(lái)自上位機(jī)的指令,單片機(jī)通過(guò)接收到的不同字符串進(jìn)行處理,對(duì)未定義的字符串不做處理,單片機(jī)定時(shí)對(duì)DS18B20溫度傳感器進(jìn)行讀寫操作,將溫度數(shù)據(jù)暫存寄存器供上位機(jī)查詢,整個(gè)電路從左到右分別是HC05藍(lán)牙從模塊,單片機(jī)最小系統(tǒng),電機(jī)模塊,測(cè)溫模塊,其中電機(jī)模塊由DAC0808構(gòu)成,該芯片輸出與一個(gè)放大器相連,通過(guò)放大后將電壓加在直流電機(jī)兩端,從而驅(qū)動(dòng)電機(jī)工作,單靠單片機(jī)的輸出,電壓較小無(wú)法完全驅(qū)動(dòng),DAC0808的主要參數(shù)為[4]:快速轉(zhuǎn)換時(shí)間為150 ns,高速輸入乘以轉(zhuǎn)換率為:8 mA/μs,該芯片是低功耗的,最大功耗為33 mW。該DAC是8位的,也就是輸入的范圍是0~255,輸出電壓是從0~10 V變化的,那么最小精度就是10/255 V了,但是經(jīng)過(guò)一個(gè)集成運(yùn)放后是可以驅(qū)動(dòng)一個(gè)電機(jī)轉(zhuǎn)動(dòng)的。
4.1上位機(jī)軟件設(shè)計(jì)
本次使用的藍(lán)牙無(wú)線模塊是德飛萊無(wú)線模塊,該模塊一共有兩種工作模式,一種是:命令工作模式,另一種是:自動(dòng)連接工作模式。在自動(dòng)搜索連接模式下:模塊又可以分為3種工作角色,分別是:主,從和回環(huán)。當(dāng)模塊處于自動(dòng)連接工作模式時(shí),將自動(dòng)根據(jù)設(shè)定的方式連接,進(jìn)行數(shù)據(jù)傳輸。當(dāng)模塊處于命令響應(yīng)工作模式時(shí),能執(zhí)行所有的AT命令,用戶可向模塊發(fā)送各種AT指令,為模塊設(shè)置參數(shù)或發(fā)布控制命令。通過(guò)模塊的外部引腳(PIO11)輸入電平,可以實(shí)現(xiàn)模塊工作狀態(tài)的動(dòng)態(tài)轉(zhuǎn)換[5]。為了方便傳輸數(shù)據(jù),在本次設(shè)計(jì)中,通過(guò)編寫上位機(jī)軟件,實(shí)現(xiàn)了打開串口,關(guān)閉串口,設(shè)定藍(lán)牙模塊的任意模式等功能,如圖4中上位機(jī)功能界面圖所示。
圖4 上位機(jī)功能界面圖Fig.4 Diagram of host computer
圖4的功能界面是通過(guò) VB6.0進(jìn)行編寫的。下面僅針對(duì)其中的部分按鈕的代碼進(jìn)行敘述,在VB中,數(shù)據(jù)的流動(dòng)都是通過(guò)一定的事件進(jìn)行觸發(fā)的,例如每個(gè)按鈕都有它的click事件,當(dāng)點(diǎn)擊一個(gè)按鈕時(shí)便會(huì)觸發(fā)一個(gè)程序的執(zhí)行,在VB中有專門的MSComm控件,有了這個(gè)控件,再安裝一個(gè)USBTTL驅(qū)動(dòng),便可以直接編寫串口程序,通過(guò)電腦連接的串口發(fā)送數(shù)據(jù)了。在打開串口的程序窗體中輸入下列代碼:
Private Sub CmdOpenPort_Click()
MSComm1.CommPort=1‘設(shè)置串口號(hào)為Com1’
MSComm1.PortOpen=True‘打開串口’
MSComm1.InputMode=comInputModeText‘以字符方式輸入’
MSComm1.InputLen=0‘從輸入緩沖區(qū)輸入所有字符’End Sub
關(guān)于其他的按鍵代碼就不一一列出來(lái)了,關(guān)閉串口時(shí)只要將MSComm1.PortOpen置為False即把串口關(guān)閉了。模塊在出廠時(shí)默認(rèn)狀態(tài)是從機(jī)工作模式,如果需要作為無(wú)線串口使用,那么需要將2個(gè)模塊進(jìn)行配對(duì)才能使用。一個(gè)主機(jī)和一個(gè)從機(jī)才能進(jìn)行配對(duì),所以需要把其中一個(gè)設(shè)置成主機(jī),另一個(gè)保持不變。要想達(dá)成這樣的配對(duì)需要進(jìn)行如下操作[6]:
第一步:按住藍(lán)牙串口模塊上的按鍵不松手,然后給模塊上電,直到模塊上的指示燈以1 Hz的頻率慢閃,然后松開按鍵。第二步:點(diǎn)擊串口調(diào)試軟件上的設(shè)置主機(jī)按鈕,軟件返回“OK”即可。點(diǎn)擊設(shè)置主機(jī)按鈕的時(shí)候,實(shí)際上是給藍(lán)牙主模塊發(fā)送的AT指令,具體為:AT+ROLE=1,此時(shí)該指令通過(guò)串口發(fā)送給藍(lán)牙主模塊。第三步:點(diǎn)擊“任意模式”按鈕,直接返回 “OK”。當(dāng)點(diǎn)擊任意模式的時(shí)候,等效于發(fā)送 “AT+ CMODE=1”到主模塊,這些指令都是要加入到上位機(jī)的按鍵代碼中的。第四步:點(diǎn)擊查詢主機(jī)和查詢模式按鈕,返回的參數(shù)是+RLOE=1和CMODE=1,這樣就代表設(shè)置成功。第五步:拔掉藍(lán)牙模塊電源,按正常模式上電就可以按主機(jī)模式工作了。第六步:配對(duì)成功后,主從兩個(gè)模塊就相當(dāng)于一個(gè)串口線了,可以替代原有的串口,此時(shí)就不分主從機(jī)了,也就是說(shuō)像一根線一樣,可以調(diào)換連接。連接成功后,就可以給單片機(jī)發(fā)送指令查詢溫度或者控制電機(jī)了。
4.2下位機(jī)軟件設(shè)計(jì)
在下位機(jī)中,主要有以下幾個(gè)部分,串口通信軟件模塊,溫度查詢與計(jì)算模塊,電機(jī)轉(zhuǎn)速控制模塊,從上位機(jī)界面可以看出每點(diǎn)擊一個(gè)按鈕都會(huì)向下位機(jī)串口發(fā)送數(shù)據(jù),因此下位機(jī)的串口是主要模塊,其串口的接收中斷函數(shù)如下:
當(dāng)然在單片機(jī)的程序中,一定要初始化好溫度傳感器模塊DS18B20,點(diǎn)擊查詢溫度按鈕的時(shí)候,相當(dāng)于串口接收到字符串:checktemp,緊接著在主程序中,去調(diào)用溫度查詢函數(shù)search_the_temperature(),把查詢到的溫度結(jié)果又通過(guò)串口模塊的發(fā)送函數(shù),發(fā)送到上位機(jī),這樣就完成了一次通信。同樣對(duì)于按鈕電機(jī)停止,相當(dāng)于串口接收到字符串:stop,緊接著在主程序中需要對(duì)這樣的字符串進(jìn)行處理,從而調(diào)用相應(yīng)的停止函數(shù)stop_the_machine(),在此函數(shù)中會(huì)將P0口全部置為低電平,這樣電機(jī)就不會(huì)轉(zhuǎn)了,同樣依次類推,低速按鈕就是在low_the_machine()函數(shù)中將P0口給予50以下的數(shù)值,這樣經(jīng)過(guò)DA變換之后,電機(jī)還是慢速運(yùn)轉(zhuǎn)的,也能起到緩慢降低液體溫度效果,在這里就不再一一贅述其他中速和加速按鈕的功能了,總而言之[7],下位機(jī)主要根據(jù)單片機(jī)接收到的不同字符串采取不同的處理。下位機(jī)代碼編寫以后,整個(gè)系統(tǒng)就算搭建完成,下面主要進(jìn)行的就是測(cè)試工作了。
在本設(shè)計(jì)中,僅僅利用兩個(gè)藍(lán)牙模塊實(shí)現(xiàn)了一種無(wú)線串口的功能,使得能夠通過(guò)電腦上的界面就能觀測(cè)到待測(cè)液體的實(shí)時(shí)溫度,在使用藍(lán)牙模塊的時(shí)候無(wú)需知道其內(nèi)部的傳輸協(xié)議及藍(lán)牙的硬件結(jié)構(gòu)。只需對(duì)藍(lán)牙模塊進(jìn)行簡(jiǎn)單的AT命令設(shè)置,設(shè)置好了以后,在上位機(jī)上編寫界面功能模塊,通過(guò)點(diǎn)擊按鈕,將設(shè)定好的AT指令發(fā)送到藍(lán)牙模塊中,主從機(jī)配對(duì)成功后,藍(lán)牙串口就完全等效于一個(gè)有線的串口,下面上位機(jī)與下位機(jī)就會(huì)完全按照串口通信協(xié)議進(jìn)行數(shù)據(jù)交互。經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,通過(guò)上位機(jī)界面能夠?qū)崟r(shí)查詢液體溫度,也能夠在上位機(jī)上進(jìn)行隨時(shí)的電機(jī)控制,降溫效果良好。
[1]樓然苗.單片機(jī)課程設(shè)計(jì)指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2007.
[2]戴仙金.51單片機(jī)及其C語(yǔ)言程序開發(fā)實(shí)例[M].北京:清華大學(xué)出版社,2008.
[3]彭偉.單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例[M].北京:電子工業(yè)出版社,2009.
[4]牟艷.計(jì)算機(jī)軟件技術(shù)基礎(chǔ) [M].北京:機(jī)械工業(yè)出版社,2007.
[5]朱洪濤.基于Android平臺(tái)的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀表,2013,28(3):31-35.
[6]康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分)[M].北京:高等教育出版社,1999.
[7]李江全.Visual Basic.Net串口通信及測(cè)控應(yīng)用典型實(shí)例[M].北京:電子工業(yè)出版社,2012.
System of lowing temperature in use of bluetooth based on MCU
LIU Xiao-xin1,ZHANG Jia-xiang2
(1.Nanjing Institute of Industry Technology,Nanjing 210023,China;2.Nanjing Institute of Technology,Nanjing 210023,China)
This model use bluetooth with the control of MCU to send and receive wireless signals for motor speed control in order to achieve the purpose of reducing the temperature of the liquid.The design transports the temperature data sent by the temperature sensor DS18B20 through MCU.After the host computer receiving the data,according to different temperatures button clicks on host computer,this operation causes that it sends commands to the receiver for controlling motor speed,the final completion of the high temperature of the liquid cooling.Experiments show that the system can really grasp the real-time temperature of the liquid and has the ability to achieve good cooling effect.
MCU;bluetooth;temperature sensor;host computer;low temperature
TN923
A
1674-6236(2016)05-0089-04
2015-04-15稿件編號(hào):201504146
劉曉鑫(1988—),男,江蘇南京人,碩士,助教。研究方向:信號(hào)與信息處理,嵌入式系統(tǒng)開發(fā)。