树莓派python蓝牙_用树莓派玩转蓝牙

本文详细介绍了蓝牙协议,尤其是低功耗蓝牙(BLE),并展示了如何利用树莓派进行蓝牙实践。文章涵盖了蓝牙的基本工作流程、经典蓝牙与低功耗蓝牙的区别、BLE的连接过程、数据通信机制,以及如何将树莓派作为BLE外设和中心设备。通过示例代码,演示了如何用Node.js库bleno和noble进行蓝牙通信。最后,还介绍了如何将树莓派配置为iBeacon设备,并进行了距离估算测试。
摘要由CSDN通过智能技术生成

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载。

蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。树莓派3中内置了蓝牙模块。树莓派通过UART接口和该模块通信。树莓派1和树莓派2中没有内置的蓝牙模块,不过你可以通过USB安装额外的蓝牙适配器。

蓝牙介绍

蓝牙最初由爱立信创制,旨在实现可不同设备之间的无线连接。蓝牙无线通信的频率在2.4GHz附近,和WiFi一样,都属于特高频。相对于低频信号来说,高频传输的速度比较快,穿透能力强,但传输距离比较受限。在没有遮蔽和干扰的情况下,蓝牙设备的最大通信距离能达到30米。但在大多数情况下,蓝牙的实际通信距离在2到5米。相比之下,低频433MHz设备的通信距离很容易超过百米。因此,蓝牙常用于近距离的无线设备,比如无线鼠标和键盘。

413416-20170427095338865-783723223.png

蓝牙的标志

蓝牙的基本工作流程如下:

广播/扫描:通信的一方向外广播自己的信息。另一方通过扫描知道自己周边有哪些蓝牙设备在广播,这些设备的地址是什么,以及是否可以连接。

连接:通信的一方向另一方发起连接请求。双方通过一系列的数据交换建立连接。

数据通信

根据细节上的差别,蓝牙通信又细分为两种:经典蓝牙和低功耗蓝牙。早期的蓝牙通信方式称为经典蓝牙(classic bluetooth)。经典蓝牙中的数据传输协议是串行仿真协议RFCOMM。RFCOMM仿真了常见的串口连接。数据从一端输入,从另一端取出。经典蓝牙的开发非常简单。基于串口开发的有线键鼠程序,就可以直接用于RFCOMM连接的无线键鼠。此外,经典蓝牙可以快速传输数据。因此,诺基亚N95这样的早期智能手机,也用RFCOMM来互传图片和文件。

413416-20170427105438069-1029389021.png

RFCOMM通信

经典蓝牙的缺点是比较耗电。后来,诺基亚发明了一种可以降低功耗的蓝牙通信方式。2010年出台的蓝牙4.0把这种通信方式规范为“低功耗蓝牙”(BLE,Bluetooth Low Energy)。BLE把通信双方分为非对称的双方,尽量让其中的一方承担主要的开销,减少另一方的负担。举例来说,手环电量少,而且需要长时间待机。BLE通信的主要负担可以放在电量较充裕且充电方便的手机一侧,从而减少手环的能耗。

413416-20170427113853881-746758648.jpg

手环作为外设

BLE通信一般也包含广播/扫描的步骤。主动发起广播的设备称为外设(Peripheral),扫描设备称为中心设备(Central)。BLE连接成功之后,就可以开始数据传输。BLE的数据传输协议是ATT和GATT协议。ATT是GATT的基础。ATT协议把通信双方分为服务器(server)和客户(client)。客户主动向服务器发起读写操作。需要注意的是,ATT中的服务器和客户,与广播阶段的外设和中心设备相互独立。当然,在手环这样的应用场景下,外设通常也是服务器。ATT协议以属性(attribute)为单位进行该数据传输。一个属性的格式如下:

413416-20170429081424100-702093028.png

ATT属性

我们分别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值