基于蓝牙模块的智能家居网络设计_第1页
基于蓝牙模块的智能家居网络设计_第2页
基于蓝牙模块的智能家居网络设计_第3页
基于蓝牙模块的智能家居网络设计_第4页
基于蓝牙模块的智能家居网络设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要随着科学技术的开展和人们生活水平的提高,人们越来越注重自己生活环境的舒适、平安与便利。近年来兴起的智能家居系统满足了人们的这种需求,它有效地在家居环境中组建家庭信息网络,将各种家电产品结合成一个有机整体,对家电设备进行集中或异地的智能化控制与管理,并且能够与外界进行信息交流。蓝牙技术作为一种无线数据与语音通信的开放性全球标准,可提供低功耗、短距离的无线空中接口,在各种固定与移动设备之间实现无线通信。在移动通信、无线数据采集、无线遥控与遥测、计算机网络及自动控制等多种领域,蓝牙技术都有着广泛的应用。应用设计的蓝牙软硬件接口,本文开发了一个基于蓝牙模块的智能家居控制系统,在该系统中,上位机端通过USB控制蓝牙适配器,其发送的控制指令由下位机端蓝牙模块接收后传给单片机,并在单片机端编写了一个根本的蓝牙及模拟家电控制程序,从而实现了PC与模拟家电的无线控制功能。本文提供的蓝牙软硬件接口方案及数据传输模块,不仅可以用来进一步开发蓝牙高层协议,而且还可作为通用的接口函数和模块应用到多种无线场合。关键字:蓝牙技术;智能家居;蓝牙模块ABSTRACTWiththedevelopmentofscienceandtechnology,andtheimprovementofpeople’slivingstandards,peoplearepayingmoreandmoreattentiontothecomfortablity,safetyandconvenienceoftheirlivingenvironment.Theemergenceofsmarthomesysteminrecentyears,justmeetstheneedsofpeople.Iteffectivelyconstitutesappliancesintoahomeinformationnetworkandmakesallkindsofappliancescombinedintoanorganicwhole.Itcanintelligentlycontrolapplianceslocallyorremotely,andexchangeinformationwiththeoutsideworld.AsagloballyopenwirelessdataandspeechcommunicationspecificationBluetoo—thtechnologycanprovidelow-power、shortdistancewirelessairinterfaceandimplementwirelesscommunicationbetweenvariousfixedandmobileequipments.Bluetoothtechnologyhasawiderangeofapplicationsinmobilecommunications,wirelessdatacollections,wirelessremotecontrolandsensingComputernetworkandautomaticcontrolandotherareas.Usingthebluetoothhardwareandsoftwareinterfacedesigned,ThispaperdevelopedansmarthomefurnishingcontrolsystembasedonBluetoothmodule.Inthesystem,ThePCsideiscontrolledbyUSBbluetoothadapter.It’scontrolinstructionisreceivedbythelowerendofBluetoothmodulewhichsentittothemicrocontroller.AbasicbluetoothandhomeappliancecontrolsimulationprogramwaspreparedintheMCU.So,thesystemcanrealizewirelesscontrolfunctionofPCandsimulationofelectricalappliances.Andthen,datacanbetransmittedbetweenthetwoparts.Afterthat,afurtherdevelopmentwhichisfiletransmissionisimplemented.Keywords:Bluetoothtechnology;smarthome;Bluetoothmoudule目录前言1第一章绪论21.1课题研究背景21.2智能家居的开展状况21.3未来智能家居的开展趋势31.4研究的目的和意义31.5课题研究的内容4第二章蓝牙技术介绍52.1蓝牙系统组成52.2蓝牙协议栈62.3蓝牙控制器接口(HCI)分析62.3.1HCI概述62.3.2HCI传输层72.3.3HCI分组格式8第三章设计方案及模块介绍103.1蓝牙家居控制系统组成结构103.2主要硬件模块介绍10第四章系统硬件设计144.1下位机模块设计14PC机与蓝牙模块的连接164.3单片机与家用电器的连接17系统电源模块原理图17第五章系统软件设计195.1单片机端软件设计195.2PC端软件设计24第六章系统测试与分析29结论31致谢32参考文献33附录34前言随着科学技术的开展和人们生活水平的提高,人们越来越注重自己生活环境的舒适、平安与便利。近年来兴起的智能家居系统满足了人们的这种需求,它有效地在家居环境中组建家庭信息网络,将各种家电产品结合成一个有机整体,对家电设备进行集中或异地的智能化控制与管理,并且能够与外界进行信息交流。首先,在研究蓝牙SPP应用模型和我国《家庭控制子网通信协议标准》的根底上,经过比拟当前各种家庭内部组网技术的优劣,选择了基于蓝牙协议的家庭控制子网的实现方案。该方案使用蓝牙SPP模型来承载通用设备控制协议,降低了家庭控制子网组网过程中的难度,符合实际应用场景。其次,研究并提出了智能家居系统实现过程中处于核心地位的智能家居控制器的软硬件设计方案。在硬件方面,选用Samsung公司具有较高性价比的ARM9芯片S3C2410作为其CPU,完成了智能家居控制器的电源、显示、输入、存储以及无线蓝牙和GPRS的模块的电路设计;在软件方面,成功地将U-boot、嵌入式Linux内核和蓝牙协议栈BlueZ移植到了智能家居控制器目标板上,并在Linux内核中为系统各个硬件模块添加了相应的驱动程序。最后,对蓝牙模块进行了测试,实现了蓝牙的点对点通信,并且为系统开发了局部常用的界面。对研究工作做了总结,列出了所实现的研究成果以及有待实现的智能家居控制系统的功能。第一章绪论1.1课题研究背景智能家居,或称智能住宅,在英文中常用SmartHome、Intelligenthome,与此含义相近的还有家庭自动化(HomeAutomation)、电子家庭(ElectronicHome、E-home)、数字家园(Digitalfamily)、网络家居(NetworkHome),智能建筑(IntelligentBuilding)。智能家居是以住宅为平台,兼备建筑、网络通讯、信息家电、设备自动化,集系统、结构、效劳、管理为一体的高效、舒适、平安、便利、环保的居住环境。智能家居是在家庭产品自动化、智能化的根底上,通过网络按拟人化的要求而实现的。智能家居可以定义为一个过程或者一个系统,利用先进的计算机技术、网络通讯技术、综合布线技术、无线技术、将与家居生活有关的各种子系统,有机地结合在一起。与普通家居相比,由原来的被动静止结构转变为具有能动智能的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交流畅通。智能家居强调人的主观能动性,要求重视人与居住环境的协调,能够随心所欲地控制室内居住环境。1.2智能家居的开展状况智能家居从上世纪八十年代兴起于日本和欧美,九十年代末引入中国,目前美国有7000万家庭依靠智能家庭网络设备生活。近年来,以美国微软公司及摩托罗拉公司等为首的一批国际知名企业先后进入智能家庭网络的研究及开发领域,分辨开发了“梦幻之家〞、“家庭主任〞、“居所之门〞等家庭智能设备,3COM公司研发出家用无线网关等网络产品,并与Microsoft联手开发通用式即插即用的家庭网络系统。该系统方便地连接家电与网络,可以高速传输文字、语音、视听等咨询。这套产品也适用于小型办公室。国内厂商也在进行智能化家庭网络产品的研发和生产,一大批大型IT企业利用自身在资金与技术等方面的优势,在低端市场上已占据了相当重要的地位。清华同方在智能化家庭网络领域与建设部智能化专家委员会共同设立了智能住宅开放实验室,还取得了著名综合布线厂商西蒙、百通全线产品在中国的总代理资格。北京德达创先科技集团先后开发了LDM-2000,智能家居控制器、HomeNet网络化综合管理系统,并开通了中国智能建筑效劳网络提供智能化建筑的在线咨询与在线技术支持该网站已成为国内建筑化领域的权威网站。1.3未来智能家居的开展趋势如何使家居环境变得便利、舒适、人性化、智能化,真正提高人们的生活品质,才是智能家居系统的开展方向,其开展趋势主要有以下几个方面:(1)向个性化方向开展人们可以根据自己的需要和喜好,选择不同的功能,智能家居开展将不断满足人们要求个性化的需求。(2)向系统高度集成化方向开展信息家电控制功能、呼叫对讲功能、自动化管理功能、安防监控功能、设备自检功能等多种功能将被集成在一起,统一调度,从而降低本钱。随着科学技术的不断开展,系统的集成度将越来越高。(3)向网络化方向开展网络化是计算机、通讯、电子和物联网等多种技术开展的必然趋势,也是智能家居智能化的一个重要表达。(4)向绿色环保方向开展环保是全球的要求,智能家居如何利用现有技术减少功耗、降低对社区和家庭的环境污染,提高生活环境的质量,是智能化的一个重要目标。研究的目的和意义随着经济的开展和后PC、物联网时代的到来,人们对自身居住环境的要求在不断地提高,智能化家居将逐渐成为中国家居市场的主流。目前,在上海、北京、广州、深圳等经济比拟兴旺的地区都已经建立了一批智能型住宅小区,并且正飞速地向其他地区辐射。智能家居将大大改变人们的日常生活和工作方式,带动传统家电制造业、房屋智能化装修、社区信息效劳、以及房地产业等相关产业的蓬勃开展。家居智能化、建筑信息化以及相关技术产品正在得到飞速地开展,智能化家居将很快将会走入人们的生活。建设部已将智能化住宅小区列为国家重点开展方向,智能化小区包括了智能家居的设计,智能家居建设是智能小区建设的一局部。目前,国家已经投入了大量的财力和人力在设计和开发符合中国国情的智能家居,因此嵌入式智能家居工程的应用前景非常广阔的。但是,由于智能家居市场的开展还处于初级阶段,智能家居的中的信息设备之间的通信还不是很标准。为此早在2005年,国家已经制定出了《家庭网络系统体系结构及参考模型家庭控制子网通信协议标准》、《家庭控制子网通信协议标准》等标准来推动和管理中国智能家居市场的健康地开展。智能家居控制器是智能家居的核心器件,人们只需一个控制器就可以控制家中的所有电器设备。本文主要研究了智能家居网络的组建,智能家居控制器的设计,这是智能家居实现过程中的重要内容,具有广泛的现实意义,为将来的智能家居提供了一种可行的设计方案。1.5课题研究的内容主要通过使各种各样的智能家电都遵守蓝牙协议构建家庭控制子网,在完成智能家居控制器硬件与软件设计的根底上,将控制器应用到了网络化的智能家居系统中。课题研究主要内容具体如下:(1)通信协议的选择分析家庭内部网络的体系结构,对当前智能家居组网协议进行研究和比拟,选定了一个符合家庭内部组网具体要求的通信协议。(2)智能家居控制器硬件的设计首先,根据对智能家居控制器的具体要求例如功耗、本钱、体积等,为其选择一个性价比比拟高的CPU;然后,分别对其余各个功能模块进行硬件电路的设计与调试。(3)智能家居控制器软件的设计。给出软件流程框图,包括运行在单片机和PC机上程序,本论文中均采用C语言进行编写第二章蓝牙技术介绍2.1蓝牙系统组成典型的蓝牙系统可分为5个单元,即无线射频单元、链路控制单元、链路管理单元、蓝牙协议软件单元和主机应用软件单元。(1)无线射频单元蓝牙是以无线LAN的IEEE802.11标准技术为根底的,使用2.4GHzISM全球通自由波段。蓝牙天线属于微带天线,空中接口建立在天线电平为0dBm根底上,遵从FCC(FederalCommunicationsCommission,美国联邦通信委员会.)有关OdBm电平的ISM频段的标准。由于采用扩频技术,发射功率可以到达100mW。系统最大跳频速率为1600跳/秒,在2.402GHz和2.480GHz之间,采用79个间隔为1MHz的频点来实现【31。系统设计通信距离为10cm~10m,如增大发射功率,其距离可长达100m。(2)链路控制单元蓝牙的链路控制单元,又称基带单元,包括3个集成芯片:连接控制器、基带处理器以及射频传输/接收器,此外还使用了3—5个单独调谐元件。综述链路控制单元描述了基带链路控制器的数字信号处理标准。基带链路控制器负责处理基带协议和其它一些低层常规协议。链路控制单元的主要功能包括:建立物理链路及网络连接,包括面向连接的同步链路SCO(SynchronousConnectionOriented)链路、异步链路ACL(AsynchronousConnectionless)链路及匹克网;过失控制;在物理层提供验证和加密,其中验证基于“请求.响应〞运算法那么实现,为用户建立一个个人的信任域,而加密那么用来保护连接中的个人信息。(3)链路管理单元链路管理器LM(LinkManager)软件模块设计了链路的数据设置、鉴权、链路硬件配置和其它一些协议。链路管理器能够发现其它蓝牙设备的链路管理器,并通过链路管理协议LMP(LinkMallagerProtoc01)建立通信联系。链路管理器提供诸如发送和接收数据、设备号请求、链路地址查询、建立连接、鉴权、链路模式协商和建立、设备模式的切换等功能。2.2蓝牙协议栈蓝牙协议栈体系结构为分层结构,具体如图2.1所示。图2.1蓝牙协议栈体系结构蓝牙技术标准的目的是使符合该标准的各种应用之间能够实现互操作15J。互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈。并不是任何应用都必须使用全部协议,而是可以只使用其中的一层或多层。但是,所有的应用都要使用蓝牙技术标准中的数据链路层和物理层。蓝牙控制器接口(HCI)分析HCI概述主机控制器接口(HCI)处于蓝牙协议栈的中间层,它提供了蓝牙主机访问蓝牙主机控制器的基带与链路控制器、链路管理器、状态存放器等硬件的统一接口。蓝牙主机控制器(BluctoothHostController)是蓝牙芯片的主要组成局部,其内部硬件结构如图2.2所示。链路控制器提供了蓝牙基带功能以及物理层协议的硬件和软件实现;CPU核提供了链路管理器和链路控制器的固件局部的运行环境,使得主机控制器可独立于主机进行查询和过滤呼叫请求。图2.2蓝牙主机控制器内部硬件结构图硬件方面,主机控制器集成了无线电收发器、基带控制器、Flash存储器等局部,其中基带控制器大多是以ARM为根底的芯片,通过接口控制无线电收发器,提供物理接H(USB/UART/PCM等)。蓝牙模块通过这些接口与主机上对应的接口相连接,构成蓝牙系统的硬件连接。HCI就是基于这些物理接口定义相应的传输层实现主机与主机控制器间的数据交换。两个蓝牙设备通过HCI层进行数据传输的过程如图2.3所示。图2.3蓝牙设备通过HCI层数据传输过程HCI传输层HCI传输层是指在蓝牙主机与主机控制器间相连的物理接口,它介于主机控制器驱动程序和主机控制器之间,主要目的是实现传输的透明性,即从蓝牙模块外看HCI看到的是HCI传输层,物理总线是屏蔽的,从而使得HCI固件能在不影响传输层的情况下升级。.3HCI分组格式HCI提供了蓝牙主机与蓝牙主机控制器交换信息的接口,这些信息以分组的形式进行交互。主机可以向主机控制器发送HCI指令分组、ACL数据分组和SCO数据分组;主机控制器可以向主机返回HCI事件分组、ACL数据分组和SCO数据分组。如下图即为各HCl分组的流向示意图。图HCl分组流向示意(1)HCI指令分组HCI指令分组用于从主机向主机控制器发送指令。HCI指令分组的格式如表所示。表2.1HCI指令分组格式HCI指令分组由操作码,参数长度和指令参数列表组成。(2)HCI事件分组主机向主机控制器发送指令分组以后,主机控制器就会返回相应的事件分组,其中携带有指令的执行情况以及相关联的信息。主机必须具有接收255字节的HCI事件分组的能力,其中还不包括HCI事件分组头。HCI事件分组的格式如表2.4所示。表HCI事件分组格式HCI事件分组由事件码、参数长度和事件参数列表组成事件码(EventCode)大小为1字节,用于唯一地标识事件的类型,取值范围为0x00-0xff。参数长度以字节度量。事件参数列表存放了与相对应的指令关联的返回事件参数,大小一般为8的倍数。(3)HCI数据分组HCI数据分组用于在主机和主机控制器之间交换数据。HCI数据分组分为ACL数据分组和SCO数据分组两类,各自有不同的格式,在此只讨论ACL数据分组格式。HCIACL数据分组用于在主机与主机控制器间进行异步链路的数据交换,它的分组格式如表2.5所示。表HCIACL数据分组格式第三章设计方案及模块介绍3.1蓝牙家居控制系统组成结构基于蓝牙技术的智能家居系统,其硬件组成主要包括蓝牙模块、MCU、PC及受控设备等组成。总体构成如图3.1所示。结构框图中前半局部为中心控制局部,主要由PC机、蓝牙无线收发模块组成;后半局部为多个受控单元,主要由受控电器、单片机、蓝牙模块组成。

