蓝牙

iOS 作为蓝牙外设广播信息

北慕城南 提交于 2019-11-29 04:16:29
苹果蓝牙后台的限制,原本广播会有两个段分别是localName和serviceUUID这两块,但现在后台广播时,是不发送在这两段的 手机app可以作为一个蓝牙外设端来模拟外设硬件,但广播包里的数据只能包含localName和serviceUUID,相对于外设硬件来说还是有一些不足之处。 一个128位的蓝牙UUID来标示 32个 x 是 0-9 或 a-f 范围内的一个十六进制的数字(0x00),X是字符串格式 把数据按uuid的格式加进去 self.peripheralManager startAdvertising:@{CBAdvertisementDataServiceUUIDsKey:serviceUUIDs,CBAdvertisementDataNameKey:localName}]; 对应的值是数组 key: kCBAdvDataIsConnectable, value: 1 key: kCBAdvDataLocalName, value: SimpleBLEPeripheral key: kCBAdvDataServiceUUIDs // 数据就在这里 uuid(0): FF F0 key: kCBAdvDataTxPowerLevel, value: 0 Manufacturer Specific Data NSArray *keys =

android 蓝牙通讯常见异常 Service discovery failed ,conn...

最后都变了- 提交于 2019-11-29 03:42:07
用Android 开发一个应用,其中想使用蓝牙来做数据交换。 先查了一下资料,感觉还算简单,于是就开始了一整天的痛苦历程。 基本上用discover之类的能够很快的发现对方的蓝牙设备,但是在 建立socket的时候,就出了一堆问题。刚开始,服务端用 adapter.listenUsingRfcommWithServiceRecord 加上某个UUID来监听,同时获得serverSocket,客户端用 serverDevice.createRfcommSocketToServiceRecord 来获取socket,然后就在 socket.connect的时候,出了很多 奇怪的错误。 最开始是 Service discovery failed , 然后是 connection refused, 然后是 File descriptor in bad state 总之搜索了一下,确实千奇百怪的错误都有。后来看到有人用 Method m = serverDevice.getClass().getMethod( "createRfcommSocket", new Class[]{int.class}); BluetoothSocket socket = (BluetoothSocket) m.invoke( serverDevice, Integer.valueOf( 1)); 据说能解决

蓝牙数据通信 GATT

♀尐吖头ヾ 提交于 2019-11-28 20:11:52
ATT(Attribute Protocol)属性层是GATT和GAP的基础,它定义了BLE协议栈上层的数据结构和组织方式。 BLE属性协议,它是处于L2CAP协议层与GATT之间的一层属性操作协议。 GATT(Generic Attribute Profile),通用属性协议,在GATT之上即是我们的应用程序,通过GATT统一属性格式和属性访问接口,对于APP开发来讲操作对象就变成了对一个个定义的属性进行读写。 主要由3部分组成:Handle、Attribute Type、Attribute Value其中Handle是作为索引的依据类似数组的下标,Attribute Type是根据UUID而定义的128bit标识(实际传输可以只传递16bit),Attribute Value即属性值 如何发现和使用服务的一些标准方法: 发现规程 发现服务:发现所有首要服务、按UUID发现首要服务、查找包含服务。 发现特性:发现所有特性、发现所有特性描述符。 客户端发起规程:读/写特性值、读/写特性描述符。 服务端发起规程:通知/指示。 GATT profile的层次结构依次是:Profile—>Service—>characteristic 一个Service包含一个或者多个Characteristic(特征),也可以通过Include的方式,包含其它Service。

XY-MBD07A无线蓝牙模块设置

狂风中的少年 提交于 2019-11-28 19:31:09
XY-MBD07A无线蓝牙模块设置 1、安装串口调试助手 没有版本要求,没有型号要求,我用的是XCOM V2.0 2、安装USB转TTL模块驱动(没有的可以问卖家) 这就不用细讲了,反正安装驱动就行,驱动想在哪里获得都行。 3、连接两个模块 VCC——VCC GND——DNG RXD——TXD TXD——RXD 很简单,连接好,插在电脑U口,模块灯不停的闪就对了,不闪就是电源接反了。 注意:模块供电采用3.3V,连接串口工具时,务必给模块正确供电,否则有几率损坏模块。 为方便测试,步骤3处开发人员也可接线将Uart_RTS直接接地, CMD_DATA_SWITCH /BCTS悬空,此状态下蓝牙模块会一直处于串口接收模式 开发者在正常使用过程中,主机(MCU)如有数据发送至BLE模块,需将BRTS拉低,主机可在约100us后开始发送数据。发送完毕之后主机应主动抬高BRTS,让模块退出串口接收模式。要注意的是,抬高BRTS之前请确认串口数据完全发送完毕,否则会出现数据截尾现象。 4、这时打开手机,启用蓝牙,搜索名称进行连接配对(XY-MBD07A模块BLE默认广播名称为NBee_BLEXXXXXX,SPP默认广播名称为NBEE_SPPXXXXXX),一切OK,就要开始关键步骤了。 5、① 将USB转串口工具插入电脑,进入电脑设备管理器确认目前所用的串口号。 ② 模块初上电

