这种蓝牙蓝牙适配器怎么用?

如何实现用蓝牙控制别人手机?
输入手机号码,报价结果将发送到您手机
装修顾问-馨馨
4年行业经验,24h可咨询
10秒闪电通过好友
报价短信已发送到您的手机
因材料品牌及工程量不同,具体报价以量房实测为准
稍候装修管家将回电您,免费提供装修咨询服务
您的装修预算约
*装修管家将回电您,免费提供装修咨询服务
*装修管家将回电您,免费提供装修咨询服务
*因材料品牌及工程量不同,具体报价以量房实测为准
装修顾问 -馨馨
(四年装修行业经验)
微信扫一扫
3.&您家小区名称 :&&
请选择您家的装修时间
如何实现用蓝牙控制别人手机?
提问者:费成和| 地点:
| 浏览次数:
763| 时间:
我来帮他解答
还可以输入1500字
已有3条回答
回答数:284
| 被采纳数:0
你好,有一个叫蓝牙间谍的软件
可以控制别的手机打电话
但只是恶搞而已 没有什么实际的效果
而且控制的距离也只能3米左右
回答数:4054
| 被采纳数:4
用蓝牙间谍,不过前提你手机要支持JAVJ
回答数:3479
| 被采纳数:1
用蓝牙控制别人手机这种技术是违法的,这种技术的局限性太大,可以说一点用都没有,难度太大,这种技术的前提是对方也开了蓝牙,并且这部作为控制端的手机曾经联通过。,如果只想监控熟人的话,可以试试苹果手机的定位功能,试试蓝牙间谍,小心使用。希望对你有所帮助。药品服务许可证(京)-经营-违法不良信息举报: 电话、邮箱youkujubao@service.alibaba.com请使用者仔细阅读优酷、、、、和Copyright(C)2018 优酷 youku.com 版权所有编程,数学,设计
摘要: 作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。
蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。树莓派3中内置了蓝牙模块。树莓派通过UART接口和该模块通信。树莓派1和树莓派2中没有内置的蓝牙模块,不过你可以通过USB安装额外的蓝牙适配器。
蓝牙最初由爱立信创制,旨在实现可不同设备之间的无线连接。蓝牙无线通信的频率在2.4GHz附近,和WiFi一样,都属于特高频。相对于低频信号来说,高频传输的速度比较快,穿透能力强,但传输距离比较受限。在没有遮蔽和干扰的情况下,蓝牙设备的最大通信距离能达到30米。但在大多数情况下,蓝牙的实际通信距离在2到5米。相比之下,低频433MHz设备的通信距离很容易超过百米。因此,蓝牙常用于近距离的无线设备,比如无线鼠标和键盘。
蓝牙的标志&
蓝牙的基本工作流程如下:
广播/扫描:通信的一方向外广播自己的信息。另一方通过扫描知道自己周边有哪些蓝牙设备在广播,这些设备的地址是什么,以及是否可以连接。
连接:通信的一方向另一方发起连接请求。双方通过一系列的数据交换建立连接。
根据细节上的差别,蓝牙通信又细分为两种:经典蓝牙和低功耗蓝牙。早期的蓝牙通信方式称为经典蓝牙(classic bluetooth)。经典蓝牙中的数据传输协议是串行仿真协议RFCOMM。RFCOMM仿真了常见的串口连接。数据从一端输入,从另一端取出。经典蓝牙的开发非常简单。基于串口开发的有线键鼠程序,就可以直接用于RFCOMM连接的无线键鼠。此外,经典蓝牙可以快速传输数据。因此,诺基亚N95这样的早期智能手机,也用RFCOMM来互传图片和文件。
RFCOMM通信
经典蓝牙的缺点是比较耗电。后来,诺基亚发明了一种可以降低功耗的蓝牙通信方式。2010年出台的蓝牙4.0把这种通信方式规范为&低功耗蓝牙&(BLE,Bluetooth Low Energy)。BLE把通信双方分为非对称的双方,尽量让其中的一方承担主要的开销,减少另一方的负担。举例来说,手环电量少,而且需要长时间待机。BLE通信的主要负担可以放在电量较充裕且充电方便的手机一侧,从而减少手环的能耗。
手环作为外设
BLE通信一般也包含广播/扫描的步骤。主动发起广播的设备称为外设(Peripheral),扫描设备称为中心设备(Central)。BLE连接成功之后,就可以开始数据传输。BLE的数据传输协议是ATT和GATT协议。ATT是GATT的基础。ATT协议把通信双方分为服务器(server)和客户(client)。客户主动向服务器发起读写操作。需要注意的是,ATT中的服务器和客户,与广播阶段的外设和中心设备相互独立。当然,在手环这样的应用场景下,外设通常也是服务器。ATT协议以属性(attribute)为单位进行该数据传输。一个属性的格式如下:
我们分别来理解属性的不同部分:
handle:属性的唯一编号,长度为16位。
type:属性的类型。每种类型用一个UUID编号。
value:属性的值。
permission:属性的权限,分为无、可读、可写、可读写。
服务器储存了多个属性。当客户向服务器请求时,服务器会把自己的属性列表发给客户。随后,客户可以向服务器读取或写入某一个属性值。用读写的方式,通信双方实现了双向通信。
以智能手表为例。智能手表和手机配对后,手机可以用读的方式获得智能手表中某个属性下保存的步数,也可以用写的方式写入另一个属性负责的时间。在读写操作中,都是由客户采取主动,服务器只能被动应答。ATT还提供了通知(notification)的工作方式。当服务器改变了某个属性值时,可以主动通知订阅了该属性值的客户。智能手表中的手势识别,就可以通过通知的方式告知手机。这样的话,手机就可以实时地获知手势改变信息。
GATT协议构建在ATT协议之上,为属性提供了组织形式。GATT的最小组织单元是Characteristic,可以由数条属性组成。下图中就是一个Characteristic,用于传输红外测温获得的数据。这个例子来自:
&从左到右:handle(16进制),handle(10进制),type(16进制),type(文字说明),value(16进制),permission,备注
Characteristc的第一条属性用于声明属性,其类型总是0x2803。这条声明的value部分又可以细分为三部分。第一个部分是0x12,称为Characteristic Properties,是GATT协议层面上的权限控制。其具体含义可参考。第二部分0x0025,是Characteristic值的handle。找到handle为0x0025的属性,就在声明属性的下面一行。0x0025的value部分就是红外温度的真正数值。剩下的部分是该Characteristic的UUID,总共128位:
F000-AA01--B000-
检查Characteristic值的那一行属性,也就是0x0025属性。它的类型也是该Characteristic UUID。除了128位的UUID,蓝牙官方还提供了16位的UUID可供使用,可参考。
可以看到,一个Characterstic至少需要两个属性,一个用于声明,一个用于储存它的数据。除此之外,Characteristic还有称为Descriptor的额外描述信息。每个Decriptor占据一行。比如0x0027这个Descriptor,其属性值是54:65:6D:70:7E:20:44:61:74:61,翻译成ASCII就是:
Temp~ Data
此外,温度单位、测量频率等描述信息也经常会以Descriptor的形式放入到Characteristic中。在下一个Characteristic声明出现前的属性,都是该Characteristic的Descriptor。
我们再来看更高级的组织单位Service。一个Service也有行属性作为声明,其类型UUID是0x2800。声明属性的值就是该Service的128位UUID。蓝牙官方也提供了16位的UUID,预留给特定的Service,可参考。在下一个Service声明出现前的属性,都属于该Service,比如下图中从0xD的属性:
图中包含了一个与红外温度计相关的Service。Service里又有三个Characteristic,分别0x7、0xA、0x002B-0x002D。我已经介绍过第一个Characteristic。第二个Characteristic用于传输温度计参数,第三个用于设置测温频率。
Service和Characteristic都是属性的组织形式。客户可以向服务器请求Service和Characteristic列表,然后对其进行操作。GATT还提供了Profile,可以包括多个Service。不过,Profile并不像前面两者那样存在于服务器。Profile是一种标准,用于说明一个特型设备应该有哪些Service。比如说,HID(Human Interface Device)这种Profile,就说明了蓝牙输入设备应该提供的Service。蓝牙官方定义的Profile可参考。
我们用树莓派来深入实践上面学到的蓝牙知识。首先要在树莓派上安装必要的工具。BlueZ是Linux官方的蓝牙协议栈。你可以通过BlueZ提供的接口,进行丰富的蓝牙操作。Raspbian中已经安装了BlueZ。我使用的版本是5.43。你可以检查自己的BlueZ版本:
bluetoothd -v
低版本的BlueZ对低功耗蓝牙的支持有限。如果你的使用版本低于5.43,那么我建议你升级BlueZ。
你可以用下面的命令检查BlueZ的运行状态:
systemctl status bluetooth
我的返回结果是:
● bluetooth.service - Bluetooth service
Loaded: loaded (/lib/systemd/system/bluetooth. enabled)
Active: active (running) since Sun
19:03:08 CST; 1 day 6h ago
Docs: man:bluetoothd(8)
Main PID: 709 (bluetoothd)
Status: "Running"
CGroup: /system.slice/bluetooth.service
└─709 /usr/lib/bluetooth/bluetoothd -C
可以看到,蓝牙服务已经打开,并在正常运行。
你可以用下面命令手动启动或关闭蓝牙服务:
sudo systemctl start bluetooth
sudo systemctl stop bluetooth
此外,你还可以让蓝牙服务随系统启动:
sudo systemctl enable bluetooth
了解树莓派上的蓝牙
在Raspbian中,基本的蓝牙操作可以通过bluez中的bluetoothctl命令进行。该命令运行后,将进入到一个新的Shell。在这个shell中输入:
将显示树莓派上可用的蓝牙模块,例如:
Controller B8:27:EB:72:47:5E raspberrypi [default]
运行scan命令,开启扫描:
扫描启动后,用devices命令,可以打印扫描到蓝牙设备的MAC地址和名称,例如:
Device 00:9E:C8:62:AF:55 MiBOX3
Device 4D:CE:7A:1D:B8:6A vamei
此外,你还可以用help命令获得帮助。使用结束后,你可以用exit命令推出bluetoothctl。
除了bluetoothctl,在Raspbian是shell中可以通过hciconfig来控制蓝牙模块。比如开关蓝牙模块:
sudo hciconfig hci0 up
#启动hci设备
sudo hciconfig hci0 down #关闭hci设备
命令中的hci0指的是0号HCI设备,即树莓派的蓝牙适配器。&
与此同时,你可以用下面命令来查看蓝牙设备的工作日志:&
bluez本身还提供了连接和读写工具。但不同版本的bluez相关功能的差异比较大,而且使用起来不太方便,所以我下面使用Node.js的工具来实现相关功能。
树莓派作为BLE外设&
下一步,我们尝试用树莓派进行BLE通信。我们先把一个树莓派改造成BLE外设,同时它也将充当连接建立后的服务器。这个过程较为复杂。你可以借用Node.js下的bleno库。首先,安装Node.js:&
curl -sL https://deb.nodesource.com/setup_5.x | sudo bash -
sudo apt-get install nodejs
第一行的命令是为了确保安装高版本的Node.js。
安装bleno:&
mkdir ble-test-peripheral
cd ble-test-peripheral
npm install bleno
运行pizza的例子:&
sudo node node_modules/bleno/examples/pizza/peripheral
你可以在node_modules/bleno/examples/pizza/看到源代码,或者到查看。这个例子提供了一个Service,它的UUID是33-。Service中包含了三个Characteristics,分别是用于披萨饼参数、配料参数和烤披萨:
披萨饼选项
通过这些Characteristic,我们可以对树莓派进行BLE读写。读写操作会作用于一个代表比萨的对象。披萨饼选项有:
配料是一个8位的参数,每一位代表了一种配料。当这一位是1时,那么说明添加该配料:
BELL_PEPPERS
CANADIAN_BACON
BLACK_OLIVES
EXTRA_CHEESE
因此,0x1A代表了添加MUSHROOMS、BLACK_OLIVES、CANADIAN_BACON,感觉味道还不错。
对于烤披萨来说,写操作设定了烘烤的温度和时间。时间到了之后,中心设备会发出通知,告诉客户端烘烤完成。我们下一步将用另一个树莓派作为BLE中心设备。不过,即使你没有额外的树莓派,你可以用iPhone上LightBlue这样的App来测试这一部分完成的BLE外设。
树莓派作为BLE中心设备
我们拿另一个作为BLE的中心设备进行扫描,并发起连接请求。连接建立后,该服务器将充当客户。和bleno对应,Node.js下有一个叫noble的项目,可以便捷地完成这一任务。首先,安装noble:
mkdir ble-test-central
cd ble-test-central
npm install noble
noble中有一个同样名为pizza的例子,不过这个例子实现的是客户端。运行该例子:
sudo node node_modules/noble/examples/pizza/peripheral
这个例子将自动执行扫描、连接、服务发现、数据传输的全过程。如果你把bleno和noble部署到两个树莓派上,就可以在这两个树莓派之间进行蓝牙通信了。如果你想自定义开发,那么可以在node_modules/noble/examples/pizza/参考源代码,或者到查看。
树莓派作为Beacon
苹果在BLE的基础上推出了iBeacon协议。iBeacon使用了BLE的广播部分,但不建立连接。一个遵守iBeacon协议的外设称为Beacon。Beacon会广播自己的身份信息和发射信号的强度。中心设备接收到广播之后,除了可以获知Beacon的身份之外,还能通过信号的衰减算出自己与Beacon的距离。在一个典型的超市应用场景中,每件商品可以带上一个Beacon。消费者可以用手机看到自己周围有哪些商品,工作人员也可以用手机来清点货物。商家还可以在服务器上提供商品相关的质保、促销等信息。用户可以根据Beacon的编号,获得这些附加信息。
我们把配备了蓝牙模块的树莓派改造成一个Beacon。既然Beacon只使用了蓝牙中的广播,那么应该关闭树莓派的扫描,打开广播,并且不接受蓝牙连接:
sudo hciconfig hci0 noscan
# 不再扫描
sudo hciconfig hci0 leadv 3
# 开始广播,并且不接受连接
下一步,把广播信息改为符合iBeacon协议的内容:
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 00 01 00 02 C5
上面的命令附加了一串16进制信息。其中0x08说明了整条信息是蓝牙命令,0x0008说明后面的内容将作为广播信息。
1E是广播信息开始的标志。按照蓝牙通信的规定,广播信息最多有31个字节。1E后面的广播信息分为两组:
1A FF 4C 00 02 15 63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5 00 01 00 02 C5
每一组一开始的一个字节说明了该组信息的长度。02说明了2个字节,1A说明是26个字节。随后一个字节说明了改组信息的类型。第一组的01说明了该组信息是蓝牙控制标志,第二组的FF说明了该组是蓝牙制造商相关信息。
我们来看第二组信息的细节:
4C 00是制造商信息,即苹果。
02 15是iBeacon协议标识。
63 6F 3F 8F 64 91 4B EE 95 F7 D8 CC 64 A8 63 B5部分是设备的UUID,通常是用户编号。
UUID后面的00 01是主编号(Major)。
再往后的00 02是次编号(Minor)。通过UUID、主编号、次编号的组合,我们可以唯一地确定iBeacon设备。
最后的C5说明了蓝牙信号强度,即在1米处测得的该Beacon的RSSI值。中心设备把接收到的信号强度和该信号强度对比,就可以知道信号衰减了多少,从而推算出自己与Beacon的距离。由于我这里写入的C5没有经过校准,所以距离测量很可能不准确。
在iPhone上安装应用Locate Beacon来测试。当我进入到树莓派的广播范围时,该应用就会显示出手机距离树莓派的距离。
使用结束后,可以用下面命令来恢复扫描和停止广播:
sudo hciconfig hci0 piscan
# 恢复扫描
sudo hciconfig hci0 noleadv
# 停止广播
这里简单介绍了蓝牙协议,特别是低功耗蓝牙。我以树莓派的蓝牙模块为基础,实现了BLE通信。
欢迎阅读系列文章&
我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan
阅读(...) 评论()蓝牙和Wi-Fi共存在智能手机上的两种解决方法
> 蓝牙和Wi-Fi共存在智能手机上的两种解决方法
蓝牙和Wi-Fi共存在智能手机上的两种解决方法
1 引言本文引用地址:设计同时包含和功能的消费类电子产品会遇到很多问题,特别是在要求同时工作模式的情况下。和802.11b/gWLAN系统工作在2.4GHz频段,这两种技术都用到了可用频谱的重要部分(见图1)。当WLAN设备和设备靠得很近并试图同时收发无线信号时就会发生干扰。这两种技术采用不同的方法进行信号传送:载波侦听多路访问(CSMA)和跳频扩频。前者用于802.11b/g收发器,它在发送信号前会侦听空闲信道。所发送的信号带宽大约20MHz,将占用间距为25MHz、最多3个非重叠信道中的一个进行传输。而蓝牙则采用跳频扩频技术在79个带宽为1MHz的信道间以每秒1,600跳的速率跳跃选频,在每个跳频点发送较短的时分复用数据包。当一个设备发起连接并成为该子网的主设备时,蓝牙连接就成功建立了。如果知道目标地址,设备就直接发送页面消息。如果目标地址未知,会先发送一个查询消息,跟着再发页面消息。一旦两个设备同步上以后,这两个具备蓝牙功能的设备就处于连接状态,并且每个设备会设定一个唯一的MAC)地址。通过简单的计算可以证实,蓝牙发射器输出的信号与802.11b/g信号在大约25%的时间内会有冲突。这种共同信道干扰效应与信号的相对强度与数据包的发送长度和占空比密切相关。针对这种干扰现象所做的各种分析和仿真试验表明,干扰会严重影响其中一种或两种信号。相关标准提供了不同信号设计方法&&802.11b使用的直接序列扩展频谱(DSSS)、802.11g使用的正交频分复用(OFDM)及蓝牙使用的跳频所导致的干扰反弹程度。这些标准还使用基于数据包重传和数据速率降低的协议。然而,这些对策会极大地降低数据吞吐量,从而严重影响一些设备的性能。例如蓝牙音频传送或WLAN上的VoIP,数据包差错率只要超过几个百分点就会导致无法忍受的音频时延甚至通话中断。下面提出了解决共存干扰的的两种方法&&AFH(自适应跳频)和AFH与三线共存(时分复用)结合使用的技术。2 AFH(自适应跳频)技术介绍及试验结果AFH技术是对原始蓝牙跳频序列的一种改进,它允许蓝牙设备缩减跳频点的数量,其基本原理是通过分辨出ISM频段中优良和恶化的信道,从而避兔使用恶化信道,减少受干扰的程度。当蓝牙微微网进入AFH状态后,其跳频序列可使用的跳频点N的数量是动态变化的,其最大值不超过79。AFH只用于连接状态,而不会改变寻呼、查询等状态时的跳频序列。自适应跳频选择机制的实现是基于原79跳系统(Bluetooth1.2协议中规定不再使用23跳系统)的频率选择核心,在其基础上增加了AFH_mode和AFH_channel_map两个参数。AFH_mode指出当前选频核心是否可以使用自适应跳频序列;AFH_channel_map中指明哪些信道是可用的,哪些信道是不可用的。首先,原选频核心生成一个信道,如果这个信道是AFH_channel_map中定义的可用信道,则不作任何调整,直接作为跳频序列的输出;如果此信道包含在不可用信道中,则通过重定位函数将其映射成一个可用的信道。这种映射关系是一一对应的,就是说,如果给定了蓝牙地址、时钟以及AFH_channel_map,一个不可用的射频信道将被唯一地转换为一可用信道,这样保证了在同一微微网中使用AFH机制的主从设备能够保持跳频序列的同步。在这种实现机制下,非自适应的79跳系统的跳频序列等于将全部信适设为可用的AFH选频核心产生的频率序列,这一属性使得可以方便地与原非AFH设备保持兼容。AFH技术的另一点改变是:在原跳频系统中,主从节点分别采用不同的频率发送数据;当处于AFH状态时,在一次主从对话期间,从节点使用与主节点相同的射频信道向主节点响应数据包,这被称作AFH的相同信道机制。使用相同信道机制主要是由于在网中存在干扰的情况下,减少跳频可以防止从节点在发送响应分组时跳到可能发生冲突的信道上,保证至少在一次主从对话的过程中数据不易受到干扰,达到提高吞吐率的目的。不幸的是,诸如AFH等技术是专门为2.4GHz设备设计用于检测和避免干扰的,还不足以实现蓝牙与WLAN的共存。当蓝牙与802.11设备共存于同一设计中时作为独立技术的AFH是远远不够的,这主要是因为WLAN设备必须提供较高的输出功率才能支持长距离、高数据速率、可靠的互联网、语音、数据和视频传输。图2给出了手机在同时使用蓝牙和时的仿真图,此时正在进行数据传输,蓝牙耳机正在接听由小灵通打进的电话。单独使用AFH技术,结果使得Wi-Fi吞吐量下降20%左右,小灵通接听杂音大。由此可以看出手机的WIFI发送会干扰到手机蓝牙的接收。3 AFH技术与三线共存(时分复用)技术结合解决干扰问题AFH技术在上面已经介绍过了,单独使用AFH技术使用蓝牙耳机的通话效果不是很好,为了解决这种问题,在使用AFH技术的基础上又使用了三线共存(时分复用)技术。三线共存,顾名思义,就是使用三根线连接Wi-Fi和蓝牙,下面结合图3中Wi-Fi和蓝牙所示的三线连接图来描述一下三线共存的机制,其中主处理器使用的是TI公司的OMAP1621芯片。由图3可以看出,三线连接由RF_ACTIVE,BT_STATE,WLAN_ACTIVE三根信号线组成。RF_ACTIVE是从蓝牙设备向Wi&Fi设备发送的信号线,它通知Wi&Fi设备此时蓝牙设备正在工作,RF_ACTIVE在整个蓝牙的发送与接收过程中都是有效的。由于硬件的需要,它必须连接到PIO7且不能改变。BT_STATE也是由蓝牙设备向Wi&Fi设备发送的信号线,它通知Wi&Fi设备此时蓝牙是处于发送状态还是接收状态。由于硬件的需要,此信号线必须连接到蓝牙的PIO5管脚。WLAN_ACTIVE是由Wi&Fi设备向蓝牙发送的信号线,它用来通知蓝牙Wi&Fi设备将要发送或接收数据,下一个蓝牙的操作应该被取消。这根信号线默认连接到PIO9。此种类型的三线连接一般只能用于BlueCore4以及更高的蓝牙核上。这里的三线共存实质上使用的是时分共存技术,当Wi&Fi设备将要发送或者接收数据的时候下一个蓝牙任务动作将会被取消。蓝牙任务在这里一般分为高优先级和低优先级两种,当高优先级任务工作的时候,如果此时Wi&Fi也在工作,这时候Wi&Fi任务将会被取消,当蓝牙执行低优先级任务的时候,如果有Wi&Fi也在工作,这时候蓝牙任务应该被取消。使用AFH和三线共存两种技术很好的解决了蓝牙耳机通话的语音质量问题,而且Wi&Fi传输数据的效果也比较好。图4就是在同时使用这两种技术的情况下对蓝牙和Wi&Fi测试的仿真图。4 结语本文详细介绍了AFH技术和AFH技术与三线共存技术结合使用来解决上的蓝牙与Wi-Fi共存问题,通过试验结果得出了两种解决方法的效果,使用AFH技术和三线共存技术可以更好的解决蓝牙与Wi-Fi的共存问题。相信以后这种解决方案在同时拥有这两种无线的其他的终端上也会越来越多的得到应用。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一}

我要回帖

更多关于 蓝牙音箱怎么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信