扫盲篇之您的手机如何与蓝牙Mesh节点通信

末鹿安然 提交于 2020-02-22 13:58:57

概述

与Zigbee、Thread等其他MESH组网技术相比,蓝牙Mesh能够在不需要额外硬件成本的前提下实现手机与蓝牙Mesh节点的通信,无疑是一个巨大的优势,因此本文将着重讲解手机是如何与蓝牙Mesh设备通信的,希望给读者以清晰的理解。

手机软硬件

手机软硬件的设计问题决定了蓝牙Mesh节点与手机通讯的方式,这是问题的出发点,因此本文将从手机的软硬件讲起,一步步洞悉其全貌。

  • 硬件
    现在的智能手机,不管是苹果或其他众多安卓厂家,蓝牙无疑都是手机标配,在笔者书写本文时,蓝牙已经演变到5·2版本,当然受限于整个供应链的问题,手机上携带的蓝牙版本目前还没有到最新版本,目前市场上蓝牙版本的分布以4-2和5-0为主,而蓝牙Mesh所要求的是蓝牙版本在4-0及其以上即可,因此,读者不必担心手机的硬件约束问题。另外,需要科普的是,从蓝牙4-0开始,蓝牙实际开始走两条路线:传统路线(Classic BT)也就是所谓的经典蓝牙,这种蓝牙通常注重于数据的高速传输,例如:蓝牙耳机,蓝牙音响等,第二条路线(Low Energy)低功耗蓝牙,该类型的蓝牙注重于功耗的低耗,例如:智能手环,智能锁等。相对于手机来说,一般都是集成这两类,我们称之为双模蓝牙。对于蓝牙音响一般都是单纯的经典蓝牙以及智能手环一般都是单纯的低功耗蓝牙,我们将这些分类为单模蓝牙。这也就是为什么手机既能实现与蓝牙耳机连接又具备与手环连接的原因。
  • 软件
    说起软件,就不得不讲操作系统的设计与实现,目前主流的移动操作系统分为IOS和Android两种。不管哪种操作系统都必须提供软件实现对硬件的封装,我们将这类软件称为驱动程序(一般有芯片原厂提供),这类程序提供了硬件功能的方方面面。但是仅有这些程序依然不能直接被开发者使用,操作系统需要从各方面整合考虑,提供中间层Framework进一步封装众多驱动程序,使得驱动程序能够在一个系统下协调运行。这种结构无疑与解耦硬件,提供了对应用开发一致的编程接口。但同时也约束了应用开发对于硬件的功能使用问题,这也就造成一些时间要求比较严的功能无法在应用层实现,这就解释了手机与蓝牙Mesh通讯方式的问题,必须通过连接机制而无法通过广播。

扫描与连接

智能手机想要与蓝牙Mesh节点建立连接,必须扫描来自周围节点的可连接广播包,蓝牙Mesh规范将这种可连接的广播包分为:

  1. Network ID
  2. Node ID

智能手机扫描到上述广播包并通过共有的网路层密钥进过解密后,即可发起连接,与对端节点建立通信,对端节点我们称之为代理(Proxy)节点,在最新的蓝牙Mesh规范中,规定支持代理功能的节点必须发送Network ID类型的广播包,但只有代理功能使能的节点则可以通过广播转发来自智能手机的消息,未使能代理功能的节点依然可以与智能手机连接,但只处理来自智能手机发送给自身节点的消息,其他消息只会丢弃而不是通过广播转发。

消息的传递

智能手机通过上述步骤建立与代理节点的连接后,便认为此时手机已经属于网络中的一在线节点,如果手机想要发送消息,必须通过连接把消息给代理节点,而代理节点则通过广播机制将这些消息传递下去。同样,代理节点也可以将来自其他节点发送的消息通过连接传递给智能手机。相对于网关而言,代理节点同样也是网络中的一员,而网络中的任何一个节点都可以成为代理节点,前提这些节点具备该功能。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!