24小时联系电话:18217114652、13661815404

中文

您当前的位置:
首页>
电子资讯>
技术专题>
了解物联网解决方案的...

技术专题

了解物联网解决方案的蓝牙互联网网关


了解物联网解决方案的蓝牙互联网网关

根据研究机构 ABI 的数据,蓝牙技术在所有物联网设备中的占比为 38%,而 Wi-Fi 和蜂窝分别为 32% 19%。由于它们具有不同的优势和劣势,因此它们不一定是相互排斥的技术,并且通常在物联网解决方案中一起使用。

但有个问题!蓝牙和 TCP/IP 不兼容。(物联网意味着使用 TCP/IP 等协议。)

可以看出,TCP/IP 仅跨越蓝牙堆栈的两层。其他协议也用于堆栈 TCP/IP Friends(图 1)。但是,蓝牙 LE 不能直接与 TCP/IP 通信,反之亦然。

1:蓝牙 LE TCP/IP

广泛的标准范围

尽管蓝牙 SIG 和其他组织已经定义了一些与 IoT 和蓝牙相关的标准,但单独使用它们不太可能涵盖 IoT 的所有方面。目前,定义了以下标准:

RFC7668

用于通信的互联网工程任务组 (IETF) 标准,它定义了如何调整 IPv6 6LoWPAN 数据包以通过蓝牙 LE 堆栈的较低层发送。并非 TCP/IP 的所有方面都受支持,但使用它的蓝牙 LE 设备可以拥有 IP 地址,并且可以使用 6LoWPAN IPv6 数据包相互通信。

Internet 协议支持配置文件 (IPSP)

这是一个低功耗蓝牙 (LE) 配置文件,允许发现支持 IP over Bluetooth 的设备。它在 RFC7668 中定义了蓝牙 LE 堆栈如何用于发送和接收 IPv6 数据包。

HTTP 代理服务 (HPS)

这对于传感器等设备很有用,并允许蓝牙传感器或类似设备与支持蓝牙 LE TCP/IP 并可以充当 HTTP 客户端的网关设备一起使用。因此,网关代表蓝牙设备并在其请求时向远程 Web 服务器发送 HTTP 请求。从 Web 应用程序服务器接收到的任何数据都会被发送回蓝牙设备。

存在一些有用的标准

但是,如果您想在一般 IoT 用例中驱动与 Internet 上的蓝牙设备的交互,那么您需要一个网关,该网关具有某种适配方案(API),以便可以使用基于 TCP/IP 的协议和然后由网关转换为适当的蓝牙请求并发送到连接的蓝牙设备。

要在 IoT 环境中使用蓝牙,您通常需要可以在某些通过 TCP/IP 运行的应用程序协议和蓝牙协议之间进行转换的东西。这通常称为蓝牙互联网网关(图 2)(BIG),属于中间件。

2:蓝牙和物联网解决方案架构

蓝牙互联网网关要求

现在,我们有旧的蓝牙 BR/EDR 和新的蓝牙 LE 可供选择(图 3)。蓝牙 LE 可以以多种方式使用,包括面向连接的通信和无连接,还可以用于创建蓝牙设备的大型网状网络。因此,首先要考虑需要支持什么类型的蓝牙技术。

3:蓝牙互联网网关要求

对于这个项目,使用了蓝牙 LE,因为对蓝牙网状网络的支持不是优先事项,也无意支持旧的蓝牙 BR/EDR
蓝牙 LE 设备可以以多种方式工作。无连接通信涉及称为广告的过程,其中小数据包被范围内的设备广播和接收(扫描)。该机制用于促进设备发现。

通常,智能手机等扫描设备会在用户的帮助下找到并选择设备,然后建立连接。此后,通过连接进行通信。这需要网关代表某种 TCP/IP 客户端来完成。

做广告的可连接设备称为外围设备。而那些扫描和请求连接的设备称为中央设备。

因此,决定支持可连接的 LE 设备作为外围设备,蓝牙互联网网关作为中央设备进行扫描和连接。

4:蓝牙互联网网关要求

蓝牙互联网网关架构

适配器组件处理以 TCP/IP 协议编码的请求。蓝牙 LE API 有助于驱动蓝牙堆栈实现的请求蓝牙程序。

决定在 Raspberry Pi 上使用 Linux 作为具有网关所需的 TCP/IP 和蓝牙支持的平台。还决定将 HTTP WebSockets 用于 TCP/IP 协议,HTTP 请求和响应用于所有操作,但蓝牙特征通知流的传递(通过 WebSocket 传递)除外。

5:网关逻辑架构

对于 HTTP 支持,选择了 Apache Web 服务器,因为它具有广泛的模块集合,并且开源 websocketd 用于 Web 套接字支持。一个网络摄像头也被插入网关以观察远程操作。

适配器代码是用 Python 编写的。为了将 Python 脚本与 HTTP 中的 Web 服务器集成,使用了通用网关接口 (CGI)

BlueZ 是您将在 Linux 上找到的蓝牙堆栈的名称。它提供了一个与语言无关的 API,它使用 Linux d-bus 服务,允许进行进程间通信。