几个鼠标的动作,就可以布局一个 MESH 的应用实例-- IngWizard Mesh light 开发介绍

1、BLE Mesh的发展前景

蓝牙 Mesh脱胎于CSR倡导的私有协议-CSRMesh,该技术诞生于2014年。蓝牙技术联盟于2017年7月19日正式宣布,蓝牙(Bluetooth)技术开始全面支持Mesh网状网络。全新的Mesh功能提供设备间多对多传输,并特别提高构建大范围网络覆盖的通信能力,适用于楼宇自动化、无线传感器网络等需要让数以万计个设备在可靠、安全的环境下传输的物联网解决方案。

BLEMesh网络是用于建立多对多(many:many)设备通信的低能耗BLE(Bluetooth Low Energy,也称为Bluetooth LE)新的网络拓扑。允许创建基于多个设备的大型网络,网络可以包含数十台,数百甚至数千台BLE Mesh设备,这些设备之间可以相互进行信息的传递。 BLE Mesh V1.0 把 BLE的低功耗特性和MESH功能的自组网功能,以及网络安全的要素充分集中在一个平台上,是可以满足未来物联网的终端低功耗,低成本和高可靠性的基本需求。

2、蓝牙Mesh应用场景

蓝牙Mesh主要应用于楼宇自动化、无线传感器网络和物资追踪等方面。自蓝牙Mesh技术发布之后,Mesh技术已在车联网、照明、教育领域的智能解决方案中进行测试和应用。

目前,灯泡就可能成为未来家庭中最主要的Mesh网络设备之一,因为在每个家庭或建筑里几乎任何角落都需要被光线覆盖,灯泡一般都会按照一定的距离连续安装,由此用户就能控制全家设备。而且蓝牙Mesh网络具备工业级安全防护,以及全球互通性,正式的Mesh协议是基于蓝牙5.0的基础上发布的,不过蓝牙4.0、4.1或4.2设备均通过适当变化,安装蓝牙Mesh获得“多对多”连接功能。

对于广大的mesh应用开发者而言,如果能够迅速的进入mesh的产品研发,那么有一个集成了BLE MESH功能的开发平台显得非常重要,因为mesh协议虽小,但是也是按照网络的分成协议来划分各个功能模块,就像对于多数的网络应用开发者来说,没有必要深入的了解网络协议,只需要利用API的调用同协议栈交互,一样可以进行网络产品的开发,这样用户只要关心和做好产品业务逻辑功能的开发,此外如果mesh的功能以可视化的界面提供给用户选取,这样就可以更方便的定义产品在mesh网络中中扮演的功能角色,可以快速的布局mesh网络。

3、IngChips MESH开发平台简述

桃芯科技一直致力于提供最好的开发体验给广大蓝牙开发爱好者,同样也希望把mesh的功能也集中到蓝牙应用开发的过程中,这样可以让用户快速的进行mesh产品的功能定义。现在我们就来使用Mesh light例子的开发过程,来感受Ingchips提供给客户的简单有效的开发体验,Do it yourself!

IngWizard的平台集成了light 和 Sensor,两个基本应用场景的开发模板。用户只要关心的是具体的产品的业务逻辑功能的定义。可以同时支持天猫平台的语音入网PB_ADV方式和 支持通过 PB_GATT的入网方式。

Ingchips BLE mesh开发平台主界面和多数主流的集成环境一样:




ble mesh报文格式 ble mesh原理_ble mesh报文格式

图1



我们以 KEIL的开发环境为例子,用 ingWizard快速建立mesh light的工程项目。点击主界面的左上角的




ble mesh报文格式 ble mesh原理_协议栈_02


,可以进入下一个步骤。


ble mesh报文格式 ble mesh原理_pb界面框架开发_03

图2


点击界面左边的 Mesh图标,由于目前多数的产品终端还不支持蓝牙5.0的扩展广播,这里IngWizard提供了legacy的广播方式。点击 Next进入下一个界面。


ble mesh报文格式 ble mesh原理_pb开发的界面出现问号_04

图 3


对于开发者来说,只要了解mesh的model的功能和mesh的基本角色和承载的通道类型,就可以建立自己的mesh项目工程,让开发者可以选取BLE mesh可以支持的网络特性,便捷,快速!目前,IngWizard集成了大多数light的基本功能,这些功能是完整按照MshMDLv.1.0定义的标准来实现的。简单的说就是实现了灯关照明,冷暖色,RGB/HSL色系转换等最最基本的功能,满足了 lightening绝大多数的应用场景的开发需求。具体的功能细节,可以参考工程项目建立之后提供的源码。点击 Next。