蓝牙定位功能:

[亡魂溺海] 提交于 2019-11-28 08:28:35
蓝牙BLE最大的特点就是成本和功耗的降低,且适用于实时性要求比较高的领域。除了在传输速率上要慢一些之外,还支持1对多广播,通过Mesh技术,还能做到多对多; 蓝牙历史上的四大创新应用 :音频传输、低功耗数据传输、定位、设备网络. 蓝牙4.2:有一定得定位功能 蓝牙5.0:定位精度小于1米,精度高于V4.2;速率*2;距离达300米;功耗更低 蓝牙5.1: 对通用属性配置文件(GATT)缓存的改进,实现更快,更节能的连接 通过 多天线和接收RSSI强度测方向 ,精度达到 厘米 级别,但是在2.4G同频干扰情况下是否能达到还未知;同时增加了 蓝牙基站的复杂度和硬件成本。应用场景: 寻向(direction finding)功能」,配合蓝牙近接(proximity)技术可得到 靠近感知 技术(发声指向) ,即可让设备更容易被侦测发现(丢失找回)/监控被监控物得移动/触发限制进入区域报警/图书馆感兴趣书得指向/停车场车辆得引导等。 蓝牙定位原理:   基于RSSI原理,分为终端定位(相对):(如智能手机通过识别不同蓝牙终端发来得信号RSSI(至少3点));网络侧定位(终端在进入蓝牙网关(参考定位点)范围内时广播信息,蓝牙网关收到(n,RSSI)并将自己得坐标然后传送给服务器后台,服务器后台根据各RSSI和定位算法得到定位)。应用:火灾被困人员定位系统

BLE——低功耗蓝牙(Bluetooth Low Energy)

旧时模样 提交于 2019-11-27 22:33:31
1、简介 以下蓝牙协议特指低功耗蓝牙协议。 蓝牙协议是由SIG制定并维护的通信协议,蓝牙协议栈是蓝牙协议的具体实现。 各厂商都根据蓝牙协议实现了自己的一套函数库——蓝牙协议栈,所以不同厂商的蓝牙协议栈之间存在差别,但都遵循 SIG 制定的蓝牙协议。 蓝牙技术的实质是建立通用无线接口及其控制软件的标准,使移动通信与计算机网络之间能实现无缝连接。蓝牙通讯最初设计初衷是方便移动电话(手机)与配件之间进行低成本、低功耗无线通信连接。通俗地说,蓝牙最初就是为了替代串口,实现无线串口的功能。 蓝牙4.1就是一个大杂烩:BR/EDR沿用旧的蓝牙规范,LE抄袭802.15.4,AMP直接使用802.11。以上操作的目的是为了提高蓝牙的兼容性和易用性,但是需要在功耗和传输速率之间取得平衡,整体来说,这个设计并不十分优雅,只是存在即合理。 标准号:IEEE 802.15.1 核心:低功耗技术,即Low Energy RF 规格 工作频段:2.4GHz~2.4835GHz,ISM(Industrial,Scientific and Medical)频段; 工作频道:40个频道,每个频道2MHz的间隔,3个广播信道(37-2402MHz,38-2426MHz,39-2480MHz),37个数据信道,广播报文还是数据报文由信道决定; 调制方式:GFSK,调制指数为0.5 中心频率容限:±150kHz 功耗

低功耗蓝牙UUID三种格式转换

元气小坏坏 提交于 2019-11-27 20:35:33
熟悉BLE技术同学应该对UUID不陌生,服务、特征值、描述都是有UUID格式定义。 蓝牙广播中对服务UUID格式定义都有三种16 bit UUID、32 bit UUID、128 bit UUID。 但是熟悉安卓开发的小伙伴都知道接口都UUID格式,fromString时候16bit的UUID该咋办呢? 16bit和32bit的UUID与128bit的值之间转换关系: 128_bit_UUID = 16_bit_UUID * 2^96 + Bluetooth_Base_UUID 128_bit_UUID = 32_bit_UUID * 2^96 + Bluetooth_Base_UUID 其中 Bluetooth_Base_UUID定义为 00000000-0000-1000-8000-00805F9B34FB 如果你想说这是啥呀,那我这样说你应该可以明白点: 若16 bit UUID为xxxx,那么128 bit UUID为0000xxxx-0000-1000-8000-00805F9B34FB 若32 bit UUID为xxxxxxxx,那么128 bit UUID为xxxxxxxx-0000-1000-8000-00805F9B34FB 来源: https://www.cnblogs.com/Free-Thinker/p/11375265.html

