蓝牙模块学习笔记
蓝牙Host Controller Interface笔记
1.概述HCI提供了一个统一的使用蓝牙控制器(BR/EDR Controller,BR/EDR/LE Controller,LE Controller,AMP Controller等)的方法,它屏蔽了蓝牙的基带部分,提供了统一的数据进入基带的方法。
首先,蓝牙的BaseBand部分有以下几种控制器:• BR/EDR Controller• BR/EDR/LE Controller• LE Controller• AMP Controller前三种称为primary Controller,AMP是蓝牙3.0后加上的,支持High Speed传输。
下图为简单的架构:两个设备间数据的流向如下图:MANDS AND EVENTS通过HCI接口,Host与controller通过Command和Event的形式进行通信,其中command 是Host传给controller的,Event是controller反馈给Host的,如下图所示:Command和Event根据不同的类型进行了以下分组,具有以下几种:每一组内有一个或者对个Command和Event,举例如下:可以看出,Generic event组内有三种Event,Device SetUp组内只有一种reset Command。
Command和Event的种类很多,这里不具体介绍,参考Spec704-1000的具体说明。
3.HCI Data Format由上可知,HCI有三种数据,Command、Event和Data,这三种类型的HCI Data分别有不同的格式。
需要注意的是,HCI Data都是Little Endian formats的,负数的存储形式为2进制补码。
在Host和Controller之间由HANDLES来识别不同的通道,一共有三种:• Connection Handles• Logical Link Handles• Physical Link Hand les其中,Connection Handles用于primary controller(除AMP外),另外两用用于AMP Controller。
蓝牙技术学习笔记
UAP 高地址部分 8bit LAP 低地址部分 24bit
b) AM_ADDR(主设备分配给处于 Active 状态的从设备的活动成员地址(Active Member
Address),AM_ADDR 长度为 3bit,最多 8 个设备,主设备的 AM_ADDR 地址固定为
000)。 c) PM_ADDR(从 Active 状态进入 Park 状态的蓝牙设备,将得到一个守候成员地址(Parked
c) 链路数目:主设备和各个从设备间最多只有一条 ACL 链路,但是可以有多条 SCO 链路。 8. 语音编码
蓝牙技术中的语音编码可采用脉冲编码调制 PCM 或连续变化斜率比较调制 CVSD 两种方 式,具体采用何种方式决定于高层。 9. 差错控制 蓝牙技术的基带层内共定义了 1/3FEC,2/3FEC 以及 ARQ3 种差错控制方式。对于 SCO 链 路上语音包的差错控制方式采用 1/3FEC,对于 ACL 链路上数据包的差错控制方法采用 2/3FEC,每个包内的包头位都采用 1/3FEC 差错控制。 10. 蓝牙数据包结构 Packet(包)是蓝牙系统在物理信道上的传输单位,不同的包占用的时隙个数、包长度、包 上的位数值都有较大差异。 蓝牙包分为访问码(Access Code)、包头(Header)、有效载荷(Payload)3 部分。
蓝牙技术的操作模式 Profile 1、为什么要定义操作模式 蓝牙技术所支持的设备种类繁多,需要许多特有的通信协议来支持相应的设备类型。制定操作 模式的最大目的是确保蓝牙设备的互通性。 2、每个操作模式实现互通性的方法 每个操作模式实现互通性的方法,是从通信协议层与应用层两个层着手,制定设备操作在该操 作模式下应该遵守的规范。 每个操作模式代表某个设备在某种应用场合必须遵守的规范,操作模式的名称反映了操作模式 所定义的应用场合。 3、蓝牙技术标准定义的各种操作模式 目前,在蓝牙技术中定义了 13 种操作模式,大致可分为 4 类:通用模式与服务发现应用操作模 式,所有蓝牙设计都必须符合通用操作模式的规范;与电话相关的操作模式;串行端口操作模式; 普通对象交换操作模式。各种模式关系如图:
zigbee学习笔记
关于ZIGBEE技术Zigbee的由来在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。
对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,而工业自动化对无线通信的需求越来越强烈。
正因此,经过人们长期努力,Zigbee协议在2003年中通过后,于2004正式问世了。
Zigbee是什么Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络还可以与现有的其它的各种网络连接。
例如,你可以通过互联网在北京监控云南某地的一个Zigbee控制网络。
不同的是,Zigbee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee―基站‖却不到1000元人民币;每个Zigbee 网络节点不仅本身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料; 除此之外,每一个Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。
每个Zigbee网络节点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。
可以采集和传输数字量和模拟量。
Zigbee技术的应用领域Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。
另外它还可以对局部区域内移动目标例如城市中的车辆进行定位.通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无线传输:1.需要数据采集或监控的网点多;2.要求传输的数据量不大,而要求设备成本低;3.要求数据传输可性高,安全性高;4.设备体积很小,不便放置较大的充电电池或者电源模块;5.电池供电;6.地形复杂,监测点多,需要较大的网络覆盖;7.现有移动网络的覆盖盲区;8.使用现存移动网络进行低数据量传输的遥测遥控系统。
知识点0301蓝牙串口模块
+5V
GNDTXຫໍສະໝຸດ RX蓝牙串口模块正面图的上方第
一个引脚代表+5V,依次为
GND,TX,RX
2、绘制接线图
nano板与蓝牙串口的搭接图(蓝牙串口 RX,TX端分别连至nano板TX,RX端)
3、应用电路搭接
nano板上的(RX、 TX)接口接至蓝 牙串口端的(TX、 RX),电源与接 地对应相连
三、编程与调试
3、程序下载及运行
演示运行效果
知识点0301 蓝牙串口模块
主讲人:宁波鄞州职业教育中心学校 陈浙 (Arduino功能模块与应用)
一、蓝牙串口介绍 二、应用电路搭接 三、编程与调试
一、蓝牙串口介绍
1、蓝牙串口介绍
1. 核心模块使用HC-06从模块,引出接口包括 VCC,GND,TX,RX
2. led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示 蓝牙已连接并打开了端口
3. 底板3.3V LDO,输入电压3.6~6V,未配对时电流约 30mA,配对后约10mA,输入电压禁止超过7V
4. 接口电平3.3V,可以直接连接各种单片机 5. 空旷地有效距离10米 6. 配对以后当全双工串口使用,无需了解任何蓝牙协议,但
仅支持8位数据位、1位停止位、无奇偶校验的通信格式, 不支持其他格式
波特率 编号
7 8 9 A B
对应 波特率
57600 115200 230400 460800 921600
3、改蓝牙名称 发送:AT+NAMEname 返回: OKname 4、改配对密码 发送:AT+PINxxx 返回:OKsetpin
6
38400
C
1382400
二、应用电路搭接
蓝牙学习资料
蓝牙无线数据传输入门蓝牙是一种支持设备短距离通信(一般10m内)的无线电技术。
能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。
利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线传输拓宽道路。
蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。
其数据速率为1Mbps。
采用时分双工传输方案实现全双工传输。
蓝牙技术发展现状及前景虽然蓝牙具有广阔的市场,但蓝牙的市场前景取决于蓝牙价格和基于蓝牙的应用是否能达到一定的规模。
根据蓝牙的定位,蓝牙应该通过一个体积小、成本低、功耗小、跳速快的单芯片来实现,只有低廉的价格才能在现有的通信产品、家电产品和办公产品中引入蓝牙技术。
目前真正基于蓝牙的特性的应用还是很少,这也成为影响蓝牙市场发展的重要因素。
蓝牙的技术特点是促进蓝牙市场成熟的关键。
蓝牙技术是一种无线数据与语音通信的开放性标准,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。
如果把蓝牙技术引入到现代通讯等数字设备工具中,就可以去掉令人讨厌的连接电缆。
蓝牙技术还具有plonk and play的概念,有点类似“即插即用”的概念,任意蓝牙技术设备一旦搜寻到另一个蓝牙技术设备,马上就可以建立联系,而无须用户进行任何设置,可以解释成“即连即用”。
这在无线电情况非常嘈杂的环境下,它的优势就更加明显了。
蓝牙技术的另一大优势是它应用了全球统一的频率设定,这就消除了“国界”障碍,而在蜂窝式移动电话领域,这个障碍已经困扰用户多年。
这将进一步刺激市场的成长。
目前,蓝牙的初期产品已经问世,一些芯片厂商已经开始着手改进具有蓝牙功能的芯片。
与此同时,一些颇具实力的软件公司或者推出自已的协议和软件,或者与芯片厂商合作推出蓝牙技术实现的具体方案。
蓝牙模块学习笔记(1)
蓝牙模块学习笔记(1)蓝牙模块学习刚拿到蓝牙模块,心中有点小激动啊;民用级:HC-05,HC-06(HC-06-M,HC-06-S)HC-05-D,HC-06-D(是带底板的模块,主要是用户用于测试和评估)本文介绍的为HC-06蓝牙串口模块。
蓝牙串口模块用于把串口转换为蓝牙,这种模块工作的时候分为主机和从机,其中偶数命名的型号出厂时就确定了是从机或者是主机,并无法更改。
奇数命名的型号可以用户自己通过AT指令修改模块为主机或者从机。
主机:HC-06-M , M=master从机:HC-06-S , S = slaver串口模块的使用,是不需要驱动的,只要是串口就可以接入,配对完毕即可通信,模块与模块的通信需要至少 2 个条件:1、必须是主机与从机之间2、必须密码一致(密码:1234)主机:记忆最后一次配对过的从机,并只与该从机配对,直到KEY(26 脚)高电平触发时放弃记忆,26 脚默认应该接低电平。
配对方式:主机自动搜索从设备进行配对。
典型方式:在一定条件下,主从之间自动配对AT 模式:配对前就是AT 模式,配对完毕后透明通信图1 是HC-06 图片及主要引脚现在你手中拿到的HC-06引出了四个引脚,分别为VCC、GND、TXD、RXD。
四个引脚分别对应单片机的电源5V或3.3V;GND接地;TXD、RXD交叉连接(对应单片机的P3^0,P3^1)。
连接好,单片机上电,此时蓝牙模块上led闪烁,表示尚未连接其他蓝牙设备。
此时用手机蓝牙搜索,可以搜索到HC-06.点击连接,输入pin 密码则可以连接。
连接好后,利用蓝牙串口助手就可以对蓝牙模块通信了,编程也就可以把蓝牙当作普通串口来对待。
注意编写好程序后,向单片机烧录时,必须将TXD、RXD拔出才能烧写!!!问题:串口发送字符串时,最后没有标志可寻。
可以将字符串接收到数组中,发送数据到12864,检测是否到’\0’,如果检测得到,将标识符flag 置为1;串口中断服务程序中,检测到flag为1时,这证明数据显示成功。
蓝牙模块应用必读
蓝牙模块应用必读
双击自动滚屏发布者:admin 发布时间:2008-3-12 10:49:48 【字体:大中小】
购买蓝牙模块的用户,使用中请注意以下几点:
1、供电问题:蓝牙模块供电为3.3V,百米蓝牙模块供电采用两级供电,包括VCC和PAVCC,其中PAVCC 是功率扩展电源,使用中一定要两个都供给3.3V。
2、接地问题:模块中有多个GND引脚,使用中应将全部GND接地。
3、PIO引脚指示问题:在模块应用中,有的PIO是蓝牙模块工作状态指示,建议您最少引出一个做为工作状态监测引脚,如PIO5,未建链时输出800ms的脉冲信号,建链后输出200ms的脉冲信号,详细引脚功能定义请参考相应免费蓝牙固件应用说明。
4、音频应用:
音频应用中,如果您的电路板上有别的音频电路,建议将蓝牙模块单独稳压供电,减少干扰噪声。
蓝牙模块的MIC输入与SPK输出采用平衡电路接法,与外围电路连接时需要平衡非平衡转换器件,详细请看最新音频电路参考设计。
5、不用的引脚:模块中可能有许多你不需要的引脚,不用的引脚一律悬空。
6、SPI接口:SPI接口是模块固件升级和参数修改有接口,共4条线,在布设PCB板时,建议引出焊盘,便于今后固件维护。
7、GC-05/06的兼容问题:GC-05是百米蓝牙模块,GC-06是10米蓝牙模块,两者引脚完全兼容,建议您在PCB布板时,按GC-05设计,然后按需要插入GC-05、06都可以,这样在产品应用中更换10米100米不同功率的模块时,更方便。
[蓝牙]1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记)
[蓝牙]1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记)第一篇:[蓝牙] 1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记) [蓝牙]1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中比较多的受益于xubin341719的蓝牙系列文章,同时还有其他网上作者的资料。
由于有些文章只做参考或统计不足,如涉及版权请在下面留言~。
同时我也在博客分类中新建一个蓝牙通信分类,用来研究分享蓝牙相关技术。
下载连接:Bluetooth PROFILE SPECIFICATIONS(基本涵盖所有蓝牙协议)、buletooth core 2.1-4.0 SPECIFICATION(三蓝牙版本的核心协议v2.1v3.0v4.0)、蓝牙核心技术与应用马建仓版(蓝牙协议相关初学者必读,开发者参考)蓝牙核心技术概述(一):蓝牙概述蓝牙核心技术概述(二):蓝牙使用场景蓝牙核心技术概述(三):蓝牙协议规范(射频、基带链路控制、链路管理)蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)下面是摘抄笔记内容:蓝牙核心技术概述(一):蓝牙概述蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。
能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。
利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。
蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。
其数据速率为1Mbps。
采用时分双工传输方案实现全双工传输。
b e a c o n 蓝 牙 入 门 教 - 程 ( 2 0 2 0 )
低功耗蓝牙BLE - 学习笔记蓝牙的分类BLE【实操恋爱课-程】协议框架关键术语及概念广播数【扣】据格式广播网【1】络拓扑GAT【О】T 连接的网络拓扑GATT【⒈】通讯事务服务和特【б】征Ser【9】vice?Char【5】acteristic?最近由【2】于项目需求在学习 BLE,网上Android BLE开发的资料相比其他【6】 Android 资料显得有些匮乏,在此记录学习例程,希望能能对学习 BLE 的童鞋有所帮助。
在上手 Android 之前我们需要先搞清楚蓝牙的协议及通讯过程,才不会在调用 Google 提供的 API 时似懂非懂。
蓝牙的分类当前的蓝牙协议分为基础率 - 增强数据率(BR-EDR)和低耗能(BLE)两种类型。
当然现在 BLE蓝牙模块?还有单模和双模之分,单模指的是仅支持BLE ,双模即 Bluetooth Classic + BLE。
蓝牙BD-EDR和蓝牙BLE主要区别BLE协议框架蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Bluetooth Core)和蓝牙使用层协议(Bluetooth Application)。
蓝牙核心协议关心对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何运用这些机制;蓝牙使用层协议,是在蓝牙核心协议的基础上,根据具体的使用需要定义出各种各样的策略,如 FTP、文件传输、局域网.?蓝牙核心协议(Bluetooth Core)又包含 BLE Controller 和 BLE Host 两部分。
这两部分在不一样的蓝牙技术中(BR-EDR、AMP、BLE),承担角色略有不一样,但大致的功能是相同的。
Controller 负责定义 RF、Baseband?等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路(Logical Link);Host?负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让 Bluetooth Application 更为方便的运用。
蓝牙基础必学知识点
蓝牙基础必学知识点
1. 蓝牙是一种无线通信技术,可通过短距离无线信号传输数据。
2. 蓝牙可以连接多个设备,并使它们之间实现数据传输和通信。
3. 蓝牙技术使用2.4 GHz的ISM频段进行通信,运行距离通常为10米。
4. 蓝牙设备通常分为主设备和从设备。
主设备用于发起连接和控制连接,从设备用于接受连接和传输数据。
5. 蓝牙设备通过建立蓝牙连接来进行通信,连接可以是单向的或双向的。
6. 蓝牙使用蓝牙协议栈来处理通信过程,包括物理层、链路层、网络
层和应用层。
7. 蓝牙可以支持多种数据传输模式,包括串口通信、音频传输、文件
传输等。
8. 蓝牙设备可以通过扫描和配对来建立连接,配对可以使用PIN码或
简化的配对码。
9. 蓝牙设备可以通过蓝牙配置文件进行兼容性管理,不同的配置文件
适用于不同的应用场景。
10. 蓝牙技术广泛应用于各种设备,包括手机、耳机、扬声器、键盘、鼠标、汽车、家电等。
HC-05蓝牙模块,主从一体机原理总结
HC-05蓝⽛模块,主从⼀体机原理总结原理就是:⼿机通过蓝⽛传输到HC-05上,再通过串⼝通信和STM32通信;⽽之前⼀般都是电脑上通过USB线转串⼝的⽅式,通过串⼝和STM32通信。
本质上没有区别的。
这个时候就应该更加深刻地体会到了本⽂开篇的⼀句话:说⽩了,只是个蓝⽛转串⼝的设备,你只要知道串⼝怎么编程使⽤,就可以了,实现了所谓的透明传输。
蓝⽛的相关⼀切都被封装起来了,都不需要接触到。
蓝⽛模块的调试准备⼯作USB转TTL模块与HC-05蓝⽛模块的接线:两模块共地,两模块共VCC(VCC取5V);蓝⽛模块的RX接转换模块的TX,蓝⽛模块的TX接转换模块的RX。
如下图所⽰:这个时候就要将转换模块连接到电脑上,然后利⽤串⼝调试助⼿进⾏蓝⽛模块的调试。
蓝⽛模块的调试HC-05蓝⽛串⼝通讯模块具有两种⼯作模式:命令响应⼯作模式(AT)和⾃动连接⼯作模式。
在⾃动连接⼯作模式下模块⼜可分为主(Master)、从(Slave)和回环(Loopback)三种⼯作⾓⾊。
当模块处于⾃动连接⼯作模式时,将⾃动根据事先设定的⽅式连接的数据传输;当模块处于命令响应⼯作模式时能执⾏AT命令,⽤户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。
怎么进⼊命令响应⼯作模式?进⼊命令响应⼯作模式有两种⽅法:模块上电,未配对情况下就是AT模式,波特率为模块本⾝的波特率,默认:9600,发送⼀次AT指令时需要置⾼⼀次PIO11;PIO11 置⾼电平后,再给模块上电,此时模块进⼊AT 模式,波特率固定为:38400,可以直接发送AT指令。
什么叫做置⾼⼀次PIO11?在蓝⽛模块中有⼀个⼩按键,按⼀下就置⾼⼀次PIO11。
也就是说,第⼀种⽅法需要每发送⼀次AT指令按⼀次;⽽第⼆种⽅式是长按的过程中上电,之后就⽆需再管了,直接发送AT命令即可。
需要注意⼀下,两种进⼊命令响应⼯作模式的⽅式使⽤的波特率是不⼀样的,建议使⽤第⼆种⽅式。
低功耗蓝牙学习记录
低功耗蓝牙学习记录低功耗蓝牙(Low Energy Bluetooth,LE Bluetooth)是蓝牙技术的一个发展方向,其主要特点是通信距离短、功耗低、延迟小,适用于连接消费类设备和智能家居设备等场景。
作为一名软件工程师,我在工作中有机会接触和学习了低功耗蓝牙技术,下面是我的学习记录。
第一阶段:理论学习在开始实际操作之前,我首先进行了一段时间的理论学习,了解了低功耗蓝牙的基本概念、协议和通信方式。
我通过阅读相关的资料和文档,学习了低功耗蓝牙的工作原理、通信模型和连接流程等知识。
此外,我还学习了低功耗蓝牙的广告和扫描机制,以及GATT协议和Profile的使用方法。
第二阶段:实际操作在理论学习之后,我开始进行实际操作。
我搭建了一个低功耗蓝牙的实验环境,包括使用支持低功耗蓝牙的开发板和手机等设备。
然后,我使用低功耗蓝牙的开发工具和SDK,开发了一些简单的应用程序,包括扫描和连接低功耗蓝牙设备、读写特征值等操作。
在实际操作中,我遇到了一些问题,例如蓝牙设备无法被扫描到、连接失败等。
为了解决这些问题,我查阅了相关的文档和资源,在开发者社区进行了提问。
通过不断的尝试和调试,我最终找到了解决办法,并成功地完成了实验。
第三阶段:项目应用在掌握了低功耗蓝牙的基本知识和技术之后,我开始将其应用到实际项目中。
我参与了一个智能家居设备的开发项目,其中包括使用低功耗蓝牙技术与手机进行通信。
我负责开发手机端应用程序,并与硬件工程师进行配合,实现了手机与设备之间的数据传输和控制功能。
在项目的过程中,我遇到了一些挑战和困难,例如通信稳定性、性能优化等。
为了解决这些问题,我与团队成员进行了密切的合作,共同进行调试和优化,最终使项目顺利完成。
总结:通过学习和实践,我对低功耗蓝牙技术有了更深入的理解和掌握。
我了解了其基本原理和通信方式,掌握了开发工具和SDK的使用方法,能够进行简单的开发和调试。
同时,我也深刻认识到低功耗蓝牙技术的优势和应用场景,相信在未来的工作中将有更多机会运用到这方面的知识和技术。
BLE蓝牙 4.0 学习笔记
蓝牙4.0 BLE center与peripheral建立连接绑定过程 (2)蓝牙4.0 BLE peripheral 广播设置 (7)蓝牙4.0 BLE 数据传输(一) (11)蓝牙4.0 BLE 数据传输(二) (12)蓝牙4.0 BLE 数据传输(三) (16)蓝牙4.0 BLE 数据传输(四) (19)蓝牙4.0 BLE 数据传输(五) (23)蓝牙4.0 BLE 程序设计相关问题解答(转载) (25)蓝牙4.0 BLE SimpleBLEPeripheral_添加新CHAR值及UUID (33)蓝牙4.0 BLE peripheral 广播设置学习笔记(转载) (45)蓝牙4.0 BLE key处理过程看任务、事件、消息机制 (50)CC254x 内部存储结构FLASH (53)蓝牙4.0 BLE FLASH 操作 (58)蓝牙4.0 BLE center与peripheral建立连接绑定过程蓝牙主机从机建立连接绑定过程center与simplePeripheral建立连接过程center首先进行osal_init_system()初始化各个任务,SimpleBLECentral_Init->osal_set_event( simpleBLETaskId, START_DEVICE_EVT );进入SimpleBLECentral_ProcessEvent()调用VOID GAPCentralRole_StartDevice( (gapCentralRoleCB_t *) &simpleBLERoleCB );//当初始化完成,会发送GAP_DEVICE_INIT_DONE_EVENT由于注册了simpleBLERoleCB函数,因此发送的event由simpleBLERoleCB函数接收static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent )此时pEvent->gap.opcode =GAP_DEVICE_INIT_DONE_EVENT,相应信息存储于pEvent中typedef union{gapEventHdr_t gap; //!< GAP_MSG_EVENT and status.gapDeviceInitDoneEvent_t initDone; //!< GAP initialization done. gapDeviceInfoEvent_t deviceInfo; //!< Discovery device information event structure.gapDevDiscEvent_t discCmpl; //!< Discovery complete event structure.gapEstLinkReqEvent_t linkCmpl; //!< Link complete event structure.gapLinkUpdateEvent_t linkUpdate; //!< Link update event structure.gapTerminateLinkEvent_t linkTerminate; //!< Link terminated event structure.} gapCentralRoleEvent_t;联合体,只有deviceInfo里面的数据是正确的typedef struct{osal_event_hdr_t hdr; //!< GAP_MSG_EVENT and statusuint8 opcode; //!< GAP_DEVICE_INIT_DONE_EVENTuint8 devAddr[B_ADDR_LEN]; //!< Device's BD_ADDRuint16 dataPktLen; //!< HC_LE_Data_Packet_Lengthuint8 numDataPkts; //!< HC_Total_Num_LE_Data_Packets} gapDeviceInitDoneEvent_t;能获得如设备地址等信息设备初始化完成通过串口发送'1'触发设备发现进行设备扫描GAP_DEVICE_INFO_EVENT 0x0D //!< Sent during the Device Discovery Process when a device is discovered.GAP_DEVICE_DISCOVERY_EVENT 0x01 //!< Sent when the Device Discovery Process is complete.当发现一个设备时,触发一个设备info事件同样是在simpleBLECentralEventCB 处理此时pEvent改变为deviceInfo可以获得广告设备的类型,地址。
功放模块蓝牙模块实习报告
实习报告实习内容:功放模块蓝牙模块实习时间:XXXX年XX月XX日实习单位:XXXX科技有限公司一、实习背景及目的随着科技的不断发展,无线音频传输技术逐渐普及,蓝牙作为一种无线传输技术,在音频领域得到了广泛应用。
本次实习旨在了解蓝牙模块在功放模块中的应用,掌握蓝牙模块与功放模块的接线和使用方法,提高自身实际操作能力。
二、实习内容及过程1. 实习内容(1)了解蓝牙模块的基本原理及功能。
(2)学习蓝牙模块与功放模块的接线方法。
(3)掌握蓝牙模块的使用方法,实现音频播放。
2. 实习过程(1)了解蓝牙模块的基本原理及功能蓝牙模块是一种无线通信模块,具有较远的传输距离和较高的传输速率。
其主要功能是实现设备之间的无线连接,以便进行数据传输和音频播放。
(2)学习蓝牙模块与功放模块的接线方法根据参考资料,蓝牙模块与功放模块的接线方法如下:① 将蓝牙模块的电源输入接口与功放模块的电源输入接口连接。
② 将蓝牙模块的音频输出接口与功放模块的音频输入接口连接。
③ 将功放模块的输出接口与音箱的输入接口连接。
(3)掌握蓝牙模块的使用方法,实现音频播放根据参考资料,蓝牙模块的使用方法如下:① 开启蓝牙模块的电源开关。
② 打开手机或其他音频设备的蓝牙功能,与蓝牙模块进行配对连接。
③ 选择合适的音频文件,通过蓝牙模块传输至功放模块,实现音频播放。
三、实习心得与体会通过本次实习,我对蓝牙模块在功放模块中的应用有了更深入的了解,掌握了蓝牙模块与功放模块的接线和使用方法,实际操作能力得到了提高。
同时,我也认识到无线音频传输技术在现代生活中的广泛应用,以及其在提高生活质量方面的重要作用。
实习期间,我遇到了一些问题,如蓝牙模块与功放模块的接线顺序、音频传输延迟等。
在请教同事和查阅资料后,我成功解决了这些问题,并逐渐掌握了蓝牙模块的使用方法。
这使我深刻体会到学习过程中遇到问题是正常的,关键是要勇于请教、积极解决问题,这样才能不断提高自己。
总之,本次实习让我对蓝牙模块在功放模块中的应用有了更深入的了解,使我掌握了相关操作技能,为今后的工作和学习打下了坚实的基础。
HCO5学习笔记
不同的厂家产的蓝牙模块可能会有所不同,需要对厂家要取数据资料,充分了解后再去做实验,减少盲目实验造成的损失。
所用蓝牙模块如图:EN:模式转换引脚STATE:状态输出引脚所用手机蓝牙通讯软件为:蓝牙串口助手(正点原子提供)以下是本人所认为的易错点:1.连接错误:(1)AT 模式下,在使用电脑的串口助手与蓝牙模块进行通讯(中间为单片机上的CH340转串口模块将USB—>TTL电平)时注意HC05_RXD接单片机RX相应HC05_TXD接单片机TX(注意有些单片机上TX与RX的标注是针对于某些设备的,因此有时也会出现HC05_RXD接单片机TX相应HC05_TXD接单片机RX,鉴于大家买的单片机可能不同,这里我感觉可以将两者都试一下,第一种不行换第二种接法)注意波特率为38400(2)数据传输模式下,HC05_RXD一定是接单片机相应串口的TX,HC05_TXD 一定是接单片机相应串口的RX。
在该种模式下我是先使用了波特率9600没有成功,换成38400实现了数据的成功传输。
建议大家都试一试。
2.不要生搬串口程序,在串口程序中有许多标志变量,其不一定适合于蓝牙通信所传输的数据,乱用可能会导致意想不到的错误。
建议先进行简单的中断串口收发实验,然后再根据个人想法设计好所需的中断服务函数。
3.由AT转换成数据传输模式时要先将EN接地,然后像蓝牙发送模块重置指令。
4.实验过成功,通过电脑串口助手发送了AT指令,第一次是加了标点符号的没有成功而去掉标点后成功接收到了’’OK”.如AT+VERSION?失败而AT+VERSION成功。
建议大家都试一试。
程序如下:主函数:#include "stm32f4xx.h"#include "delay.h"#include "led.h"#include "urss.h"extern u16 STA;extern u8 data[DATAMAX];extern u8 res;int main(){u16 i=0;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);led_init();urss_init(38400);delay_init(168);uart_init(38400);HCO5_SendData(" Preparation is ok!\n");LED=1;while(1){if(res!=0){delay_ms(100);if(STA==1){for(i=0;i<res;i++){USART_SendData(USART2,data[i]);while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==0);}HC05_StateExpression(DATA_LENGTH, res);USART_SendData(USART2,res);while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==0);STA=0;res=0;}else res=0;}LED=~LED;delay_ms(500);}}urss.c(主要配置文件)#include "urss.h"#include "sys.h"#include "usart.h"#include "delay.h"u16 STA=0;u8 data[DATAMAX];u8 res=0;void urss_init(unsigned int bound)//{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2);GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOA,&GPIO_InitStructure);USART_ART_BaudRate=bound;USART_ART_HardwareFlowControl=USART_HardwareFlowControl_ None ;USART_ART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_ART_Parity=USART_Parity_No ;USART_ART_StopBits=USART_StopBits_1 ;USART_ART_WordLength=USART_WordLength_8b ;USART_Init(USART2,&USART_InitStructure);NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn ;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStructure);USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);USART_Cmd(USART2,ENABLE);}u8 TransData(u8 com){switch (com){case 0 : com=48;break;case 1 : com=49;break;case 2 : com=50;break;case 3 : com=51;break;case 4 : com=52;break;case 5 : com=53;break;case 6 : com=54;break;case 7 : com=55;break;case 8 : com=56;break;case 9 : com=57;break;default: com=2; break;}return com;}void HCO5_SendData(char* outdata){u8 temp;for(temp=0;outdata[temp]!='\0';temp++){USART_SendData(USART2,outdata[temp]);while (USART_GetFlagStatus(USART2,USART_FLAG_TC)==0);}}void HC05_StateExpression(char* outdata,u8 com){u8 temp;for(temp=0;outdata[temp]!='\0';temp++){USART_SendData(USART2,outdata[temp]);while (USART_GetFlagStatus(USART2,USART_FLAG_TC)==0);}com=TransData(com);USART_SendData(USART2,com);while (USART_GetFlagStatus(USART2,USART_FLAG_TC)==0);USART_SendData(USART2,'\n');while (USART_GetFlagStatus(USART2,USART_FLAG_TC)==0); }void USART2_IRQHandler(){if(USART_GetITStatus(USART2,USART_IT_RXNE)){if(USART_ReceiveData(USART2)=='#')STA=1;else{data[res]=USART_ReceiveData(USART2);res++;}USART_ClearITPendingBit(USART2,USART_IT_RXNE);}}头文件:#ifndef URSS_ZLD#define URSS_ZLD#define DATAMAX 200#define DATA_LENGTH "\nThe length of data is:"#include "sys.h"u8 TransData(u8 com);void urss_init(unsigned int bound);void HCO5_SendData(char* outdata);void HC05_StateExpression(char* outdata,u8 com);#endif其他:文件LED.C:#include "led.h"#include "sys.h"void led_init(){GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_Init(GPIOF,&GPIO_InitStructure);GPIO_SetBits(GPIOF,GPIO_Pin_9);LED1=0;}LED.h#ifndef LED_ZLD#define LED_ZLD#define LED PFout(9)#define LED1 PFout(10)void led_init(void);#endif。
蓝牙4.0规范学习总结
蓝牙4.0规范学习总结【篇一:蓝牙底层之baseband层学习总结】蓝牙baseband学习笔记目录:概述物理信道物理连接逻辑传输逻辑连接数据包比特流加工链路控制器音频处理一、概念描述蓝牙时钟:bluetooth clock蓝牙设备地址:bluetooth device addressing这里需要介绍下蓝牙时钟:二、物理信道物理发射功率在2.402ghz到2.480ghz之间,有79个信道。
在连接状态、同步扫描状态和同步队列状态最大调频速率为1600跳/s;在请求和寻呼状态中最大调频速率为3200跳/s。
跳频序列是双方约定的一组伪随机数。
定义的5中信道:basic piconet physical channel 在连接状态默认使用adapted piconet physical channel 修改过的piconet连接使用 page scan physical channelinquiry scan physical channelsynchronization scan physical channel第一二种用于基础和改变后的piconet连接第三种寻呼扫描信道用于扫描连接设备。
第四种请求扫描信道使用native时钟第五种同步扫描信道用于设备接收同步队列包主从设备的定义是在两个建立连接的设备之间有意义。
蓝牙管理中搜索周围设备(device discovery),会进行page scan;page scan其实是不停的进行多次inquiry scan,知道外部某个条件才中断。
page scan中两次inquiry scan间隔一般是30s。
三、物理连接一个物理连接代表设备间的基带连接。
一个物理连接总是和一个确定的物理信道关联。
物理连接用共同的属性:在物理连接上申请逻辑传输。
power controllink supervisionencryptionchannel quality-driven data rate changemulti-slot packet control四、逻辑传输主从设备之间不同的逻辑传输可能被确立,定义了六种逻辑传输synchronous connection-oriented (sco) logical transportextended synchronous connection-oriented (esco) logical transportasynchronous connection-oriented (acl) logical transportactive slave broadcast (asb) logical transportparked slave broadcast (psb) logical transportconnectionless slave broadcast (csb) logical transport.sco:用于有时限的信息例如声音或者一般的同步数据。
HC05学习笔记
HC05学习笔记一、我为什么要学习蓝牙?我们老板又开了一家公司,做蓝牙手环等智能产品,貌似还不错。
市场上的蓝牙产品也越来越多,找个工作,一般都有一条要求,了解2.4G。
再想想HC05也是2.4G,技多不压身,就上吧。
没多想,下单!等待收货!二、突然想放弃1、等待收货中,我突发奇想,想用蓝牙做点东西,后来网上一搜,我已经没有竞争力了,于是放弃了。
2、蓝牙水有点深,HC05又是透传,换句话说,基本学不到东西......三、重拾HC05迫于无奈只能签收,后悔花了冤枉钱,郁闷了几天。
东西买了,总不能一直放着不用吧,钱都花了,为了不辜负我的大洋,还是将就下吧,结果悲剧就发生了......总结了一句话:将就没有好结果;再后来又,总结一个词:一般;最后,总结一句话:柳暗花明又一村。
四、直入正题把资料看了N遍,着重看了试验步骤。
以为没问题了,多简单的模块,无非收发数据,谁不会,谁是菜鸟!想想怎么揉虐吧,我没什么好手段,没什么经验,求大神赐教!资料网上大把,自己搜吧,我买的正点原子的ATK-HC05,资料网上很多,具体接线,随意。
下图一定注意:1、电源不解释,不会接的,说明你不适合,不要勉强;2、注意红色部分,TTL和232的区别,如果你不了解,说明你不适合,不要勉强;3、不会利用电路板本身串口的,说明你不合适,不要勉强。
勉强真的不会有好结果!!!线路接好后,直接上机测试?佛曰:SB上帝说:FOLLOW ME,You can fly with me!1、3都好理解。
2怎么实现,其实2真的很二,前年老二。
我看了N次,实验了很久,一直没对,我开始怀疑是不是官网也卖假货,或者处理货?后来发现,实现2很简单,就是当手机和模块连接好以后,KEY拉高,就进入了。
只是原作者不想告诉你罢了。
另外注意:波特率38400,如果不对,自己切换。
先修改软件去匹配。
AT了解完了,上机?我曰:SB想办法,232转TTL,直连PC,使用原子的串口软件,线测试下你买的模块是不是好的。
蓝牙学习整理
蓝⽛学习整理1⽂档介绍1.1 ⽂档⽬的本⽂档是基于这次软件研发⼈员对蓝⽛驱动开发没有任何实际经验,且对蓝⽛的整体认识⽐较薄弱的前提下,所产⽣的。
撰写该⽂档有2个⽬的。
第⼀,能够对蓝⽛有⼀个整体的认识,包括蓝⽛的整体情况、蓝⽛协议栈以及开发蓝⽛驱动的整体概况;第⼆,希望能够给实际开发中提供尽可能⼤的技术⽀持。
1.2 ⽂档范围本⽂档为后续的蓝⽛模块驱动开发提供⼀份技术参考资料。
1.3 读者对象蓝⽛组研发⼈员。
2蓝⽛总体介绍2.1 蓝⽛简介蓝⽛,是⼀种⽀持设备短距离通信(⼀般10m内)的⽆线电技术。
能在包括移动电话、PDA、⽆线⽿机、笔记本电脑、相关外设等众多设备之间进⾏⽆线信息交换。
利⽤“蓝⽛”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特⽹Internet之间的通信,从⽽数据传输变得更加迅速⾼效,为⽆线通信拓宽道路。
蓝⽛采⽤分散式⽹络结构以及快跳频和短包技术,⽀持点对点及点对多点通信,⼯作在全球通⽤的2.4GHz ISM(即⼯业、科学、医学)频段。
其数据速率为1Mbps。
采⽤时分双⼯传输⽅案实现全双⼯传输。
蓝⽛⼯作在全球通⽤的2.4GHz ISM(即⼯业、科学、医学)频段。
蓝⽛的数据速率为1Mb/s。
时分双⼯传输⽅案被⽤来实现全双⼯传输。
使⽤IEEE802.15协议。
2.2 蓝⽛技术的规范及其特点蓝⽛的标准是IEEE802.15,⼯作在2.4GHz 频带,带宽为1Mb/s。
以时分⽅式进⾏全双⼯通信,其基带协议是电路交换和分组交换的组合。
⼀个跳频频率发送⼀个同步分组,每个分组占⽤⼀个时隙,使⽤扩频技术也可扩展到5个时隙。
同时,蓝⽛技术⽀持1个异步数据通道或3个并发的同步话⾳通道,或1个同时传送异步数据和同步话⾳的通道。
每⼀个话⾳通道⽀持64kb/s的同步话⾳;异步通道⽀持最⼤速率为721kb/s,反向应答速率为57. 6 kb/s 的⾮对称连接,或者是432. 6 kb/s对称连接。
低功耗蓝牙(BLE)学习记录
RW_BLE_CORE记录传输信道BLE的传输信道在2.4G频段有40个channel。
包括2种物理信道:广播信道和数据信道。
数据帧中设置Access Address用于标识该信道,防止信道碰撞。
Channel MAP如下:数据帧通信蓝牙帧结构如下:Preamble:根据Access Address而定,假如AA的LSB(最右bit)bit为1,则前导便是b,反之则为01010101b。
Access Address:广播帧的AA为:0x8E89BED6。
其他情况可以是一个32bit的随机数。
AA需满足以下条件·不超过连续6个1或者0。
·与广播帧的AA不同bit超过1个。
·不能4byte相同。
·0 1跳变不能超过24次·MSB 6bit 0 1跳变超过2次。
以下逐个介绍PDU。
一、Advertising Channel PDU蓝牙广播帧帧结构其中Header的帧格式如下:其中,a、广播帧类型(PDU Type)分为以下几类:•ADV_IND: connectable undirected advertising event•ADV_DIRECT_IND: connectable directed advertising event•ADV_NONCONN_IND: non-connectable undirected advertising event•ADV_SCAN_IND: scannable undirected advertising eventb、Length:3~37bytes广播帧分为很多种,其区别就是payload所代表的意义不同,以下分别对几种广播帧作分别阐释:1、ADV_INDADV_IND的payload格式如下:在广播帧帧头中的TxAdd位是广播地址的标示位:TxAdd==0:AdvA地址为公用地址;TxAdd==1:AdvA地址为随机地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/***********************************************************
STC89C52RC与HC-06蓝牙连线:
RXD ቤተ መጻሕፍቲ ባይዱXD
TXD RXD
其他连线:
P2.0、P2.1、P2.3分别接一个指示灯
***********************************************************/
void init(); //串口初始化
void send(unsigned char a);//单字节发送函数
void ctrl(); //接收处理函数
void delay(unsigned int x)
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
//发送标志位置0
TI=0;//接收标志位置0
RI=0;
//EA=0;
ES=1;
led1=0;//初始化设置3个指示灯全亮
led2=0;
led3=0;
}
void send(unsigned char a)//单字节数据发送
{//注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻
beep=0;
delay(500);
break;
case '2'://收到字符2,指示灯1灭
led2=1;
send(tmp);
beep=1;
delay(500);
break;
case '3'://收到字符3,指示灯0、1亮
led1=0;
led2=0;
send(tmp);
beep=1;
delay(500);
*4,5控制继电器
******************************************************************************/
beep=1;
delay(500);
}
}
以下是蓝牙接收字符串并向12864显示程序
/*****************************************************************************8
*任广俊
*日期:12.17
*蓝牙接收并显示在12864上,1,2,3控制发光二极管
TI=0;
SBUF=a;
while(TI==0);
TI=0;
if(c%2)//发送指示灯标志,每接收一次,此灯亮灭交替
led3=1;
else
led3=0;
c++;
}
void ctrl()//接收处理函数
{
switch(tmp)
{
case '1':
led1=1;//收到字符1,指示灯0灭
send(tmp);
连接好,单片机上电,此时蓝牙模块上led闪烁,表示尚未连接其他蓝牙设备。此时用手机蓝牙搜索,可以搜索到HC-06.点击连接,输入pin密码则可以连接。
连接好后,利用蓝牙串口助手就可以对蓝牙模块通信了,编程也就可以把蓝牙当作普通串口来对待。
注意编写好程序后,向单片机烧录时,必须将TXD、RXD拔出才能烧写!!!
#include <reg52.h>
#include <intrins.h>
unsigned char tmp;
unsigned int c=0;
sbit led1=P1^0;//指示灯0
sbit led2=P1^1;//指示灯1
sbit led3=P1^2;//指示灯2
sbit beep=P3^2;//蜂鸣器
配对方式:
主机自动搜索从设备进行配对。
典型方式:在一定条件下,主从之间自动配对
AT模式:
配对前就是AT模式,配对完毕后透明通信
图1是HC-06图片及主要引脚
现在你手中拿到的HC-06引出了四个引脚,分别为VCC、GND、TXD、RXD。四个引脚分别对应单片机的电源5V或3.3V;GND接地;TXD、RXD交叉连接(对应单片机的P3^0,P3^1)。
//10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变
TMOD = 0x20; //定时器1工作于方式2,8位自动重载模式,用于产生波特率
TH1=TL1=0xFD; //波特率9600(本次测试采用晶振为11.0592)
PCON &= 0x7f; //波特率不倍增
TR1 = 1;//定时器1开始工作,产生波特率
break;
case '4'://收到字符4,指示灯0、1灭
led1=1;
led2=1;
send(tmp);
break;
case '5'://收到字符5,指示灯3亮
led3=0;
send(tmp);
break;
default: //其他,灯全灭
led1=1;
led2=1;
led3=1;
send(tmp);
蓝牙模块学习
刚拿到蓝牙模块,心中有点小激动啊;
民用级:HC-05,HC-06(HC-06-M,HC-06-S)
HC-05-D,HC-06-D(是带底板的模块,主要是用户用于测试和评估)
本文介绍的为HC-06蓝牙串口模块。
蓝牙串口模块用于把串口转换为蓝牙,这种模块工作的时候分为主机和从机,其中偶数命名的型号出厂时就确定了是从机或者是主机,并无法更改。奇数命名的型号可以用户自己通过AT指令修改模块为主机或者从机。
问题:串口发送字符串时,最后没有标志可寻。可以将字符串接收到数组中,发送数据到12864,检测是否到’\0’,如果检测得到,将标识符flag置为1;串口中断服务程序中,检测到flag为1时,这证明数据显示成功。此时应当清屏!
清屏方法:while(Tem[i]!='\0')
{
Tem[i]='';
i++;
}
void main()
{
init();
while(1)
{
if(RI==1) //是否有数据到来
{
RI = 0;
tmp = SBUF; //暂存接收到的数据
ctrl();
}
}
}
void init()//串口初始化
{
ES=0;//关中断
SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1,
主机:HC-06-M , M=master
从机:HC-06-S , S = slaver
串口模块的使用,是不需要驱动的,只要是串口就可以接入,配对完毕即可通信,模块与模
块的通信需要至少2个条件:
1、必须是主机与从机之间
2、必须密码一致(密码:1234)
主机:
记忆最后一次配对过的从机,并只与该从机配对,直到KEY(26脚)高电平触发时放弃记忆,26脚默认应该接低电平。