刘晓鑫,张佳祥
(1.南京工业职业技术学院 江苏 南京 210023;2.南京工程学院 江苏 南京 210023)
基于单片机的无线蓝牙降温系统
刘晓鑫1,张佳祥2
(1.南京工业职业技术学院 江苏 南京210023;2.南京工程学院 江苏 南京210023)
采用单片机控制蓝牙向上位机发送和接收无线信号,对电机转速进行调控,从而达到降低液体温度的目的。该设计利用单片机,通过温度传感器DS18B20向上位机发送温度数据。上位机收到数据后,可以根据不同的温度点击上位机的操作按钮,向下位机发送指令,控制电机的转速,最终完成对高温液体的降温。通过实验验证,该系统确实能够实时掌握液体温度,并能够取得良好的降温效果。
单片机;蓝牙;温度传感器;上位机;降温
传统的降低液体温度的方法主要有两种,一是将高温液体与低温液体混合后达到降温的目的,另一种是通过加快液体的蒸发来降低液体温度,这主要根据物理中的蒸发吸热原理想出的方法。随着社会的发展,科技水平的提高,家庭生活用品变得越来越智能化。传统的对于热饮料的降温方式是加入冰块,一段时间过去以后,虽然能够增加饮料的口感,但是由于冰块融化,却将饮料或溶液的浓度降低了,这是一个弊端。当然,实现另一种对高温液体的降温的方式,就是将盛有液体的容器置于冰水中,这样的降温方法是最有效的。可是,制造冰水的成本还是比较巨大的,由于水的比热大,降低一度需要消耗很多能量。另外,制造比室温还要低的冰水所需要的设备也是昂贵的。为了能够在尽量不改变液体的质量的情况下,尽快降低高温液体温度,急需设计一种装置来达到通过蒸发来快速降温。本文通过设计上位机软件,通过蓝牙向下位机发送指令,查询液体温度信息,根据温度大小,发送不同的命令给下位机,下位机通过蓝牙从模块接收上位机发来的指令,从而控制电机的转速,电机带动扇叶进行旋转,加快了液体表面空气的流动,最终达到以消耗最小电能,来达到降温的目的。
传统的降温方法就是在通过低温物体与高温物体相接触,从而形成一个温度的平衡,这样也能达到降温的目的,但是可能成本较高。本设计采用单片机作为主控芯片,同时利用到蓝牙主模块和从模块,主模块作为上位机的信号发送端,从模块作为下位机单片机的信号接收端,通过对上位机的操作,可以控制下位机的电机模块,进行不同程度的降温工作,另外通过温度传感器反馈到上位机的信息,从而无需人工去感受液体的温度,从另一方面提高了测温的准确性,使得能够对液体温度进行实时掌控[1]。
该降温系统的结构框图如图1所示。
图1 系统结构框图Fig.1 System diagram
由图1可以看出该系统一共可以分为七大模块,其中上位机部分就是电脑主机,键盘与之相连接,在本设计中的实验验证阶段采用的是笔记本电脑作为上位机,上位机还包括显示部分,方便人机对话,操作键盘为人机对话提供了媒介,蓝牙主模块在系统中充当无线信号的发送装置,与上位机的接口是通过串口进行接口的,它的主要功能就是把上位机中的指令毫无差错的发送到下位机的蓝牙接收模块中,也就是蓝牙从模块[2]。下位机中的蓝牙从模块负责接收上位机传过来的指令或数据,送到单片机中进行处理,单片机AT89C52构成了最小系统,通过不同的指令完成对电机的控制,在系统中,电机带动扇叶进行转动,温度传感器负责把接收到的温度数据,通过单片机的处理以后,回传到上位机中。上位机是通过反馈的温度数据,做出判断,从而下发不同的控制指令。
3.1上位机蓝牙主模块设计
由于上位机就是一台PC机,在这里就不对电脑进行详细介绍了,这里的蓝牙主模块是该系统中核心的通信部件,如图2中HC05蓝牙发送主模块图所示。
图2 HC05蓝牙发送主模块图Fig.2 Main diagram of sending bluetooth
本系统中的HC05蓝牙模块来自于德飞莱公司,其实他就是一个蓝牙串口,再简单的说他就是一个串口。它可以替代现有的串口线,但不可完全替代,是有参数指标的,其基本参数主要有:
1)采用CSR主流蓝牙芯片,蓝牙V2.0协议标准。
2)串口模块工作默认电压3.6~6 V。
3)波特率为4 800,9 600,19 200,38 400,57 600,115 200用户可设置。默认为9 600。
4)核心模块尺寸大小为:28 mm×15 mm×2.35 mm
5)工作电流:配对中:30~40 mA,配对完毕未通信:2~8 mA通信中:8 mA
6)休眠电流:无休眠
7)用于GPS导航系统,水电煤气抄表系统,工业现场采控系统。
8)可以与蓝牙笔记本电脑、电脑加蓝牙适配器、PDA等设备进行无缝连接。
在此模块中,USB转TTL模块与电脑连接时,需要在电脑上安装对应的驱动文件,这个驱动已由模块的供应商提供,安装好这个驱动以后,就能够在电脑的设备管理器中看到对应的串口COM4,这样PC机就可以通过串口与HC05主模块进行信息交互了,例如可以发送些指令设定HC05的工作模式,设定其名称等,当然需要有相应的终端界面可以进行输入操作[3]。
3.2下位机无线接收模块设计
下位机主要由HC05从模块,单片机最小系统,温度传感器及电机构成,如图3中下位机模块电路图所示。
图3 下位机模块电路图Fig.3 Circuit of receiver model
图3很清晰的画出了下位机的完整电路图,下位机HC05模块为无线信号接收从模块,在工作时,主模块主动与其配对后,发生数据交互,主要接收来自上位机的指令,单片机通过接收到的不同字符串进行处理,对未定义的字符串不做处理,单片机定时对DS18B20温度传感器进行读写操作,将温度数据暂存寄存器供上位机查询,整个电路从左到右分别是HC05蓝牙从模块,单片机最小系统,电机模块,测温模块,其中电机模块由DAC0808构成,该芯片输出与一个放大器相连,通过放大后将电压加在直流电机两端,从而驱动电机工作,单靠单片机的输出,电压较小无法完全驱动,DAC0808的主要参数为[4]:快速转换时间为150 ns,高速输入乘以转换率为:8 mA/μs,该芯片是低功耗的,最大功耗为33 mW。该DAC是8位的,也就是输入的范围是0~255,输出电压是从0~10 V变化的,那么最小精度就是10/255 V了,但是经过一个集成运放后是可以驱动一个电机转动的。
4.1上位机软件设计
本次使用的蓝牙无线模块是德飞莱无线模块,该模块一共有两种工作模式,一种是:命令工作模式,另一种是:自动连接工作模式。在自动搜索连接模式下:模块又可以分为3种工作角色,分别是:主,从和回环。当模块处于自动连接工作模式时,将自动根据设定的方式连接,进行数据传输。当模块处于命令响应工作模式时,能执行所有的AT命令,用户可向模块发送各种AT指令,为模块设置参数或发布控制命令。通过模块的外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换[5]。为了方便传输数据,在本次设计中,通过编写上位机软件,实现了打开串口,关闭串口,设定蓝牙模块的任意模式等功能,如图4中上位机功能界面图所示。
图4 上位机功能界面图Fig.4 Diagram of host computer
图4的功能界面是通过 VB6.0进行编写的。下面仅针对其中的部分按钮的代码进行叙述,在VB中,数据的流动都是通过一定的事件进行触发的,例如每个按钮都有它的click事件,当点击一个按钮时便会触发一个程序的执行,在VB中有专门的MSComm控件,有了这个控件,再安装一个USBTTL驱动,便可以直接编写串口程序,通过电脑连接的串口发送数据了。在打开串口的程序窗体中输入下列代码:
Private Sub CmdOpenPort_Click()
MSComm1.CommPort=1‘设置串口号为Com1’
MSComm1.PortOpen=True‘打开串口’
MSComm1.InputMode=comInputModeText‘以字符方式输入’
MSComm1.InputLen=0‘从输入缓冲区输入所有字符’End Sub
关于其他的按键代码就不一一列出来了,关闭串口时只要将MSComm1.PortOpen置为False即把串口关闭了。模块在出厂时默认状态是从机工作模式,如果需要作为无线串口使用,那么需要将2个模块进行配对才能使用。一个主机和一个从机才能进行配对,所以需要把其中一个设置成主机,另一个保持不变。要想达成这样的配对需要进行如下操作[6]:
第一步:按住蓝牙串口模块上的按键不松手,然后给模块上电,直到模块上的指示灯以1 Hz的频率慢闪,然后松开按键。第二步:点击串口调试软件上的设置主机按钮,软件返回“OK”即可。点击设置主机按钮的时候,实际上是给蓝牙主模块发送的AT指令,具体为:AT+ROLE=1,此时该指令通过串口发送给蓝牙主模块。第三步:点击“任意模式”按钮,直接返回 “OK”。当点击任意模式的时候,等效于发送 “AT+ CMODE=1”到主模块,这些指令都是要加入到上位机的按键代码中的。第四步:点击查询主机和查询模式按钮,返回的参数是+RLOE=1和CMODE=1,这样就代表设置成功。第五步:拔掉蓝牙模块电源,按正常模式上电就可以按主机模式工作了。第六步:配对成功后,主从两个模块就相当于一个串口线了,可以替代原有的串口,此时就不分主从机了,也就是说像一根线一样,可以调换连接。连接成功后,就可以给单片机发送指令查询温度或者控制电机了。
4.2下位机软件设计
在下位机中,主要有以下几个部分,串口通信软件模块,温度查询与计算模块,电机转速控制模块,从上位机界面可以看出每点击一个按钮都会向下位机串口发送数据,因此下位机的串口是主要模块,其串口的接收中断函数如下:
当然在单片机的程序中,一定要初始化好温度传感器模块DS18B20,点击查询温度按钮的时候,相当于串口接收到字符串:checktemp,紧接着在主程序中,去调用温度查询函数search_the_temperature(),把查询到的温度结果又通过串口模块的发送函数,发送到上位机,这样就完成了一次通信。同样对于按钮电机停止,相当于串口接收到字符串:stop,紧接着在主程序中需要对这样的字符串进行处理,从而调用相应的停止函数stop_the_machine(),在此函数中会将P0口全部置为低电平,这样电机就不会转了,同样依次类推,低速按钮就是在low_the_machine()函数中将P0口给予50以下的数值,这样经过DA变换之后,电机还是慢速运转的,也能起到缓慢降低液体温度效果,在这里就不再一一赘述其他中速和加速按钮的功能了,总而言之[7],下位机主要根据单片机接收到的不同字符串采取不同的处理。下位机代码编写以后,整个系统就算搭建完成,下面主要进行的就是测试工作了。
在本设计中,仅仅利用两个蓝牙模块实现了一种无线串口的功能,使得能够通过电脑上的界面就能观测到待测液体的实时温度,在使用蓝牙模块的时候无需知道其内部的传输协议及蓝牙的硬件结构。只需对蓝牙模块进行简单的AT命令设置,设置好了以后,在上位机上编写界面功能模块,通过点击按钮,将设定好的AT指令发送到蓝牙模块中,主从机配对成功后,蓝牙串口就完全等效于一个有线的串口,下面上位机与下位机就会完全按照串口通信协议进行数据交互。经过实验验证,通过上位机界面能够实时查询液体温度,也能够在上位机上进行随时的电机控制,降温效果良好。
[1]楼然苗.单片机课程设计指导[M].北京:北京航空航天大学出版社,2007.
[2]戴仙金.51单片机及其C语言程序开发实例[M].北京:清华大学出版社,2008.
[3]彭伟.单片机C语言程序设计实训100例[M].北京:电子工业出版社,2009.
[4]牟艳.计算机软件技术基础 [M].北京:机械工业出版社,2007.
[5]朱洪涛.基于Android平台的数据采集系统设计[J].自动化与仪表,2013,28(3):31-35.
[6]康华光.电子技术基础(数字部分)[M].北京:高等教育出版社,1999.
[7]李江全.Visual Basic.Net串口通信及测控应用典型实例[M].北京:电子工业出版社,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稿件编号:201504146
刘晓鑫(1988—),男,江苏南京人,硕士,助教。研究方向:信号与信息处理,嵌入式系统开发。