在受控单元中,蓝牙模块和单片机之间通过串口输入HCI指令实行数据通信。其工作过程是:PC机发送一条控制命令,通过串口发送给蓝牙模块,并由蓝牙模块发送出去,这条指令被多个蓝牙模块接收后由单片机进行识别,并作出相应的动作,最终完成对家电的控制。在本设计中作为通信局部的蓝牙模块均采用的是ROK101008,单片机选用性价比拟高的C8051F120.主要硬件模块介绍3.爱立信蓝牙模块ROK101008简介爱立信ROK101008是爱立信(Ericsson)公司出品的适用于短距离通信的无线/基带模块,它集成度高、功耗小、完全兼容蓝牙1.0B协议标准,可嵌入到任何需要蓝牙功能的设备中。它同时支持数据和语音的传输,输出功率满足Class2的要求。它提供有UART、PCM接口,可方便地实现与主机之间的通信。它在UART接口上的最高传输速率为460Kb/s,缺省波特率是57.6Kb/s,可支持的波特率为300、600,900,1200、2400,4800,9600、19200,38400157600,115200、230400,60800bit/s,并有一个128字节的FIFO队列111】。它采用压缩结构(3.3×1.7X0.365cm),金表层覆盖,外观图如图3.2所示。图3.2爱立信ROK101008蓝牙模块外观图ROK101008的系统结构图如图3.3所示。处于模块底层的是无线层(Radio)和基带)县(Baseband),以硬件的形式存在;处于模块中上层的,是链路管理器(LM)和HCI,以固件的形式存在。图3.3爱立信ROK101008蓝牙模块系统结构图ROK101008由基带控制器(Baseband)、快闪式存储器(FlashMemory)、无线电收发器(PBA31301/2)、电压调节器(VoltageRegulation)、13MHz晶振(13MHzCrystal)共5局部组成,其内部结构框图如图3.4所示。图3.4爱立信ROK101008蓝牙模块内部结构框图①基带控$1J-器(Baseband):是一个以ARM7一Thumb为根底的的芯片,通过接口控制无线电收发器的运行。ROK101008的基带控制器提供UART和PCM两种接口。②快闪式存储器r(FlashMemory):闪存和基带控制器同时使用。③无线电收发器(PBA31301/2):PBA31301/2是短距离微波无线电收发器,其天线滤波器、RX和TX不平衡变压器都集成在电路中,可作为嵌入式结构应用。④电压调节器:(VoltageRegulation):Vcc典型值是3.3V,产生两个可调电压。⑤13MHz晶振(13MHzCrystal):晶振提供频率为13MHz的内置时钟。爱立信ROK101008蓝牙模块芯片详细的引脚封装如图3.5所示。图3.5爱立信监牙模块ROK101008芯片引脚封装图引脚号排列按照从左向右依次为A、B、C、R、T,其中每个字母代表一列,每列又按从下到上依次为1、2、3、4、5、6。常用的局部引脚的说明如表3.1所示:表3.1爱立信ROK101008蓝牙模块芯片局部引脚说明蓝牙适配器模块

