摘 要: 介绍了一种基于蓝牙与智能手机的远程信息采集与控制系统及蓝牙系统的无线传感网络系统架构、下位机、手机端与服务器端的相关设计,给出了相应软、硬件设计的流程图以及硬件模块的电路图。
关键词: 蓝牙;智能手机;智能家居;节点
我国智能家居行业在飞速发展,然而受高成本的限制,智能家居很难进入普通家庭。传统的智能家居都有专门的遥控器,而且不同的设备需要配备不同的遥控器,同时信息不能实时反馈给用户。本文介绍的系统采用智能手机自带的蓝牙,解决了这些问题。蓝牙技术的控制方法类似于现时红外线遥控器与电器之间的指令关系,区别在于相应产品需植入蓝牙晶片,使用2.402~2.480 GHz免付费、免申请的无线电频段。为避免此频段电子装置众多的相互干扰,因而辅以每秒1 600次高难度跳频以及加密、保密技术,传输速率在432 Kb/s~721 Kb/s不等,未来的版本将达2 Mb/s。植入了蓝牙芯片的手机、电脑等,在10 m的范围内,可作为无线话音及数据信息的传送,配合专用的扩大器,收发范围可远达100 m。结合了电路交换与分组交换的特点,可以进行异步数据通信,可以支持多达3个同时进行的同步话音信道,还可以使用一个信道同时传送异步数据和同步话音。最主要的是几乎所有手机都配备蓝牙功能,带宽完全可满足实时监控的需要,传输距离也足够家居环境的使用。蓝牙在局域型的信息采集与控制系统中有着良好的应用前景。
1 基于蓝牙的无线传感网络系统构架
1.1 蓝牙网络拓扑结构
蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。蓝牙工作在全球通用的2.4 GHz ISM频段,数据传输速率为1 Mb/s,时分双工方案被用来实现全双工传输,使用IEEE802.15协议。
每个蓝牙设备被分配一个唯一48 bit的蓝牙设备地址[1],它支持两种操作模式:主设备和从设备。其中主设备负责提供时钟同步信号和调频序列,从设备接收主设备的同步控制和调频控制。蓝牙支持点对点、点对多点的通信,最基本的组网方式是微微网。如图1所示,同一个微微网中的所有设备都跟随主设备的调频序列。在图1中,(a)是点对点的连接;(b)是点对多点的连接。本文中使用的是图1(b)的连接方式[2]。
1.2 远程信息采集与控制系统体系结构
基于蓝牙与智能手机的远程信息采集与控制系统主要由各个房间的有相应数据采集功能的蓝牙无线传感器节点、放置在家庭中心位置的具有数据处理能力的中心节点(具有蓝牙功能的收发器)、一款智能手机以及一个网络服务器终端组成[2]。各无线传感器通过蓝牙将采集的数据传送至中心节点,中心节点通过蓝牙将数据发送至手机端,手机端安装有专门的接收软件,可以接收下位机发送来的数据,并进行处理,将处理后数据发送至服务器。同时服务器对手机发送指令,手机可以对下位机发送指令,以实现实时监测、实时控制。图2反映了体系的完整结构。
2 下位机的设计
2.1 无线传感器网络节点的布置
不同的房间放置不同的传感器,如厨房放置一氧化碳传感器、温度传感器,卧室放置温湿度传感器、光强传感器。这些传感器节点离中心节点的的距离一般都不会超过10 m,这已经足够覆盖一般家庭所有房间。
2.2 下位机控制模块的设计
蓝牙模块处于等待连接状态,当手机第一次发出连接请求时需要输入蓝牙内置的密码,以后再连接时则不需要输入密码,除非密码改变。匹配成功后建立连接,蓝牙模块充当手机和微控制器(单片机)的通信信道,实现手机和微控制器的双向连接。用户通过手机经蓝牙向单片机发送命令,单片机接收到命令后,控制相应的执行模块,实现控制功能。例如:制作以52单片机为主控制器的学习型遥控器,经蓝牙模块与手机建立,用户便可以实现电视换台、控制音量等操作。同时微控制器还能将相关传感器采集的数据实时发送给手机,实现实时监测功能。如:温度传感器和烟雾传感器检测到数据超标后,将报警信号发送给单片机,单片机将报警信号发送给手机,通知用户火警[3]。
下位机模块原理如图3所示,模块分别为控制开关、蓝牙模块、红外发射模块和红外接收模块。开关可以控制各种家电的开关,蓝牙模块用于接收和发送数据,红外发射器负责控制红外遥控的家电,红外接收模块可以复制遥控器的发送红外的频率,以实系统现通用性。
3 手机端软件的设计
3.1 手机和蓝牙设备的通信
采用Java语言开发Adroid2.2版本以上的手机应用程序,该版本支持蓝牙通信。首先通过SDK提供的BluetoothAdapter类的startDiscovery()方法,扫描出附近与传感器相连的蓝牙设备并返回其物理地址,以列表形式展现;然后通过ListView的点击事件确定与哪台蓝牙设备进行连接,当选中一个物理地址之后,便会调用BluetoothSocket类的connect方法,使手机和该蓝牙设备建立基于TCP/IP协议的SOCKET连接。重点代码[4]如下:
BluetoothDevice mBTDevice=mBTAdapter.getRemoteDevice(dvcAddr);
mBTSocket=mBTDevice.createRfcommSocketToServiceRecord(dvcUUID);
mBTSocket.connect();
其中,dvcAddr为所要连接的蓝牙设备的物理地址,mBTDevice利用通用唯一识别码(dvcUUID)来创建一个BluetoothSocket对象,该对象利用connect方法与蓝牙设备建立连接。
建立连接之后,利用OutputStream对象的write方法可以向蓝牙设备发送信息,实现控制。并通过操作输入输出流进行交互(包括手机对蓝牙设备信息的采集以及对其操作指令的传达)。重点代码如下:
out=BTConnectActivity.mBTSocket.getOutputStream();
String str="2";
out.write(str.getBytes(),0,1);
上述代码以控制灯泡的开关为例,当字符为非0时(代码中为2),打开开关;当字符为0时,关闭开关。
3.2 手机和服务器交互
在手机端以提供一个上传界面的方式,显示从蓝牙设备接收的数据,通过点击事件,与上传服务器建立SOCKET连接,并发送之前从蓝牙设备接收到的数据。服务器在接收到数据之后会发送相应的反馈信息给手机端,再通过手机和蓝牙设备的交互通道,给予蓝牙设备相应的操作指令。重点代码如下:
Socket socket=new Socket("192.168.0.101",54322);
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter (socket. getOutputStream())),true);
out.println(mes);
其中,192.168.0.101是所要连接的服务器的IP地址,54322是端口号。通过输出流对象out的println方法,向服务器发送数据,并通过BufferReader对象br读取从服务器发来的数据。
手机端软件设计框图如图4所示。
4 服务器端软件的设计
服务器端是一个基于Java的图形用户界面(GUI),主要是实现显示接收到的数据以及与手机进行通信,可以接收手机上传简单的数字信息、图片、视频文件等,同时服务器可以控制手机,当终端管理员需要远程采取相关操作时,可直接通过控制手机来控制家里的一切。
本文提出了基于蓝牙与智能手机的远程信息采集与控制系统,分析研究了蓝牙网络的一般拓扑结构,采用蓝牙节点模块实现了无线终端的设计,以及传感器终端的接口电路设计,给出了手机软件模块设计的流程图,最后简单介绍了服务器端的功能。凭借蓝牙的低功耗及传输稳定、3G网络覆盖范围极广且传输速度快等特点,该系统具有很好的灵活性和可扩展性,可以广泛应用于野外勘探、医疗器械和智能家居等多个领域,具有广阔的市场发展前景。
参考文献
[1] CHATSCHIK B. An overview of the Bluetooth wireless technology[J]. IEEE Communications Magazine, 2001,39(12):86-94.
[2] 王宁,黄樟钦.智能手机远程家居监控系统的设计与实现[J].计算机应用,2005,25(9):2212-2213.
[3] 徐凤荣.ROK101007蓝牙模块及其在无线火灾自动报警系统中的应用[J].国外电子元器件,2006(11):54-57.
[4] 李宁.Android开发权威指南[M].北京:人民邮电出版社,2011.
[5] 金纯,许光辰,孙睿.蓝牙技术[M].北京:电子工业出版社,2001.
[6] BRAY J, STURMAN C F. Bluetooth connect without cables. second edition[M]. New Jersey: Prentice Hall PTR,2002.
[7] 吕鑫,王忠.ZigBee无线数据传输模块的设计与实现[J].安徽师范大学学报,2010,33(4):332-335.