ble mesh报文格式 ble mesh原理_ble mesh报文格式_05

图 4


这个选项页是配置mesh device的基本信息,UUID是作为鉴别meshdevice的唯一码,区分不同的mesh device。继续点击 Next。


ble mesh报文格式 ble mesh原理_开发者_06

图 5


此界面用户可以选择项目工程的辅助功能配置。自此,点击Create按钮就完成了开发工程的创建工作。如下图,在浏览区的右边可以看到新建的项目工程。


ble mesh报文格式 ble mesh原理_协议栈_07

图 6


在项目工程item页上,通过鼠标右键的选项(如下图),用户可以打开编辑工程文件,编写代码,并且进行固件的下载操作,非常的方便。


ble mesh报文格式 ble mesh原理_pb开发的界面出现问号_08

图 7


4、Mesh light 工程文件介绍

通过点击item的


ble mesh报文格式 ble mesh原理_pb界面框架开发_09


,可以通过keil集成开发环境打开通过IngWizard创建的工程文件。下面我们就通过工程文件的源码结构,给大家展示IngWizard提供给用户的特色。

通过keil的IDE开发环境,可以展示给用户mesh工程的文件架构。如下图


ble mesh报文格式 ble mesh原理_pb开发的界面出现问号_10

图 8


对于一个 mesh light的工程项目,一般都包含了上面所列的几个文件组,APP, Startup,BSP,FWlib,Tools以及Mesh。由于这个项目是做light的开发实例,所以IngWizard会默认为项目工程提供以下几个功能:

  • OTA程序远程更新加载功能。
  • 用户自管理数据保存备份,读写flash功能。
  • 完整的 mesh light的服务定义和实现。

这里我们重点介绍下可以提供给用户哪些MESH light的基本功能,MESH light的基本功能功能定义在 Mesh组的device_composition.c文件中,打开文件,我们可以在文件里头找到,提供给用户的基本的mesh light的服务。这里我们只举例灯的开关和亮度调整为例,根据mesh light的官方标准协议,我们定义了相应灯的开关和亮度的基本操作码和回调函数如下:

灯的开关操作码和回调函数


ble mesh报文格式 ble mesh原理_协议栈_11


灯的亮度操作码和回调函数


ble mesh报文格式 ble mesh原理_协议栈_12


IngWizard已经为开发者实现了这些回调函数的实现,开发者只需要,根据自己项目的实际情况做调整。

定义完了基本操作之后,还需要告诉mesh协议栈,用户支持哪些的light model,这样就可以和不同的mesh设备做交互。而开发者只需要填写好以下的表,就可以把用户层面支持的model,告诉底层的MESH协议栈,我们支持哪些基本的 root model,以下举的例子,就是告诉mesh协议栈,用户需要支持开关灯和灯的亮度调节两种model。


ble mesh报文格式 ble mesh原理_pb开发的界面出现问号_13


之后,开发者只要把所有工作都交给mesh协议栈即可。mesh light的工程文件基本实现了灯的组合状态的绑定和状态渐变的过程。

5、其他非mesh light协议自定义功能

Ingwizard还提供给用户一些灯的控制功能,比如在灯设备没有加入一个mesh网络的时候,灯的设备具备呼吸灯的功能,通过亮灭持续一分钟来提示用户,目前的灯没有加入到mesh网络。

Mesh light解绑功能:Ingwizard可以提供给用户终端的自解绑功能,通过快速开关3次,可以清除mesh light的mesh网络信息,这样可以重新进入呼吸灯模式。

呼吸灯功能都是把源码放在了light_modle.c里头,开发者可以根据自己的需要对这些自定义的功能进行删除和修改,更符合自己的需求,提供了灵活性。

6、IngWizard MESH model后续开发

IngWizard致力于给开发者便捷的开发体验,不但会继续完善mesh light功能优化,而且后续肯定还要继续增加mesh model的用例,从而满足多样化的mesh需求应用。努力把BLE MESH推向现实的应用场景。IngWizard一旦有了新的更新,就会立马和大家分享新的喜悦,拭目以待吧。