蓝牙适配器图片蓝牙〔Bluetooth〕是无线网络传输技术的一种,原本是用来取代红外的。与红外技术相比,蓝牙无需对准就能传输数据,传输距离小于10米〔红外的传输距离在几米以内〕。而在信号放大器的帮助下,通讯距离甚至可达100米左右。蓝牙技术非常适合耗电量低的数码设备相互分享数据,如、掌上电脑等。蓝牙标准中广为应用的成熟版本为1.1、2.0、3.0、4.0,带宽约1M-24Mbps〔USB1.1接口的带宽为12Mbps,USB2.0接口的带宽为480Mbps,局域网带宽为10Mbps/100Mbps/1000Mbps,火线IEEE1394带宽为400Mbps。所以说,蓝牙非常适合于传送小的文件〔10MB以下的图片、铃声、电子书、文稿等等〕,方便与速度兼得。目前最新版本是2.1+EDR版本。第四章系统硬件设计4.1下位机模块设计单片机C8051F120简介微控制器(MCu)是蓝牙应用系统的核心,它的选择将直接影响到系统的性能。C8051F120是Cygnal公司的一种与8051兼容的高速SOC单片机,它具有高速CIP.51内核、灵活的I/O交叉开关、先进的时钟系统、JTAG系统调试接口以及多源复位系统。它性能卓越,内核采用流水线结构,速度可达100MIPS,比普通的51快40倍,而且在资源丰富、体积小、功耗低、集成度高且调试方便。下面列出了它的一些主要特性:●高速、流水线结构的8051兼容的CIP.51内核;●真正8位500ksps的ADC,带PGA和8通道模拟多路开关;●2周期的16×16的乘法和累加引擎;●8448(8K+256)字节的片内RAM;●可寻址64K字节地址空间的外部数据存储器接口;●硬件实现的SPI、SMBus/12C和两个UART串行接El[10l;●5个通用的16位定时器;●具有6个捕捉/比拟模块的可编程计数器/定时器阵列;●FLASH存储器具有在系统中重新编程能力,可用于非易失性数据存储,并允许现场更新固件;●片内JTAG调试电路允许非侵入式(不占用片内资源)、全速、在系统测试;●可在工业温度范NI(.45"C一+85。c)N用2.7V~3.6V的电压工作。●C8051F120为100脚TQFP封装。单片机与蓝牙模块的连接单片机与蓝牙模块的硬件连接比拟简单,其原理如图4.1所示:图单片机C8051F120通过UART连接蓝牙模块示意图图中的①、②、③分别标出了连接中需要注意的3个地方。①数据线和信号线单片机C8051F120具有两个UART,在此选用UART0。在编程时候可通过交叉开关设置,将UART0分配到两个管脚上,例如P0.0(TXD)和P0.I(RXD),分别与蓝牙模块的RXD(AS)和TXD(B5)相连,用于传输控制信号。另外,单片机端需另外分配两个管脚,例如P1.6和P1.7,分别作为流量控制信号CTS和RTS,分别与蓝牙模块的RTS(A6)和CTS(B6)相连。假设CTS为1那么允许对方发送,假设CTS为0那么禁止对方发送。②蓝牙模块电源线蓝牙模块的电压管理器共有3个输入,分别是Vcc(C6)、Vcc_io(C4)和ON(C2)。Vcc提供电源电压,典型值是3.3V:Vetio为UART提供一个独立的电源回路,可以与单片机逻辑接口相同,可以连接到Vcc;ON信号控制内部电压稳压器导通或关断。将Vcc、Vccio和ON连接在一起使用时,不需要考虑蓝牙模块的加电顺序;否那么,那么要严格按照“GND.Vet—ON.Vccio〞的顺序加电,断电时候顺序相反。在此处采用前者,将Vet、Vccio和ON一起连接到3.3V的外部电源上。③蓝牙模块天线蓝牙模块ANT管脚连接到50欧的天线,天线的电压驻波比小于2:1。在本课题的实验板的设计中,单片机和蓝牙模块是焊接在一个PCB板上的。由于蓝牙模块采用平面封装,而且引脚很密集,要想直接焊接到PCB板上很困难,而且天线也很难焊接上去。因而自行设计了一个辅助电路板,先将蓝牙模块焊接到此辅助电路板上,然后将要用到的蓝牙模块的局部引脚引出来,通过插座将蓝牙模块连接到PCB板上,这样就使得蓝牙模块的装卸变得很方便。辅助电路板引出的管脚有GND.地线、VCC.3.3V、数据收发线RXD和TXD、流控线RTS和CTS、使能信号线.EN、复位信号线.RESET,其中BTEN即图4.6中的ON信号,实际应用中将它与VCC接在一起,其他的与单片机相连。图4.2所示。图蓝牙模块ROKl01008辅助电路板引出管脚图PC机与蓝牙模块的连接PC端硬件连接比拟简单,将蓝牙USB适配器直接通过USB连接到PC上即可。图4.3PC端硬件结构图需要注意的是,插上适配器后,如果是在XP系统下,系统会自动装载蓝牙适配器驱动程序,因为在此是要开发自己的基于HCI层的应用程序,而自动安装的驱动程序是针对高级应用开发的,覆盖了HCI层,因此需要将其卸载,安装针对特定适配器的硬件驱动程序。此处使用的蓝牙USB适配器是CSRBlueCore04,安装CSRUSBDriver1.18,安装成功后可在“设备管理器’’.“通用串行总线控制器"中查找到“CSRBlueCoreBluetooth",如下图。图CSRBlueCoreBluetooth安装成功示意图4.3单片机与家用电器的连接家用电器控制模块其主要功能是根据接收系统中心控制模块的命令,以控制电视机开关为例,将控制电视机开关的单片机引脚设定为p1^3,当该引脚为高电平时继电器吸合,电视开,当为低电平时继电器断开,电视机关。4.5家电控制电路原理图C8051F120收到中心控制器发送的控制信号后P1.3引脚变为高电平,当光耦合器导通,呆滞继电器吸合,给信息插座通电,从而接通家用电器。当有警情是P1.4和P1.5变为高电平,单片机那么通过TXD和RXD发送报警信号,当蓝牙模块输出到中心控制器。在上述电路中电阻R1的选择至关重要,他影响着2N45开通与关闭的性能。R1较小时,可减小开关时间与开关损耗,R1较大时那么相反。一般根据产品手册上提供的数据作为参考,在参考值〔48欧姆〕的1倍到10倍见选取,在这里选取5倍的参考值,即240欧姆。系统电源模块原理图C8051F120微控制器的内核和I/O使用同一电源电压,只需。图4.4所示,输入9V直流电源,电感L1用于限制瞬态电流,经过C1、C2滤波,然后通过SPX1117M-3.3将电源稳压至3.3V,其输出用了一个4.7uf的电容来改善瞬态响应和稳定性。当正确连接电源后,LED发光作为电源工作指示灯.为了降低噪声和出错几率,我们用电感L2、L3将数字电源和模拟电源隔离。图系统中有些外围器件的工作电压为5V,比方控制家电的局部,所以我们还需要5V稳压电路,如图4.5所示,其工作原理是输入9V的直流电源,经C8、C9滤波,然后通过LM78L05将电源稳压至5V.图5V供电原理图SPX1117M是Sipex公司生产的LDO芯片,其特点是输出电流最大,输出电压高,稳定性好。其输出蒂娜刘可到达800MA,输出电压的精度在+-1%以内还具有电流限制和热保护功能,被广泛用于手持设备、数字家电和工控领域第五章系统软件设计系统的软件设计分为单片机端软件设计和PC端软件设计两大块。5.1单片机端软件设计单片机端软件采用嵌入式C语言的编程,开发环境为Keil,在本设计中只需完成蓝牙根本数据传输即可。此局部软件包括初始化、蓝牙交互、处理数据三个局部。初始化包括系统初始化和蓝牙初始化。系统初始化包括系统时钟初始化、管脚分配、串口初始化、定时器初始化等,蓝牙初始化是通过UART给蓝牙模块发送一系列初始化指令,蓝牙模块返回事件,交互完成一系列的复位、鉴权、读地址等初始化操作。蓝牙交互就是初始化完成后,假设本地蓝牙作从设备,那么等待远端蓝牙设备的建链请求,如果接受请求,那么继续等待建链成功,获得一个连接句柄,从而即可进行数据交换;假设本地蓝牙作主设备,那么进行一系列主动查询、建链、发送数据、断链等操作。处理数据就是将有效数据转存到相应位置等一系列后续操作。需要注意的是,在程序的主循环中,需要实时判断串口接收缓冲区是否有数据,有数据那么调用HCI状态机进行处理。程序流程如图5.1所示。系统时钟初始化用来设置和启动系统时钟。在这里采用外部24M外部振荡器提供系统时钟。首先使能24M外部晶振并等待外部晶振就绪,然后利用PLL将其倍频为96M作为系统时钟。管脚分配用来将UART0的TX和RX分配到管脚p0.O和p0.1,并将pO.0设为输出模式、p0.1设为输入模式。串口初始化调用单片机UART接12函数uart_rest0、uart_init0实现,其中uart_initoqb涉及具体单片机存放器的操作包括设置UART0工作模式、设置定时器、设置波特率等。定时器初始化局部实现对定时器1初始化和启动,定时间隔为lOms。在系统初始化完成之后,就需要开始对蓝牙设备进行操作。对蓝牙设备的操作需要构造一个蓝牙HCI设备控制结构体hcidev。蓝牙设备操作的复杂性造成此结构体也相对复杂,具体如下图:①UART控制结构体uartdev变量ud,唯一的标识一个串口连接。②蓝牙HCI设备信息结构体hcidevinfo变量hd—info,保存蓝牙地址、设备类型、缓冲区大小等。③蓝牙HCI设备连接控制结构体hcidevcon变量hdcon,保存连接状态、连接句柄、远端地址、时隙等。④蓝牙HCI设备设置结构体hcidevset变量hdset,保存用户设置信息,包括扫描允许、连接超时、鉴权允许、查询参数等。⑤蓝牙HCI设备标志位结构体hci—dev_flags变量hd_flags,标识查询和连接状态。图5.2蓝牙HCl控制结构体hci—dev数据结构图因为此系统中只有一个单片机只与一个UART0相连的蓝牙模块,即蓝牙HCI设备是唯一的,因此此结构体应该定义为全局变量并且整个程序运行空间内只允许定义一个,为便于讨论,假设定义此变量为hd,即:蓝牙初始化包括蓝牙HCI复位、蓝牙参数设定和蓝牙一系列初始化指令的发送。蓝牙HCI复位主要完成对hd各项默认值的设置,包括将hd.hd—info中的acl_num和acl一1en全置0,cmd—num置1,以防止蓝牙读缓冲区大小指令Read—Buffer—Size执行失败后得到未定义的值;将hd.hd—con中的con—status的值赋为NOTCONNECTED,将conhandle的值设为.1等等;蓝牙参数设定通过对hd.hdset相应参数直接赋值实现,可根据具体需要进行不同的设置;蓝牙初始化指令的发送是蓝牙设备初始化的关键。在此可调用蓝牙HCI指令接口完成。至于具体需要哪些指令来进行初始化,可根据需要增减,但有一些指令是必备的。在此提供两个初始化指令集合initl和init2,其中btinitnecessary为强制性、必备的指令集,bt_init_optional是非强制性、可选的指令集,见表5.1。调用HCI指令接口函数时需要传入相应参数列表结构体,结构体各项的参数值从已设定的hd.hdset中提取。各指令之间最好是加2.5ms的延时,在保证前一条指令执行成功后才发送下一条指令。指令包的流控由hd.hdinfo.cmdnum控制。初始化指令集在进入蓝牙根本数据传输实验工程之前,设置了一个标志位btrole,用户可选择本地蓝牙的角色即是作为主设备还是从设备进入实验。不管是作为主设备还是从设备,蓝牙初始化局部是相同的。初始化完成以后,本地蓝牙作主设备时,首先要主动发起查询,查询到远端蓝牙设备之后,要主动发起连接,连接建立以后,数据可以在本地蓝牙和远端蓝牙之间进行传输,既可由本地蓝牙发往远端蓝牙,也可由远端蓝牙发往本地蓝牙。本地蓝牙作从设备时,循环等待远端蓝牙的连接请求,收到连接请求事件以后,通知用户决定是否接受此次连接请求。假设接受,那么发送HCIAccept_Connection,假设拒绝,那么发送HCI_reject_connection_request。单片机端和PC端之间的蓝牙连接建立完成后,就可以在两者之间进行数据的传输了。由于单片机端不支持数据输入,因而本系统采用PC端录入数据,向单片机端发送,单片机端接收到数据后。这就涉及到数据的检测和处理。HCI状态机在检测到ACL数据分组到来后经过一系列的处理,将实际所传数据存储在一个数据接收缓冲区里,主机对标志位data_ready_flag的检测放在主循环.ready程序中,从而保证数据能及时得到处理。单片机端作从设备时,假设设置为自动回传翻开,还可将已接收数据回传给PC。单片机程序:以控制电视机开关为例:设定0X00表示关,0x01表示开Voidbt_basic〔〕{display_interface();\\显示界面Uart_init();\\串口初始化HCI_init();\\Hci设备初始化Clear_data_rev_buf();\\清空接收数据缓冲区Hci_param_set(hd);\\设置HCI设备参数TV_0n_off=P1^3;\\p1^3在电路连接时控制电视}While〔1〕{\\如果UART接收缓冲区非空,那么调用状态机处理。if(hci_buf_status!=HCI_BUFEMPTY){HCI_state();}If(local_bt_role)\\假设由PC机发送数据,单片机接收数据{if(event_evcode==CONNECTlONREQUEST.)\\蓝牙连接请求HCIAccept_Connection;hci_event_connection_request(event.param);if(event_evcode==CONNECTIONCOMPIETE)\\表示蓝牙设备已连接{oder=Hci_rev_acl_data(…));\\接收控制信息Switch(oder){case0x00TV_on_off=0;\\电视关Case0x01TV_on_off=1;\\电视开}}If(event_evcode==DISCONNECTION_COMP)hci_event_disconnection_complete(event.param);\\断开连接}}5.2PC端软件设计PC端采用面向对象的C++编程,在VC++6.0开发平台下实现了基于蓝牙HCI层通信的根本数据传输控制程序。PC端操作系统为XP,采用的蓝牙设备为蓝牙USB适配器,适配器内嵌蓝牙芯片为CSR(CambridgeSiliconRadio)公司的BlueCore04。蓝牙USB适配器和PC之间通过USB接口进行连接和通信,因而数据的传输利用的是蓝牙HCIUSB传输层。USB是由“通用串行总线实施论坛〞组织公开发布推广的一种串行接口标准。蓝牙没有为USB接口开发新的协议,而是使用已有的USB协议。在驱动程序方面,一方面,xP系统自身会提供底层的硬件驱动程序和简单的上层应用程序,在蓝牙USB适配器连接到PC之后,会自动装载;另一方面,不同的蓝牙芯片厂家会提供不同的蓝牙USB适配器的硬件驱动程序,便于技术人员进行针对特定应用的开发。由于XP系统自带的驱动直接面向应用,屏蔽了HCI层,所以在此处采用CSR公司提供的蓝牙USB驱动csrbc01.inf',对应于此驱动附有一系列的控制字。安装好蓝牙USB适配器之后,在VC++6.0编程平台中,采用WindowsAPI函数,结合驱动程序提供的一系列控制字,就可以实现对蓝牙USB适配器的访问。PC端基于HCIUSB传输层开发蓝牙通信的步骤和流程类似于上文中单片机基于蓝牙HCIUART层的开发,它们都遵循蓝牙HCI层的一般通信流程,区别就在于利用的HCI传输层不同。利用HCIUSB传输层传输时,数据是通过USB端点来收发的,USB端点分为4大类,分别是控制端点、块端点、中断端点和同步端点。不同的端点实现不同的功能。控制端点用来配置和控制USB设备,在此处可用于主机(PC)向主机控制器(蓝牙USB适配器)发送HCI指令分组。块端点用来传送ACL数据分组。中断端点用来保证HCI事件分组的及时接收。同步端点用来传输SCO数据分组。由此可见,在采用USB传输层时,不同的HCl分组可由不同的端点类别来区分,因而不需要再像HCIUART传输层那样在分组前面加分组指示器。图5.3PC端蓝牙根本数据传输模块流程图程序的实现采用基于对话框的MFC编程。在程序中构造了一个USBStack类负责对蓝牙USB适配器的控制,包括翻开设备、发送HCI指令分组、收发ACL数据分组、接收HCI事件分组等。类内部对蓝牙USB适配器的访问通过WindowsAPI函数配合CSRBlueCore控制字实现,具体的类的细节参照CSR公司提供的CSRUSBDongle开发文档((CSRUSB图5.4USBStack类定义PC端的主要函数列表当只有一个蓝牙USB适配器连接到PC上时,适配器的访问路径默认为“\\\\\.\\CSRO〞,当插上第二个蓝牙USB适配器时,第二个适配器的访问路径默认为“\\\\.\\CSRl’’,以此类推。此处默认只连有一个适配器,那么翻开蓝牙设备时,调用m_bt.open_connection(“\\\.\\CSR0〞)完成蓝牙适配器的翻开和两个后台线checkhcievent0和check—acl—data(),此处采用多线程编程线程checkhcievent0和check—acl—data()分别用于实时接收主控制器返回的HCI事件分组和ACL事件分组蓝牙设备翻开以后,要对蓝牙进行初始化。类似于单片机端对蓝牙模块的初始化操作,在此也可灵活选择初始化指令集和各初始化指令的参数,由于在此处只是实现一个根本的测试程序,所以对这些指令的参数的选择只是按一般的需要进行设置和取值,比方HCI_Write_Scan_Enable指令的扫描允许参数直接设为0x03表示查询扫描和呼叫扫描同时允许,以下的指令参数的设定类似,不再赘述。指令分组也直接采用了十六进制数串集中发送出去,指令与指令之间采用了一定的延时以保证主机控制器指令缓冲区不会溢出,下面给出了蓝牙初始化指令集的代码例如(限于篇幅,下文中的查询、建立连接等操作不再给出代码,只作文字说明)。初始化完成之后,PC会收到蓝牙返回的多个HCI事件,从中捕获读缓冲区大小事件和读本地蓝牙地址事件,解析出主机控制器指令缓冲区和数据缓冲区大小将其保存,解析出本地蓝牙地址将其保存并显示,然后就可以进行对周围蓝牙设备的查询。查询完成后,PC捕获蓝牙返回的查询结果事件,从中解析出查询到的远端蓝牙的地址,将其保存在m_bt.remotebdaddr[6],根据获得的远端蓝牙地址,可发起建立连接请求,其中分组类型参数选用Ox0008,表示建立的连接为DMl类型。与远端蓝牙连接建立完成后,会返回建立连接完成事件,需要注意的是,假设建立连接时当前在两端蓝牙设备之间已经存在连接,那么只会返回最大时隙改变事件。因而发送建立连接请求指令之后,要捕获返回的事件,假设是连接建立完成事件或最大时隙改变事件且status参数为O,那么表示建立连接成功,否那么失败,要重新发起连接请求。连接建立成功之后,就可以进行数据的收发了。数据的传送是以ACL数据分组的格式进行的。首先要根据已建立连接的连接句柄和PB、BC标志组合ACL分组头,然后根据要发送数据的总长度获知ACL数据分组的长度和L2CAP分组的长度,再设定L2CAPCID,最后才是真正要发送的数据的写入,具体的格式在上文中已给出。在此处,构造一个ACL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论