APP Inventor,蓝牙部分详解。

人走茶凉 提交于 2019-11-27 16:27:38
前几天通过APP inventor制作了个有关智能窗户的APP-- 室内智能花园APP,https://blog.csdn.net/haofeng_ma/article/details/79587537 ,过程中认为蓝牙传送有点疑惑,所以就上网找教程。网上的教程较少,大多都是以前谷歌还在中国时候的教程,当我直接抄过来的时候发现根本它根本显示不了(可能是我哪方面和教程的不同,但我找不出),然后经过多次寻找教程未果,干脆直接自己慢慢摸索。 话不多说,这就简单分享下我制作的过程。 首先,最基本的先启动APP inventor,这我就不多说里。 打开APP inventor把BluetoothClient拖到方框内 然后到Blocks编写程序(其实就是拼程序),其他的我就不展示了,因为只有蓝牙显示这有些疑惑外其他的还OK 我加入了一个定时器,当定时器时间到了后就会执行上面的程序。首先,判断蓝牙是否有信号收到(蓝色箭头处),如果收到,侧令蓝牙接收3个数并存放于全局变量text中(黑色箭头处),然后就是关于湿度的算法,最后将经过一系列运算的全局变量text2的值放到Label中显示。 APP 上是这样编写,但还有arduino上的配合,因为arduino中是通过Serial.print()发送数据的,并且本次实验的数据都是3位,所以APP上才接收3个数。(注意Serial.println(

mac系统下蓝牙键盘频繁失去连接,终于被我解决好了

天涯浪子 提交于 2019-11-27 15:17:20
现象是这样的,我的蓝牙键盘跟我的苹果电脑连接肯定是没有问题的,难受的是我键盘只要“失去焦点”几分钟,有时候甚至是半分钟,蓝牙键盘立即与电脑“失去连接”。当然,我只要任意按一下蓝牙键盘上的按键,蓝牙键盘马上就会进去自动重新连接的过程,然后我又可以愉快的使用键盘了,但是让我受不了的是这个重新唤醒的重新连接过程是需要时间的,虽然只是几秒钟,但是我的我要输入的内容可能就在着几秒钟中损耗了不少,也降低了我的输入激情。 我知道这个一般都是蓝牙连接的“省电策略”,当然我也考虑过是蓝牙频率被干扰的原因,但是我把鼠标和wifi都关闭的情况下,鼠标的表现依然让我感到失望。 我上网查资料,发现在Windows系统下,对蓝牙键盘是会有相应的配置的,比如可以去掉“省电”的选项等等。 但是回到Mac系统下,的确没有找到相应的设置。结合苹果对用户使用的设计理念,我想到了另外一个出发点就是,Windows系统总是把很多的配置权限给到用户,以求最大化的让用户能有掌控感,但是这样的做坏处就是高权限的配置化,会让配置之间的组合刚好出现“冲突”。为了不让该类冲突发生,需要用户有一定的计算机知识。 但是苹果公司的理念不一样,苹果系统希望它自己帮你做好各种组合的最优化,然后只需要让用户作出选择就好了。这就是为什么电脑设备出现问题的时候打服务热线,那边的客服人员总是会说,先带你做一遍重置操作。如果问题依然存在

蓝牙

馋奶兔 提交于 2019-11-27 12:04:15
1. 速率 蓝牙版本   发布时间 最大传输速度 传输距离 蓝牙5.1   2019     48 Mbit/s 300米 蓝牙5.0   2016     48 Mbit/s 300米 蓝牙4.2   2014     24 Mbit/s 50米 蓝牙4.1   2013     24 Mbit/s 50米 蓝牙4.0   2010     24 Mbit/s 50米 蓝牙3.0+HS 2009     24 Mbit/s 10米 蓝牙2.1+EDR 2007     3 Mbit/s      10米 蓝牙2.0+EDR 2004     2.1 Mbit/s 10米 蓝牙1.2   2003     1 Mbit/s 10米 蓝牙1.1   2002     810 Kbit/s 10米 蓝牙1.0   1998     723.1 Kbit/s 10米    来源: https://www.cnblogs.com/feliz/p/11361812.html